diff --git a/ply-loader.cabal b/ply-loader.cabal
--- a/ply-loader.cabal
+++ b/ply-loader.cabal
@@ -1,5 +1,5 @@
 name:                ply-loader
-version:             0.3
+version:             0.3.1
 synopsis:            PLY file loader.
 
 description:         PLY is a lightweight file format for representing 3D
diff --git a/src/PLY.hs b/src/PLY.hs
--- a/src/PLY.hs
+++ b/src/PLY.hs
@@ -34,6 +34,7 @@
 import qualified Data.ByteString.Char8 as BC
 import Data.Either (partitionEithers)
 import Data.Vector (Vector)
+import qualified Data.Vector as VB
 import qualified Data.Vector.Storable as VS
 import Linear
 import System.Directory (canonicalizePath)
diff --git a/src/PLY/Internal/Parsers.hs b/src/PLY/Internal/Parsers.hs
--- a/src/PLY/Internal/Parsers.hs
+++ b/src/PLY/Internal/Parsers.hs
@@ -2,8 +2,8 @@
 module PLY.Internal.Parsers where
 import Control.Applicative
 import Data.Attoparsec.Char8 hiding (char)
-import qualified Data.Attoparsec.ByteString as B
 import Data.ByteString (ByteString)
+import qualified Data.ByteString.Char8 as BC
 import PLY.Types
 
 -- |Skip white space, comments, and obj_info lines.
@@ -43,7 +43,7 @@
 
 -- | Take everything up to the end of the line
 line :: Parser ByteString
-line = B.takeTill isEndOfLine
+line = BC.pack <$> manyTill anyChar endOfLine
 
 scalarProperty :: Parser Property
 scalarProperty = ScalarProperty <$> ("property " .*> scalarType) <*> line
@@ -97,7 +97,7 @@
         go acc (ScalarProperty t _:ps) = do !x <- parseScalar t
                                             skipSpace
                                             go (x:acc) ps
-        go _ (ListProperty t _:_) = int >>= flip count (parseScalar t)
+        go _ (ListProperty t _:_) = int <* skipSpace >>= flip count (parseScalar t)
 
 -- FIXME: Support for list properties assumes that an element will not
 -- have any other properties if it has a list property!
diff --git a/src/PLY/Types.hs b/src/PLY/Types.hs
--- a/src/PLY/Types.hs
+++ b/src/PLY/Types.hs
@@ -4,6 +4,7 @@
 import Data.ByteString (ByteString)
 import Data.Int
 import Data.Word
+import Foreign.C.Types (CFloat, CDouble, CInt, CUChar)
 import Foreign.Storable (Storable)
 
 data Format = ASCII | Binary_LE | Binary_BE deriving Show
@@ -38,17 +39,37 @@
   unsafeUnwrap (Sfloat x) = x
   unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a Float"
 
+instance PLYType CFloat where
+  plyType _ = Tfloat
+  unsafeUnwrap (Sfloat x) = realToFrac x
+  unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a CFloat"
+
 instance PLYType Double where
   plyType _ = Tdouble
   unsafeUnwrap (Sdouble x) = x
   unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a Double"
 
+instance PLYType CDouble where
+  plyType _ = Tdouble
+  unsafeUnwrap (Sdouble x) = realToFrac x
+  unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a CDouble"
+
 instance PLYType Int where
   plyType _ = Tint
   unsafeUnwrap (Sint x) = x
   unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as an Int"
 
+instance PLYType CInt where
+  plyType _ = Tint
+  unsafeUnwrap (Sint x) = fromIntegral x
+  unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as an CInt"
+
 instance PLYType Word8 where
   plyType _ = Tuchar
   unsafeUnwrap (Suchar x) = x
   unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a Word8"
+
+instance PLYType CUChar where
+  plyType _ = Tuchar
+  unsafeUnwrap (Suchar x) = fromIntegral x
+  unsafeUnwrap y = error $ "Tried to unwrap "++show y++" as a CUChar"
