diff --git a/presto-hdbc.cabal b/presto-hdbc.cabal
--- a/presto-hdbc.cabal
+++ b/presto-hdbc.cabal
@@ -11,7 +11,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.1.0.1
+version:             0.1.0.2
 
 -- A short (one-line) description of the package.
 synopsis:            An HDBC connector for Presto
@@ -55,7 +55,7 @@
   exposed-modules: Database.HDBC.Presto
 
   -- Modules included in this library but not exported.
-  other-modules: Database.HDBC.PrestoData
+  other-modules: Database.HDBC.PrestoData, Util, JSONConventions
 
   -- LANGUAGE extensions used by modules in this package.
   -- other-extensions:
diff --git a/src/Database/HDBC/Presto.hs b/src/Database/HDBC/Presto.hs
--- a/src/Database/HDBC/Presto.hs
+++ b/src/Database/HDBC/Presto.hs
@@ -36,9 +36,7 @@
 import Network.Http.Client
 import qualified System.IO.Streams as Streams
 
--- TODO: move to utility library or find in real library
-maybeToEither = flip maybe Right . Left
-maybeToEitherT x y = hoistEither $ maybeToEither x y
+import Util
 
 instance IConnection PrestoConnection where
     disconnect = disconnectPresto
diff --git a/src/Database/HDBC/PrestoData.hs b/src/Database/HDBC/PrestoData.hs
--- a/src/Database/HDBC/PrestoData.hs
+++ b/src/Database/HDBC/PrestoData.hs
@@ -9,7 +9,7 @@
 import Data.Text as T
 import Database.HDBC (SqlValue)
 import GHC.Generics
-import Util.JSONConventions
+import JSONConventions
 
 data PrestoStats = PrestoStats { state :: String
                                , scheduled :: Bool
diff --git a/src/JSONConventions.hs b/src/JSONConventions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSONConventions.hs
@@ -0,0 +1,12 @@
+module JSONConventions where
+
+import Control.Lens ((%~), _head)
+import Data.Aeson.TH (Options(..), SumEncoding(..), defaultOptions)
+import Data.Char (toLower)
+
+jsonOptions = defaultOptions { constructorTagModifier = _head %~ toLower
+                             , fieldLabelModifier = \s -> let d = dropWhile (/= '_') s in
+                                                            if null d then s else (tail d)
+                             , omitNothingFields = True
+                             , sumEncoding = ObjectWithSingleField
+                             }
diff --git a/src/Util.hs b/src/Util.hs
new file mode 100644
--- /dev/null
+++ b/src/Util.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+module Util where
+
+import Control.Monad.Trans
+import Control.Monad.Trans.Either
+
+
+-- mapLeft :: (a -> c) -> Either a b -> Either c b
+-- mapLeft f (Left x)  = Left (f x)
+-- mapLeft _ (Right x) = Right x
+
+maybeToEither :: e -> Maybe v -> Either e v
+maybeToEither _ (Just x) = Right x
+maybeToEither e Nothing  = Left e
+
+maybeToEitherT :: Monad m => e -> Maybe a -> EitherT e m a
+maybeToEitherT x y = hoistEither $ maybeToEither x y
+
+ioEither :: (Monad m) => m (Either l r) -> EitherT l m r
+ioEither action = do
+  result <- lift action
+  hoistEither result
