diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 0.1.6
+
+Re-export `Frames.CSV.declareColumn` from `Frames`. This makes it much
+easier to manually define column types.
+
 # 0.1.4
 
 Use `microlens` instead of `lens-family-core` for demos.
diff --git a/Frames.cabal b/Frames.cabal
--- a/Frames.cabal
+++ b/Frames.cabal
@@ -1,5 +1,5 @@
 name:                Frames
-version:             0.1.4
+version:             0.1.6
 synopsis:            Data frames For working with tabular data files
 description:         User-friendly, type safe, runtime efficient tooling for
                      working with tabular data deserialized from
@@ -48,7 +48,7 @@
                        TypeOperators, ConstraintKinds, StandaloneDeriving,
                        UndecidableInstances, ScopedTypeVariables,
                        OverloadedStrings
-  build-depends:       base >=4.7 && <4.10,
+  build-depends:       base >=4.8 && <4.10,
                        ghc-prim >=0.3 && <0.6,
                        primitive >= 0.6 && < 0.7,
                        text >= 1.1.1.0,
@@ -68,7 +68,7 @@
     buildable: False
   main-is: GetData.hs
   if flag(demos)
-    build-depends: base, bytestring, http-client, zip-archive
+    build-depends: base, bytestring, http-client >= 0.4.3, zip-archive, directory
   hs-source-dirs: data
   default-language: Haskell2010
   ghc-options: -Wall
@@ -118,7 +118,8 @@
                    pipes >= 4.1.5 && < 4.3
   hs-source-dirs: demo
   default-language: Haskell2010
-  ghc-options: -O2 -fllvm
+  ghc-options: -O2
+  -- ghc-options: -O2 -fllvm
 
 executable tutorial
   if !flag(demos)
@@ -143,7 +144,10 @@
                       pipes >= 4.1.5 && < 4.3
   hs-source-dirs:   benchmarks
   default-language: Haskell2010
-  ghc-options:      -O2 -fllvm
+  -- ghc-options:      -O2
+
+  -- Use opt and llc found on PATH rather than the GHC settings file
+  ghc-options:      -O2 -pgmlo opt -pgmlc llc -fllvm
 
 -- A demonstration of dealing with missing data. Provided for source
 -- code and experimentation rather than a useful executable.
diff --git a/benchmarks/BenchDemo.hs b/benchmarks/BenchDemo.hs
--- a/benchmarks/BenchDemo.hs
+++ b/benchmarks/BenchDemo.hs
@@ -2,9 +2,8 @@
 -- | Demonstration of streaming data processing. Try building with
 -- cabal (@cabal build benchdemo@), then running in bash with
 -- something like,
--- 
+--
 -- @$ /usr/bin/time -l dist/build/benchdemo/benchdemo 2>&1 | head -n 4@
-import Control.Applicative
 import qualified Control.Foldl as F
 import Frames
 import Pipes.Prelude (fold)
diff --git a/data/GetData.hs b/data/GetData.hs
--- a/data/GetData.hs
+++ b/data/GetData.hs
@@ -3,38 +3,40 @@
 import qualified Data.ByteString.Lazy.Char8 as B
 import Data.Maybe (fromJust)
 import Network.HTTP.Client
+import System.Directory (createDirectoryIfMissing)
 
 getPrestige :: IO ()
-getPrestige = withManager defaultManagerSettings $ \m ->
-              httpLbs req m >>=
-                B.writeFile "data/prestige.csv" . responseBody
-  where Just req = parseUrl "http://vincentarelbundock.github.io/Rdatasets/csv/car/Prestige.csv"
+getPrestige = do m <- newManager defaultManagerSettings
+                 httpLbs req m >>=
+                   B.writeFile "data/prestige.csv" . responseBody
+  where Just req = parseUrlThrow "http://vincentarelbundock.github.io/Rdatasets/csv/car/Prestige.csv"
 
 getFLinsurance :: IO ()
-getFLinsurance = withManager defaultManagerSettings $ \m -> 
-                 httpLbs req m >>=
-                   B.writeFile "data/FL2.csv"
-                 . B.map fixup . fromEntry . fromJust
-                 . findEntryByPath "FL_insurance_sample.csv"
-                 . toArchive
-                 . responseBody
+getFLinsurance = do m <- newManager defaultManagerSettings
+                    httpLbs req m >>=
+                        B.writeFile "data/FL2.csv"
+                      . B.map fixup . fromEntry . fromJust
+                      . findEntryByPath "FL_insurance_sample.csv"
+                      . toArchive
+                      . responseBody
   where fixup '\r' = '\n'
         fixup c = c
-        Just req = parseUrl "http://spatialkeydocs.s3.amazonaws.com/FL_insurance_sample.csv.zip"
+        Just req = parseUrlThrow "http://spatialkeydocs.s3.amazonaws.com/FL_insurance_sample.csv.zip"
 
 getAdultIncome :: IO ()
-getAdultIncome = withManager defaultManagerSettings $ \m ->
-                 httpLbs req m >>=
-                   B.writeFile "data/adult.csv"
-                 . B.append colNames
-                 . responseBody
-  where Just req = parseUrl "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
+getAdultIncome = do m <- newManager defaultManagerSettings
+                    httpLbs req m >>=
+                        B.writeFile "data/adult.csv"
+                      . B.append colNames
+                      . responseBody
+  where Just req = parseUrlThrow "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
         colNames = "age, workclass, fnlwgt, education, education-num, \
                    \marital-status, occupation, relationship, race, sex, \
                    \capital-gain, capital-loss, hours-per-week, \
                    \native-country\n"
 
 main :: IO ()
-main = do getPrestige
+main = do createDirectoryIfMissing False "data"
+          getPrestige
           getFLinsurance
           getAdultIncome
diff --git a/demo/Plot.hs b/demo/Plot.hs
--- a/demo/Plot.hs
+++ b/demo/Plot.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DataKinds, FlexibleContexts, TemplateHaskell #-}
+module Main where
 import qualified Data.Vector.Unboxed as V
 import Diagrams.Backend.Rasterific
 import Diagrams (dims2D, width, height)
diff --git a/src/Frames.hs b/src/Frames.hs
--- a/src/Frames.hs
+++ b/src/Frames.hs
@@ -25,7 +25,7 @@
 import Frames.Col ((:->)(..))
 import Frames.ColumnUniverse
 import Frames.CoRec (Field, onField, onCoRec)
-import Frames.CSV (readTable, readTableMaybe, readTable', 
+import Frames.CSV (readTable, readTableMaybe, readTable', declareColumn,
                    tableType, tableTypes, tableType', tableTypes')
 import Frames.Exploration
 import Frames.Frame
