diff --git a/Data/IntervalMap/Generic/Base.hs b/Data/IntervalMap/Generic/Base.hs
--- a/Data/IntervalMap/Generic/Base.hs
+++ b/Data/IntervalMap/Generic/Base.hs
@@ -225,7 +225,7 @@
 --
 -- Use 'lookup' or 'findWithDefault' instead of this function, unless you are absolutely
 -- sure that the key is present in the map.
-(!) :: (Interval k e, Ord k) => IntervalMap k v -> k -> v
+(!) :: (Ord k) => IntervalMap k v -> k -> v
 tree ! key = fromMaybe (error "IntervalMap.!: key not found") (lookup key tree)
 
 -- | Same as 'difference'.
@@ -260,7 +260,7 @@
 
 instance (Interval i k, Ord i) => Monoid (IntervalMap i v) where
     mempty  = empty
-    mappend = union
+    mappend = (Sem.<>)
     mconcat = unions
 
 instance Traversable (IntervalMap k) where
@@ -667,7 +667,7 @@
     (S' r' kv) -> annotate (unbalancedL c k v l r') kv
 
 -- The left tree lacks one Black node
-unbalancedR :: (Interval k e, Ord k) => Color -> k -> v -> IntervalMap k v -> IntervalMap k v -> DeleteResult k v
+unbalancedR :: (Interval k e) => Color -> k -> v -> IntervalMap k v -> IntervalMap k v -> DeleteResult k v
 -- Decreasing one Black node in the right
 unbalancedR B k v l r@(Node B _ _ _ _ _) = S (balanceR B k v l (turnRed r))
 unbalancedR R k v l r@(Node B _ _ _ _ _) = U (balanceR B k v l (turnRed r))
@@ -676,7 +676,7 @@
   = U (mNode B rk rv (balanceR B k v l (turnRed rl)) rr)
 unbalancedR _ _ _ _ _ = error "unbalancedR"
 
-unbalancedL :: (Interval k e, Ord k) => Color -> k -> v -> IntervalMap k v -> IntervalMap k v -> DeleteResult k v
+unbalancedL :: (Interval k e) => Color -> k -> v -> IntervalMap k v -> IntervalMap k v -> DeleteResult k v
 unbalancedL R k v l@(Node B _ _ _ _ _) r = U (balanceL B k v (turnRed l) r)
 unbalancedL B k v l@(Node B _ _ _ _ _) r = S (balanceL B k v (turnRed l) r)
 unbalancedL B k v (Node R lk _ lv ll lr@(Node B _ _ _ _ _)) r
diff --git a/Data/IntervalSet.hs b/Data/IntervalSet.hs
--- a/Data/IntervalSet.hs
+++ b/Data/IntervalSet.hs
@@ -178,7 +178,7 @@
 
 instance (Interval i k, Ord i) => Monoid (IntervalSet i) where
     mempty  = empty
-    mappend = union
+    mappend = (Sem.<>)
     mconcat = unions
               
 instance Foldable.Foldable IntervalSet where
@@ -483,7 +483,7 @@
     (S' r' kv) -> annotate (unbalancedL c k l r') kv
 
 -- The left tree lacks one Black node
-unbalancedR :: (Interval k e, Ord k) => Color -> k -> IntervalSet k -> IntervalSet k -> DeleteResult k
+unbalancedR :: (Interval k e) => Color -> k -> IntervalSet k -> IntervalSet k -> DeleteResult k
 -- Decreasing one Black node in the right
 unbalancedR B k l r@(Node B _ _ _ _) = S (balanceR B k l (turnRed r))
 unbalancedR R k l r@(Node B _ _ _ _) = U (balanceR B k l (turnRed r))
@@ -492,7 +492,7 @@
   = U (mNode B rk (balanceR B k l (turnRed rl)) rr)
 unbalancedR _ _ _ _ = error "unbalancedR"
 
-unbalancedL :: (Interval k e, Ord k) => Color -> k -> IntervalSet k -> IntervalSet k -> DeleteResult k
+unbalancedL :: (Interval k e) => Color -> k -> IntervalSet k -> IntervalSet k -> DeleteResult k
 unbalancedL R k l@(Node B _ _ _ _) r = U (balanceL B k (turnRed l) r)
 unbalancedL B k l@(Node B _ _ _ _) r = S (balanceL B k (turnRed l) r)
 unbalancedL B k (Node R lk _ ll lr@(Node B _ _ _ _)) r
diff --git a/IntervalMap.cabal b/IntervalMap.cabal
--- a/IntervalMap.cabal
+++ b/IntervalMap.cabal
@@ -1,5 +1,5 @@
 Name:                IntervalMap
-Version:             0.6.1.1
+Version:             0.6.1.2
 Stability:           experimental
 Synopsis:            Containers for intervals, with efficient search.
 Homepage:            http://www.chr-breitkopf.de/comp/IntervalMap
@@ -8,11 +8,11 @@
 Author:              Christoph Breitkopf
 Maintainer:          Christoph Breitkopf <chbreitkopf@gmail.com>
 bug-reports:         mailto:chbreitkopf@gmail.com
-Copyright:           2011-2018 Christoph Breitkopf
+Copyright:           2011-2020 Christoph Breitkopf
 Category:            Data
 Build-type:          Simple
-Cabal-version:       >= 1.8
-Tested-With:         GHC ==8.0.2, GHC ==8.2.1, GHC ==8.4.1
+Cabal-version:       >= 1.10
+Tested-With:         GHC ==8.0.2, GHC ==8.2.1, GHC ==8.4.1, GHC ==8.6.5, GHC ==8.8.3
 Description:
                      Ordered containers of intervals, with efficient search
                      for all keys containing a point or overlapping an interval.
@@ -34,7 +34,8 @@
                        Data.IntervalSet
   other-modules:       Data.IntervalMap.Generic.Base
   Build-depends:       base >= 4 && < 5, containers, deepseq
-  ghc-options: -Wall -fwarn-tabs
+  default-language:    Haskell2010
+  ghc-options: -Wall -fwarn-tabs -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates -Wredundant-constraints
 
 Test-Suite TestInterval
   type:               exitcode-stdio-1.0
@@ -42,6 +43,7 @@
   hs-source-dirs:     . test
   build-depends:      base >= 4 && < 5, containers, deepseq,
                       QuickCheck, Cabal >= 1.9.2
+  default-language:    Haskell2010
   ghc-options:        -with-rtsopts=-K1K
   
 
@@ -51,6 +53,7 @@
   hs-source-dirs:     . test
   build-depends:      base >= 4 && < 5, containers, deepseq,
                       QuickCheck, Cabal >= 1.9.2
+  default-language:    Haskell2010
   ghc-options:        -with-rtsopts=-K1K
 
 Test-Suite TestIntervalMap
@@ -59,6 +62,7 @@
   hs-source-dirs:     . test
   build-depends:      base >= 4 && < 5, containers, deepseq,
                       QuickCheck, Cabal >= 1.9.2
+  default-language:    Haskell2010
   ghc-options:        -with-rtsopts=-K1K
 
 Test-Suite TestIntervalSet
@@ -67,6 +71,7 @@
   hs-source-dirs:     . test
   build-depends:      base >= 4 && < 5, containers, deepseq,
                       QuickCheck, Cabal >= 1.9.2
+  default-language:    Haskell2010
   ghc-options:        -with-rtsopts=-K1K
 
 benchmark bench-all
@@ -76,6 +81,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq,
                       criterion >= 1.0
+  default-language:    Haskell2010
   ghc-options: -Wall
 
 benchmark bench-generic-lazy-strict
@@ -85,6 +91,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq,
                       criterion >= 1.0
+  default-language:    Haskell2010
   ghc-options: -Wall -with-rtsopts=-K1K
 
 benchmark bench-set
@@ -94,6 +101,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq,
                       criterion >= 1.0
+  default-language:    Haskell2010
   ghc-options: -Wall -with-rtsopts=-K1K
 
 benchmark weigh-allocs
@@ -103,6 +111,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq,
                       weigh
+  default-language:    Haskell2010
   ghc-options: -Wall -with-rtsopts=-K1K
 
 benchmark bench-compare-types
@@ -112,6 +121,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq, fingertree >= 0.1, SegmentTree,
                       criterion >= 1.0
+  default-language:    Haskell2010
   ghc-options: -Wall
 
 benchmark bench-rb-impl
@@ -121,6 +131,7 @@
   Build-depends:      base >= 4 && < 5,
                       containers, random, deepseq,
                       criterion >= 1.0
+  default-language:    Haskell2010
   ghc-options: -Wall -with-rtsopts=-K1K
 
 source-repository head
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2016, Christoph Breitkopf
+Copyright (c) 2011-2020, Christoph Breitkopf
 
 All rights reserved.
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+0.6.1.2  Enable and fix more warnings.
 0.6.1.1  Improve Semigroup instances.
 0.6.1.0  Add safe versions of find... functions.
 
