diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+- 0.1.5 (2018-05-20)
+    - GHC-8.4.2
+    - Don't depend on nats and semigroups on newer GHC
 - 0.1.4.2 (2016-12-05)
     - Fix compilation with generics-sop-0.2.3.0
 - 0.1.4.1 (2016-09-20)
diff --git a/binary-tagged.cabal b/binary-tagged.cabal
--- a/binary-tagged.cabal
+++ b/binary-tagged.cabal
@@ -1,9 +1,5 @@
--- This file has been generated from package.yaml by hpack version 0.14.1.
---
--- see: https://github.com/sol/hpack
-
 name:           binary-tagged
-version:        0.1.4.2
+version:        0.1.5
 synopsis:       Tagged binary serialisation.
 description:    Check <https://github.com/phadej/binary-tagged#readme README on Github>
 category:       Web
@@ -13,7 +9,7 @@
 maintainer:     Oleg Grenrus <oleg.grenrus@iki.fi>
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC==7.8.4, GHC==7.10.3, GHC==8.0.1
+tested-with:    GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
 build-type:     Simple
 cabal-version:  >= 1.10
 
@@ -30,28 +26,33 @@
       src
   ghc-options: -Wall
   build-depends:
-      base                     >=4.7  && <4.10
-    , aeson                    >=0.8  && <1.1
+      base                     >=4.7  && <4.12
+    , aeson                    >=0.8  && <1.4
     , array                    >=0.5  && <0.6
     , base16-bytestring        >=0.1.1.6 && <0.2
-    , binary                   >=0.7  && <0.9
+    , binary                   >=0.7  && <0.10
     , bytestring               >=0.10 && <0.11
     , containers               >=0.5  && <0.6
-    , generics-sop             >=0.1  && <0.3
+    , generics-sop             >=0.1  && <0.4
     , hashable                 >=1.2  && <1.3
-    , nats                     >=1    && <1.2
     , scientific               >=0.3  && <0.4
     , SHA                      >=1.6  && <1.7
-    , semigroups               >=0.16 && <0.19
     , tagged                   >=0.7  && <0.9
     , text                     >=1.2  && <1.3
-    , time                     >=1.4  && <1.7
+    , time                     >=1.4  && <1.9
     , unordered-containers     >=0.2  && <0.3
-    , vector                   >=0.10 && <0.12
+    , vector                   >=0.10 && <0.13
   exposed-modules:
       Data.Binary.Tagged
   default-language: Haskell2010
 
+  if !impl(ghc >= 8.0)
+    build-depends:
+      semigroups >=0.16 && <0.19
+  if !impl(ghc >= 7.10)
+    build-depends:
+      nats      >=1    && <1.2
+
 test-suite binary-tagged-test
   type: exitcode-stdio-1.0
   main-is: Tests.hs
@@ -59,30 +60,34 @@
       test
   ghc-options: -Wall
   build-depends:
-      base                     >=4.7  && <4.10
-    , aeson                    >=0.8  && <1.1
-    , array                    >=0.5  && <0.6
-    , base16-bytestring        >=0.1.1.6 && <0.2
-    , binary                   >=0.7  && <0.9
-    , bytestring               >=0.10 && <0.11
-    , containers               >=0.5  && <0.6
-    , generics-sop             >=0.1  && <0.3
-    , hashable                 >=1.2  && <1.3
-    , nats                     >=1    && <1.2
-    , scientific               >=0.3  && <0.4
-    , SHA                      >=1.6  && <1.7
-    , semigroups               >=0.16 && <0.19
-    , tagged                   >=0.7  && <0.9
-    , text                     >=1.2  && <1.3
-    , time                     >=1.4  && <1.7
-    , unordered-containers     >=0.2  && <0.3
-    , vector                   >=0.10 && <0.12
+      base
+    , aeson
+    , array
+    , base16-bytestring
+    , binary
+    , bytestring
+    , containers
+    , generics-sop
+    , hashable
+    , scientific
+    , SHA
+    , tagged
+    , text
+    , time
+    , unordered-containers
+    , vector
     , binary-tagged
-    , binary-orphans >=0.1.1
+    , binary-orphans
     , bifunctors
     , quickcheck-instances
     , tasty
     , tasty-quickcheck
+  if !impl(ghc >= 8.0)
+    build-depends:
+      semigroups
+  if !impl(ghc >= 7.10)
+    build-depends:
+      nats
   other-modules:
       Generators
       Rec1
@@ -96,26 +101,26 @@
       bench
   ghc-options: -Wall
   build-depends:
-      base                     >=4.7  && <4.10
-    , aeson                    >=0.8  && <1.1
-    , array                    >=0.5  && <0.6
-    , base16-bytestring        >=0.1.1.6 && <0.2
-    , binary                   >=0.7  && <0.9
-    , bytestring               >=0.10 && <0.11
-    , containers               >=0.5  && <0.6
-    , generics-sop             >=0.1  && <0.3
-    , hashable                 >=1.2  && <1.3
-    , nats                     >=1    && <1.2
-    , scientific               >=0.3  && <0.4
-    , SHA                      >=1.6  && <1.7
-    , semigroups               >=0.16 && <0.19
-    , tagged                   >=0.7  && <0.9
-    , text                     >=1.2  && <1.3
-    , time                     >=1.4  && <1.7
-    , unordered-containers     >=0.2  && <0.3
-    , vector                   >=0.10 && <0.12
+      base
+    , aeson
+    , array
+    , base16-bytestring
+    , binary
+    , bytestring
+    , containers
+    , generics-sop
+    , hashable
+    , nats
+    , scientific
+    , SHA
+    , semigroups
+    , tagged
+    , text
+    , time
+    , unordered-containers
+    , vector
     , binary-tagged
-    , binary-orphans >=0.1.1
+    , binary-orphans
     , deepseq
     , criterion
   default-language: Haskell2010
diff --git a/src/Data/Binary/Tagged.hs b/src/Data/Binary/Tagged.hs
--- a/src/Data/Binary/Tagged.hs
+++ b/src/Data/Binary/Tagged.hs
@@ -201,6 +201,9 @@
   return = BinaryTagged
   BinaryTagged m >>= k = k m
 
+instance Semigroup.Semigroup a => Semigroup.Semigroup (BinaryTagged v a) where
+  (<>) = liftA2 (Semigroup.<>)
+
 instance Monoid.Monoid a => Monoid.Monoid (BinaryTagged v a) where
   mempty   = pure Monoid.mempty
   mappend  = liftA2 Monoid.mappend
