diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,10 @@
 
 # Release Notes
 
+## 4.3.1
+
+* Fix compatibility with base 4.11 due to SMP (M Farkas-Dyck)
+
 ## 4.3
 
 ### Fixes
diff --git a/examples/Example/Monad/ParserInterface.hs b/examples/Example/Monad/ParserInterface.hs
new file mode 100644
--- /dev/null
+++ b/examples/Example/Monad/ParserInterface.hs
@@ -0,0 +1,27 @@
+-- | Parse AST from SMTLIB string
+module Example.Monad.ParserInterface
+  ( run )
+  where
+
+import Z3.Monad
+
+run :: IO ()
+run = evalZ3 script >>= print
+
+-- Toy example SMTLIB string
+smtStr1 :: String
+smtStr1 = "(declare-const x Int)\n(assert (< x 5))"
+
+smtStr2 :: String
+smtStr2 = "(declare-const x Int)\n(assert (> x 5))"
+
+
+script :: Z3 Result
+script = do
+  l <- parseSMTLib2String smtStr1 [] [] [] []
+  r <- parseSMTLib2String smtStr2 [] [] [] []
+  eq <- mkEq l r
+  assert l
+  assert r
+  assert eq
+  check
diff --git a/src/Z3/Opts.hs b/src/Z3/Opts.hs
--- a/src/Z3/Opts.hs
+++ b/src/Z3/Opts.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 
 -- |
 -- Module    : Z3.Opts
@@ -52,15 +53,28 @@
 import qualified Data.Fixed as Fixed
 import           Data.Monoid ( Monoid(..) )
 
+#if MIN_VERSION_base(4,9,0)
+import           Data.Semigroup ( Semigroup (..) )
+#endif
+
 ---------------------------------------------------------------------
 -- Configuration
 
 -- | Z3 configuration.
 newtype Opts = Opts [Opt]
 
+#if MIN_VERSION_base(4,9,0)
+instance Semigroup Opts where
+  Opts ps1 <> Opts ps2 = Opts (ps1 ++ ps2)
+#endif
+
 instance Monoid Opts where
   mempty = Opts []
-  mappend (Opts ps1) (Opts ps2) = Opts (ps1++ps2)
+#if MIN_VERSION_base(4,9,0)
+  mappend = (<>)
+#else
+  Opts ps1 `mappend` Opts ps2 = Opts (ps1 ++ ps2)
+#endif
 
 singleton :: Opt -> Opts
 singleton o = Opts [o]
diff --git a/z3.cabal b/z3.cabal
--- a/z3.cabal
+++ b/z3.cabal
@@ -1,5 +1,5 @@
 Name:                z3
-Version:             4.3
+Version:             4.3.1
 Synopsis:            Bindings for the Z3 Theorem Prover
 Description:
     Bindings for the Z3 4./x/ Theorem Prover (<https://github.com/Z3Prover/z3>).
@@ -67,7 +67,8 @@
                          ForeignFunctionInterface
                          MultiParamTypeClasses
 
-    Other-extensions:    DeriveDataTypeable
+    Other-extensions:    CPP
+                         DeriveDataTypeable
                          EmptyDataDecls
                          GeneralizedNewtypeDeriving
                          PatternGuards
@@ -105,6 +106,7 @@
                        Example.Monad.FuncModel
                        Example.Monad.Interpolation
                        Example.Monad.MutuallyRecursive
+                       Example.Monad.ParserInterface
                        Example.Monad.Quantifiers
                        Example.Monad.QuantifierElimination
                        Example.Monad.ToSMTLib
