diff --git a/conferer.cabal b/conferer.cabal
--- a/conferer.cabal
+++ b/conferer.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a30bb964060c98a8149ad2b98ca2bfc764e40aac9a70c603ab2e27722c25d131
+-- hash: 45fd44d5d84b2f4cd58f0b44ccd4cea950effce5e344718897c38433efc2764a
 
 name:           conferer
-version:        0.1.0.2
+version:        0.1.0.3
 synopsis:       Configuration management library
 
 description:    Library to abstract the parsing of many haskell config values from different config sources
diff --git a/src/Conferer/FetchFromConfig/Basics.hs b/src/Conferer/FetchFromConfig/Basics.hs
--- a/src/Conferer/FetchFromConfig/Basics.hs
+++ b/src/Conferer/FetchFromConfig/Basics.hs
@@ -15,6 +15,9 @@
 instance FetchFromConfig Int where
   fetch = fetchFromConfigByRead
 
+instance FetchFromConfig Integer where
+  fetch = fetchFromConfigByRead
+
 instance FetchFromConfig Float where
   fetch = fetchFromConfigByRead
 
@@ -24,6 +27,13 @@
 instance FetchFromConfig ByteString where
   fetch = fetchFromConfigWith (Just . Text.encodeUtf8)
 
+instance FetchFromConfig a => FetchFromConfig (Maybe a)  where
+  fetch k c = do
+    v <- getKey k c
+    if v == Right ""
+      then return (Right Nothing)
+      else fmap Just <$> fetch k c
+
 instance FetchFromConfig String where
   fetch = fetchFromConfigWith (Just . Text.unpack)
 
@@ -38,7 +48,6 @@
               "false" -> Just False
               "true" -> Just True
               _ -> Nothing
-
 fromValueWith :: (Text -> Maybe a) -> Key -> Text -> Either Text a
 fromValueWith parseValue key valueAsText = case parseValue valueAsText of
     Just value -> Right value
diff --git a/test/Conferer/FetchFromConfig/BasicsSpec.hs b/test/Conferer/FetchFromConfig/BasicsSpec.hs
--- a/test/Conferer/FetchFromConfig/BasicsSpec.hs
+++ b/test/Conferer/FetchFromConfig/BasicsSpec.hs
@@ -54,3 +54,14 @@
       config <- configWith [ ("aFloat", "ASD") ]
       fetchedValue <- fetch "aFloat" config
       fetchedValue `shouldBe` (Left "Key aFloat could not be parsed correctly" :: Either Text Float)
+
+  describe "fetching a Maybe from config" $ do
+    it "getting a value returns the value as a Just string" $ do
+      config <- configWith [ ("aString", "Bleh") ]
+      fetchedValue <- fetch "aString" config
+      fetchedValue `shouldBe` (Right (Just "Bleh") :: Either Text (Maybe String))
+    context "with an empty value that's present" $ do
+      it "returns Nothing" $ do
+        config <- configWith [ ("aString", "") ]
+        fetchedValue <- fetch "aString" config
+        fetchedValue `shouldBe` (Right Nothing :: Either Text (Maybe String))
