diff --git a/hasql-optparse-applicative.cabal b/hasql-optparse-applicative.cabal
--- a/hasql-optparse-applicative.cabal
+++ b/hasql-optparse-applicative.cabal
@@ -1,52 +1,68 @@
-name:
-  hasql-optparse-applicative
-version:
-  0.5
-synopsis:
-  "optparse-applicative" parsers for "hasql"
-category:
-  Hasql, Database, PostgreSQL, Options
-homepage:
-  https://github.com/sannsyn/hasql-optparse-applicative 
+cabal-version: 3.0
+name:          hasql-optparse-applicative
+version:       0.6
+synopsis:      "optparse-applicative" parsers for "hasql"
+category:      Hasql, Database, PostgreSQL, Options
+homepage:      https://github.com/sannsyn/hasql-optparse-applicative 
 bug-reports:
   https://github.com/sannsyn/hasql-optparse-applicative/issues 
-author:
-  Nikita Volkov <nikita.y.volkov@mail.ru>
-maintainer:
-  Nikita Volkov <nikita.y.volkov@mail.ru>
-copyright:
-  (c) 2016, Sannsyn AS
-license:
-  MIT
-license-file:
-  LICENSE
-build-type:
-  Simple
-cabal-version:
-  >=1.10
 
+author:        Nikita Volkov <nikita.y.volkov@mail.ru>
+maintainer:    Nikita Volkov <nikita.y.volkov@mail.ru>
+copyright:     (c) 2016, Sannsyn AS
+license:       MIT
+license-file:  LICENSE
 
 source-repository head
-  type:
-    git
-  location:
-    git://github.com/sannsyn/hasql-optparse-applicative.git
-
+  type:     git
+  location: git://github.com/sannsyn/hasql-optparse-applicative.git
 
 library
-  hs-source-dirs:
-    library
+  hs-source-dirs:     library
   default-extensions:
-    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
-  default-language:
-    Haskell2010
-  other-modules:
-  exposed-modules:
-    Hasql.OptparseApplicative
+    NoImplicitPrelude
+    NoMonomorphismRestriction
+    Arrows
+    BangPatterns
+    ConstraintKinds
+    DataKinds
+    DefaultSignatures
+    DeriveDataTypeable
+    DeriveFoldable
+    DeriveFunctor
+    DeriveGeneric
+    DeriveTraversable
+    EmptyDataDecls
+    FlexibleContexts
+    FlexibleInstances
+    FunctionalDependencies
+    GADTs
+    GeneralizedNewtypeDeriving
+    LambdaCase
+    LiberalTypeSynonyms
+    MagicHash
+    MultiParamTypeClasses
+    MultiWayIf
+    OverloadedStrings
+    ParallelListComp
+    PatternGuards
+    QuasiQuotes
+    RankNTypes
+    RecordWildCards
+    ScopedTypeVariables
+    StandaloneDeriving
+    TemplateHaskell
+    TupleSections
+    TypeFamilies
+    TypeOperators
+    UnboxedTuples
+
+  default-language:   Haskell2010
+  exposed-modules:    Hasql.OptparseApplicative
   build-depends:
-    hasql >= 1.6 && < 1.7,
-    hasql-pool >= 0.8 && < 0.9,
-    -- 
-    optparse-applicative >= 0.17 && < 0.18,
-    -- 
-    base-prelude < 2
+    , attoparsec >=0.14 && <0.15
+    , attoparsec-time >=1.0.3 && <1.1
+    , base-prelude <2
+    , hasql >=1.6 && <1.7
+    , hasql-pool >=0.9 && <0.10
+    , optparse-applicative >=0.17 && <0.18
diff --git a/library/Hasql/OptparseApplicative.hs b/library/Hasql/OptparseApplicative.hs
--- a/library/Hasql/OptparseApplicative.hs
+++ b/library/Hasql/OptparseApplicative.hs
@@ -1,6 +1,8 @@
 module Hasql.OptparseApplicative where
 
-import BasePrelude hiding (option)
+import qualified Attoparsec.Time.Text as C
+import BasePrelude
+import qualified Data.Attoparsec.Text as D
 import qualified Hasql.Connection as A
 import qualified Hasql.Pool as B
 import Options.Applicative
@@ -12,7 +14,11 @@
 -- if you don't want it changed.
 poolSettings :: (String -> String) -> Parser (IO B.Pool)
 poolSettings updatedName =
-  B.acquire <$> size <*> acquisitionTimeout <*> connectionSettings updatedName
+  B.acquire
+    <$> size
+    <*> acquisitionTimeout
+    <*> connectionLifetime
+    <*> connectionSettings updatedName
   where
     size =
       option auto . mconcat $
@@ -22,12 +28,19 @@
           help "Amount of connections in the pool"
         ]
     acquisitionTimeout =
-      optional . fmap (* 1000000) . option auto . mconcat $
+      attoparsedOption C.diffTime . mconcat $
         [ long (updatedName "pool-acquisition-timeout"),
           value 10,
           showDefault,
-          help "How long it takes until the attempt to connect is considered timed out. In seconds"
+          help "How long it takes until the attempt to connect is considered timed out"
         ]
+    connectionLifetime =
+      attoparsedOption C.diffTime . mconcat $
+        [ long (updatedName "pool-connection-lifetime"),
+          value (fromIntegral (24 * 60 * 60)),
+          showDefault,
+          help "Maximal lifetime for connections. Allows to periodically clean up the connection resources to avoid server-side leaks"
+        ]
 
 -- | Given a function, which updates the long names produces a parser
 -- of @Hasql.Connection.'A.Settings'@.
@@ -70,3 +83,19 @@
         strOption $
           long (updatedName "database")
             <> help "Database name"
+
+-- * Helpers
+
+-- timeout name def help =
+--   attoparsedOption C.diffTime mconcat $
+--     [ long name,
+--       value def,
+--       showDefault,
+--       help "How long it takes until the attempt to connect is considered timed out. In seconds"
+--     ]
+--   where
+--     reader = eitherReader $
+
+attoparsedOption :: D.Parser a -> Mod OptionFields a -> Parser a
+attoparsedOption parser =
+  option $ eitherReader $ D.parseOnly (parser <* D.endOfInput) . fromString
