diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,6 +1,6 @@
 module Main where
 
-import Language.ATS.Generate (exec)
+import           Language.ATS.Generate (exec)
 
 main :: IO ()
 main = exec
diff --git a/hs2ats.cabal b/hs2ats.cabal
--- a/hs2ats.cabal
+++ b/hs2ats.cabal
@@ -1,87 +1,111 @@
-name:                hs2ats
-version:             0.2.1.7
-synopsis:            Create ATS types from Haskell types
-description:         This package enables scanning Haskell source files for data types and then generating [ATS](http://www.ats-lang.org/) types from them.
-homepage:            https://github.com/vmchale/hs2ats#readme
-license:             BSD3
-license-file:        LICENSE
-author:              Vanessa McHale
-maintainer:          vamchale@gmail.com
-copyright:           Copyright: (c) 2018 Vanessa McHale
-category:            Language, Haskell, ATS
-build-type:          Simple
-cabal-version:       1.18
+cabal-version: 1.18
+name: hs2ats
+version: 0.2.1.8
+license: BSD3
+license-file: LICENSE
+copyright: Copyright: (c) 2018 Vanessa McHale
+maintainer: vamchale@gmail.com
+author: Vanessa McHale
+homepage: https://github.com/vmchale/hs2ats#readme
+synopsis: Create ATS types from Haskell types
+description:
+    This package enables scanning Haskell source files for data types and then generating [ATS](http://www.ats-lang.org/) types from them.
+category: Language, Haskell, ATS
+build-type: Simple
 
-Flag development {
-  Description: Enable `-Werror`
-  manual: True
-  default: False
-}
+source-repository head
+    type: git
+    location: https://github.com/vmchale/hs2ats
 
+flag development
+    description:
+        Enable `-Werror`
+    default: False
+    manual: True
+
+flag no-executable
+    description:
+        Don't generate an executable
+
 library
-  hs-source-dirs:      src
-  exposed-modules:     Language.ATS.Generate
-                     , Language.ATS.Generate.Error
-  build-depends:       base >= 4.7 && < 5
-                     , haskell-src-exts
-                     , language-ats >= 1.0.0.0
-                     , casing
-                     , lens
-                     , optparse-generic
-                     , ansi-wl-pprint
-                     , composition-prelude
-                     , deepseq
-                     , cpphs
-  default-language:    Haskell2010
-  if flag(development)
-    ghc-options:       -Werror
-  if impl(ghc >= 8.0)
-    ghc-options:       -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-  ghc-options:         -Wall
+    exposed-modules:
+        Language.ATS.Generate
+        Language.ATS.Generate.Error
+    hs-source-dirs: src
+    default-language: Haskell2010
+    ghc-options: -Wall
+    build-depends:
+        base >=4.7 && <5,
+        haskell-src-exts -any,
+        language-ats >=1.0.0.0,
+        casing -any,
+        microlens -any,
+        optparse-generic -any,
+        ansi-wl-pprint -any,
+        composition-prelude -any,
+        deepseq -any,
+        cpphs -any
+    
+    if flag(development)
+        ghc-options: -Werror
+    
+    if impl(ghc >=8.0)
+        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
+                     -Wcompat
 
 executable hs2ats
-  hs-source-dirs:      app
-  main-is:             Main.hs
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , hs2ats
-  default-language:    Haskell2010
-  if flag(development)
-    ghc-options:       -Werror
-  if impl(ghc >= 8.0)
-    ghc-options:       -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-  ghc-options:         -Wall
+    main-is: Main.hs
+    hs-source-dirs: app
+    default-language: Haskell2010
+    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+    build-depends:
+        base -any,
+        hs2ats -any
+    
+    if flag(no-executable)
+        buildable: False
+    
+    if flag(development)
+        ghc-options: -Werror
+    
+    if impl(ghc >=8.0)
+        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
+                     -Wcompat
 
 test-suite hs2ats-test
-  type:                exitcode-stdio-1.0
-  hs-source-dirs:      test
-  main-is:             Spec.hs
-  build-depends:       base
-                     , hs2ats
-                     , hspec
-                     , hspec-dirstream
-                     , system-filepath
-  if flag(development)
-    ghc-options:       -Werror
-  if impl(ghc >= 8.0)
-    ghc-options:       -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall
-  default-language:    Haskell2010
+    type: exitcode-stdio-1.0
+    main-is: Spec.hs
+    hs-source-dirs: test
+    default-language: Haskell2010
+    ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+    build-depends:
+        base -any,
+        hs2ats -any,
+        hspec -any,
+        hspec-dirstream -any,
+        system-filepath -any
+    
+    if flag(development)
+        ghc-options: -Werror
+    
+    if impl(ghc >=8.0)
+        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
+                     -Wcompat
 
 benchmark hs2ats-bench
-  type:                exitcode-stdio-1.0
-  hs-source-dirs:      bench
-  main-is:             Bench.hs
-  build-depends:       base
-                     , hs2ats
-                     , criterion
-  if flag(development)
-    ghc-options:       -Werror
-  if impl(ghc >= 8.0)
-    ghc-options:       -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-  ghc-options:         -Wall
-  default-language:    Haskell2010
-
-source-repository head
-  type:     git
-  location: https://github.com/vmchale/hs2ats
+    type: exitcode-stdio-1.0
+    main-is: Bench.hs
+    hs-source-dirs: bench
+    default-language: Haskell2010
+    ghc-options: -Wall
+    build-depends:
+        base -any,
+        hs2ats -any,
+        criterion -any
+    
+    if flag(development)
+        ghc-options: -Werror
+    
+    if impl(ghc >=8.0)
+        ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates
+                     -Wcompat
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
@@ -13,7 +13,6 @@
     ) where
 
 import           Control.Arrow
-import           Control.Lens                 (over, _head)
 import           Data.Bool                    (bool)
 import           Data.Char                    (toUpper)
 import           Data.Either                  (lefts, rights)
@@ -23,6 +22,7 @@
 import           Language.Haskell.Exts
 import           Language.Haskell.Exts.Syntax as HS
 import           Language.Preprocessor.Cpphs  (defaultCpphsOptions, runCpphs)
+import           Lens.Micro                   (over, _head)
 import           Options.Generic
 import           Text.Casing                  (quietSnake)
 
