diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,16 @@
 # Scotty-TLS
 
-You can test by generating a self-signed certificate [here](http://www.akadia.com/services/ssh_test_certificate.html).
+You can test by generating a self-signed certificate like this:
+
+```sh
+openssl req -nodes -newkey rsa:2048 -keyout example.key -out example.csr \
+    -subj "/C=GB/ST=London/L=London/O=Acme Widgets/OU=IT Department/CN=example.com"
+openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt
+```
+For more details on making certificates, see [this guide](http://www.akadia.com/services/ssh_test_certificate.html).
+
+
+Install and run with:
 
 ```text
 cabal update && cabal install scotty-tls
diff --git a/Web/Scotty/TLS.hs b/Web/Scotty/TLS.hs
--- a/Web/Scotty/TLS.hs
+++ b/Web/Scotty/TLS.hs
@@ -14,15 +14,15 @@
 import           Network.Wai                 (Response)
 import           Network.Wai.Handler.Warp    (Port, defaultSettings,
                                               setPort)
-import           Network.Wai.Handler.WarpTLS (certFile, defaultTlsSettings,
-                                              keyFile, runTLS, TLSSettings(..))
-import           Web.Scotty                  (scottyApp, ScottyM)
+import           Network.Wai.Handler.WarpTLS (tlsSettings,
+                                              runTLS, TLSSettings(..))
+import           Web.Scotty                  (scottyApp, ScottyM, defaultOptions)
 import           Web.Scotty.Trans            (ScottyT, scottyAppT)
 
 -- | Run a Scotty application over TLS
 scottyTLS :: Port -> FilePath -> FilePath -> ScottyM () -> IO ()
 scottyTLS port key cert = runTLS
-  (defaultTlsSettings { keyFile = key , certFile = cert })
+  (tlsSettings cert key)
   (setPort port defaultSettings) <=< scottyApp
 
 scottyTLSSettings :: Port -> TLSSettings -> ScottyM () -> IO ()
@@ -30,9 +30,17 @@
   settings
   (setPort port defaultSettings) <=< scottyApp
 
-scottyTTLS :: (Monad m, MonadIO n) => Port -> FilePath -> FilePath ->
-              (m Response -> IO Response) -> ScottyT t m () -> n ()
-scottyTTLS port key cert runToIO s = scottyAppT runToIO s >>= liftIO . runTLS
-                                              (defaultTlsSettings { keyFile = key, certFile = cert })
-                                              (setPort port defaultSettings)
-
+scottyTTLS
+  :: (Monad m, MonadIO n)
+  => Port
+  -> FilePath
+  -> FilePath
+  -> (m Response -> IO Response)
+  -> ScottyT m ()
+  -> n ()
+scottyTTLS port key cert runToIO s = do
+ app <- scottyAppT defaultOptions runToIO s
+ liftIO $ runTLS
+   (tlsSettings cert key)
+   (setPort port defaultSettings)
+   app
diff --git a/scotty-tls.cabal b/scotty-tls.cabal
--- a/scotty-tls.cabal
+++ b/scotty-tls.cabal
@@ -1,5 +1,5 @@
 name:                scotty-tls
-version:             0.4.1
+version:             0.5.0
 synopsis:            TLS for Scotty
 description:         Run your Scotty apps over TLS
 homepage:            https://github.com/dmjio/scotty-tls.git
@@ -17,11 +17,11 @@
 library
   exposed-modules:     Web.Scotty.TLS
   other-extensions:    RankNTypes
-  build-depends:       base >=4.3.1 && < 5,
-                       scotty >=0.10.0,
-                       warp >= 1.3.4.1,
-                       warp-tls >=1.4.1.4,
-                       wai >= 1.3.0.1,
+  build-depends:       base < 5,
+                       scotty >=0.21.0,
+                       warp >= 3.3,
+                       warp-tls >= 3.4,
+                       wai >= 3.2,
                        transformers >= 0.3.0.0
   GHC-options: -Wall -fno-warn-orphans
   default-language:    Haskell2010
