diff --git a/acid-state.cabal b/acid-state.cabal
--- a/acid-state.cabal
+++ b/acid-state.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.6.2
+Version:             0.6.3
 
 -- A short (one-line) description of the package.
 Synopsis:            Add ACID guarantees to any serializable Haskell data structure.
@@ -42,7 +42,11 @@
 -- Constraint on the version of Cabal needed to build this package.
 Cabal-version:       >=1.6
 
+Source-repository head
+  type:          darcs
+  location:      http://mirror.seize.it/acid-state/
 
+
 Library
   -- Modules exported by the library.
   Exposed-Modules:     Data.Acid,
@@ -57,7 +61,9 @@
                        Data.Acid.Abstract, Data.Acid.Core
   
   -- Packages needed in order to build this package.
-  Build-depends:       base >= 4 && < 5, cereal >= 0.3.2.0, safecopy >= 0.6, bytestring, stm,
+  -- We need hGetSome from bytestring, added in 0.9.1.8
+  Build-depends:       base >= 4 && < 5, cereal >= 0.3.2.0, safecopy >= 0.6,
+                       bytestring >= 0.9.1.8, stm,
                        filepath, directory, mtl, array, containers, template-haskell, network
 
   if os(windows)
diff --git a/src/Data/Acid/Common.hs b/src/Data/Acid/Common.hs
--- a/src/Data/Acid/Common.hs
+++ b/src/Data/Acid/Common.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, GADTs #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving, GADTs #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Acid.Common
@@ -32,19 +32,21 @@
 
 -- | Context monad for Update events.
 newtype Update st a = Update { unUpdate :: State st a }
-#if MIN_VERSION_mtl(2,0,0)
-    deriving (Monad, Functor, Applicative, MonadState st)
-#else
     deriving (Monad, Functor, MonadState st)
-#endif
 
+-- mtl pre-2.0 doesn't have these instances to newtype-derive, but they're
+-- simple enough.
+instance Applicative (Update st) where
+    pure = return
+    (<*>) = ap
+
 -- | Context monad for Query events.
 newtype Query st a  = Query { unQuery :: Reader st a }
-#if MIN_VERSION_mtl(2,0,0)
-    deriving (Monad, Functor, Applicative, MonadReader st)
-#else
     deriving (Monad, Functor, MonadReader st)
-#endif
+
+instance Applicative (Query st) where
+    pure = return
+    (<*>) = ap
 
 -- | Run a query in the Update Monad.
 runQuery :: Query st a -> Update st a
