diff --git a/Data/Ascii.hs b/Data/Ascii.hs
--- a/Data/Ascii.hs
+++ b/Data/Ascii.hs
@@ -31,7 +31,7 @@
 import Data.ByteString (ByteString)
 import qualified Data.ByteString as S
 import qualified Data.ByteString.Char8 as S8
-import Data.Char (toLower, isAscii)
+import Data.Char (isAscii)
 import Data.String (IsString (..))
 import Data.Data (Data)
 import Data.Typeable (Typeable)
@@ -40,26 +40,12 @@
 import qualified Data.Text.Encoding as TE
 import qualified Blaze.ByteString.Builder as Blaze
 import Data.Monoid (Monoid)
+import Data.CaseInsensitive (FoldCase, CI, mk, original)
 
 newtype Ascii = Ascii ByteString
-    deriving (Show, Eq, Read, Ord, Data, Typeable, IsString)
-
-data CIAscii = CIAscii
-    { ciOriginal :: !ByteString
-    , ciLowerCase :: !ByteString
-    }
-    deriving (Data, Typeable)
+    deriving (Show, Eq, Read, Ord, Data, Typeable, IsString, FoldCase, Monoid)
 
-instance Show CIAscii where
-    show = show . ciOriginal
-instance Read CIAscii where
-    readsPrec i = map (\(x, y) -> (toCIAscii x, y)) . readsPrec i
-instance Eq CIAscii where
-    x == y = ciLowerCase x == ciLowerCase y
-instance Ord CIAscii where
-    x <= y = ciLowerCase x <= ciLowerCase y
-instance IsString CIAscii where
-    fromString = toCIAscii . unsafeFromString
+type CIAscii = CI Ascii
 
 fromByteString :: ByteString -> Maybe Ascii
 fromByteString bs
@@ -87,10 +73,10 @@
 unsafeFromText = Ascii . TE.encodeUtf8
 
 toCIAscii :: Ascii -> CIAscii
-toCIAscii (Ascii bs) = CIAscii bs $ S8.map toLower bs
+toCIAscii = mk
 
 fromCIAscii :: CIAscii -> Ascii
-fromCIAscii = Ascii . ciOriginal
+fromCIAscii = original
 
 toByteString :: Ascii -> ByteString
 toByteString (Ascii bs) = bs
@@ -102,7 +88,7 @@
 toText (Ascii bs) = TE.decodeASCII bs
 
 ciToByteString :: CIAscii -> ByteString
-ciToByteString = ciOriginal
+ciToByteString = toByteString . original
 
 toAsciiBuilder :: Ascii -> AsciiBuilder
 toAsciiBuilder (Ascii bs) = AsciiBuilder $ Blaze.fromByteString bs
diff --git a/ascii.cabal b/ascii.cabal
--- a/ascii.cabal
+++ b/ascii.cabal
@@ -1,5 +1,5 @@
 Name:                ascii
-Version:             0.0.1.1
+Version:             0.0.2
 Synopsis:            Type-safe, bytestring-based ASCII values.
 License:             BSD3
 License-file:        LICENSE
@@ -12,8 +12,9 @@
 
 Library
   Exposed-modules:     Data.Ascii
-  Build-depends:       base            >= 4             && < 5
-                     , bytestring      >= 0.9           && < 0.10
-                     , text            >= 0.11          && < 0.12
-                     , blaze-builder   >= 0.2.1.4       && < 0.3
+  Build-depends:       base             >= 4             && < 5
+                     , bytestring       >= 0.9           && < 0.10
+                     , text             >= 0.11          && < 0.12
+                     , blaze-builder    >= 0.2.1.4       && < 0.3
+                     , case-insensitive >= 0.2           && < 0.3
   Ghc-options:         -Wall
