diff --git a/conferer-warp.cabal b/conferer-warp.cabal
--- a/conferer-warp.cabal
+++ b/conferer-warp.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: fa8fc88599aea859e44e6fa48ae598e0ca0fcb8d09bf462840601d33ba339f56
+-- hash: cd409fb67d42685960b7b08d341f3d9710dc50d8c228737dcf1f15c384ce6011
 
 name:           conferer-warp
-version:        0.1.0.2
+version:        0.2.0.0
 synopsis:       conferer's FromConfig instances for warp settings
 
 description:    Library to abstract the parsing of many haskell config values from different config sources
@@ -33,7 +33,7 @@
   default-extensions: OverloadedStrings LambdaCase QuasiQuotes ScopedTypeVariables
   build-depends:
       base >=4.3 && <5
-    , conferer >=0.1.0.1 && <0.2.0.0
+    , conferer >=0.2.0.0 && <0.3.0.0
     , http-types >=0.8.6 && <0.13
     , text >=1.1 && <1.3
     , wai >=3.0 && <4.0
@@ -51,7 +51,7 @@
   default-extensions: OverloadedStrings LambdaCase QuasiQuotes ScopedTypeVariables
   build-depends:
       base >=4.3 && <5
-    , conferer >=0.1.0.1 && <0.2.0.0
+    , conferer >=0.2.0.0 && <0.3.0.0
     , conferer-warp
     , hspec
     , http-types >=0.8.6 && <0.13
diff --git a/src/Conferer/FetchFromConfig/Warp.hs b/src/Conferer/FetchFromConfig/Warp.hs
--- a/src/Conferer/FetchFromConfig/Warp.hs
+++ b/src/Conferer/FetchFromConfig/Warp.hs
@@ -17,24 +17,25 @@
 import Conferer.Core
 import Conferer.Types
 import Conferer.FetchFromConfig.Basics
-import Data.Either (rights)
+import Data.Maybe (catMaybes)
 import Network.Wai.Handler.Warp
 import Data.String (fromString)
 import Data.Text (unpack)
+import Data.Maybe (fromMaybe)
 
 instance FetchFromConfig HostPreference where
-    fetch = fetchFromConfigWith (pure . fromString . unpack)
+  fetch = fetchFromConfigWith (pure . fromString . unpack)
 
 instance FetchFromConfig Settings where
-    fetch k config = do
-        port <- fetch (k /. "port") config
-        timeout <- fetch (k /. "timeout") config
-        host <- fetch (k /. "host") config
-        serverName <- fetch (k /. "serverName") config
-        let overriders = rights [
-                          setTimeout <$> timeout,
-                          setHost <$> host,
-                          setPort <$> port,
-                          setServerName <$> serverName
-                        ]
-        return . return $ foldr ($) defaultSettings overriders
+  fetch k config = do
+    port <- fetch (k /. "port") config
+    timeout <- fetch (k /. "timeout") config
+    host <- fetch (k /. "host") config
+    serverName <- fetch (k /. "serverName") config
+    let overriders = catMaybes [
+                      setTimeout <$> timeout,
+                      setHost <$> host,
+                      setPort <$> port,
+                      setServerName <$> serverName
+                    ]
+    return $ return $ foldr ($) defaultSettings overriders
diff --git a/test/Conferer/FetchFromConfig/WarpSpec.hs b/test/Conferer/FetchFromConfig/WarpSpec.hs
--- a/test/Conferer/FetchFromConfig/WarpSpec.hs
+++ b/test/Conferer/FetchFromConfig/WarpSpec.hs
@@ -10,10 +10,10 @@
 configWith :: [(Key, Text)] -> IO Config
 configWith keyValues = emptyConfig & addProvider (mkMapProvider keyValues)
 
-portAndHostShouldBe :: Either Text Settings -> (Port, HostPreference) -> Expectation
+portAndHostShouldBe :: Maybe Settings -> (Port, HostPreference) -> Expectation
 portAndHostShouldBe fetchedSettings (port, host) = do
-  getPort <$> fetchedSettings `shouldBe` Right port
-  getHost <$> fetchedSettings `shouldBe` Right host
+  getPort <$> fetchedSettings `shouldBe` Just port
+  getHost <$> fetchedSettings `shouldBe` Just host
 
 spec :: Spec
 spec = do
