diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,13 +1,11 @@
-# async-refresh
+# async-refresh [![Hackage version](https://img.shields.io/hackage/v/async-refresh.svg?label=Hackage)](https://hackage.haskell.org/package/async-refresh) [![Stackage version](https://www.stackage.org/package/async-refresh/badge/lts?label=Stackage)](https://www.stackage.org/package/async-refresh) [![Build Status](https://travis-ci.org/mtesseract/async-refresh.svg?branch=master)](https://travis-ci.org/mtesseract/async-refresh)
 
-About
-=====
+### About
 
 This is Haskell library implementing the logic for refreshing of
 expiring data according to user-provided actions.
 
-Usage
-=====
+### Usage
 
 - Create a new configuration using `newAsyncRefreshConf`, providing
   the action to be used for data refreshing.
@@ -18,8 +16,7 @@
 - Use `newAsyncRefresh` to initiate a new thread managing the
   asynchronous refreshing.
 
-Example
-=======
+### Example
 
 The following IO action produces a `TVar` which is updated every ten
 seconds to contain the current time (wrapped in an `Either
diff --git a/async-refresh.cabal b/async-refresh.cabal
--- a/async-refresh.cabal
+++ b/async-refresh.cabal
@@ -1,5 +1,5 @@
 name:                async-refresh
-version:             0.2.0
+version:             0.2.0.2
 synopsis:            Package implementing core logic for refreshing of expiring data.
 description:         This package can be used for refreshing of expiring data according
                      to a user-provided action. Using callbacks, the user can decide
@@ -32,7 +32,8 @@
                      , MultiParamTypeClasses
   build-depends:       base >= 4.7 && < 5
                      , text
-                     , lens
+                     , microlens
+                     , microlens-th
                      , monad-logger
                      , lifted-async
                      , stm
diff --git a/src/Control/Concurrent/Async/Refresh.hs b/src/Control/Concurrent/Async/Refresh.hs
--- a/src/Control/Concurrent/Async/Refresh.hs
+++ b/src/Control/Concurrent/Async/Refresh.hs
@@ -34,12 +34,12 @@
   , asyncRefreshAsync
   ) where
 
+import           Control.Concurrent.Async.Lifted.Safe     (wait)
+import qualified Control.Concurrent.Async.Refresh.Lenses  as Lens
 import           Control.Concurrent.Async.Refresh.Prelude
-import           Control.Concurrent.Async.Lifted.Safe    (wait)
-import qualified Control.Concurrent.Async.Refresh.Lenses as Lens
 import           Control.Concurrent.Async.Refresh.Types
 import           Control.Concurrent.Async.Refresh.Util
-import           Control.Lens
+import           Lens.Micro
 
 -- | Given a refresh action, create a new configuration.
 newAsyncRefreshConf :: MonadIO m => m (RefreshResult a) -> AsyncRefreshConf m a
diff --git a/src/Control/Concurrent/Async/Refresh/Lenses.hs b/src/Control/Concurrent/Async/Refresh/Lenses.hs
--- a/src/Control/Concurrent/Async/Refresh/Lenses.hs
+++ b/src/Control/Concurrent/Async/Refresh/Lenses.hs
@@ -17,6 +17,6 @@
 module Control.Concurrent.Async.Refresh.Lenses where
 
 import           Control.Concurrent.Async.Refresh.Types
-import           Control.Lens
+import           Lens.Micro.TH
 
 makeFields ''AsyncRefreshConf
diff --git a/src/Control/Concurrent/Async/Refresh/Prelude.hs b/src/Control/Concurrent/Async/Refresh/Prelude.hs
--- a/src/Control/Concurrent/Async/Refresh/Prelude.hs
+++ b/src/Control/Concurrent/Async/Refresh/Prelude.hs
@@ -37,7 +37,7 @@
 import           Formatting
 import           Prelude                              hiding (head, tail,
                                                        undefined)
-import qualified Prelude                              as Prelude
+import qualified Prelude
 
 -- | Version of 'undefined' with a deprecated pragma.
 undefined :: a
diff --git a/src/Control/Concurrent/Async/Refresh/Types.hs b/src/Control/Concurrent/Async/Refresh/Types.hs
--- a/src/Control/Concurrent/Async/Refresh/Types.hs
+++ b/src/Control/Concurrent/Async/Refresh/Types.hs
@@ -26,7 +26,7 @@
   }
 
 -- | Data type denoting a running async refresher.
-data AsyncRefresh =
+newtype AsyncRefresh =
   AsyncRefresh { asyncRefreshAsync       :: Async () }
 
 -- | Data type returned by async refresh actions.
