diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
 # Changelog
 
-## [Unreleased]
+## [0.2.0.1] - 2018-03-15
+
+### Changed
+
+- GHC 8.4.x support
 
 ## [0.2.0] - 2018-02-17
 
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+# static-text: lists, Texts, ByteStrings and Vectors of statically known length
+
+[![Travis CI build status](https://travis-ci.org/dzhus/static-text.svg)](https://travis-ci.org/dzhus/static-text)
+[![Hackage](https://img.shields.io/hackage/v/static-text.svg?colorB=5e5184&style=flat)](https://hackage.haskell.org/package/static-text)
+[![Hackage deps](https://img.shields.io/hackage-deps/v/static-text.svg)](http://packdeps.haskellers.com/feed?needle=static-text)
+
+static-text provides type-level safety for basic operations on
+string-like types (finite lists of elements), such as `Data.Text`,
+`String` (and all lists), `Data.ByteString` and `Data.Vector`. Use it
+when you need static guarantee on lengths of strings produced in your
+code.
+
+An example application would be a network exchange protocol built of
+packets with fixed-width fields:
+
+```haskell
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TemplateHaskell #-}
+import Data.StaticText
+
+mkPacket :: ByteString -> Static ByteString 32
+mkPacket inp =
+  -- 5-character version signature
+  $(st "PKT10") `append`
+  -- 25-character payload
+  payload `append`
+  -- 2-character payload checksum
+  checksum
+  where
+    payload = createLeft 0x20 inp
+    checksum :: Static ByteString 2
+    checksum = createLeft 0x20 $
+               pack $ show $ Data.Static.length payload `mod` 100
+
+message :: Static ByteString 64
+message = mkPacket "Hello" `append` mkPacket "world"
+```
+
+Please consult the [Hackage page for static-text][hackage-doc] for
+documentation and examples.
+
+## Alternatives
+
+The emphasis of static-text is on type-safe padding/truncation and
+type-safe string literals. Other similar libraries may suit different
+use cases:
+
+- [vector-sized][] and [fixed-vector][]: full support for Vector API,
+  but not string-like types.
+
+[hackage-doc]: http://hackage.haskell.org/package/static-text/docs/Data-StaticText.html
+
+[fixed-vector]:  https://hackage.haskell.org/package/fixed-vector
+
+[vector-sized]: https://hackage.haskell.org/package/vector-sized
diff --git a/src/Data/StaticText.hs b/src/Data/StaticText.hs
--- a/src/Data/StaticText.hs
+++ b/src/Data/StaticText.hs
@@ -58,7 +58,7 @@
 
 module Data.StaticText
        (
-         -- * Constructing StaticTexts
+         -- * Constructing static texts
          --
          -- | See also 'C.unsafeCreate'
          createLeft
@@ -67,7 +67,7 @@
        , create
        , replicate
 
-         -- * Working with StaticTexts
+         -- * Working with static texts
        , append
        , take
        , drop
diff --git a/src/Data/StaticText/Class.hs b/src/Data/StaticText/Class.hs
--- a/src/Data/StaticText/Class.hs
+++ b/src/Data/StaticText/Class.hs
@@ -51,18 +51,18 @@
 
   -- | Simply wrap a value in a Static as is, assuming any length.
   --
+  -- __WARNING__ Use it only when you know what you're doing.
+  --
   -- For example, an expression like
   --
-  -- > unsafeCreate "somestring" :: Static 50 String
+  -- > unsafeCreate "somestring" :: Static String 50
   --
   -- will typecheck, although the stored length information will not
   -- match actual string size. This may result in wrong behaviour of
-  -- all functions defined for Static.
-  --
-  -- Use it only when you know what you're doing.
+  -- all functions defined for "IsStaticText".
   --
-  -- When implementing new IsStaticText instances, code this to simply
-  -- apply the constructor of 'StaticText'.
+  -- When writing new "IsStaticText" instances, make this simply apply
+  -- the constructor of "Static".
   unsafeCreate :: a -> Static a i
 
   -- | Forget type-level length, obtaining the underlying value.
diff --git a/src/Data/StaticText/TH.hs b/src/Data/StaticText/TH.hs
--- a/src/Data/StaticText/TH.hs
+++ b/src/Data/StaticText/TH.hs
@@ -28,7 +28,7 @@
 newtype LitS = LitS String deriving IsString
 
 
--- | Type-safe StaticText constructor macro for string literals.
+-- | Type-safe Static constructor macro for string literals.
 --
 -- Example:
 --
@@ -36,7 +36,7 @@
 --
 -- compiles to
 --
--- > unsafeCreate "Foobar" :: forall a. (IsString a, IsStaticText a) => StaticText 6 a
+-- > unsafeCreate "Foobar" :: forall a. (IsString a, IsStaticText a) => Static a 6
 --
 -- where 6 is the string length obtained at compile time.
 st :: LitS -> Q Exp
diff --git a/static-text.cabal b/static-text.cabal
--- a/static-text.cabal
+++ b/static-text.cabal
@@ -1,5 +1,5 @@
 name: static-text
-version: 0.2
+version: 0.2.0.1
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -14,6 +14,7 @@
 author: Dmitry Dzhus
 extra-source-files:
     CHANGELOG.md
+    README.md
 
 source-repository head
     type: git
@@ -53,27 +54,27 @@
         Data.StaticText.TH
     build-depends:
         base <5,
-        template-haskell <2.13
+        template-haskell <2.14
     default-language: Haskell2010
     hs-source-dirs: src
     other-modules:
         Paths_static_text
-    ghc-options: -Wall
+    ghc-options: -Wall -Wcompat
 
 test-suite  static-text-doctests
     type: exitcode-stdio-1.0
     main-is: doctest-driver.hs
     build-depends:
         base <5,
-        doctest <0.14,
-        doctest-discover <0.2,
-        template-haskell <2.13
+        doctest <0.16,
+        doctest-discover >=0.1.0.8 && <0.2,
+        template-haskell <2.14
     default-language: Haskell2010
     hs-source-dirs: tests
     other-modules:
         Main
         Paths_static_text
-    ghc-options: -Wall -threaded
+    ghc-options: -Wall -Wcompat -threaded
 test-suite  static-text-example
     type: exitcode-stdio-1.0
     main-is: Main.hs
@@ -81,11 +82,11 @@
         base <5,
         bytestring <0.11,
         static-text -any,
-        tasty <0.13,
+        tasty <1.1,
         tasty-hunit <0.11,
-        template-haskell <2.13
+        template-haskell <2.14
     default-language: Haskell2010
     hs-source-dirs: tests
     other-modules:
         Paths_static_text
-    ghc-options: -Wall
+    ghc-options: -Wall -Wcompat
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -29,7 +29,7 @@
 tests :: [TestTree]
 tests =
   [ testCase ("The actual length of " ++ show (typeOf message)) $
-    assertEqual "" 64 (Data.ByteString.Char8.length $ unwrap message)
+    Data.ByteString.Char8.length (unwrap message) @=? 64
   ]
 
 main :: IO ()
