diff --git a/postgres-embedded.cabal b/postgres-embedded.cabal
--- a/postgres-embedded.cabal
+++ b/postgres-embedded.cabal
@@ -1,5 +1,5 @@
 name:                postgres-embedded
-version:             0.1.1
+version:             0.1.2
 description:         Library for easily running embedded PostgreSQL server for tests
 homepage:            https://github.com/ilya-murzinov/postgres-embedded
 license:             MIT
diff --git a/src/Database/PostgreSQL/Embedded/Postgres.hs b/src/Database/PostgreSQL/Embedded/Postgres.hs
--- a/src/Database/PostgreSQL/Embedded/Postgres.hs
+++ b/src/Database/PostgreSQL/Embedded/Postgres.hs
@@ -6,29 +6,28 @@
 
 import           Control.Concurrent                    (threadDelay)
 import           Control.Exception                     (SomeException, try)
-import           Data.Conduit.Shell                    (rm, run, shell)
+import           Data.Conduit.Shell                    (grep, rm, run, shell,
+                                                        ($|))
+import           Data.Conduit.Shell.Segments           (strings)
 import           Data.List                             (isInfixOf)
 import           Data.Monoid                           ((<>))
-import           Network                               (PortID (..), connectTo)
 import           System.FilePath.Posix                 ((</>))
 import           System.Info                           (os)
-import           System.IO                             (Handle)
 
-
-
 import           Database.PostgreSQL.Embedded.Download
 import           Database.PostgreSQL.Embedded.Types
 
 startPostgres :: StartupConfig -> DBConfig -> IO RuntimeConfig
-startPostgres (StartupConfig version_ t) dConfig@(DBConfig p u) = do
+startPostgres (StartupConfig version_ t) (DBConfig p u) = do
     e <- downloadPostgres getOS version_
     let d = e </> "data"
     run $ do
         shell $ e </> "bin" </> "initdb" <> " -A trust -U " <> u <> " -D " <> d <> " -E UTF-8"
         shell $ e </> "bin" </> "pg_ctl" <> " -D " <> d <> " -o \"-F -p " <>
             (show p) <> "\"" <> " -l " <> (e </> "log") <> " start"
-    checkPostgresStarted dConfig t
-    return $ RuntimeConfig e d
+    let r = RuntimeConfig e d
+    checkPostgresStarted r t
+    return $ r
     where
         getOS | "darwin" `isInfixOf` os = OSX
               | "linux" `isInfixOf` os = Linux
@@ -40,19 +39,22 @@
         shell $ e </> "bin" </> "pg_ctl" <> " -D " <> d <> " stop"
         rm "-rf" d
 
-checkPostgresStarted :: DBConfig -> Int -> IO ()
+checkPostgresStarted :: RuntimeConfig -> Int -> IO ()
 checkPostgresStarted config secs = checkPostgresStarted_ config secs >>= \_ -> return ()
     where
-        checkPostgresStarted_ :: DBConfig -> Int -> IO Bool
-        checkPostgresStarted_ (DBConfig p _) n = do
+        checkPostgresStarted_ :: RuntimeConfig -> Int -> IO Bool
+        checkPostgresStarted_ (RuntimeConfig e d) n = do
             let oneSec = 1000000
+            let check = run $
+                        strings (
+                            shell (e </> "bin" </> "pg_ctl" <> " -D " <> d <> " status")
+                            $| grep "running") >>= \s -> return $ null s
 
-            res <- try $ connectTo "localhost" (PortNumber $ fromInteger p) :: IO (Either SomeException Handle)
-            case res of
-                Left e -> if (n > 0) then
-                    print e >>=
-                        \_ -> threadDelay oneSec >>=
+            res <- try check :: IO (Either SomeException Bool)
+            let retry = if n > 0 then threadDelay oneSec >>=
                             \_ -> checkPostgresStarted_ config (n - 1)
-                else
-                    return False
-                Right _ -> return True
+                        else
+                            return False
+            case res of
+                Left err   -> print err >>= \_ -> retry
+                Right res1 -> if res1 then retry else return True
