diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+## v0.6.2 (Jul 2020)
+
+* Support GHC 8.6 or newer
diff --git a/Data/EnumMapSetWrapper.hs b/Data/EnumMapSetWrapper.hs
--- a/Data/EnumMapSetWrapper.hs
+++ b/Data/EnumMapSetWrapper.hs
@@ -180,6 +180,10 @@
         (a'unwrap, cxt, a') = neg k a
         unwrap = VarE 'map `AppE` a'unwrap
 
+    VarT v `AppT` a -> (unwrap, AppT (ConT ''Functor) (VarT v) : cxt, VarT v `AppT` a') where
+        (a'unwrap, cxt, a') = neg k a
+        unwrap = VarE 'fmap `AppE` a'unwrap
+
     _ -> (VarE 'id, [], typ)
 
 ------------------------------------------------------------------------
diff --git a/Data/EnumSet.hs b/Data/EnumSet.hs
--- a/Data/EnumSet.hs
+++ b/Data/EnumSet.hs
@@ -13,6 +13,7 @@
 import Data.IntSet
 import Data.Typeable
 import Data.Data
+import Data.Semigroup
 import Data.Monoid
 import Text.ParserCombinators.ReadPrec
 import Text.Read
@@ -21,7 +22,7 @@
 import Data.EnumMapSetWrapper
 
 newtype EnumSet k = EnumSet { unEnumSet :: IntSet } deriving
-    (Eq, Ord, Monoid, Typeable, Data, NFData)
+    (Eq, Ord, Semigroup, Monoid, Typeable, Data, NFData)
 
 -- * Operators
 w '(\\)
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+[![Build Status](https://travis-ci.org/tsurucapital/enummapset-th.svg?branch=master)](https://travis-ci.org/tsurucapital/enummapset-th)
+
+* [`Data.EnumSet`](http://hackage.haskell.org/package/enummapset-th/docs/Data-EnumSet.html)
+* [`Data.EnumMap.Lazy`](http://hackage.haskell.org/package/enummapset-th/docs/Data-EnumMap-Lazy.html)
+* [`Data.EnumMap.Strict`](http://hackage.haskell.org/package/enummapset-th/docs/Data-EnumMap-Strict.html)
+
diff --git a/enummapset-th.cabal b/enummapset-th.cabal
--- a/enummapset-th.cabal
+++ b/enummapset-th.cabal
@@ -1,5 +1,6 @@
+cabal-version:  2.4
 name:           enummapset-th
-version:        0.6.1.1
+version:        0.6.2
 synopsis:       TH-generated EnumSet/EnumMap wrappers around IntSet/IntMap.
 description:
   This package wraps @IntSet@ and @IntMap@ from @containers@, and provides
@@ -15,17 +16,18 @@
   newtype wrappers, and their respective 'Functor' instances behave as
   expected, unlike that of @IntMap@ which is alway lazy.
 homepage:       https://github.com/tsurucapital/enummapset-th
-license:        BSD3
+license:        BSD-3-Clause
 license-file:   LICENSE
 author:         Liyang HU
-maintainer:     enummapset-th@liyang.hu
+maintainer:     Fumiaki Kinoshita <fumiexcel@gmail.com>
 copyright:      © 2013−2015 Liyang HU
 category:       Data
 build-type:     Simple
-cabal-version:  >= 1.8
-tested-with:    GHC == 7.8.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
+tested-with:    GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.1
 extra-source-files:
     include/map.inc
+    README.md
+    CHANGELOG.md
 
 source-repository head
     type:       git
@@ -39,12 +41,13 @@
     other-modules:
         Data.EnumMapSetWrapper
     build-depends:
-        base >= 4.5 && < 5,
+        base >= 4.9 && < 5,
         deepseq >= 1.3,
-        containers >= 0.5.3 && < 0.6,
+        containers >= 0.5.3 && < 0.7,
         template-haskell >= 2.7
     include-dirs: include
     ghc-options: -Wall
+    default-language: Haskell2010
 
 -- vim: et sw=4 ts=4 sts=4:
 
diff --git a/include/map.inc b/include/map.inc
--- a/include/map.inc
+++ b/include/map.inc
@@ -13,7 +13,9 @@
 import Control.DeepSeq
 import Data.Data
 import Data.Foldable (Foldable)
-import Data.IntMap.STRICT
+import Data.IntMap.STRICT hiding (showTree, showTreeWith)
+import Data.IntMap.Internal.Debug
+import Data.Semigroup
 import Data.Monoid
 import Data.Traversable
 import Text.ParserCombinators.ReadPrec
@@ -25,7 +27,7 @@
 
 infixr 1 `EnumMap`
 newtype EnumMap k v = EnumMap { unEnumMap :: IntMap v } deriving
-    (Eq, Ord, Monoid, Typeable, Data, NFData)
+    (Eq, Ord, Semigroup, Monoid, Typeable, Data, NFData)
 
 ------------------------------------------------------------------------
 
