diff --git a/ftp-client.cabal b/ftp-client.cabal
--- a/ftp-client.cabal
+++ b/ftp-client.cabal
@@ -1,5 +1,5 @@
 name: ftp-client
-version: 0.1.0.1
+version: 0.1.0.2
 cabal-version: >=1.10
 build-type: Simple
 license: PublicDomain
@@ -37,7 +37,7 @@
     main-is: Spec.hs
     build-depends:
         base >=4.9.0.0 && <4.10,
-        ftp-client >=0.1.0.1 && <0.2
+        ftp-client >=0.1.0.2 && <0.2
     default-language: Haskell2010
     hs-source-dirs: test
     ghc-options: -threaded -rtsopts -with-rtsopts=-N
diff --git a/src/Network/FTP/Client.hs b/src/Network/FTP/Client.hs
--- a/src/Network/FTP/Client.hs
+++ b/src/Network/FTP/Client.hs
@@ -68,6 +68,15 @@
 import Data.Functor ((<$>))
 import Control.Applicative ((<*>))
 
+debugging :: Bool
+debugging = False
+
+debugPrint :: Show a => a -> IO ()
+debugPrint s = debugPrint' s debugging
+    where
+        debugPrint' _ False = return ()
+        debugPrint' s True = print s
+
 -- | Can send and recieve a 'Data.ByteString.ByteString'.
 data Handle = Handle
     { send :: ByteString -> IO ()
@@ -220,10 +229,10 @@
 sendCommand :: Handle -> FTPCommand -> IO FTPResponse
 sendCommand h fc = do
     let command = serializeCommand fc
-    print $ "Sending: " <> command
+    debugPrint $ "Sending: " <> command
     sendCommandLine h $ C.pack command
     resp <- getMultiLineResp h
-    print $ "Recieved: " <> (show resp)
+    debugPrint $ "Recieved: " <> (show resp)
     return resp
 
 -- | Equvalent to
@@ -237,7 +246,7 @@
 createSocket :: Maybe String -> Int -> S.AddrInfo -> IO (S.Socket, S.AddrInfo)
 createSocket host portNum hints = do
     addr:_ <- S.getAddrInfo (Just hints) host (Just $ show portNum)
-    print $ "Addr: " <> show addr
+    debugPrint $ "Addr: " <> show addr
     sock <- S.socket
         (S.addrFamily addr)
         (S.addrSocketType addr)
@@ -251,7 +260,7 @@
     }
     (sock, addr) <- createSocket (Just host) portNum hints
     S.connect sock (S.addrAddress addr)
-    print "Connected"
+    debugPrint "Connected"
     return sock
 
 createSocketActive :: IO S.Socket
@@ -263,7 +272,7 @@
     (sock, addr) <- createSocket Nothing 0 hints
     S.bind sock (S.addrAddress addr)
     S.listen sock 1
-    print "Listening"
+    debugPrint "Listening"
     return sock
 
 createSIOHandle :: String -> Int -> IO SIO.Handle
@@ -304,8 +313,8 @@
 createDataSocketPasv :: Handle -> IO S.Socket
 createDataSocketPasv h = do
     (host, portNum) <- pasv h
-    print $ "Host: " <> host
-    print $ "Port: " <> show portNum
+    debugPrint $ "Host: " <> host
+    debugPrint $ "Port: " <> show portNum
     createSocketPassive host portNum
 
 createDataSocketActive :: Handle -> IO S.Socket
@@ -353,7 +362,7 @@
         SIO.hClose
         (f . sIOHandleImpl)
     resp <- getMultiLineResp ch
-    print $ "Recieved: " <> (show resp)
+    debugPrint $ "Recieved: " <> (show resp)
     return x
 
 -- | Recieve data and interpret it linewise
@@ -461,7 +470,7 @@
         connectionClose
         (f . tlsHandleImpl)
     resp <- getMultiLineResp ch
-    print $ "Recieved: " <> (show resp)
+    debugPrint $ "Recieved: " <> (show resp)
     return x
 
 parse227 :: Parser (String, Int)
