diff --git a/GraphRewriting/Graph/Internal.hs b/GraphRewriting/Graph/Internal.hs
--- a/GraphRewriting/Graph/Internal.hs
+++ b/GraphRewriting/Graph/Internal.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE UnicodeSyntax, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE UnicodeSyntax, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, StandaloneDeriving #-}
 module GraphRewriting.Graph.Internal where
 
 import Prelude.Unicode
@@ -13,6 +13,8 @@
 
 newtype Rewrite n a = Rewrite {rewrite ∷ State (Graph n) a}
 	deriving (MonadState (Graph n), Monad, Functor, MonadFix)
+
+deriving instance Applicative (Rewrite n)
 
 newtype Node = Node {nKey ∷ Int} deriving (Eq, Ord) -- TODO: change this into Integer to avert overflow
 newtype Port = Edge {eKey ∷ Int} deriving (Eq, Ord) -- TODO: change this into Integer to avert overflow
diff --git a/GraphRewriting/Graph/Write.hs b/GraphRewriting/Graph/Write.hs
--- a/GraphRewriting/Graph/Write.hs
+++ b/GraphRewriting/Graph/Write.hs
@@ -17,7 +17,6 @@
 import GraphRewriting.Graph.Read
 import qualified GraphRewriting.Graph.Write.Unsafe as Unsafe
 import Control.Monad
-import Control.Applicative
 import Data.Maybe (catMaybes)
 import Data.View
 import Data.List
diff --git a/GraphRewriting/Pattern.hs b/GraphRewriting/Pattern.hs
--- a/GraphRewriting/Pattern.hs
+++ b/GraphRewriting/Pattern.hs
@@ -10,8 +10,6 @@
 import Control.Monad.Identity
 import qualified Data.Set as Set (empty, insert, member)
 import Control.Applicative
-import Data.Functor
-import Data.Monoid
 
 
 -- | A pattern represents a graph scrutinisation that memorises all the scrutinised nodes during matching.
diff --git a/GraphRewriting/Rule.hs b/GraphRewriting/Rule.hs
--- a/GraphRewriting/Rule.hs
+++ b/GraphRewriting/Rule.hs
@@ -12,10 +12,7 @@
 import GraphRewriting.Pattern
 import Control.Monad.State
 import Control.Monad.Reader
-import Control.Applicative
 import Data.List (nub)
-import Data.Functor
-import Data.Monoid
 
 
 -- | A rewriting rule is defined as a 'Pattern' that returns a 'Rewrite'
diff --git a/graph-rewriting.cabal b/graph-rewriting.cabal
--- a/graph-rewriting.cabal
+++ b/graph-rewriting.cabal
@@ -1,5 +1,5 @@
 Name:           graph-rewriting
-Version:        0.7.6
+Version:        0.7.7
 Copyright:      (c) 2010, Jan Rochel
 License:        BSD3
 License-File:   LICENSE
@@ -15,7 +15,7 @@
 
 Library
   Build-Depends:
-    base >= 4.0 && < 4.8,
+    base >= 4.0 && < 4.9,
     base-unicode-symbols >= 0.2 && < 0.3,
     mtl >= 1.1 && < 2.3,
     containers >= 0.3 && < 0.6
@@ -40,6 +40,5 @@
     FlexibleInstances
     TypeSynonymInstances
     MultiParamTypeClasses
-    OverlappingInstances
     GeneralizedNewtypeDeriving
-  GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-binds -fwarn-unused-imports -fwarn-unused-do-bind -fwarn-wrong-do-bind -fwarn-unrecognised-pragmas
+  GHC-Options:    -fno-warn-duplicate-exports -fwarn-unused-binds -fwarn-unused-imports -fwarn-unused-do-bind -fwarn-wrong-do-bind -fwarn-unrecognised-pragmas -fno-warn-tabs
