diff --git a/snap.cabal b/snap.cabal
--- a/snap.cabal
+++ b/snap.cabal
@@ -1,5 +1,5 @@
 name:           snap
-version:        1.1.0.0
+version:        1.1.1.0
 synopsis:       Top-level package for the Snap Web Framework
 description:
     This is the top-level package for the official Snap Framework libraries.
@@ -33,9 +33,16 @@
 homepage:       http://snapframework.com/
 bug-reports:    https://github.com/snapframework/snap/issues
 category:       Web, Snap
-Tested-With:    GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3,
-                GHC == 8.0.1, GHC == 8.2.1
 
+Tested-With:
+  GHC == 7.4.2,
+  GHC == 7.6.3,
+  GHC == 7.8.4,
+  GHC == 7.10.3,
+  GHC == 8.0.1,
+  GHC == 8.2.1,
+  GHC == 8.4.1
+
 extra-source-files:
   .ghci
   CONTRIBUTORS,
@@ -103,9 +110,9 @@
     Snap.Snaplet.Session.SecureCookie
 
   build-depends:
-    aeson                     >= 0.6      && < 1.3,
+    aeson                     >= 0.6      && < 1.4,
     attoparsec                >= 0.10     && < 0.14,
-    base                      >= 4        && < 4.11,
+    base                      >= 4        && < 4.12,
     bytestring                >= 0.9.1    && < 0.11,
     cereal                    >= 0.3      && < 0.6,
     clientsession             >= 0.8      && < 0.10,
@@ -119,24 +126,27 @@
     -- snap does work with hashable 1.1.*, but some have complained that
     -- the version disjunction causes problems with dependency resolution.
     hashable                  >= 1.2.0.6  && < 1.3,
-    heist                     >= 1.0      && < 1.1,
-    lens                      >= 3.7.6    && < 4.16,
+    heist                     >= 1.1      && < 1.2,
+    lens                      >= 3.7.6    && < 4.17,
     lifted-base               >= 0.2      && < 0.3,
-    map-syntax                >= 0.2      && < 0.3,
+    map-syntax                >= 0.2      && < 0.4,
     monad-control             >= 0.3      && < 1.1,
     mtl                       >= 2.0      && < 2.3,
     mwc-random                >= 0.8      && < 0.14,
     pwstore-fast              >= 2.2      && < 2.5,
     snap-core                 >= 1.0      && < 1.1,
-    snap-server               >= 1.0      && < 1.1,
+    snap-server               >= 1.0      && < 1.2,
     stm                       >= 2.2      && < 2.5,
     text                      >= 0.11     && < 1.3,
-    time                      >= 1.1      && < 1.9,
+    time                      >= 1.1      && < 1.10,
     transformers              >= 0.2      && < 0.6,
     transformers-base         >= 0.4      && < 0.5,
     unordered-containers      >= 0.1.4    && < 0.3,
     xmlhtml                   >= 0.1      && < 0.3
 
+  if !impl(ghc >= 8.0)
+    build-depends: semigroups >= 0.16 && < 0.19
+
   extensions:
     BangPatterns,
     CPP,
@@ -220,7 +230,7 @@
 
   build-depends:
     aeson,
-    async                      >= 2.0.1.5  && < 2.2,
+    async                      >= 2.0.1.5  && < 2.3,
     attoparsec,
     base,
     bytestring,
@@ -244,7 +254,7 @@
     mtl,
     mwc-random,
     pwstore-fast,
-    QuickCheck                 >= 2.4.2    && < 2.11,
+    QuickCheck                 >= 2.4.2    && < 2.12,
     smallcheck                 >= 1.1.1    && < 1.2,
     snap-core,
     snap-server,
@@ -261,6 +271,9 @@
     transformers-base,
     unordered-containers,
     xmlhtml
+
+  if !impl(ghc >= 8.0)
+    build-depends: semigroups
 
   extensions:
     BangPatterns,
diff --git a/src/Snap/Snaplet/Config.hs b/src/Snap/Snaplet/Config.hs
--- a/src/Snap/Snaplet/Config.hs
+++ b/src/Snap/Snaplet/Config.hs
@@ -22,6 +22,10 @@
 import Data.Monoid                      (Monoid, mappend, mempty)
 #endif
 
+#if !MIN_VERSION_base(4,11,0)
+import           Data.Semigroup         (Semigroup(..))
+#endif
+
 import System.Console.GetOpt            (OptDescr(Option), ArgDescr(ReqArg))
 ------------------------------------------------------------------------------
 import Snap.Core
@@ -51,14 +55,20 @@
     typeOf _ = mkTyConApp appConfigTyCon []
 #endif
 
-------------------------------------------------------------------------------
-instance Monoid AppConfig where
-    mempty = AppConfig Nothing
-    mappend a b = AppConfig
+instance Semigroup AppConfig where
+    a <> b = AppConfig
         { appEnvironment = ov appEnvironment a b
         }
       where
-        ov f x y = getLast $! (mappend `on` (Last . f)) x y
+        ov f x y = getLast $! ((<>) `on` (Last . f)) x y
+
+
+------------------------------------------------------------------------------
+instance Monoid AppConfig where
+    mempty = AppConfig Nothing
+#if !MIN_VERSION_base(4,11,0)
+    mappend = (<>)
+#endif
 
 
 ------------------------------------------------------------------------------
diff --git a/src/Snap/Snaplet/Internal/Initializer.hs b/src/Snap/Snaplet/Internal/Initializer.hs
--- a/src/Snap/Snaplet/Internal/Initializer.hs
+++ b/src/Snap/Snaplet/Internal/Initializer.hs
@@ -517,7 +517,7 @@
 
 
 ------------------------------------------------------------------------------
--- | Lets you change a snaplet's initial state.  It's alomst like a reload,
+-- | Lets you change a snaplet's initial state.  It's almost like a reload,
 -- except that it doesn't run the initializer.  It just modifies the result of
 -- the initializer.  This can be used to let you define actions for reloading
 -- individual snaplets.
diff --git a/src/Snap/Snaplet/Internal/Types.hs b/src/Snap/Snaplet/Internal/Types.hs
--- a/src/Snap/Snaplet/Internal/Types.hs
+++ b/src/Snap/Snaplet/Internal/Types.hs
@@ -38,6 +38,10 @@
 import           Data.Monoid                  (Monoid (mappend, mempty))
 #endif
 
+#if !MIN_VERSION_base(4,11,0)
+import           Data.Semigroup               (Semigroup(..))
+#endif
+
 ------------------------------------------------------------------------------
 
 
@@ -467,11 +471,8 @@
 -- initialization.
 newtype Hook a = Hook (Snaplet a -> IO (Either Text (Snaplet a)))
 
-
-------------------------------------------------------------------------------
-instance Monoid (Hook a) where
-    mempty = Hook (return . Right)
-    (Hook a) `mappend` (Hook b) = Hook $ \s -> do
+instance Semigroup (Hook a) where
+    Hook a <> Hook b = Hook $ \s -> do
       ea <- a s
       case ea of
         Left e -> return $ Left e
@@ -480,6 +481,14 @@
           case eb of
             Left e -> return $ Left e
             Right bres -> return $ Right bres
+
+
+------------------------------------------------------------------------------
+instance Monoid (Hook a) where
+    mempty = Hook (return . Right)
+#if !MIN_VERSION_base(4,11,0)
+    mappend = (<>)
+#endif
 
 
 ------------------------------------------------------------------------------
diff --git a/test/suite/Snap/Snaplet/Config/Tests.hs b/test/suite/Snap/Snaplet/Config/Tests.hs
--- a/test/suite/Snap/Snaplet/Config/Tests.hs
+++ b/test/suite/Snap/Snaplet/Config/Tests.hs
@@ -8,7 +8,12 @@
 import qualified Data.Configurator.Types as C
 import Data.Function
 import qualified Data.Map as Map
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup
+import Data.Monoid hiding ((<>))
+#else
 import Data.Monoid
+#endif
 import Data.Typeable
 import System.Environment
 ------------------------------------------------------------------------------
@@ -50,9 +55,14 @@
 instance Arbitrary ArbAppConfig where
   arbitrary = liftM (ArbAppConfig . AppConfig) arbitrary
 
+instance Semigroup ArbAppConfig where
+  a <> b = ArbAppConfig $ ((<>) `on` unArbAppConfig) a b
+
 instance Monoid ArbAppConfig where
   mempty        = ArbAppConfig mempty
-  a `mappend` b = ArbAppConfig $ ((<>) `on` unArbAppConfig) a b
+#if !MIN_VERSION_base(4,11,0)
+  mappend = (<>)
+#endif
 
 monoidLeftIdentity :: ArbAppConfig -> Bool
 monoidLeftIdentity a = mempty <> a == a
