diff --git a/opaleye-trans.cabal b/opaleye-trans.cabal
--- a/opaleye-trans.cabal
+++ b/opaleye-trans.cabal
@@ -1,5 +1,5 @@
 name:                opaleye-trans
-version:             0.3.3
+version:             0.3.4
 synopsis:            A monad transformer for Opaleye
 description:         A monad transformer for Opaleye
 homepage:            https://github.com/WraithM/opaleye-trans
diff --git a/src/Opaleye/Trans.hs b/src/Opaleye/Trans.hs
--- a/src/Opaleye/Trans.hs
+++ b/src/Opaleye/Trans.hs
@@ -30,6 +30,9 @@
     , updateReturning
     , updateReturningFirst
 
+    , -- * Deletes
+      delete
+
     , -- * Utilities
       withConn
 
@@ -147,13 +150,13 @@
 --
 -- Maybe not worth defining. This almost certainly does the wrong thing.
 insertManyReturning
-    :: (MonadIO m, Default QueryRunner a b)
+    :: (Default QueryRunner a b)
     => Table w r
-    -> (r -> a)
     -> [w]
-    -> OpaleyeT m [[b]]
-insertManyReturning t ret ws =
-    transaction (mapM (insertReturning t ret) ws)
+    -> (r -> a)
+    -> Transaction [b]
+insertManyReturning t ws ret =
+    withConnIO (\c -> runInsertManyReturning c t ws ret)
 
 
 -- | Update items in a 'Table' where the predicate is true.  See 'runUpdate'.
@@ -183,3 +186,9 @@
     -> Transaction (Maybe haskells)
 updateReturningFirst table r2w predicate r2returned =
     listToMaybe <$> updateReturning table r2w predicate r2returned
+
+delete
+    :: Table a columnsR
+    -> (columnsR -> Column PGBool)
+    -> Transaction Int64
+delete table r2b = withConnIO (\c -> runDelete c table r2b)
