diff --git a/pcd-loader.cabal b/pcd-loader.cabal
--- a/pcd-loader.cabal
+++ b/pcd-loader.cabal
@@ -1,5 +1,5 @@
 name:                pcd-loader
-version:             0.3.0.0
+version:             0.3.0.1
 synopsis:            PCD file loader.
 description:         Parser for PCD (point cloud data) formats.  See
                      <http://pointclouds.org/documentation/tutorials/pcd_file_format.php>
@@ -23,8 +23,9 @@
                     PCD.Internal.StorableFieldType, PCD.Internal.AsciiParsers
   ghc-options:      -O2 -Wall
   hs-source-dirs:   src
-  build-depends:    base >= 4.5 && < 5, text, mtl, lens, vector, bytestring, 
-                    attoparsec, binary, deepseq, linear
+  build-depends:    base >= 4.5 && < 5, text, mtl, vector, bytestring, 
+                    attoparsec, binary, deepseq, 
+                    lens >= 3.8.1, linear
   default-language: Haskell2010
 
 executable pcd2bin
diff --git a/src/PCD/Data.hs b/src/PCD/Data.hs
--- a/src/PCD/Data.hs
+++ b/src/PCD/Data.hs
@@ -103,8 +103,11 @@
 loadPoints parser pcdFile = do h <- openFile pcdFile ReadMode
                                (pcdh,_) <- readHeader h
                                r <- pcdh `deepseq` readPointData pcdh h parser
+                               v <- case r of
+                                      Left _ -> return V.empty
+                                      Right v' -> V.length v' `seq` return v'
                                hClose h
-                               return $ either (const V.empty) id r
+                               return v
 
 -- |Read a PCD file consisting of floating point XYZ coordinates for
 -- each point.
diff --git a/src/PCD/Header.hs b/src/PCD/Header.hs
--- a/src/PCD/Header.hs
+++ b/src/PCD/Header.hs
@@ -5,7 +5,7 @@
 module PCD.Header where
 import Control.Applicative
 import Control.Arrow ((***))
-import Control.Lens (makeLenses, (^.), (%~), (.=), _1, _2, use, Setting)
+import Control.Lens (makeLenses, (^.), (%~), (.=), _1, _2, use, ASetter)
 import Control.Monad.State
 import Data.Foldable (Foldable, foldMap)
 import Data.Int
@@ -213,7 +213,7 @@
   where nxt :: (MonadState (a,Maybe Text) m, MonadIO m) => m ()
         nxt = liftIO (nextLine h) >>= (_2.=) . Just
         entry :: (MonadState (s,Maybe Text) m, MonadIO m, Functor m) => 
-                 Parser a -> Setting s s a a -> m ()
+                 Parser a -> ASetter s s a a -> m ()
         entry parser field = do use _2 >>= maybe nxt (const (return ()))
                                 Just ln <- use _2
                                 case parseOnly parser ln of
