diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+0.2.2
+=====
+
+*   Support GHC-7.10/base-4.8 without compiler warnings.
+
+*   Drop dependency on errors package.
+
 0.2.1
 =====
 
diff --git a/constraints b/constraints
--- a/constraints
+++ b/constraints
@@ -1,55 +1,29 @@
-constraints: MonadRandom ==0.3,
-             array ==0.5.0.0,
-             attoparsec ==0.12.1.2,
-             base ==4.7.0.1,
+constraints: array ==0.5.1.0,
+             attoparsec ==0.12.1.5,
+             base ==4.8.0.0,
              base-unicode-symbols ==0.2.2.4,
-             bifunctors ==4.1.1.1,
-             blaze-builder ==0.3.3.4,
-             bytestring ==0.10.4.0,
-             case-insensitive ==1.2.0.3,
+             blaze-builder ==0.4.0.1,
+             bytestring ==0.10.6.0,
+             case-insensitive ==1.2.0.4,
              charset ==0.3.7,
-             comonad ==4.2.2,
-             containers ==0.5.5.1,
-             contravariant ==1.2.0.1,
-             deepseq ==1.3.0.2,
-             distributive ==0.4.4,
-             either ==4.3.2.1,
-             errors ==1.4.7,
-             exceptions ==0.6.1,
-             free ==4.10.0.1,
-             ghc-prim ==0.3.1.0,
-             hashable ==1.2.3.1,
-             http-types ==0.8.5,
-             integer-gmp ==0.5.1.0,
-             lifted-base ==0.2.3.3,
-             mmorph ==1.0.4,
-             monad-control ==1.0.0.1,
+             containers ==0.5.6.2,
+             deepseq ==1.4.1.1,
+             ghc-prim ==0.4.0.0,
+             hashable ==1.2.3.2,
+             http-types ==0.8.6,
+             integer-gmp ==1.0.0.0,
              mtl ==2.2.1,
              nats ==1,
              network ==2.6.0.2,
-             old-locale ==1.0.0.6,
-             parsec ==3.1.7,
+             parsec ==3.1.9,
              parsers ==0.12.1.1,
-             prelude-extras ==0.4,
-             pretty ==1.1.1.1,
-             profunctors ==4.3.2,
-             random ==1.0.1.1,
-             resourcet ==1.1.3.3,
              rts ==1.0,
-             safe ==0.3.6,
-             scientific ==0.3.3.5,
-             semigroupoids ==4.2,
-             semigroups ==0.16.0.1,
-             stm ==2.4.3,
-             tagged ==0.7.2,
-             template-haskell ==2.9.0.0,
-             text ==1.2.0.3,
-             time ==1.4.2,
-             transformers ==0.4.1.0,
-             transformers-base ==0.4.3,
-             transformers-compat ==0.3.3.4,
-             unix ==2.7.0.1,
+             scientific ==0.3.3.8,
+             semigroups ==0.16.2.2,
+             text ==1.2.0.4,
+             time ==1.5.0.1,
+             transformers ==0.4.2.0,
+             unix ==2.7.1.0,
              unordered-containers ==0.2.5.1,
              vault ==0.3.0.4,
-             void ==0.7,
-             wai ==3.0.2.1
+             wai ==3.0.2.3
diff --git a/src/Network/Wai/Middleware/Cors.hs b/src/Network/Wai/Middleware/Cors.hs
--- a/src/Network/Wai/Middleware/Cors.hs
+++ b/src/Network/Wai/Middleware/Cors.hs
@@ -54,19 +54,26 @@
 , simpleMethods
 ) where
 
+#ifndef MIN_VESION_base
+#define MIN_VESION_base(x,y,z) 1
+#endif
+
+#if ! MIN_VERSION_base(4,8,0)
 import Control.Applicative
-import Control.Error
-import Control.Monad
-import Control.Monad.IO.Class
-import Control.Monad.Trans.Class
+#endif
+import Control.Monad.Error.Class
+import Control.Monad.Trans.Except
+#if ! MIN_VERSION_wai(2,0,0)
 import Control.Monad.Trans.Resource
+#endif
 
-import qualified Data.Attoparsec as AttoParsec
+import qualified Data.Attoparsec.ByteString as AttoParsec
 import qualified Data.ByteString.Char8 as B8
 import qualified Data.ByteString.Lazy.Char8 as LB8
 import qualified Data.CaseInsensitive as CI
 import qualified Data.CharSet as CS
 import Data.List (intersect, (\\), union)
+import Data.Maybe (catMaybes)
 import Data.Monoid.Unicode
 import Data.String
 
@@ -317,7 +324,7 @@
                 case WAI.requestMethod r of
 
                     -- Preflight CORS request
-                    "OPTIONS" → runEitherT (preflightHeaders policy) >>= \case
+                    "OPTIONS" → runExceptT (preflightHeaders policy) >>= \case
                         Left e → err e
                         Right headers → res $ WAI.responseLBS HTTP.ok200 (ch ⊕ headers) ""
 
@@ -330,24 +337,24 @@
 
     -- Compute HTTP response headers for a preflight request
     --
-    preflightHeaders ∷ Monad μ ⇒ CorsResourcePolicy → EitherT String μ HTTP.ResponseHeaders
+    preflightHeaders ∷ (Functor μ, Monad μ) ⇒ CorsResourcePolicy → ExceptT String μ HTTP.ResponseHeaders
     preflightHeaders policy = concat <$> sequence
         [ hdrReqMethod policy
         , hdrRequestHeader policy
         , hdrMaxAge policy
         ]
 
-    hdrMaxAge ∷ Monad μ ⇒ CorsResourcePolicy → EitherT String μ HTTP.ResponseHeaders
+    hdrMaxAge ∷ Monad μ ⇒ CorsResourcePolicy → ExceptT String μ HTTP.ResponseHeaders
     hdrMaxAge policy = case corsMaxAge policy of
         Nothing → return []
         Just secs → return [("Access-Control-Max-Age", sshow secs)]
 
-    hdrReqMethod ∷ Monad μ ⇒ CorsResourcePolicy → EitherT String μ HTTP.ResponseHeaders
+    hdrReqMethod ∷ Monad μ ⇒ CorsResourcePolicy → ExceptT String μ HTTP.ResponseHeaders
     hdrReqMethod policy = case lookup "Access-Control-Request-Method" (WAI.requestHeaders r) of
-        Nothing → left "Access-Control-Request-Method header is missing in CORS preflight request"
+        Nothing → throwError "Access-Control-Request-Method header is missing in CORS preflight request"
         Just x → if  x `elem` supportedMethods
             then return [("Access-Control-Allow-Methods", hdrL supportedMethods)]
-            else left
+            else throwError
                 $ "Method requested in Access-Control-Request-Method of CORS request is not supported; requested: "
                 ⊕ B8.unpack x
                 ⊕ "; supported are "
@@ -356,14 +363,14 @@
       where
          supportedMethods = corsMethods policy `union` simpleMethods
 
-    hdrRequestHeader ∷ Monad μ ⇒ CorsResourcePolicy → EitherT String μ HTTP.ResponseHeaders
+    hdrRequestHeader ∷ Monad μ ⇒ CorsResourcePolicy → ExceptT String μ HTTP.ResponseHeaders
     hdrRequestHeader policy = case lookup "Access-Control-Request-Headers" (WAI.requestHeaders r) of
         Nothing → return []
         Just hdrsBytes → do
-            hdrs ← hoistEither $ AttoParsec.parseOnly httpHeaderNameListParser hdrsBytes
+            hdrs ← either throwError return $ AttoParsec.parseOnly httpHeaderNameListParser hdrsBytes
             if hdrs `isSubsetOf` supportedHeaders
                 then return [("Access-Control-Allow-Headers", hdrLI supportedHeaders)]
-                else left
+                else throwError
                     $ "HTTP header requested in Access-Control-Request-Headers of CORS request is not supported; requested: "
                     ⊕ B8.unpack (hdrLI hdrs)
                     ⊕ "; supported are "
diff --git a/wai-cors.cabal b/wai-cors.cabal
--- a/wai-cors.cabal
+++ b/wai-cors.cabal
@@ -3,7 +3,7 @@
 -- ------------------------------------------------------ --
 
 Name: wai-cors
-Version: 0.2.1
+Version: 0.2.2
 Synopsis: CORS for WAI
 
 Description:
@@ -37,8 +37,18 @@
 source-repository this
     type: git
     location: https://github.com/alephcloud/wai-cors
-    tag: 0.2.1
+    tag: 0.2.2
 
+flag transformers-3
+    description: use transformers<0.3 (this is set automatically)
+    default: False
+    manual: False
+
+flag wai-1
+    description: use version wai<2 (this is set automatically)
+    default: False
+    manual: False
+
 Library
     default-language: Haskell2010
     hs-source-dirs: src
@@ -53,10 +63,24 @@
         bytestring >= 0.10.0.2,
         case-insensitive >= 1.0.0.1,
         charset >= 0.3.7,
-        errors >= 1.4.1,
         http-types >= 0.8.0,
-        parsers >= 0.11,
-        resourcet >= 0.4,
-        transformers >= 0.3,
-        wai >= 1.4.0
+        parsers >= 0.11
+
+    if flag (wai-1)
+        build-depends:
+            wai < 2.0,
+            resourcet >= 0.4
+    else
+        build-depends:
+            wai >= 2.0
+
+    if flag(transformers-3)
+        build-depends:
+            mtl >= 2.1,
+            transformers >= 0.3 && < 0.4,
+            transformers-compat >= 0.3
+    else
+        build-depends:
+            mtl >= 2.2,
+            transformers >= 0.4
 
