diff --git a/code/CursedCSV.hs b/code/CursedCSV.hs
--- a/code/CursedCSV.hs
+++ b/code/CursedCSV.hs
@@ -7,17 +7,14 @@
 
 module Main where
 
-import Control.Applicative
 import Control.Arrow
-import Control.Exception(throwIO)
 import Control.Monad.State.Strict
 import Data.Char(isSpace)
 import Data.ByteString.Char8(unpack,pack,ByteString)
 import qualified Data.ByteString.Char8 as B
-import Data.CSV.Enumerator
-import qualified Data.Enumerator as E
-import Data.Enumerator (($$))
-import Data.Enumerator.Binary (enumHandle)
+import Data.CSV.Conduit
+import qualified Data.Conduit as C
+import qualified Data.Conduit.Binary as C
 import Data.Function(on)
 import Data.List(insertBy, intercalate, mapAccumL, sortBy, transpose, find)
 import Data.Maybe(fromMaybe, isNothing)
@@ -26,10 +23,15 @@
 import System.Exit
 import System.IO
 import Text.Regex.TDFA
-import UI.HSCurses.Curses
+import UI.HSCurses.Curses hiding (rs, bs)
 import UI.HSCurses.CursesHelper
 import qualified Algorithms.NaturalSort as NS
 import System.Console.ParseArgs
+import qualified Data.Vector.Generic                as GV
+import qualified Data.Vector.Generic.Mutable        as GMV
+import           Control.Monad.Primitive
+import qualified Data.Vector as V
+
 #if defined(mingw32_HOST_OS) || defined(__MINGW32__)
 #else
 import System.Posix.Signals
@@ -773,6 +775,26 @@
 
 
 
+sinkVector :: (PrimMonad m, GV.Vector v a) => Int -> C.ConduitM a o m (v a)
+sinkVector by = do
+    v <- lift $ GMV.new by
+    go 0 v
+  where
+    -- i is the index of the next element to be written by go
+    -- also exactly the number of elements in v so far
+    go i v = do
+        res <- C.await
+        case res of
+          Nothing -> do
+            v' <- lift $ GV.freeze $ GMV.slice 0 i v
+            return $! v'
+          Just x -> do
+            v' <- case GMV.length v == i of
+                    True  -> lift $ GMV.grow v by
+                    False -> return v
+            lift $ GMV.write v' i x
+            go (i+1) v'
+
 main :: IO ()
 main = do
   pargs <- parseArgsIO ArgsComplete
@@ -783,13 +805,13 @@
           ]
   when (gotArg pargs "Help") $ usageError pargs ""
   let sepChar = fromMaybe ',' $ join $ fmap headMay $ getArg pargs "Separator"
-      foldCSVHandle h csvs f acc = E.run (enumHandle 4096 h $$ iterCSV csvs f acc)
-      readCSVHandle s h = fmap reverse <$> foldCSVHandle h s collectRows []
+      growthFactor = 10
+      readCSVHandle set h = runResourceT $ C.runConduit $ C.sourceHandle h C..| intoCSV set C..| C.transPipe lift (sinkVector growthFactor)
 
   inHandle <- getArgStdio pargs "Infile" ReadMode
   canRead <- hReady inHandle
   when (not canRead) $ usageError pargs ""
-  mydata <- {-fmap (map (map unpack))$ -} either throwIO return =<< readCSVHandle (defCSVSettings {csvSep = sepChar}) inHandle
+  mydata <- V.toList <$>  readCSVHandle (defCSVSettings {csvSep = sepChar}) inHandle
   start
   -- [headsty,tbsty] <- convertStyles [AttributeStyle [Bold] DarkGreenF BlackB, Style DarkGreenF DefaultB]
   (_h, w) <- myScrSize
@@ -798,5 +820,3 @@
       as = AppState [nums, (w - 5, myTbl)] 1 (tcols myTbl) (trows myTbl) [] [] Nothing 0 Nothing
   evalStateT (processKeys keyTree) $ as
   bye
-
-
diff --git a/cursedcsv.cabal b/cursedcsv.cabal
--- a/cursedcsv.cabal
+++ b/cursedcsv.cabal
@@ -1,5 +1,5 @@
 Name:                cursedcsv
-Version:             0.1.2
+Version:             0.1.3
 Synopsis:            Terminal tool for viewing tabular data
 Description:         Curses-based tool for quick display, searching, sorting, etc. of
                      tabular data. Help available in the app with either '?' or 'h'.
@@ -17,7 +17,7 @@
   Main-is: CursedCSV.hs
   Build-depends: base >= 4 && < 6, parseargs >= 0.1.3, natural-sort >= 0.1.1,
                  hscurses >= 1.4, regex-tdfa >= 1.1.8, safe >= 0.3, mtl >= 2,
-                 csv-enumerator > 0.9, enumerator >= 0.4, bytestring > 0.9
+                 csv-conduit > 0.7, conduit >= 1.2.8 && < 2.0, conduit-extra, vector >=0.12 && < 0.13, bytestring > 0.9, primitive >=0.6.1 && < 0.7
   if !os(windows)
     Build-depends: unix >= 2.4
   ghc-options:     -Wall
