diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,10 @@
+1.4.3 (14 May 2018)
+-------------------
+
+- New `Semigroup` instance for `Following`
+- Allow `base-4.11` and `lens-4.16`
+- Drop GHC-7.8 support
+
 1.4.2.1 (9 February 2018)
 -------------------------
 
diff --git a/diagrams-contrib.cabal b/diagrams-contrib.cabal
--- a/diagrams-contrib.cabal
+++ b/diagrams-contrib.cabal
@@ -1,5 +1,5 @@
 name:                diagrams-contrib
-version:             1.4.2.1
+version:             1.4.3
 synopsis:            Collection of user contributions to diagrams EDSL
 description:         A collection of user contributions for diagrams,
                      an embedded domain-specific language for generation
@@ -12,10 +12,10 @@
 Bug-reports:         http://github.com/diagrams/diagrams-contrib/issues
 category:            Graphics
 build-type:          Simple
-cabal-version:       >=1.18
+cabal-version:       1.18
 extra-source-files:  README.markdown, CHANGES.markdown, diagrams/*.svg, CONTRIBUTORS
 extra-doc-files:     diagrams/*.svg
-tested-with:         GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.2.1
+tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.2
 Source-repository head
   type:     git
   location: http://github.com/diagrams/diagrams-contrib.git
@@ -50,18 +50,18 @@
                        Diagrams.TwoD.Path.Metafont.Internal
                        Diagrams.TwoD.Path.Metafont.Combinators
                        Diagrams.TwoD.Path.Metafont.Parser
-  build-depends:       base >= 4.2 && < 4.11,
+  build-depends:       base >= 4.2 && < 4.12,
                        mtl >= 2.0 && < 2.3,
                        mtl-compat >= 0.2.1 && < 0.3,
                        containers > 0.4 && < 0.6,
                        split >= 0.2.1 && < 0.3,
                        colour >= 2.3.1 && < 2.4,
                        split >= 0.2.1 && < 0.3,
-                       monoid-extras >= 0.4.2,
+                       monoid-extras >= 0.4.2 && < 0.6,
                        diagrams-core >= 1.4 && < 1.5,
                        diagrams-lib >= 1.4 && < 1.5,
                        diagrams-solve >= 0.1 && < 0.2,
-                       lens >= 4.0 && < 4.16,
+                       lens >= 4.0 && < 4.17,
                        linear >= 1.11.3 && < 1.21,
                        force-layout >= 0.4 && < 0.5,
                        data-default >= 0.5.2 && < 0.8,
@@ -85,6 +85,7 @@
   ghc-options:         -Wall
 
   other-modules:       Diagrams.TwoD.Path.Turtle.Tests
+                       Diagrams.TwoD.Path.Turtle.Internal
 
   build-depends:       HUnit                      >= 1.2 && < 1.7,
                        QuickCheck                 >= 2.4 && < 2.12,
diff --git a/src/Diagrams/Anchors.hs b/src/Diagrams/Anchors.hs
--- a/src/Diagrams/Anchors.hs
+++ b/src/Diagrams/Anchors.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                       #-}
 {-# LANGUAGE DefaultSignatures         #-}
 {-# LANGUAGE TemplateHaskell           #-}
 {-# LANGUAGE TypeFamilies              #-}
@@ -58,7 +59,9 @@
 import           Data.Maybe       (fromJust, fromMaybe)
 import qualified Data.Set         as Set
 import           Data.Typeable    (Typeable)
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Semigroup
+#endif
 
 import           Linear.Vector
 import           Linear.V2
diff --git a/src/Diagrams/TwoD/Layout/Tree.hs b/src/Diagrams/TwoD/Layout/Tree.hs
--- a/src/Diagrams/TwoD/Layout/Tree.hs
+++ b/src/Diagrams/TwoD/Layout/Tree.hs
@@ -167,10 +167,13 @@
 import           Data.Tree
 
 import           Control.Lens        (makeLenses, view, (+=), (-=), (^.))
-import           Data.Semigroup
 import           Diagrams
 import           Linear              ((*^))
 import           Linear.Affine
+
+#if !MIN_VERSION_base(4,11,0)
+import           Data.Semigroup
+#endif
 
 #if __GLASGOW_HASKELL__ < 710
 import           Control.Applicative
diff --git a/src/Diagrams/TwoD/Path/Follow.hs b/src/Diagrams/TwoD/Path/Follow.hs
--- a/src/Diagrams/TwoD/Path/Follow.hs
+++ b/src/Diagrams/TwoD/Path/Follow.hs
@@ -61,7 +61,7 @@
 --
 newtype Following n
   = Following { unFollowing :: Semi (Trail' Line V2 n) (Angle n) }
-  deriving (Monoid)
+  deriving (Monoid, Semigroup)
 
 -- | Note this is only an iso when considering trails equivalent up to
 --   rotation.
diff --git a/src/Diagrams/TwoD/Path/Metafont/Types.hs b/src/Diagrams/TwoD/Path/Metafont/Types.hs
--- a/src/Diagrams/TwoD/Path/Metafont/Types.hs
+++ b/src/Diagrams/TwoD/Path/Metafont/Types.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE CPP               #-}
 {-# LANGUAGE DeriveFunctor     #-}
 {-# LANGUAGE EmptyDataDecls    #-}
 {-# LANGUAGE FlexibleInstances #-}
@@ -11,7 +11,10 @@
 #if __GLASGOW_HASKELL__ < 710
 import Data.Monoid
 #endif
-import Data.Semigroup
+
+#if !MIN_VERSION_base(4,11,0)
+import           Data.Semigroup
+#endif
 
 import Diagrams.Direction
 import Diagrams.TwoD.Types
