diff --git a/hs2ats.cabal b/hs2ats.cabal
--- a/hs2ats.cabal
+++ b/hs2ats.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: hs2ats
-version: 0.2.1.10
+version: 0.3.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -13,8 +13,8 @@
 category: Language, Haskell, ATS
 build-type: Simple
 extra-source-files:
-  test/data/*.hs
-  test/data/*.out
+    test/data/*.hs
+    test/data/*.out
 
 source-repository head
     type: git
@@ -33,8 +33,9 @@
 library
     exposed-modules:
         Language.ATS.Generate
-        Language.ATS.Generate.Error
     hs-source-dirs: src
+    other-modules:
+        Language.ATS.Generate.Error
     default-language: Haskell2010
     ghc-options: -Wall
     build-depends:
diff --git a/src/Language/ATS/Generate.hs b/src/Language/ATS/Generate.hs
--- a/src/Language/ATS/Generate.hs
+++ b/src/Language/ATS/Generate.hs
@@ -1,9 +1,12 @@
 {-# LANGUAGE PatternSynonyms #-}
 
 module Language.ATS.Generate
-    ( generateATS
+    ( -- * Functions
+      generateATS
     , genATSTypes
+    -- * Types
     , ErrM
+    , GenerateError (..)
     ) where
 
 import           Control.Arrow
@@ -160,7 +163,9 @@
 
 -- | Given a string containing Haskell, return a string containing ATS and
 -- a list of warnings.
-generateATS :: FilePath -> String -> ErrM (String, [GenerateError])
+generateATS :: FilePath -- ^ Name of source file
+            -> String -- ^ Source file contents
+            -> ErrM (String, [GenerateError])
 generateATS file hsSrc = modulePrint <$> case parseModuleWithMode extends hsSrc of
     ParseOk x            -> Right x
     ParseFailed loc' msg -> syntaxError (loc' { srcFilename = file }) msg
@@ -168,7 +173,10 @@
 process :: FilePath -> String -> IO String
 process p = fmap (unlines . drop 1 . lines) . runCpphs defaultCpphsOptions p
 
-genATSTypes :: FilePath -> FilePath -> Bool -> IO ()
+genATSTypes :: FilePath -- ^ Haskell source file
+            -> FilePath -- ^ @.sats@ file to be generated
+            -> Bool -- ^ Whether to use pre-process the Haskell source (use this if you use @{#- LANGUAGE CPP #-}@ anywhere)
+            -> IO ()
 genATSTypes p p' withCPP = do
     let proc = bool pure (process p) withCPP
     contents <- proc =<< readFile p
