diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
 
+Version 0.4.5
+---------------
+Added the Semigroup instances to fix the compilation errors with base-4.11
+
 Version 0.4.4
 ---------------
 Fixed boundary condition bugs in ByteStringUTF8 uncovered by a new version of QuickCheck
@@ -71,7 +75,7 @@
 
 Version 0.3.4.1
 ---------------
-Accomodating the text-1.0 release
+Accommodating the text-1.0 release
 
 * Introduced the function ByteStringUTF8.decode
 * Removed the utf-string dependency
diff --git a/Data/Monoid/Instances/ByteString/UTF8.hs b/Data/Monoid/Instances/ByteString/UTF8.hs
--- a/Data/Monoid/Instances/ByteString/UTF8.hs
+++ b/Data/Monoid/Instances/ByteString/UTF8.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2013-2016 Mario Blazevic
+    Copyright 2013-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -53,6 +53,7 @@
 import Data.ByteString.Internal (w2c)
 import Data.ByteString.Unsafe (unsafeDrop, unsafeHead, unsafeTail, unsafeTake, unsafeIndex)
 
+import Data.Semigroup -- (Semigroup(..))
 import Data.Monoid -- (Monoid(mempty, mappend))
 import Data.Monoid.Cancellative (LeftReductiveMonoid(..), LeftCancellativeMonoid, LeftGCDMonoid(..))
 import Data.Monoid.Null (MonoidNull(..), PositiveMonoid)
@@ -79,6 +80,10 @@
          Just{} -> (ByteStringUTF8 bs, mempty)
    where (prefix, suffix) = ByteString.breakEnd byteStartsCharacter bs
          l = ByteString.last bs
+
+instance Semigroup ByteStringUTF8 where
+   ByteStringUTF8 a <> ByteStringUTF8 b = ByteStringUTF8 (a <> b)
+   {-# INLINE (<>) #-}
 
 instance Monoid ByteStringUTF8 where
    mempty = ByteStringUTF8 ByteString.empty
diff --git a/Data/Monoid/Instances/Concat.hs b/Data/Monoid/Instances/Concat.hs
--- a/Data/Monoid/Instances/Concat.hs
+++ b/Data/Monoid/Instances/Concat.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2013-2016 Mario Blazevic
+    Copyright 2013-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -19,7 +19,8 @@
 import qualified Data.Foldable as Foldable
 import qualified Data.List as List
 import Data.String (IsString(..))
-import Data.Monoid -- (Monoid(..), (<>), First(..), Sum(..))
+import Data.Semigroup (Semigroup(..))
+import Data.Monoid -- (Monoid(..), First(..), Sum(..))
 import Data.Monoid.Cancellative (LeftReductiveMonoid(..), RightReductiveMonoid(..),
                                  LeftGCDMonoid(..), RightGCDMonoid(..))
 import Data.Monoid.Null (MonoidNull(null), PositiveMonoid)
@@ -87,12 +88,15 @@
    foldr' f a (Leaf x) = f x a
    foldr' f a (x :<> y) = let a' = Foldable.foldr' f a y in Foldable.foldr' f a' x
 
-instance PositiveMonoid a => Monoid (Concat a) where
-   mempty = Leaf mempty
-   mappend x y 
+instance PositiveMonoid a => Semigroup (Concat a) where
+   x <> y
       | null x = y
       | null y = x
       | otherwise = x :<> y
+
+instance PositiveMonoid a => Monoid (Concat a) where
+   mempty = Leaf mempty
+   mappend = (<>)
 
 instance PositiveMonoid a => MonoidNull (Concat a) where
    null (Leaf x) = null x
diff --git a/Data/Monoid/Instances/Measured.hs b/Data/Monoid/Instances/Measured.hs
--- a/Data/Monoid/Instances/Measured.hs
+++ b/Data/Monoid/Instances/Measured.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2013-2015 Mario Blazevic
+    Copyright 2013-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -17,6 +17,7 @@
 import Data.Functor -- ((<$>))
 import qualified Data.List as List
 import Data.String (IsString(..))
+import Data.Semigroup -- (Semigroup(..))
 import Data.Monoid -- (Monoid(..))
 import Data.Monoid.Cancellative (LeftReductiveMonoid(..), RightReductiveMonoid(..),
                                  LeftGCDMonoid(..), RightGCDMonoid(..))
@@ -41,6 +42,9 @@
 
 instance Ord a => Ord (Measured a) where
    compare (Measured _ x) (Measured _ y) = compare x y
+
+instance StableFactorialMonoid a => Semigroup (Measured a) where
+   Measured m a <> Measured n b = Measured (m + n) (mappend a b)
 
 instance StableFactorialMonoid a => Monoid (Measured a) where
    mempty = Measured 0 mempty
diff --git a/Data/Monoid/Instances/Positioned.hs b/Data/Monoid/Instances/Positioned.hs
--- a/Data/Monoid/Instances/Positioned.hs
+++ b/Data/Monoid/Instances/Positioned.hs
@@ -1,5 +1,5 @@
 {-
-    Copyright 2014-2015 Mario Blazevic
+    Copyright 2014-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -29,7 +29,8 @@
 import qualified Data.List as List
 import Data.String (IsString(..))
 
-import Data.Monoid -- (Monoid(..), (<>), Endo(..))
+import Data.Semigroup -- (Semigroup(..))
+import Data.Monoid -- (Monoid(..), Endo(..))
 import Data.Monoid.Cancellative (LeftReductiveMonoid(..), RightReductiveMonoid(..), LeftGCDMonoid(..), RightGCDMonoid(..))
 import Data.Monoid.Null (MonoidNull(null), PositiveMonoid)
 import Data.Monoid.Factorial (FactorialMonoid(..), StableFactorialMonoid)
@@ -99,16 +100,13 @@
    showsPrec prec (LinePositioned pos l lpos c) =
       ("Line " ++) . shows l . (", column " ++) . shows (pos - lpos) . (": " ++) . showsPrec prec c
 
-instance StableFactorialMonoid m => Monoid (OffsetPositioned m) where
-   mempty = pure mempty
-   mappend (OffsetPositioned p1 c1) (OffsetPositioned p2 c2) =
+instance StableFactorialMonoid m => Semigroup (OffsetPositioned m) where
+   OffsetPositioned p1 c1 <> OffsetPositioned p2 c2 =
       OffsetPositioned (if p1 /= 0 || p2 == 0 then p1 else max 0 $ p2 - length c1) (mappend c1 c2)
-   {-# INLINE mempty #-}
-   {-# INLINE mappend #-}
+   {-# INLINE (<>) #-}
 
-instance (StableFactorialMonoid m, TextualMonoid m) => Monoid (LinePositioned m) where
-   mempty = pure mempty
-   mappend (LinePositioned p1 l1 lp1 c1) (LinePositioned p2 l2 lp2 c2)
+instance (StableFactorialMonoid m, TextualMonoid m) => Semigroup (LinePositioned m) where
+   LinePositioned p1 l1 lp1 c1 <> LinePositioned p2 l2 lp2 c2
      | p1 /= 0 || p2 == 0 = LinePositioned p1 l1 lp1 c
      | otherwise = LinePositioned p2' l2' lp2' c
      where c = mappend c1 c2
@@ -118,6 +116,17 @@
            countLines :: Int -> Char -> Int
            countLines n '\n' = succ n
            countLines n _ = n
+   {-# INLINE (<>) #-}
+
+instance StableFactorialMonoid m => Monoid (OffsetPositioned m) where
+   mempty = pure mempty
+   mappend = (<>)
+   {-# INLINE mempty #-}
+   {-# INLINE mappend #-}
+
+instance (StableFactorialMonoid m, TextualMonoid m) => Monoid (LinePositioned m) where
+   mempty = pure mempty
+   mappend = (<>)
    {-# INLINE mempty #-}
    {-# INLINE mappend #-}
 
diff --git a/Data/Monoid/Instances/Stateful.hs b/Data/Monoid/Instances/Stateful.hs
--- a/Data/Monoid/Instances/Stateful.hs
+++ b/Data/Monoid/Instances/Stateful.hs
@@ -1,5 +1,5 @@
 {-
-    Copyright 2013-2015 Mario Blazevic
+    Copyright 2013-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -23,7 +23,8 @@
 import Data.Functor -- ((<$>))
 import qualified Data.List as List
 import Data.String (IsString(..))
-import Data.Monoid -- (Monoid(..), (<>))
+import Data.Semigroup -- (Semigroup(..))
+import Data.Monoid -- (Monoid(..))
 import Data.Monoid.Cancellative (LeftReductiveMonoid(..), LeftGCDMonoid(..), RightReductiveMonoid(..), RightGCDMonoid(..))
 import Data.Monoid.Null (MonoidNull(null), PositiveMonoid)
 import Data.Monoid.Factorial (FactorialMonoid(..), StableFactorialMonoid)
@@ -55,9 +56,13 @@
    pure m = Stateful (m, mempty)
    Stateful (f, s1) <*> Stateful (x, s2) = Stateful (f x, s1 <> s2)
 
+instance (Semigroup a, Semigroup b) => Semigroup (Stateful a b) where
+   Stateful x <> Stateful y = Stateful (x <> y)
+   {-# INLINE (<>) #-}
+
 instance (Monoid a, Monoid b) => Monoid (Stateful a b) where
    mempty = Stateful mempty
-   mappend (Stateful x) (Stateful y) = Stateful (x <> y)
+   mappend = (<>)
    {-# INLINE mempty #-}
    {-# INLINE mappend #-}
 
diff --git a/Test/TestMonoidSubclasses.hs b/Test/TestMonoidSubclasses.hs
--- a/Test/TestMonoidSubclasses.hs
+++ b/Test/TestMonoidSubclasses.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2013-2017 Mario Blazevic
+    Copyright 2013-2018 Mario Blazevic
 
     License: BSD3 (see BSD3-LICENSE.txt file)
 -}
@@ -757,7 +757,7 @@
 textualFactors = map characterize . factors
    where characterize prime = maybe (Left prime) Right (Textual.characterPrefix prime)
 
-newtype TestString = TestString String deriving (Eq, Show, Arbitrary, CoArbitrary, 
+newtype TestString = TestString String deriving (Eq, Show, Arbitrary, CoArbitrary, Semigroup,
                                                  Monoid, LeftReductiveMonoid, LeftCancellativeMonoid, LeftGCDMonoid,
                                                  MonoidNull, PositiveMonoid, StableFactorialMonoid, IsString)
 
diff --git a/monoid-subclasses.cabal b/monoid-subclasses.cabal
--- a/monoid-subclasses.cabal
+++ b/monoid-subclasses.cabal
@@ -1,5 +1,5 @@
 Name:                monoid-subclasses
-Version:             0.4.4
+Version:             0.4.5
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Subclasses of Monoid
@@ -11,7 +11,7 @@
   
 License:             BSD3
 License-file:        BSD3-LICENSE.txt
-Copyright:           (c) 2013-2017 Mario Blažević
+Copyright:           (c) 2013-2018 Mario Blažević
 Author:              Mario Blažević
 Maintainer:          Mario Blažević <blamario@protonmail.com>
 Homepage:            https://github.com/blamario/monoid-subclasses/
@@ -25,7 +25,7 @@
   Exposed-Modules:   Data.Monoid.Cancellative, Data.Monoid.Factorial, Data.Monoid.Null, Data.Monoid.Textual,
                      Data.Monoid.Instances.ByteString.UTF8, Data.Monoid.Instances.Concat,
                      Data.Monoid.Instances.Measured, Data.Monoid.Instances.Positioned, Data.Monoid.Instances.Stateful
-  Build-Depends:     base >= 4.5 && < 5,
+  Build-Depends:     base >= 4.9 && < 5,
                      bytestring >= 0.9 && < 1.0, containers >= 0.5.7.0 && < 0.6, text >= 0.11 && < 1.3,
                      primes == 0.2.*, vector >= 0.9 && < 0.13
   GHC-options:       -Wall
@@ -33,7 +33,7 @@
 
 test-suite Main
   Type:              exitcode-stdio-1.0
-  Build-Depends:     base >= 4.5 && < 5,
+  Build-Depends:     base >= 4.9 && < 5,
                      bytestring >= 0.9 && < 1.0, containers >= 0.5.7.0 && < 0.6, text >= 0.11 && < 1.3,
                      vector >= 0.9 && < 0.13, primes == 0.2.*,
                      QuickCheck >= 2.9 && < 3, quickcheck-instances >= 0.3.12 && <0.4,
