diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.4
+
+Use `microlens` instead of `lens-family-core` for demos.
+
 # 0.1.3
 
 GHC-8.0.1 compatibility
diff --git a/Frames.cabal b/Frames.cabal
--- a/Frames.cabal
+++ b/Frames.cabal
@@ -1,5 +1,5 @@
 name:                Frames
-version:             0.1.3
+version:             0.1.4
 synopsis:            Data frames For working with tabular data files
 description:         User-friendly, type safe, runtime efficient tooling for
                      working with tabular data deserialized from
@@ -80,9 +80,9 @@
   main-is: Plot.hs
   if flag(demos)
     build-depends: base, Frames,
-                   lens-family-core, vector, text,
+                   microlens, vector, text,
                    template-haskell,
-                   pipes >= 4.1.5 && < 4.2, 
+                   pipes >= 4.1.5 && < 4.3,
                    Chart >= 1.5 && < 1.8,
                    Chart-diagrams >= 1.5 && < 1.8,
                    diagrams-rasterific >= 1.3 && < 1.4,
@@ -97,12 +97,12 @@
   main-is: Plot2.hs
   if flag(demos)
     build-depends: base, Frames,
-                   lens-family-core, vector, text, template-haskell,
-                   pipes >= 4.1.5 && < 4.2,
+                   microlens, vector, text, template-haskell,
+                   pipes >= 4.1.5 && < 4.3,
                    Chart >= 1.5 && < 1.8,
                    Chart-diagrams >= 1.5 && < 1.8,
                    diagrams-rasterific >= 1.3 && < 1.4,
-                   diagrams-lib >= 1.3 && < 1.4, 
+                   diagrams-lib >= 1.3 && < 1.4,
                    readable, containers, statistics
   hs-source-dirs: demo
   default-language: Haskell2010
@@ -113,9 +113,9 @@
     buildable: False
   main-is: Main.hs
   if flag(demos)
-    build-depends: base, list-t, lens-family-core, transformers, Frames,
+    build-depends: base, list-t, microlens, transformers, Frames,
                    vector, text, template-haskell, ghc-prim, readable,
-                   pipes >= 4.1.5 && < 4.2
+                   pipes >= 4.1.5 && < 4.3
   hs-source-dirs: demo
   default-language: Haskell2010
   ghc-options: -O2 -fllvm
@@ -126,9 +126,9 @@
   main-is: TutorialMain.hs
   if flag(demos)
     build-depends: base, Frames,
-                   lens-family-core, vector, text, template-haskell, readable,
+                   microlens, vector, text, template-haskell, readable,
                    foldl >= 1.1.0 && < 1.3,
-                   pipes >= 4.1.5 && < 4.2
+                   pipes >= 4.1.5 && < 4.3
   hs-source-dirs: demo
   default-language: Haskell2010
 
@@ -138,9 +138,9 @@
     buildable: False
   main-is:          BenchDemo.hs
   if flag(demos)
-    build-depends:    base, Frames, lens-family-core,
+    build-depends:    base, Frames,
                       foldl >= 1.1.0 && < 1.3,
-                      pipes >= 4.1.5 && < 4.2
+                      pipes >= 4.1.5 && < 4.3
   hs-source-dirs:   benchmarks
   default-language: Haskell2010
   ghc-options:      -O2 -fllvm
@@ -161,8 +161,8 @@
   type:             exitcode-stdio-1.0
   hs-source-dirs:   benchmarks
   main-is:          InsuranceBench.hs
-  build-depends:    base, criterion, Frames, lens-family-core, transformers,
-                    pipes >= 4.1.5 && < 4.2
+  build-depends:    base, criterion, Frames, transformers,
+                    pipes >= 4.1.5 && < 4.3
   ghc-options:      -O2
   default-language: Haskell2010
 
diff --git a/demo/Kata04.hs b/demo/Kata04.hs
--- a/demo/Kata04.hs
+++ b/demo/Kata04.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE DataKinds, FlexibleContexts, OverloadedStrings,
              TemplateHaskell, TypeFamilies, TypeOperators,
              MultiParamTypeClasses, ScopedTypeVariables,
-             FlexibleContexts, FlexibleInstances #-}
+             FlexibleInstances #-}
 module Main where
 import qualified Data.Foldable as F
 import Data.Ord (comparing)
diff --git a/demo/Main.hs b/demo/Main.hs
--- a/demo/Main.hs
+++ b/demo/Main.hs
@@ -3,7 +3,7 @@
 module Main where
 import Data.Functor.Identity
 import Frames
-import Lens.Family
+import Lens.Micro
 import qualified ListT as L
 import qualified Pipes as P
 import qualified Pipes.Prelude as P
@@ -17,7 +17,7 @@
 tbl = listTlist $ readTable' "data/data1.csv"
 
 ageDoubler :: (Age ∈ rs) => Record rs -> Record rs
-ageDoubler = age *~ 2
+ageDoubler = age %~ (* 2)
 
 tbl2 :: IO [Row]
 tbl2 = listTlist $ readTable' "data/data2.csv"
diff --git a/src/Frames/CSV.hs b/src/Frames/CSV.hs
--- a/src/Frames/CSV.hs
+++ b/src/Frames/CSV.hs
@@ -17,11 +17,11 @@
 module Frames.CSV where
 import Control.Applicative ((<$>), pure, (<*>))
 import Control.Arrow (first)
-import Control.Monad (MonadPlus(..))
+import Control.Monad (MonadPlus(..), when, void)
 import Control.Monad.IO.Class
 import Data.Char (isAlpha, isAlphaNum, toLower, toUpper)
 import Data.Foldable (foldMap)
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, isNothing)
 import Data.Monoid ((<>), Monoid(..))
 import Data.Proxy
 import qualified Data.Text as T
@@ -39,9 +39,6 @@
 import Language.Haskell.TH.Syntax
 import qualified Pipes as P
 import System.IO (Handle, hIsEOF, openFile, IOMode(..), withFile)
-import Control.Monad (when)
-import Data.Maybe (isNothing)
-import Control.Monad (void)
 
 type Separator = T.Text
 
@@ -256,7 +253,7 @@
                  . T.concat . T.split (not . valid) . toTitle'
   where valid c = isAlphaNum c || c == '\'' || c == '_'
         toTitle' = foldMap (onHead toUpper) . T.split (not . isAlphaNum)
-        onHead f = maybe mempty (uncurry T.cons) . fmap (first f) . T.uncons 
+        onHead f = maybe mempty (uncurry T.cons) . fmap (first f) . T.uncons
         unreserved t
           | t `elem` ["Type"] = "Col" <> t
           | otherwise = t
@@ -300,8 +297,9 @@
 colDec prefix colName colTy = (:) <$> mkColTDec colTypeQ colTName'
                                   <*> mkColPDec colTName' colTyQ colPName
   where colTName = sanitizeTypeName (prefix <> colName)
-        colPName = fromMaybe "colDec impossible" $
-                   fmap (\(c,t) -> T.cons (toLower c) t) (T.uncons colTName)
+        colPName = maybe "colDec impossible"
+                         (\(c,t) -> T.cons (toLower c) t)
+                         (T.uncons colTName)
         colTName' = mkName $ T.unpack colTName
         colTyQ = colType colTy
         colTypeQ = [t|$(litT . strTyLit $ T.unpack colName) :-> $colTyQ|]
@@ -313,8 +311,9 @@
 declareColumn colName colTy = (:) <$> mkColTDec colTypeQ colTName'
                                   <*> mkColPDec colTName' colTyQ colPName
   where colTName = sanitizeTypeName colName
-        colPName = fromMaybe "colDec impossible" $
-                   fmap (\(c,t) -> T.cons (toLower c) t) (T.uncons colTName)
+        colPName = maybe "colDec impossible"
+                         (\(c,t) -> T.cons (toLower c) t)
+                         (T.uncons colTName)
         colTName' = mkName $ T.unpack colTName
         colTyQ = return (ConT colTy)
         colTypeQ = [t|$(litT . strTyLit $ T.unpack colName) :-> $colTyQ|]
