diff --git a/Changes b/Changes
new file mode 100644
--- /dev/null
+++ b/Changes
@@ -0,0 +1,76 @@
+Newest at the top.
+
+2.4.13
+
+- Fix build for GHC-8.8
+
+2.4.12
+
+- New option to derive ToJSON/FromJSON
+- Fix build for GHC-8.6
+- Drop support for GHC-7.10
+- New testsuite
+
+2.4.11
+
+- pr #66. Attach deriving Typeable to data declaration in hs-boot files
+- pr #65. Fix time complexity of serialization
+
+2.4.10
+
+- pr #59. Add Semigroup instance
+
+2.4.9
+
+- pr #48. Make parser float support natural or float data format
+
+2.4.8
+
+- pr #58. Fix build for HSE-1.20
+
+2.4.7
+
+- pr #57. Add GHC 8.4 support (add Semigroup instances)
+
+2.4.6
+
+- issue #55. Constraint haskell-src-exts to be < 1.20
+
+2.4.5
+
+- pr #54. Support haskell-src-exts 1.18
+
+2.4.4
+
+- pr #53. Allow decimal places at the end of line
+
+2.4.3
+
+- pr #50. restrict haskell-src-exts version constraint
+
+2.4.2
+
+- fix version constraints
+
+2.4.1
+
+- issue #10, pr #47. Fixed not to lookup a entity defined in the parent package
+
+2.3.1:
+
+- add Generic deriving
+
+2016-03-22 2.3.0:
+
+- Dump to text as decimal instead of octal (PR #34)
+- Oneof lenses
+
+2008-09: 0.3.1:
+
+- Change Parser.hs to allow negative enum values to match actual behavior of protoc.
+- Use runST & castSTUArray for both Float and Double conversion to Word32 and Word64.
+- Adding UnknownField support controlled by "-u" flag to hprotoc.
+- Fix messageGet to use the new 'isReallyEmpty' and Parial Results get Nothing, to work better.
+- Fix default instances of Descriptor messages to be Nothing instead of Just defaultValue.
+
+2008-09 : version 0.2.9 released.  This is the first working release.
diff --git a/Text/ProtocolBuffers/Basic.hs b/Text/ProtocolBuffers/Basic.hs
--- a/Text/ProtocolBuffers/Basic.hs
+++ b/Text/ProtocolBuffers/Basic.hs
@@ -22,6 +22,7 @@
 import Data.Ix(Ix)
 import Data.Semigroup (Semigroup(..))
 import Data.Sequence(Seq,(><))
+import Data.String (IsString(..))
 import Data.Typeable(Typeable)
 import Data.Word(Word8,Word32,Word64)
 
@@ -51,6 +52,9 @@
   showsPrec d (Utf8 bs) = let s :: Int -> String -> ShowS
                               s = showsPrec
                           in s d (U.toString bs)
+
+instance IsString Utf8 where
+  fromString = uFromString
 
 instance Semigroup Utf8 where
   (<>) (Utf8 x) (Utf8 y) = Utf8 (x <> y)
diff --git a/Text/ProtocolBuffers/Get.hs b/Text/ProtocolBuffers/Get.hs
--- a/Text/ProtocolBuffers/Get.hs
+++ b/Text/ProtocolBuffers/Get.hs
@@ -75,6 +75,7 @@
 --import qualified Data.ByteString as S(unpack)    -- XXX testing
 --import qualified Data.ByteString.Lazy as L(pack) -- XXX testing
 import Control.Monad(ap)                             -- instead of Functor.fmap; ap for Applicative
+import qualified Control.Monad.Fail as Fail
 import Data.Bits(Bits((.|.),(.&.)),shiftL)
 import qualified Data.ByteString as S(concat,length,null,splitAt,findIndex)
 import qualified Data.ByteString.Internal as S(ByteString(..),toForeignPtr,inlinePerformIO)
@@ -784,6 +785,11 @@
   {-# INLINE return #-}
   m >>= k  = Get (\sc -> unGet m (\ a -> seq a $ unGet (k a) sc))
   {-# INLINE (>>=) #-}
+#if !MIN_VERSION_base(4,11,0)
+  fail = Fail.fail
+#endif
+
+instance Fail.MonadFail Get where
   fail = throwError . strMsg
 
 instance MonadError String Get where
diff --git a/Text/ProtocolBuffers/WireMessage.hs b/Text/ProtocolBuffers/WireMessage.hs
--- a/Text/ProtocolBuffers/WireMessage.hs
+++ b/Text/ProtocolBuffers/WireMessage.hs
@@ -469,7 +469,7 @@
 wireSizeErr ft x = error $ concat [ "Impossible? wireSize field type mismatch error: Field type number ", show ft
                                   , " does not match internal type ", show (typeOf x) ]
 wirePutErr :: Typeable a => FieldType -> a -> PutM b
-wirePutErr ft x = fail $ concat [ "Impossible? wirePut field type mismatch error: Field type number ", show ft
+wirePutErr ft x = error $ concat [ "Impossible? wirePut field type mismatch error: Field type number ", show ft
                                 , " does not match internal type ", show (typeOf x) ]
 wireGetErr :: Typeable a => FieldType -> Get a
 wireGetErr ft = answer where
diff --git a/protocol-buffers.cabal b/protocol-buffers.cabal
--- a/protocol-buffers.cabal
+++ b/protocol-buffers.cabal
@@ -1,5 +1,5 @@
 name:           protocol-buffers
-version:        2.4.12
+version:        2.4.13
 cabal-version:  >= 1.6
 build-type:     Simple
 license:        BSD3
@@ -14,6 +14,7 @@
 category:       Text
 extra-source-files: TODO
                     README.md
+                    Changes
 Tested-With: GHC == 8.0.2, GHC == 8.2.1, GHC == 8.4.2, GHC == 8.6.2
 source-repository head
   type: git
