diff --git a/Data/FMList.hs b/Data/FMList.hs
--- a/Data/FMList.hs
+++ b/Data/FMList.hs
@@ -88,10 +88,12 @@
   , Show(..), String, (++)
   )
 import Data.Maybe (Maybe(..), maybe, fromMaybe, isNothing)
-import Data.Monoid
+import Data.Monoid (Monoid, mempty, mappend, Dual(..), First(..), Last(..), Sum(..))
+
 #if MIN_VERSION_base(4,9,0)
-import qualified Data.Semigroup as Semigroup
+import Data.Semigroup (Semigroup((<>)))
 #endif
+
 import Data.Foldable (Foldable, foldMap, foldr, toList)
 import Data.Traversable (Traversable, traverse)
 import Control.Monad
@@ -260,15 +262,15 @@
 
 
 newtype WrapApp f m = WrapApp { unWrapApp :: f m }
+
 #if MIN_VERSION_base(4,9,0)
-instance (Applicative f, Semigroup.Semigroup m) => Semigroup.Semigroup (WrapApp f m) where
-  WrapApp a <> WrapApp b = WrapApp $ (Semigroup.<>) <$> a <*> b
+instance (Applicative f, Semigroup m) => Semigroup (WrapApp f m) where
+  WrapApp a <> WrapApp b = WrapApp $ (<>) <$> a <*> b
 #endif
+
 instance (Applicative f, Monoid m) => Monoid (WrapApp f m) where
   mempty                          = WrapApp $ pure mempty
-#if !(MIN_VERSION_base(4,11,0))
   mappend (WrapApp a) (WrapApp b) = WrapApp $ mappend <$> a <*> b
-#endif
 
 -- | Map each element of a structure to an action, evaluate these actions from left to right,
 -- and concat the monoid results.
@@ -298,6 +300,11 @@
   gs <*> xs  = transform (\f g -> unFM xs (f . g)) gs
   as <*  bs  = transform (\f a -> unFM bs (const (f a))) as
   as  *> bs  = transform (\f   -> const (unFM bs f)) as
+
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup (FMList a) where
+  (<>) = (><)
+#endif
 
 instance Monoid (FMList a) where
   mempty     = nil
diff --git a/fmlist.cabal b/fmlist.cabal
--- a/fmlist.cabal
+++ b/fmlist.cabal
@@ -1,5 +1,5 @@
 name:                fmlist
-version:             0.9.1
+version:             0.9.2
 synopsis:            FoldMap lists
 description:
   FoldMap lists are lists represented by their foldMap function.
