diff --git a/benchmarks/Main.hs b/benchmarks/Main.hs
--- a/benchmarks/Main.hs
+++ b/benchmarks/Main.hs
@@ -1,9 +1,8 @@
 module Main where
 
 import Prelude
-import Bug
-import Criterion
-import Criterion.Main
+import Gauge
+import Gauge.Main
 import qualified Hasql.Connection as A
 import qualified Hasql.Session as B
 import qualified Hasql.Statement as C
@@ -33,7 +32,7 @@
       where
         sessionBench :: NFData a => String -> B.Session a -> Benchmark
         sessionBench name session =
-          bench name (nfIO (fmap (either ($bug "") id) (B.run session connection)))
+          bench name (nfIO (fmap (either (error "") id) (B.run session connection)))
 
 
 -- * Sessions
@@ -41,7 +40,7 @@
 
 sessionWithManySmallParameters :: Vector (Int64, Int64) -> B.Session ()
 sessionWithManySmallParameters =
-  $(todo "sessionWithManySmallParameters")
+  error "TODO: sessionWithManySmallParameters"
 
 sessionWithSingleLargeResultInVector :: B.Session (Vector (Int64, Int64))
 sessionWithSingleLargeResultInVector =
@@ -65,7 +64,7 @@
 
 statementWithManyParameters :: C.Statement (Vector (Int64, Int64)) ()
 statementWithManyParameters =
-  $(todo "statementWithManyParameters")
+  error "TODO: statementWithManyParameters"
 
 statementWithSingleRow :: C.Statement () (Int64, Int64)
 statementWithSingleRow =
diff --git a/hasql.cabal b/hasql.cabal
--- a/hasql.cabal
+++ b/hasql.cabal
@@ -1,5 +1,5 @@
 name: hasql
-version: 1.4.4.2
+version: 1.4.4.3
 category: Hasql, Database, PostgreSQL
 synopsis: An efficient PostgreSQL driver with a flexible mapping API
 description:
@@ -54,19 +54,16 @@
     Hasql.Private.Encoders.Value
     Hasql.Private.Encoders.Params
   build-depends:
-    attoparsec >=0.10 && <0.14,
-    base >=4.9 && <5,
-    base-prelude >=1.4 && <2,
-    bytestring >=0.10 && <0.11,
+    attoparsec >=0.10 && <0.15,
+    base >=4.11 && <5,
+    bytestring >=0.10 && <0.12,
     bytestring-strict-builder >=0.4.5.1 && <0.5,
     contravariant >=1.3 && <2,
     contravariant-extras ==0.3.*,
-    dlist ==0.8.* || >=1 && <2,
+    dlist >=1 && <2,
     hashable >=1.2 && <2,
     hashtables >=1.1 && <2,
-    loch-th ==0.2.*,
     mtl >=2 && <3,
-    placeholders ==0.1.*,
     postgresql-binary >=0.12.3 && <0.13,
     postgresql-libpq ==0.9.*,
     profunctors >=5.1 && <6,
@@ -126,8 +123,7 @@
     -rtsopts
     -funbox-strict-fields
   build-depends:
-    bug ==1.*,
-    criterion >=1.1 && <2,
+    gauge >=0.2.5 && <0.3,
     hasql,
     rerebase <2
 
@@ -142,6 +138,5 @@
     -threaded
     -rtsopts
   build-depends:
-    bug ==1.*,
     hasql,
     rerebase ==1.*
diff --git a/library/Hasql/Private/Encoders/Value.hs b/library/Hasql/Private/Encoders/Value.hs
--- a/library/Hasql/Private/Encoders/Value.hs
+++ b/library/Hasql/Private/Encoders/Value.hs
@@ -17,7 +17,7 @@
 {-# INLINE unsafePTI #-}
 unsafePTI :: PTI.PTI -> (Bool -> a -> B.Encoding) -> (a -> C.Builder) -> Value a
 unsafePTI pti =
-  Value (PTI.ptiOID pti) (fromMaybe ($bug "No array OID") (PTI.ptiArrayOID pti))
+  Value (PTI.ptiOID pti) (fromMaybe (error "No array OID") (PTI.ptiArrayOID pti))
 
 {-# INLINE unsafePTIWithShow #-}
 unsafePTIWithShow :: Show a => PTI.PTI -> (Bool -> a -> B.Encoding) -> Value a
diff --git a/library/Hasql/Private/Prelude.hs b/library/Hasql/Private/Prelude.hs
--- a/library/Hasql/Private/Prelude.hs
+++ b/library/Hasql/Private/Prelude.hs
@@ -5,8 +5,6 @@
   ByteStringBuilder,
   LazyText,
   TextBuilder,
-  bug,
-  bottom,
   forMToZero_,
   forMFromZero_,
   strictCons,
@@ -15,9 +13,76 @@
 where
 
 
--- base-prelude
+-- base
 -------------------------
-import BasePrelude as Exports hiding (assert, left, right, isLeft, isRight, fromLeft, fromRight, (<>), First(..), Last(..), new)
+import Control.Applicative as Exports hiding (WrappedArrow(..))
+import Control.Arrow as Exports hiding (first, second)
+import Control.Category as Exports
+import Control.Concurrent as Exports
+import Control.Exception as Exports
+import Control.Monad as Exports hiding (fail, mapM_, sequence_, forM_, msum, mapM, sequence, forM)
+import Control.Monad.IO.Class as Exports
+import Control.Monad.Fail as Exports
+import Control.Monad.Fix as Exports hiding (fix)
+import Control.Monad.ST as Exports
+import Data.Bifunctor as Exports
+import Data.Bits as Exports
+import Data.Bool as Exports
+import Data.Char as Exports
+import Data.Coerce as Exports
+import Data.Complex as Exports
+import Data.Data as Exports
+import Data.Dynamic as Exports
+import Data.Either as Exports
+import Data.Fixed as Exports
+import Data.Foldable as Exports hiding (toList)
+import Data.Function as Exports hiding (id, (.))
+import Data.Functor as Exports
+import Data.Functor.Compose as Exports
+import Data.Functor.Contravariant as Exports
+import Data.Int as Exports
+import Data.IORef as Exports
+import Data.Ix as Exports
+import Data.List as Exports hiding (sortOn, isSubsequenceOf, uncons, concat, foldr, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, find, maximumBy, minimumBy, mapAccumL, mapAccumR, foldl')
+import Data.List.NonEmpty as Exports (NonEmpty(..))
+import Data.Maybe as Exports
+import Data.Monoid as Exports hiding (Alt, (<>))
+import Data.Ord as Exports
+import Data.Proxy as Exports
+import Data.Ratio as Exports
+import Data.Semigroup as Exports hiding (First(..), Last(..))
+import Data.STRef as Exports
+import Data.String as Exports
+import Data.Traversable as Exports
+import Data.Tuple as Exports
+import Data.Unique as Exports
+import Data.Version as Exports
+import Data.Void as Exports
+import Data.Word as Exports
+import Debug.Trace as Exports
+import Foreign.ForeignPtr as Exports
+import Foreign.Ptr as Exports
+import Foreign.StablePtr as Exports
+import Foreign.Storable as Exports
+import GHC.Conc as Exports hiding (orElse, withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead)
+import GHC.Exts as Exports (IsList(..), lazy, inline, sortWith, groupWith)
+import GHC.Generics as Exports (Generic)
+import GHC.IO.Exception as Exports
+import GHC.OverloadedLabels as Exports
+import Numeric as Exports
+import Prelude as Exports hiding (Read, fail, concat, foldr, mapM_, sequence_, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, mapM, sequence, id, (.))
+import System.Environment as Exports
+import System.Exit as Exports
+import System.IO as Exports (Handle, hClose)
+import System.IO.Error as Exports
+import System.IO.Unsafe as Exports
+import System.Mem as Exports
+import System.Mem.StableName as Exports
+import System.Timeout as Exports
+import Text.ParserCombinators.ReadP as Exports (ReadP, readP_to_S, readS_to_P)
+import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readPrec_to_P, readP_to_Prec, readPrec_to_S, readS_to_Prec)
+import Text.Printf as Exports (printf, hPrintf)
+import Unsafe.Coerce as Exports
 
 -- transformers
 -------------------------
@@ -42,17 +107,12 @@
 
 -- contravariant
 -------------------------
-import Data.Functor.Contravariant as Exports
 import Data.Functor.Contravariant.Divisible as Exports
 
 -- contravariant-extras
 -------------------------
 import Contravariant.Extras as Exports
 
--- semigroups
--------------------------
-import Data.Semigroup as Exports
-
 -- hashable
 -------------------------
 import Data.Hashable as Exports (Hashable(..))
@@ -73,21 +133,12 @@
 -------------------------
 import Data.DList as Exports (DList)
 
--- placeholders
--------------------------
-import Development.Placeholders as Exports
-
--- loch-th
--------------------------
-import Debug.Trace.LocationTH as Exports
-
 -- postgresql-binary
 -------------------------
 import PostgreSQL.Binary.Data as Exports (UUID)
 
 -- custom
 -------------------------
-import qualified Debug.Trace.LocationTH
 import qualified Data.Text.Lazy
 import qualified Data.Text.Lazy.Builder
 import qualified Data.ByteString.Lazy
@@ -105,14 +156,6 @@
 
 type TextBuilder =
   Data.Text.Lazy.Builder.Builder
-
-bug =
-  [e| $(Debug.Trace.LocationTH.failure) . (msg <>) |]
-  where
-    msg = "A \"hasql\" package bug: " :: String
-
-bottom =
-  [e| $bug "Bottom evaluated" |]
 
 {-# INLINE forMToZero_ #-}
 forMToZero_ :: Applicative m => Int -> (Int -> m a) -> m ()
diff --git a/profiling/Main.hs b/profiling/Main.hs
--- a/profiling/Main.hs
+++ b/profiling/Main.hs
@@ -1,7 +1,6 @@
 module Main where
 
 import Prelude
-import Bug
 import qualified Hasql.Connection as A
 import qualified Hasql.Session as B
 import qualified Hasql.Statement as C
@@ -36,7 +35,7 @@
 
 sessionWithManySmallParameters :: Vector (Int64, Int64) -> B.Session ()
 sessionWithManySmallParameters =
-  $(todo "sessionWithManySmallParameters")
+  error "TODO: sessionWithManySmallParameters"
 
 sessionWithSingleLargeResultInVector :: B.Session (Vector (Int64, Int64))
 sessionWithSingleLargeResultInVector =
@@ -56,7 +55,7 @@
 
 statementWithManyParameters :: C.Statement (Vector (Int64, Int64)) ()
 statementWithManyParameters =
-  $(todo "statementWithManyParameters")
+  error "TODO: statementWithManyParameters"
 
 statementWithSingleRow :: C.Statement () (Int64, Int64)
 statementWithSingleRow =
