diff --git a/Database/SQLite/Simple.hs b/Database/SQLite/Simple.hs
--- a/Database/SQLite/Simple.hs
+++ b/Database/SQLite/Simple.hs
@@ -38,7 +38,7 @@
     -- ** Type conversions
     -- $types
     Query(..)
-  , Connection
+  , Connection(..)
   , ToRow(..)
   , FromRow(..)
   , Only(..)
diff --git a/Database/SQLite/Simple/FromField.hs b/Database/SQLite/Simple/FromField.hs
--- a/Database/SQLite/Simple/FromField.hs
+++ b/Database/SQLite/Simple/FromField.hs
@@ -39,10 +39,12 @@
 import           Control.Exception (SomeException(..), Exception)
 import           Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8 as B
+import qualified Data.ByteString.Lazy as LB
 import           Data.Int (Int16, Int32, Int64)
 import           Data.Time (UTCTime, Day)
 import           Data.Time.Format (parseTime)
 import qualified Data.Text as T
+import qualified Data.Text.Lazy as LT
 import           Data.Typeable (Typeable, typeOf)
 
 import           System.Locale (defaultTimeLocale)
@@ -139,14 +141,20 @@
     fromField (Field (SQLText txt) _) = Ok txt
     fromField f                       = returnError ConversionFailed f "need a text"
 
+instance FromField LT.Text where
+    fromField (Field (SQLText txt) _) = Ok . LT.fromStrict $ txt
+    fromField f                       = returnError ConversionFailed f "need a text"
+
 instance FromField [Char] where
   fromField (Field (SQLText t) _) = Ok $ T.unpack t
   fromField f                     = returnError ConversionFailed f "expecting SQLText column type"
 
--- TODO ToRow has both T and LB variants of ByteString, check what's
--- really needed here
 instance FromField ByteString where
   fromField (Field (SQLBlob blb) _) = Ok blb
+  fromField f                       = returnError ConversionFailed f "expecting SQLBlob column type"
+
+instance FromField LB.ByteString where
+  fromField (Field (SQLBlob blb) _) = Ok . LB.fromChunks $ [blb]
   fromField f                       = returnError ConversionFailed f "expecting SQLBlob column type"
 
 instance FromField UTCTime where
diff --git a/Database/SQLite/Simple/Internal.hs b/Database/SQLite/Simple/Internal.hs
--- a/Database/SQLite/Simple/Internal.hs
+++ b/Database/SQLite/Simple/Internal.hs
@@ -32,7 +32,14 @@
 import qualified Database.SQLite3 as Base
 
 -- | Connection to an open database.
-data Connection = Connection Base.Database
+--
+-- You can use 'connectionHandle' to gain access to the underlying
+-- <http://hackage.haskell.org/package/direct-sqlite> connection.
+-- This may be useful if you need to access some direct-sqlite
+-- functionality that's not exposed in the sqlite-simple API.  This
+-- should be a safe thing to do although mixing both APIs is
+-- discouraged.
+newtype Connection = Connection { connectionHandle :: Base.Database }
 
 -- | A Field represents metadata about a particular field
 
diff --git a/sqlite-simple.cabal b/sqlite-simple.cabal
--- a/sqlite-simple.cabal
+++ b/sqlite-simple.cabal
@@ -1,5 +1,5 @@
 Name:                sqlite-simple
-Version:             0.4.0.0
+Version:             0.4.1.0
 Synopsis:            Mid-Level SQLite client library
 Description:
     Mid-level SQLite client library, based on postgresql-simple.
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -14,6 +14,7 @@
 import Fold
 import Statement
 import Debug
+import DirectSqlite
 
 tests :: [TestEnv -> Test]
 tests =
@@ -38,6 +39,7 @@
     , TestLabel "Statement" . testDoubleBind
     , TestLabel "Statement" . testPreparedStatements
     , TestLabel "Debug"     . testDebugTracing
+    , TestLabel "Direct"    . testDirectSqlite
     ]
 
 -- | Action for connecting to the database that will be used for testing.
