diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,2 +1,72 @@
 # animate
 Animation for sprites
+
+---
+
+`animate` is a general purpose animation library as it's used for graphical 2D and terminal games.
+Each key of an animation are left opened to custom types.
+This is in an effort to avoid using numbers or strings as indices and be reusable.
+
+---
+
+[Example using SDL2](https://github.com/jxv/animate-sdl2/tree/master/example) (and includes loading from "Paths")
+
+---
+
+## Sprite Information
+
+Sprite loaders are provided but aren't required.
+While the loaders are opininated compared to the rest of the library, they aren't bound to any graphics library.
+And many pieces are left exposed if you wish piece together some other variation.
+
+The YAML (and JSON) files describe very typical sprite information:
+
+```yaml
+# File path of spritesheet
+image: "dino.png"
+
+# Colorkey for transparency
+# Optional: It's a tuple of [Red, Green, Blue] between 0-255 values.
+alpha: [255, 0, 255]
+
+# Clip is a portion of the sprite sheet
+# Optional: The offset is optional.
+# [x, y, width, height]
+# [x, y, width, height, offsetX, offsetY] 
+
+clips:
+# Idle                      # index
+- [  0, 0, 48, 48]          # 0
+- [ 48, 0, 48, 48]          # 1
+- [ 96, 0, 48, 48, 24, 42]  # 2
+- [144, 0, 48, 48, 24, 42]  # 3
+
+# Move
+- [192, 0, 48, 48, 24, 42]  # 4
+- [240, 0, 48, 48, 24, 42]  # 5
+- [288, 0, 48, 48, 24, 42]  # 6
+- [336, 0, 48, 48, 24, 42]  # 7
+- [384, 0, 48, 48, 24, 42]  # 8
+- [432, 0, 48, 48, 24, 42]  # 9
+
+# And so on...
+
+# Animation frames are defined by the clip indices and delay time for each clip
+animations:
+  Idle:
+  # [index, delay (seconds)]
+  - [0, 0.2]
+  - [1, 0.2]
+  - [2, 0.2]
+  - [3, 0.2]
+
+  Move:
+  - [4, 0.01]
+  - [5, 0.01]
+  - [6, 0.01]
+  - [7, 0.01]
+  - [8, 0.01]
+  - [9, 0.01]
+
+  # And so on...
+```
diff --git a/animate.cabal b/animate.cabal
--- a/animate.cabal
+++ b/animate.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 49d97c06a6ee7a87c120cefd771eaace13f5dd09656f8aa4d8712e5e43093f7f
+-- hash: 9749d72f4f8c62c30bff78a34dd0b51c361144ad7ff2143d29a2b35dac91f8c0
 
 name:           animate
-version:        0.6.1
+version:        0.7.0
 synopsis:       Animation for sprites
 description:    Prototypical sprite animation with type-safety.
 category:       Game
diff --git a/library/Animate.hs b/library/Animate.hs
--- a/library/Animate.hs
+++ b/library/Animate.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DefaultSignatures #-}
 module Animate
   ( Color
   , FrameIndex
@@ -39,9 +40,10 @@
 import Data.Aeson (FromJSON(..), ToJSON(..), (.:), eitherDecode, object, (.=), Value(..))
 import Data.Map (Map)
 import Data.Word (Word8)
-import Data.Text (Text)
+import Data.Text (Text, pack)
 import GHC.Generics (Generic)
 
+
 -- | Alias for RGB (8bit, 8bit, 8bit)
 type Color = (Word8, Word8, Word8)
 
@@ -61,6 +63,11 @@
 -- | Animation Keyframe. `keyName` is used for JSON parsing.
 class KeyName key where
   keyName :: key -> Text
+  default keyName :: Show key => key -> Text
+  keyName = pack . dropTickPrefix . show
+    where
+      dropTickPrefix :: String -> String
+      dropTickPrefix = drop 1 . dropWhile (/= '\'')
 
 -- | Describe the boxed area of the 2d sprite inside a sprite sheet
 data SpriteClip key = SpriteClip
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: animate
-version: '0.6.1'
+version: '0.7.0'
 category: Game
 synopsis: Animation for sprites
 description: Prototypical sprite animation with type-safety.
