diff --git a/language-ats.cabal b/language-ats.cabal
--- a/language-ats.cabal
+++ b/language-ats.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: language-ats
-version: 1.2.0.7
+version: 1.2.0.8
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -43,11 +43,10 @@
     build-depends:
         base >=4.10 && <5,
         array -any,
-        microlens -any,
-        microlens-th -any,
+        recursion-schemes >= 5.0.1,
+        lens,
         deepseq -any,
         ansi-wl-pprint >=0.6.8,
-        micro-recursion-schemes >=5.0.1,
         composition-prelude -any,
         containers -any,
         transformers -any
diff --git a/src/Language/ATS.hs b/src/Language/ATS.hs
--- a/src/Language/ATS.hs
+++ b/src/Language/ATS.hs
@@ -41,6 +41,7 @@
                     , SortArg (..)
                     , Sort (..)
                     , SortArgs
+                    , Fix
                     -- * Parser State
                     , FixityState
                     -- * Lexical types
@@ -59,6 +60,7 @@
                     , typeCallArgs
                     ) where
 
+import           Control.Lens
 import           Control.Monad
 import           Control.Monad.IO.Class
 import           Control.Monad.Trans.State
@@ -67,7 +69,6 @@
 import           Language.ATS.Parser
 import           Language.ATS.PrettyPrint
 import           Language.ATS.Types
-import           Lens.Micro
 import           Text.PrettyPrint.ANSI.Leijen hiding ((<$>))
 
 rewriteATS' :: Eq a => (ATS a, FixityState a) -> ATS a
diff --git a/src/Language/ATS/Parser.y b/src/Language/ATS/Parser.y
--- a/src/Language/ATS/Parser.y
+++ b/src/Language/ATS/Parser.y
@@ -23,7 +23,7 @@
 
 import Control.Composition
 import Control.DeepSeq (NFData)
-import Lens.Micro (over, _head)
+import Control.Lens (over, _head)
 import qualified Data.Map as M
 import Control.Monad.Trans.Class
 import Control.Monad.Trans.State
diff --git a/src/Language/ATS/PrettyPrint.hs b/src/Language/ATS/PrettyPrint.hs
--- a/src/Language/ATS/PrettyPrint.hs
+++ b/src/Language/ATS/PrettyPrint.hs
@@ -15,9 +15,9 @@
                                 ) where
 
 import           Control.Composition          hiding ((&))
+import           Control.Lens                 hiding (op, pre)
 import           Data.Functor.Foldable        (cata)
 import           Language.ATS.Types
-import           Lens.Micro
 import           Prelude                      hiding ((<$>))
 import           Text.PrettyPrint.ANSI.Leijen hiding (bool)
 
diff --git a/src/Language/ATS/Types.hs b/src/Language/ATS/Types.hs
--- a/src/Language/ATS/Types.hs
+++ b/src/Language/ATS/Types.hs
@@ -49,6 +49,7 @@
     , SortArgs
     , DataSortLeaf (..)
     , FixityState
+    , Fix
     -- * Rewrites
     , rewriteDecl
     -- * Helper functions
@@ -66,6 +67,8 @@
 
 import           Control.Composition
 import           Control.DeepSeq          (NFData)
+import           Control.Lens
+import           Control.Monad
 import           Data.Function            (on)
 import           Data.Functor.Foldable    (ListF (Cons), ana, cata, embed, project)
 import           Data.Functor.Foldable.TH (makeBaseFunctor)
@@ -74,8 +77,6 @@
 import           Data.Semigroup           (Semigroup)
 import           GHC.Generics             (Generic)
 import           Language.ATS.Lexer       (Addendum (..))
-import           Lens.Micro
-import           Lens.Micro.TH
 
 type Fix = Either Int String
 
@@ -380,17 +381,8 @@
                           }
                           deriving (Show, Eq, Generic, NFData)
 
-makeBaseFunctor ''Pattern
-makeBaseFunctor ''Expression
-makeBaseFunctor ''StaticExpression
-makeBaseFunctor ''Type
-makeLenses ''Leaf
-makeLenses ''Declaration
-makeLenses ''PreFunction
-makeLenses ''Implementation
-makeLenses ''DataPropLeaf
-makeLenses ''Function
-makeLenses ''Type
+join <$> traverse makeBaseFunctor [''Pattern, ''Expression, ''StaticExpression, ''Type]
+join <$> traverse makeLenses [''Leaf, ''Declaration, ''PreFunction, ''Implementation, ''DataPropLeaf, ''Function, ''Type]
 
 exprLens :: Eq a => FixityState a -> ASetter s t (Expression a) (Expression a) -> s -> t
 exprLens st = flip over (rewriteATS st)
