diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,7 @@
 Changelog for tmp-postgres
 
 1.7.1.0
-  #35 Add Lenses for configuration
+  #35 Add Lenses for configuration.
 
 1.8.0.0
   Get rid of `Partial` prefix. Add a `Complete` prefix to the internal configuration types.
@@ -10,31 +10,35 @@
   Order the Event type creation time.
 
 1.9.0.0
-  #41 Configurable temporary directory
-  #59 Change EnvVars to EnvironmentVariables
+  #41 Configurable temporary directory.
+  #59 Change EnvVars to EnvironmentVariables.
 
 1.9.0.1
-  Documentation fixes
+  Documentation fixes.
 
 1.9.0.2
-  Documentation fixes
+  Documentation fixes.
 
 1.10.0.0
-  #58 Add connection timeout
-  Rename partialPlanLoggerL to loggerL
-  Add temporaryDirectoryL
-  #31 A silent defaults
-  #20 Include stderr in errors
+  #58 Add connection timeout.
+  Rename partialPlanLoggerL to loggerL.
+  Add temporaryDirectoryL.
+  #31 A silent defaults.
+  #20 Include stderr in errors.
 
 1.11.0.0
   #90 Extend generated config to provide default Handles and connection timeout.
   #81 Create public Config module for better documentation organization.
 
 1.12.0.0
-  #64 Add the 'withNewDB' and 'withNewDBConfig' functions
+  #64 Add the 'withNewDB' and 'withNewDBConfig' functions.
 
 1.12.0.1
   Documentation fixes
 
 1.13.0.0
-  #108 'startNewDBConfig' functions added and related
+  #108 'startNewDBConfig' functions added and related.
+
+1.13.1.0
+  #113 Faster shutdown using SIGQUIT and removed manual session termination.
+  #115 Add password support to optionsToDefaultConfig
diff --git a/benchmark/Main.hs b/benchmark/Main.hs
--- a/benchmark/Main.hs
+++ b/benchmark/Main.hs
@@ -43,11 +43,11 @@
   [ --bench "with" $ whnfIO $ with $ const $ pure ()
   --, bench "withConfig no --no-sync" $ whnfIO $
   --    withConfig defaultConfigDefaultInitDb $ const $ pure ()
-  --, bench "withConfig silent" $ whnfIO $
-  --    withConfig silentConfig $ const $ pure ()
-    bench "with migrate 10x" $ whnfIO $ replicateM 10 $ with $ \db ->
-      migrateDb db >> testQuery db
-  , bench "withNewDb migrate 10x" $ whnfIO $ with $ \db -> do
-      migrateDb db
-      replicateM 10 $ withNewDb db testQuery
+  bench "withConfig silent" $ whnfIO $
+      withConfig silentConfig $ const $ pure ()
+  --  bench "with migrate 10x" $ whnfIO $ replicateM 10 $ withConfig silent $ \db ->
+  --    migrateDb db >> testQuery db
+  --, bench "withNewDb migrate 10x" $ whnfIO $ withConfig silent $ \db -> do
+  --    migrateDb db
+  --    replicateM 10 $ withNewDb db testQuery
   ]
diff --git a/src/Database/Postgres/Temp/Internal/Config.hs b/src/Database/Postgres/Temp/Internal/Config.hs
--- a/src/Database/Postgres/Temp/Internal/Config.hs
+++ b/src/Database/Postgres/Temp/Internal/Config.hs
@@ -732,6 +732,7 @@
 optionsToPlan opts@Client.Options {..}
   =  maybe mempty dbnameToPlan (getLast dbname)
   <> maybe mempty userToPlan (getLast user)
+  <> maybe mempty passwordToPlan (getLast password)
   <> clientOptionsToPlan opts
 
 -- Wrap the 'Client.Options' in an appropiate
@@ -765,6 +766,21 @@
   { createDbConfig = pure $ mempty
     { commandLine = mempty
       { indexBased = Map.singleton 0 dbName
+      }
+    }
+  }
+
+-- Adds the 'PGPASSWORD' to both @initdb@ and @createdb@
+passwordToPlan :: String -> Plan
+passwordToPlan password = mempty
+  { initDbConfig = pure mempty
+    { environmentVariables = mempty
+      { specific = Map.singleton "PGPASSWORD" password
+      }
+    }
+  , createDbConfig = pure mempty
+    { environmentVariables = mempty
+      { specific = Map.singleton "PGPASSWORD" password
       }
     }
   }
diff --git a/src/Database/Postgres/Temp/Internal/Core.hs b/src/Database/Postgres/Temp/Internal/Core.hs
--- a/src/Database/Postgres/Temp/Internal/Core.hs
+++ b/src/Database/Postgres/Temp/Internal/Core.hs
@@ -20,7 +20,7 @@
 import qualified Database.PostgreSQL.Simple.Options as Client
 import           System.Exit (ExitCode(..))
 import           System.IO
-import           System.Posix.Signals (sigINT, signalProcess)
+import           System.Posix.Signals (sigQUIT, signalProcess)
 import           System.Process
 import           System.Process.Internals
 import           System.Timeout
@@ -244,12 +244,9 @@
 stopPostgresProcess :: PostgresProcess -> IO ExitCode
 stopPostgresProcess PostgresProcess{..} = do
   withProcessHandle postgresProcessHandle $ \case
-    OpenHandle p   -> do
-      -- try to terminate the connects first. If we can't terminate still
-      -- keep shutting down
-      terminateConnections postgresProcessClientOptions
-
-      signalProcess sigINT p
+    OpenHandle p   ->
+      -- Call for "Immediate shutdown"
+      signalProcess sigQUIT p
     OpenExtHandle {} -> pure () -- TODO log windows is not supported
     ClosedHandle _ -> return ()
 
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -24,10 +24,11 @@
 main :: IO ()
 main = hspec spec
 
--- check coverage
--- Test using an existing domain socket
+withConfig' :: Config -> (DB -> IO a) -> IO a
+withConfig' config = either throwIO pure <=< withConfig config
 
--- Cleanup
+with' :: (DB -> IO a) -> IO a
+with' = either throwIO pure <=< with
 
 fromCreateDb :: Maybe ProcessConfig -> Config
 fromCreateDb createDb = mempty
@@ -41,6 +42,10 @@
 withRunner :: (DB -> IO ()) -> Runner -> IO ()
 withRunner g (Runner f) = f g
 
+--
+-- TODO this test should only use the public interface
+--
+
 defaultConfigShouldMatchDefaultPlan :: SpecWith Runner
 defaultConfigShouldMatchDefaultPlan =
   it "default options should match default plan" $ withRunner $ \DB{..} -> do
@@ -62,6 +67,7 @@
         }
       )
 
+
 customConfigWork :: (Config -> (DB -> IO ()) -> IO ()) -> Spec
 customConfigWork action = do
   let expectedDbName = "thedb"
@@ -70,6 +76,10 @@
       expectedDuration = "100ms"
       extraConfig = "log_min_duration_statement='" <> expectedDuration <> "'"
 
+--
+-- This is basically the optionsToDefaultConfig but also tests custom postgresql.conf values
+--
+
   it "returns the right client options for the plan" $ withTempDirectory "/tmp" "tmp-postgres-spec" $ \tmpDir -> do
     let customPlan = mempty
           { temporaryDirectory = pure tmpDir
@@ -211,18 +221,6 @@
         { socketClass = IpSocket $ pure "localhost"
         }
 
-  describe "start" $ do
-    let startAction = bracket (either throwIO pure =<< start) stop (const $ pure ())
-    throwsIfInitDbIsNotOnThePath startAction
-  describe "startConfig" $ do
-    let startAction plan = bracket (either throwIO pure =<< startConfig plan) stop pure
-    throwsIfInitDbIsNotOnThePath $ startAction silentConfig
-    invalidConfigFailsQuickly $ void . startAction
-    customConfigWork $ \config@Config{..} f ->
-      bracket (either throwIO pure =<< startConfig config) stop f
-  describe "with" $ do
-    let startAction = either throwIO pure =<< with (const $ pure ())
-    throwsIfInitDbIsNotOnThePath startAction
   describe "withConfig" $ do
     let startAction plan = either throwIO pure =<<
           withConfig plan pure
@@ -237,25 +235,19 @@
         withInitDbEmptyInitially
         createDbCreatesTheDb dbName
 
-  describe "restart" $ do
-    let startAction f =
-          bracket (either throwIO pure
-            =<< restart
-            =<< either throwIO pure
-            =<< start) stop f
-    before (pure $ Runner startAction) $ do
-      someStandardTests "postgres"
-      defaultConfigShouldMatchDefaultPlan
-
   describe "withRestart" $ do
-    let startAction f = bracket (either throwIO pure =<< start) stop $ \db ->
+    let startAction f = with' $ \db ->
           either throwIO pure =<< withRestart db f
     before (pure $ Runner startAction) $ do
       someStandardTests "postgres"
       defaultConfigShouldMatchDefaultPlan
 
+--
+-- TODO these can be combined
+--
+
   describe "start/stop" $ do
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< start) stop f) $ do
+    before (pure $ Runner with') $ do
       someStandardTests "postgres"
       defaultConfigShouldMatchDefaultPlan
       it "stopPostgres cannot be connected to" $ withRunner $ \db -> do
@@ -275,6 +267,9 @@
           [PG.Only actualDuration] <- PG.query_ conn "SHOW log_min_duration_statement"
           actualDuration `shouldBe` expectedDuration
 
+--
+--  Keep this test. Invalid createdb options test
+--
     let invalidCreateDbPlan = silentConfig <> fromCreateDb
           ( pure $ silentProcessConfig
               { commandLine = mempty
@@ -283,9 +278,13 @@
                 }
               }
           )
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig invalidCreateDbPlan) stop f) $
+    before (pure $ Runner $ either throwIO pure <=< withConfig invalidCreateDbPlan) $
       createDbThrowsIfTheDbExists
 
+-- TODO
+-- combine this test with another plan
+-- tests that the dbName can be specified in the options
+--
     let noCreateTemplate1 = mempty
           { plan = mempty
               { createDbConfig = Nothing
@@ -297,16 +296,27 @@
               }
           }
         noCreateDbPlan = defaultConfig <> noCreateTemplate1
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig noCreateDbPlan) stop f) $
+    before (pure $ Runner $ withConfig' noCreateDbPlan) $
       someStandardTests "template1"
 
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig defaultIpPlan) stop f) $
+--
+-- Test the default IpSocket plan. Can be combined.
+--
+    before (pure $ Runner $ withConfig' defaultIpPlan) $
       someStandardTests "postgres"
 
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig specificHostIpPlan) stop f) $
+-- Specific IpSocket plan
+-- Can be combined
+--
+    before (pure $ Runner $ withConfig' specificHostIpPlan) $
       someStandardTests "postgres"
 
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig silentConfig) stop f) $
+--
+-- This test is okay but can be combine with other tests
+-- and should use withNewDbConf mempty instead
+-- also need to test that I can make a specific database name
+
+    before (pure $ Runner $ withConfig' silentConfig) $
       it "withNewDb works" $ withRunner $ \db -> do
         bracket (PG.connectPostgreSQL $ toConnectionString db ) PG.close $
           \conn -> do
@@ -320,34 +330,54 @@
 
           one `shouldBe` (1 :: Int)
 
+--
+-- This is a optionsToDefaultConfig test
+-- It is missing the host options of both
+-- a socket and ip address based
+--
 
     thePort <- runIO getFreePort
     let planFromCustomUserDbConnection = optionsToDefaultConfig mempty
-          { Client.dbname = pure "fancy"
-          , Client.user   = pure "some_user"
-          , Client.port   = pure thePort
+          { Client.dbname   = pure "fancy"
+          , Client.user     = pure "some_user"
+          , Client.port     = pure thePort
+          , Client.password = pure "password"
+          , Client.host     = pure "localhost"
           }
 
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig planFromCustomUserDbConnection) stop f) $
+    before (pure $ Runner $ withConfig' planFromCustomUserDbConnection) $
       someStandardTests "fancy"
 
+--
+-- end optionsToDefaultConfig test
+--
+
+--
+-- Keep this test -- small connection timeout works
+--
     let immediantlyTimeout = silentConfig <> mempty
           { plan = mempty
               { connectionTimeout = pure 0
               }
           }
 
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig immediantlyTimeout) stop f) $
+    before (pure $ Runner $ withConfig' immediantlyTimeout) $
       it "should timeout" $ \(Runner runner) ->
         runner (const $ pure ()) `shouldThrow` (== ConnectionTimedOut)
+--
+-- End this test
+--
 
+--
+-- Keep these tests
+--
     before (createTempDirectory "/tmp" "tmp-postgres-test") $ after rmDirIgnoreErrors $ do
       it "fails on non-empty data directory" $ \dirPath -> do
         writeFile (dirPath <> "/PG_VERSION") "1 million"
         let nonEmptyFolderPlan = silentConfig
               { dataDirectory = Permanent dirPath
               }
-            startAction = bracket (either throwIO pure =<< startConfig nonEmptyFolderPlan) stop $ const $ pure ()
+            startAction = withConfig' nonEmptyFolderPlan $ const $ pure ()
 
         startAction `shouldThrow` (\(InitDbFailed theOut theErr code) -> do
           code == ExitFailure 1 && length theOut > 0 && length theErr > 0)
@@ -360,13 +390,17 @@
                   { initDbConfig = Nothing
                   }
               }
-        bracket (either throwIO pure =<< startConfig nonEmptyFolderPlan) stop $ \db -> do
+        withConfig' nonEmptyFolderPlan $ \db -> do
           one <- fmap (PG.fromOnly . head) $
             bracket (PG.connectPostgreSQL $ toConnectionString db ) PG.close $
               \conn -> PG.query_ conn "SELECT 1"
 
           one `shouldBe` (1 :: Int)
 
+--
+-- Backup "test"
+--
+
     let justBackupResources = mempty
           { plan = mempty
               { postgresConfigFile =
@@ -379,7 +413,7 @@
               }
           }
         backupResources = silentConfig <> justBackupResources
-    before (pure $ Runner $ \f -> bracket (either throwIO pure =<< startConfig backupResources) stop f) $
+    before (pure $ Runner $ withConfig' backupResources) $
       it "can support backup and restore" $ withRunner $ \db@DB {..} -> do
         let dataDir = toFilePath (resourcesDataDir dbResources)
         appendFile (dataDir ++ "/pg_hba.conf") $ "local replication all trust"
diff --git a/tmp-postgres.cabal b/tmp-postgres.cabal
--- a/tmp-postgres.cabal
+++ b/tmp-postgres.cabal
@@ -1,5 +1,5 @@
 name:                tmp-postgres
-version:             1.13.0.0
+version:             1.13.1.0
 synopsis: Start and stop a temporary postgres
 description: Start and stop a temporary postgres. See README.md
 homepage:            https://github.com/jfischoff/tmp-postgres#readme
