diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,15 @@
+0.3
+---
+* Remove Readable instances for ByteString and Text because they are probably
+  not what the user wants and could cause compilation to succeed when you
+  probably want to see an error.
+
+0.2.0.2
+-------
+* Fix fromBS for ByteString so it is a correct passthrough instead of doing
+  encodeUtf8 . decodeUtf8 under the hood.
+
+0.2.0.1
+-------
+* Use decodeUtf8' so that we can catch character encoding exceptions and
+  return mzero instead of generating an exception.
diff --git a/readable.cabal b/readable.cabal
--- a/readable.cabal
+++ b/readable.cabal
@@ -1,5 +1,5 @@
 name:           readable
-version:        0.2.0.2
+version:        0.3
 synopsis:       Reading from Text and ByteString
 
 description:
@@ -16,6 +16,7 @@
 category:       Text
 
 extra-source-files:
+  CHANGELOG.md
   LICENSE,
   README.md,
   Setup.hs
diff --git a/src/Data/Readable.hs b/src/Data/Readable.hs
--- a/src/Data/Readable.hs
+++ b/src/Data/Readable.hs
@@ -53,12 +53,10 @@
   | T.null rest = return a
   | otherwise   = mzero
 
+-- We don't supply instances for Text or ByteString anymore because they're
+-- almost definitely not what the user would want.  Users should use the
+-- appropriate encodeUtf8/decodeUtf8 functions instead.
 
-instance Readable ByteString where
-    fromText = return . encodeUtf8
-    fromBS = return
-instance Readable Text where
-    fromText = return
 instance Readable Int where
     fromText = either (const mzero) checkComplete . signed decimal
 instance Readable Integer where
