diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -3,3 +3,8 @@
 ## 0.1.0.0  -- 2017-08-14
 
 * First version. Released on an unsuspecting world.
+
+## 0.1.0.1  -- 2017-10-07
+
+* Added `INLINE` pragmas.
+* Updated tests.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+# lens-toml-parser
+
+[![Build Status](https://travis-ci.org/xngns/lens-toml-parser.svg?branch=master)](https://travis-ci.org/xngns/lens-toml-parser)
+[![Hackage](https://img.shields.io/hackage/v/lens-toml-parser.svg)](http://hackage.haskell.org/package/lens-toml-parser)
+
+Lenses for [toml-parser](https://hackage.haskell.org/package/toml-parser).
+
+See the [tests](https://github.com/xngns/lens-toml-parser/blob/master/tests/Main.hs) for usage examples.
diff --git a/lens-toml-parser.cabal b/lens-toml-parser.cabal
--- a/lens-toml-parser.cabal
+++ b/lens-toml-parser.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                lens-toml-parser
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Lenses for toml-parser
 description:         Lenses for toml-parser
 license:             ISC
@@ -20,6 +20,7 @@
   .gitignore
   .travis.yml
   ChangeLog.md
+  README.md
   example/example-v0.4.0.toml
 
 source-repository head
@@ -47,7 +48,7 @@
                      , text        >=1.2 && <1.3
                      , dwergaz     >=0.2 && <0.3
                      , toml-parser >=0.1 && <0.2
-                     , lens-simple >=0.1 && <0.2
+                     , lens-family >=1.2 && <1.3
                      , lens-toml-parser
   hs-source-dirs:      tests
   default-language:    Haskell2010
@@ -60,3 +61,4 @@
                      , hlint >= 1.9
   hs-source-dirs:      tests
   default-language:    Haskell2010
+  ghc-options:         -Wall
diff --git a/src/TOML/Lens.hs b/src/TOML/Lens.hs
--- a/src/TOML/Lens.hs
+++ b/src/TOML/Lens.hs
@@ -58,6 +58,7 @@
   prism Table $ \ n -> case n of
     Table v -> pure v
     _       -> Left n
+{-# INLINE _Table #-}
 
 -- | @_List :: Prism' Value [Value]@
 _List
@@ -68,6 +69,7 @@
   prism List $ \ n -> case n of
     List v -> pure v
     _      -> Left n
+{-# INLINE _List #-}
 
 -- | @_Double :: Prism' Value Double@
 _Double
@@ -78,6 +80,7 @@
   prism Double $ \ n -> case n of
     Double v -> pure v
     _        -> Left n
+{-# INLINE _Double #-}
 
 -- | @_Integer :: Prism' Value Integer@
 _Integer
@@ -88,6 +91,7 @@
   prism Integer $ \ n -> case n of
     Integer v -> pure v
     _         -> Left n
+{-# INLINE _Integer #-}
 
 -- | @_String :: Prism' Value T.Text@
 _String
@@ -98,6 +102,7 @@
   prism String $ \ n -> case n of
     String v -> pure v
     _        -> Left n
+{-# INLINE _String #-}
 
 -- | @_Bool :: Prism' Value Bool@
 _Bool
@@ -108,6 +113,7 @@
   prism Bool $ \ n -> case n of
     Bool v -> pure v
     _      -> Left n
+{-# INLINE _Bool #-}
 
 -- | @_ZonedTimeV :: Prism' Value ZonedTime@
 _ZonedTimeV
@@ -118,6 +124,7 @@
   prism ZonedTimeV $ \ n -> case n of
     ZonedTimeV v -> pure v
     _            -> Left n
+{-# INLINE _ZonedTimeV #-}
 
 -- | @_LocalTimeV :: Prism' Value LocalTime@
 _LocalTimeV
@@ -128,6 +135,7 @@
   prism LocalTimeV $ \ n -> case n of
     LocalTimeV v -> pure v
     _            -> Left n
+{-# INLINE _LocalTimeV #-}
 
 -- | @_DayV :: Prism' Value Day@
 _DayV
@@ -138,6 +146,7 @@
   prism DayV $ \ n -> case n of
     DayV v -> pure v
     _      -> Left n
+{-# INLINE _DayV #-}
 
 -- | @_TimeOfDayV :: Prism' Value TimeOfDay@
 _TimeOfDayV
@@ -148,3 +157,4 @@
   prism TimeOfDayV $ \ n -> case n of
     TimeOfDayV v -> pure v
     _            -> Left n
+{-# INLINE _TimeOfDayV #-}
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -2,25 +2,28 @@
 
 module Main (main) where
 
-import           Control.Monad (unless)
-import qualified Data.Map.Lazy as Map
-import qualified Data.Text     as T
-import           Data.Text.IO  (readFile)
-import           Lens.Simple
-import           Prelude       hiding (readFile)
-import           System.Exit   (exitFailure)
+import           Control.Monad          (unless)
+import qualified Data.Map.Lazy          as Map
+import qualified Data.Text              as T
+import           Data.Text.IO           (readFile)
+import           Lens.Family2
+import           Lens.Family2.Stock     (at, _Just)
+import           Lens.Family2.Unchecked (iso)
+import           Prelude                hiding (readFile)
+import           System.Exit            (exitFailure)
 import           Test.Dwergaz
 import qualified TOML
 import           TOML.Lens
 
 
-alist :: Ord k => [(k, v)] -> Map.Map k v
-alist = Map.fromList
+allEqual :: Eq a => [a] -> Bool
+allEqual (x:xs) = all (== x) xs
+allEqual []     = error "allEqual: empty list"
 
-alistLens
+alist
   :: (Ord k1, Ord k2, Functor f)
   => LensLike f [(k1, v1)] [(k2, v2)] (Map.Map k1 v1) (Map.Map k2 v2)
-alistLens = iso Map.fromList Map.toList
+alist = iso Map.fromList Map.toList
 
 mapAt
   :: Applicative f
@@ -28,7 +31,7 @@
   -> (Map.Map T.Text TOML.Value -> f (Map.Map T.Text TOML.Value))
   -> Map.Map T.Text TOML.Value
   -> f (Map.Map T.Text TOML.Value)
-mapAt k = at k . _Just . _Table . alistLens
+mapAt k = at k . _Just . _Table . alist
 
 listAt
   :: Applicative f
@@ -44,7 +47,7 @@
            (==) expected actual
   where
     expected = Just "value"
-    actual   = alist kv ^? mapAt "table" . at "key" . _Just . _String
+    actual   = kv ^? alist . mapAt "table" . at "key" . _Just . _String
 
 testTableZoo :: [(T.Text, TOML.Value)] -> Test
 testTableZoo kv
@@ -52,7 +55,7 @@
            (==) expected actual
   where
     expected = Nothing
-    actual   = alist kv ^? mapAt "table" . at "zoo" . _Just . _String
+    actual   = kv ^? alist . mapAt "table" . at "zoo" . _Just . _String
 
 testTableSubtableKey :: [(T.Text, TOML.Value)] -> Test
 testTableSubtableKey kv
@@ -60,7 +63,7 @@
            (==) expected actual
   where
     expected = Just "another value"
-    actual   = alist kv ^? mapAt "table" . mapAt "subtable" . at "key" . _Just . _String
+    actual   = kv ^? alist . mapAt "table" . mapAt "subtable" . at "key" . _Just . _String
 
 testTableInlineNameFirst :: [(T.Text, TOML.Value)] -> Test
 testTableInlineNameFirst kv
@@ -68,7 +71,7 @@
            (==) expected actual
   where
     expected = Just "Tom"
-    actual   = alist kv ^? mapAt "table" . mapAt "inline" . mapAt "name" . at "first" . _Just . _String
+    actual   = kv ^? alist . mapAt "table" . mapAt "inline" . mapAt "name" . at "first" . _Just . _String
 
 testTableInlinePointY :: [(T.Text, TOML.Value)] -> Test
 testTableInlinePointY kv
@@ -76,7 +79,7 @@
            (==) expected actual
   where
     expected = Just 2
-    actual   = alist kv ^? mapAt "table" . mapAt "inline" . mapAt "point" . at "y" . _Just . _Integer
+    actual   = kv ^? alist . mapAt "table" . mapAt "inline" . mapAt "point" . at "y" . _Just . _Integer
 
 testStringBasicBasic :: [(T.Text, TOML.Value)] -> Test
 testStringBasicBasic kv
@@ -84,27 +87,27 @@
            (==) expected actual
   where
     expected = Just "I'm a string. \"You can quote me\". Name\tJos\233\nLocation\tSF."
-    actual   = alist kv ^? mapAt "string" . mapAt "basic" . at "basic" . _Just . _String
+    actual   = kv ^? alist . mapAt "string" . mapAt "basic" . at "basic" . _Just . _String
 
 testStringMultiline :: [(T.Text, TOML.Value)] -> Test
 testStringMultiline kv
   = Predicate "'key1', 'key2', and 'key3' from 'multiline' from 'string' are all the same"
-              (\ xs -> all (== head xs) (tail xs))
+              allEqual
               [actual1, actual2, actual3]
   where
-    actual1 = alist kv ^? mapAt "string" . mapAt "multiline" . at "key1" . _Just . _String
-    actual2 = alist kv ^? mapAt "string" . mapAt "multiline" . at "key2" . _Just . _String
-    actual3 = alist kv ^? mapAt "string" . mapAt "multiline" . at "key3" . _Just . _String
+    actual1 = kv ^? alist . mapAt "string" . mapAt "multiline" . at "key1" . _Just . _String
+    actual2 = kv ^? alist . mapAt "string" . mapAt "multiline" . at "key2" . _Just . _String
+    actual3 = kv ^? alist . mapAt "string" . mapAt "multiline" . at "key3" . _Just . _String
 
 testStringMultilineContinued :: [(T.Text, TOML.Value)] -> Test
 testStringMultilineContinued kv
   = Predicate "'key1', 'key2', and 'key3' from 'continued' from 'multiline' from 'string' are all the same"
-              (\ xs -> all (== head xs) (tail xs))
+              allEqual
               [actual1, actual2, actual3]
   where
-    actual1 = alist kv ^? mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key1" . _Just . _String
-    actual2 = alist kv ^? mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key2" . _Just . _String
-    actual3 = alist kv ^? mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key3" . _Just . _String
+    actual1 = kv ^? alist . mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key1" . _Just . _String
+    actual2 = kv ^? alist . mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key2" . _Just . _String
+    actual3 = kv ^? alist . mapAt "string" . mapAt "multiline" . mapAt "continued" . at "key3" . _Just . _String
 
 testArrayKey1 :: [(T.Text, TOML.Value)] -> Test
 testArrayKey1 kv
@@ -112,7 +115,7 @@
            (==) expected actual
   where
     expected = [1, 2, 3]
-    actual   = alist kv ^.. mapAt "array" . listAt "key1" . traverse . _Integer
+    actual   = kv ^.. alist . mapAt "array" . listAt "key1" . traverse . _Integer
 
 runTests :: [(T.Text, TOML.Value)] -> [Result]
 runTests kv = runTest . ($ kv) <$> tests
