diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for rtnetlink
 
-## 0.1.0.0  -- YYYY-mm-dd
+## 0.1.0.1  -- 2017-03-25
+
+* Provide support for base-4.7.\*
+
+## 0.1.0.0  -- 2017-03-24
 
 * First version. Released on an unsuspecting world.
diff --git a/rtnetlink.cabal b/rtnetlink.cabal
--- a/rtnetlink.cabal
+++ b/rtnetlink.cabal
@@ -1,5 +1,5 @@
 name:               rtnetlink
-version:            0.1.0.0
+version:            0.1.0.1
 synopsis:           Manipulate network devices, addresses, and routes on Linux
 description:        A high-level, extensible, pure Haskell interface to the
                     ROUTE_NETLINK subsystem of netlink for manipulating
@@ -31,7 +31,7 @@
     hs-source-dirs:     tests
     main-is:            Main.hs
     build-depends:
-        base      >=4.9 && <4.10,
+        base      >=4.7 && <4.10,
         hspec     >=2.4 && <2.5,
         socket    >=0.8 && <0.9,
         unix      >=2.7 && <2.8,
@@ -40,7 +40,7 @@
 executable rtnl-link
     if flag(examples)
         build-depends:
-            base        >=4.9  && <4.10,
+            base        >=4.7  && <4.10,
             bytestring  >=0.10 && <0.11,
             rtnetlink
     else
@@ -51,7 +51,7 @@
 executable rtnl-address
     if flag(examples)
         build-depends:
-            base        >=4.9  && <4.10,
+            base        >=4.7  && <4.10,
             socket      >=0.8  && <0.9,
             split       >=0.2  && <0.3,
             rtnetlink
@@ -80,7 +80,7 @@
         RecordWildCards,
         TypeFamilies
     build-depends:
-        base         >=4.9  && <4.10,
+        base         >=4.7  && <4.10,
         bytestring   >=0.10 && <0.11,
         cereal       >=0.5  && <0.6,
         monad-loops  >=0.4  && <0.5,
diff --git a/src/System/Linux/RTNetlink.hs b/src/System/Linux/RTNetlink.hs
--- a/src/System/Linux/RTNetlink.hs
+++ b/src/System/Linux/RTNetlink.hs
@@ -70,11 +70,13 @@
     , liftIO
     ) where
 
+import Control.Applicative (Applicative(..), (<$>))
 import Control.Monad (when, void)
 import Control.Monad.IO.Class (MonadIO(..))
 import Control.Monad.Loops (unfoldM)
 import Control.Monad.State (MonadState, StateT, evalStateT)
 import Control.Monad.State (get, gets, put, modify, modify')
+import Data.Monoid (mempty)
 import Data.Either (partitionEithers)
 import Data.List (partition)
 import Data.Serialize (encode)
@@ -107,7 +109,7 @@
 -- | Run an RTNL function and catch all @IOError@s. This means that functions
 -- in this module are guaranteed not to throw uncaught exceptions.
 tryRTNL :: RTNL a -> IO (Either String a)
-tryRTNL = fmap (left (\e -> X.displayException (e::IOError))) . X.try . runRTNL
+tryRTNL = fmap (left (\e -> show (e::IOError))) . X.try . runRTNL
 
 -- | Run an RTNL function. RTNL functions in this module throw exclusively
 -- @IOError@s.
diff --git a/src/System/Linux/RTNetlink/Address.hsc b/src/System/Linux/RTNetlink/Address.hsc
--- a/src/System/Linux/RTNetlink/Address.hsc
+++ b/src/System/Linux/RTNetlink/Address.hsc
@@ -26,7 +26,9 @@
     , Inet6Address
     ) where
 
+import Control.Applicative ((<$>), (<*>))
 import Control.Monad (guard)
+import Data.Monoid (mempty)
 import Data.Serialize (Serialize, Get, Putter, get, put, runPut)
 import Data.Serialize (getWord32host, putWord32host, getWord8)
 import Data.Serialize (putWord8, getWord16be, putWord16be)
diff --git a/src/System/Linux/RTNetlink/Link.hsc b/src/System/Linux/RTNetlink/Link.hsc
--- a/src/System/Linux/RTNetlink/Link.hsc
+++ b/src/System/Linux/RTNetlink/Link.hsc
@@ -17,6 +17,7 @@
 {-# LANGUAGE TypeFamilies #-}
 module System.Linux.RTNetlink.Link where
 
+import Control.Applicative ((<$>), (<*>))
 import Data.Bits ((.&.))
 import Data.Int (Int32)
 import Data.Monoid ((<>))
diff --git a/src/System/Linux/RTNetlink/Message.hsc b/src/System/Linux/RTNetlink/Message.hsc
--- a/src/System/Linux/RTNetlink/Message.hsc
+++ b/src/System/Linux/RTNetlink/Message.hsc
@@ -28,10 +28,11 @@
 {-# LANGUAGE TypeFamilies #-}
 module System.Linux.RTNetlink.Message where
 
+import Control.Applicative ((<$>), (<*>))
 import Control.Monad (guard)
-import Data.Monoid (mempty)
 import Data.Int (Int32)
 import Data.List (nub)
+import Data.Monoid (mempty)
 import Data.Serialize
 import Data.Word (Word16, Word32)
 import qualified Data.ByteString as S
diff --git a/src/System/Linux/RTNetlink/Packet.hsc b/src/System/Linux/RTNetlink/Packet.hsc
--- a/src/System/Linux/RTNetlink/Packet.hsc
+++ b/src/System/Linux/RTNetlink/Packet.hsc
@@ -33,15 +33,17 @@
     , putAligned
     ) where
 
+import Control.Applicative ((<$>), (<*>))
 import Control.Monad (guard)
 import Control.Monad.Loops (unfoldM)
 import Control.Monad.Trans (lift)
 import Control.Monad.Trans.Maybe (runMaybeT)
 import Data.Bits ((.|.), (.&.), xor)
 import Data.List (unfoldr, find)
+import Data.Maybe (listToMaybe)
+import Data.Monoid (Monoid, mempty, mappend)
 import Data.Serialize
 import Data.Word (Word16,Word32)
-import Data.Maybe (listToMaybe)
 import qualified Data.ByteString as S
 
 #include <linux/netlink.h>
diff --git a/src/System/Socket/Family/Netlink.hsc b/src/System/Socket/Family/Netlink.hsc
--- a/src/System/Socket/Family/Netlink.hsc
+++ b/src/System/Socket/Family/Netlink.hsc
@@ -22,6 +22,7 @@
     ) where
 
 import Data.Bits ((.|.))
+import Data.Functor ((<$>))
 import Data.Serialize (Serialize(..), encode, decode)
 import Data.Serialize (putWord16host, putWord32host, getWord16host, getWord32host)
 import Foreign.Ptr (castPtr)
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -2,9 +2,10 @@
 module Main where
 
 import Control.Exception (bracket)
+import Data.Functor ((<$>))
+import System.Posix (getEffectiveUserID)
 import System.Socket.Family.Inet (inetAddressFromTuple)
 import System.Socket.Family.Inet6 (inet6AddressFromTuple)
-import System.Posix (getEffectiveUserID)
 
 import Test.Hspec
 
