diff --git a/demo/Main.hs b/demo/Main.hs
new file mode 100644
--- /dev/null
+++ b/demo/Main.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+import BasePrelude
+import Data.ByteString (ByteString)
+import Data.Text (Text)
+import qualified JSONBytesBuilder.Builder as A
+import qualified JSONBytesBuilder.Interpreters.ByteString as B
+import qualified Data.ByteString.Char8 as C
+
+
+-- |
+-- Outputs the following:
+-- 
+-- >{"name":"Metallica","genres":[{"name":"Metal"},{"name":"Rock"},{"name":"Blues"}]}
+main =
+  C.putStrLn (B.compactJSON metallica)
+
+
+-- * Model
+-------------------------
+
+data Artist =
+  Artist { artist_name :: Text, artist_genres :: [Genre] }
+
+data Genre =
+  Genre { genre_name :: Text }
+
+
+-- * Builders
+-------------------------
+
+artist :: Artist -> A.JSON
+artist (Artist name genres) =
+  A.object rows
+  where
+    rows =
+      A.row "name" (A.string name) <>
+      A.row "genres" (A.array genresElements)
+      where
+        genresElements =
+          foldMap (A.element . genre) genres
+
+genre :: Genre -> A.JSON
+genre (Genre name) =
+  A.object rows
+  where
+    rows =
+      A.row "name" (A.string name)
+
+metallica :: A.JSON
+metallica =
+  artist (Artist "Metallica" [Genre "Metal", Genre "Rock", Genre "Blues"])
diff --git a/json-bytes-builder.cabal b/json-bytes-builder.cabal
--- a/json-bytes-builder.cabal
+++ b/json-bytes-builder.cabal
@@ -1,12 +1,15 @@
 name:
   json-bytes-builder
 version:
-  0.2.1.1
+  0.2.1.2
 synopsis:
   Direct-to-bytes JSON Builder
 description:
   An API for encoding of arbitrary data-structures into JSON byte-arrays,
-  which is faster than \"aeson\".
+  which is faster and simpler than \"aeson\".
+  .
+  Check out
+  <http://hackage.haskell.org/package/json-bytes-builder-0.2.1.2/src/demo/Main.hs the demo>.
 category:
   JSON, Codecs
 homepage:
@@ -60,3 +63,23 @@
     base-prelude < 2,
     base >= 4.7 && < 5
 
+
+-- Well, it's not a benchmark actually, 
+-- but Cabal provides no better way to specify an executable, 
+-- which is not intended for distribution.
+benchmark demo
+  type: 
+    exitcode-stdio-1.0
+  hs-source-dirs:
+    demo
+  main-is:
+    Main.hs
+  default-extensions:
+    Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+  default-language:
+    Haskell2010
+  build-depends:
+    json-bytes-builder,
+    text,
+    bytestring,
+    base-prelude
