diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for http-pony
 
-## 0.1.0.0  -- YYYY-mm-dd
+## 0.1.0.0  -- 2016-09-22
 
 * First version. Released on an unsuspecting world.
+
+## 0.1.0.3  -- 2016-09-24
+
+* Add MonadSafe type for m, this enables resource safe request / repsonse pipes.
diff --git a/http-pony.cabal b/http-pony.cabal
--- a/http-pony.cabal
+++ b/http-pony.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                http-pony
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            A type unsafe http library
 -- description:         
 license:             BSD3
@@ -21,7 +21,6 @@
   exposed-modules:     Network.HTTP.Pony.Type
                      , Network.HTTP.Pony.Serve
                      , Network.HTTP.Pony.Helper
-                     -- , Network.HTTP.Pony.Transformer
   -- other-modules:       
   -- other-extensions:    OverloadedStrings
   build-depends:       
@@ -32,7 +31,6 @@
                        , pipes >=4.1
                        , pipes-network >=0.6
                        , pipes-safe >=2.2
-                       -- , profunctors >= 5.2
                        , transformers >=0.5
 
 
diff --git a/src/Network/HTTP/Pony/Serve.hs b/src/Network/HTTP/Pony/Serve.hs
--- a/src/Network/HTTP/Pony/Serve.hs
+++ b/src/Network/HTTP/Pony/Serve.hs
@@ -7,11 +7,12 @@
 import           Control.Monad.IO.Class (MonadIO(..))
 import           Data.ByteString.Char8 (ByteString)
 import qualified Network.Socket as NS
-import           Pipes (Producer, Consumer, runEffect, (>->))
+import           Pipes (Effect, Producer, Consumer, runEffect, (>->))
 import           Pipes.Network.TCP.Safe (HostPreference())
-import           Pipes.Network.TCP.Safe (fromSocket, toSocket)
+import           Pipes.Network.TCP.Safe (fromSocket, toSocket, connect, connectSock
+                                        , closeSock)
 import qualified Pipes.Network.TCP.Safe as PipesNetwork
-import           Pipes.Safe (MonadSafe(), runSafeT)
+import           Pipes.Safe (MonadSafe(), runSafeT, SafeT)
 
 import           Network.HTTP.Pony.Helper ((-), shutdownSend, shutdownReceive)
 import           Prelude hiding ((-), log)
@@ -27,8 +28,8 @@
   pure ()
 
 serveWithSocket :: (MonadIO m)  => (NS.Socket, NS.SockAddr)
-                              -> (Producer ByteString m () -> m (Producer ByteString m ()))
-                              -> m ()
+                                -> (Producer ByteString m () -> m (Producer ByteString m ()))
+                                -> m ()
 serveWithSocket (s,_) =
   let
     pull = fromSocket s 4096 >> shutdownReceive s
@@ -37,18 +38,19 @@
 
   serveWithPipe pull push
 
+serve :: (MonadSafe m)  => HostPreference
+                        -> NS.ServiceName
+                        -> (Producer ByteString (SafeT IO) ()
+                            -> (SafeT IO) (Producer ByteString (SafeT IO) ()))
+                        -> m ()
 
+serve host service app =
+  PipesNetwork.serve host service - \socket -> runSafeT (serveWithSocket socket app)
+
 run :: (MonadSafe m) => HostPreference
                      -> NS.ServiceName
-                     -> (Producer ByteString IO () -> IO (Producer ByteString IO ()))
+                     -> (Producer ByteString (SafeT IO) ()
+                         -> (SafeT IO) (Producer ByteString (SafeT IO) ()))
                      -> m ()
-run host service app =
-  PipesNetwork.serve host service - \socket -> do
-    serveWithSocket socket app
-
-    -- pure ()
+run = serve
 
-    -- r <- serveWithSocket socket app
-    -- case r of
-    --   Nothing -> pure ()
-    --   Just err -> pure () -- log - view packed - show err
