diff --git a/src/Yi/Rope.hs b/src/Yi/Rope.hs
--- a/src/Yi/Rope.hs
+++ b/src/Yi/Rope.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# OPTIONS_HADDOCK show-extensions #-}
@@ -60,15 +59,14 @@
 
   ) where
 
-#if __GLASGOW_HASKELL__ > 706
+
 import           Codec.Text.Detect (detectEncodingName)
-#endif
 import           Control.Applicative ((<$>))
 import           Control.DeepSeq
 import           Data.Binary
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as BSL
-import           Data.Char (isSpace, toLower)
+import           Data.Char (isSpace)
 import           Data.Default
 import qualified Data.FingerTree as T
 import           Data.FingerTree hiding (null, empty, reverse, split)
@@ -77,9 +75,6 @@
 import           Data.Monoid
 import           Data.String (IsString(..))
 import qualified Data.Text as TX
-#if __GLASGOW_HASKELL__ < 708
-import qualified Data.Text.Encoding as TE
-#endif
 import           Data.Text.ICU.Convert
 import qualified Data.Text.IO as TF (writeFile)
 import           Data.Typeable
@@ -704,29 +699,18 @@
 -- character decoding.
 readFile :: FilePath -> IO (Either TX.Text (YiString, ConverterName))
 readFile fp = do
-#if __GLASGOW_HASKELL__ > 706
   cs <- BSL.readFile fp
   case detectEncodingName cs of
    Nothing -> return . Left . TX.pack $ "Could not guess the encoding of " <> fp
    Just enc -> do
-     let downcase = Prelude.map toLower
-         ke = if enc == "ASCII"
-              then Just "UTF-8"
-              else if downcase enc `elem` Prelude.map downcase converterNames
-                   then Just enc else Nothing
+     let ke = if enc == "ASCII" then Just "UTF-8" else listToMaybe $ aliases enc
      case ke of
       Nothing -> return . Left . TX.pack $
                    "Don't know how to decode as " <> enc
       Just s -> do
         c <- open s (Just True)
         let st = BSL.toStrict cs
-        return $ Right (fromText . toUnicode c $ st, CN $ getName c)
-#else
-  cs <- BS.readFile fp
-  case TE.decodeUtf8' cs of
-    Left e -> return . Left . TX.pack $ show e
-    Right t -> return $ Right (fromText t, CN "UTF-8")
-#endif
+        return $ Right (fromText $ toUnicode c st, CN $ getName c)
 
 -- | Filters the characters from the underlying string.
 --
diff --git a/yi-rope.cabal b/yi-rope.cabal
--- a/yi-rope.cabal
+++ b/yi-rope.cabal
@@ -1,5 +1,5 @@
 name:                yi-rope
-version:             0.5.2.0
+version:             0.6.0.0
 synopsis:            A rope data structure used by Yi
 description:         A rope data structure used by Yi
 license:             GPL-2
@@ -23,14 +23,12 @@
       base >=4.5 && <5
     , binary
     , bytestring
+    , charsetdetect-ae >= 1.0.1
     , data-default
     , deepseq
     , fingertree
     , text
     , text-icu
-
-  if impl(ghc >= 7.8)
-    build-depends: charsetdetect-ae
 
   hs-source-dirs:      src
   default-language:    Haskell2010
