diff --git a/demo/Main.hs b/demo/Main.hs
--- a/demo/Main.hs
+++ b/demo/Main.hs
@@ -13,7 +13,7 @@
 -- 
 -- >{"name":"Metallica","genres":[{"name":"Metal"},{"name":"Rock"},{"name":"Blues"}]}
 main =
-  C.putStrLn (B.compactJSON metallica)
+  C.putStrLn (B.jsonLiteral metallica)
 
 
 -- * Model
@@ -29,7 +29,7 @@
 -- * Builders
 -------------------------
 
-artist :: Artist -> A.JSON
+artist :: Artist -> A.Literal
 artist (Artist name genres) =
   A.object rows
   where
@@ -40,13 +40,13 @@
         genresElements =
           foldMap (A.element . genre) genres
 
-genre :: Genre -> A.JSON
+genre :: Genre -> A.Literal
 genre (Genre name) =
   A.object rows
   where
     rows =
       A.row "name" (A.string name)
 
-metallica :: A.JSON
+metallica :: A.Literal
 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,7 +1,7 @@
 name:
   json-bytes-builder
 version:
-  0.2.1.2
+  0.3
 synopsis:
   Direct-to-bytes JSON Builder
 description:
@@ -9,7 +9,7 @@
   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>.
+  <http://hackage.haskell.org/package/json-bytes-builder-0.3/src/demo/Main.hs the demo>.
 category:
   JSON, Codecs
 homepage:
diff --git a/library/JSONBytesBuilder/Builder.hs b/library/JSONBytesBuilder/Builder.hs
--- a/library/JSONBytesBuilder/Builder.hs
+++ b/library/JSONBytesBuilder/Builder.hs
@@ -2,8 +2,8 @@
 -- DSL for construction of JSON.
 module JSONBytesBuilder.Builder
 (
-  -- ** JSON builders
-  JSON,
+  -- ** Literal builders
+  Literal,
   null,
   boolean,
   number_int,
@@ -13,11 +13,11 @@
   string,
   object,
   array,
-  -- ** Object builders
-  Object,
+  -- ** Rows builders
+  Rows,
   row,
-  -- ** Array builders
-  Array,
+  -- ** Elements builders
+  Elements,
   element,
 )
 where
@@ -28,134 +28,134 @@
 
 
 -- |
--- Builder of any JSON value.
-newtype JSON =
-  JSON A.Builder
+-- Builder of any JSON literal.
+newtype Literal =
+  Literal A.Builder
 
 -- |
--- Builder of a JSON Object value.
-newtype Object =
-  Object (Maybe A.Builder)
+-- Builder of JSON Object rows.
+newtype Rows =
+  Rows (Maybe A.Builder)
 
-instance Monoid Object where
+instance Monoid Rows where
   {-# INLINE mempty #-}
   mempty =
-    Object Nothing
+    Rows Nothing
   {-# INLINE mappend #-}
   mappend =
     \case
-      Object (Just left) ->
+      Rows (Just left) ->
         \case
-          Object (Just right) ->
-            Object (Just (left <> A.char8 ',' <> right))
+          Rows (Just right) ->
+            Rows (Just (left <> A.char8 ',' <> right))
           _ ->
-            Object (Just left)
-      Object Nothing ->
+            Rows (Just left)
+      Rows Nothing ->
         id
 
 -- |
--- Builder of a JSON Array value.
-newtype Array =
-  Array (Maybe A.Builder)
+-- Builder of JSON Array elements.
+newtype Elements =
+  Elements (Maybe A.Builder)
 
-instance Monoid Array where
+instance Monoid Elements where
   {-# INLINE mempty #-}
   mempty =
-    Array Nothing
+    Elements Nothing
   {-# INLINE mappend #-}
   mappend =
     \case
-      Array (Just left) ->
+      Elements (Just left) ->
         \case
-          Array (Just right) ->
-            Array (Just (left <> A.char8 ',' <> right))
+          Elements (Just right) ->
+            Elements (Just (left <> A.char8 ',' <> right))
           _ ->
-            Array (Just left)
-      Array Nothing ->
+            Elements (Just left)
+      Elements Nothing ->
         id
 
 -- |
 -- JSON Null literal.
 {-# INLINE null #-}
-null :: JSON
+null :: Literal
 null =
-  JSON (inline E.null)
+  Literal (inline E.null)
 
 -- |
 -- JSON Boolean literal from 'Bool'.
 {-# INLINE boolean #-}
-boolean :: Bool -> JSON
+boolean :: Bool -> Literal
 boolean =
-  JSON . inline E.boolean
+  Literal . inline E.boolean
 
 -- |
 -- JSON Number literal from 'Int'.
 {-# INLINE number_int #-}
-number_int :: Int -> JSON
+number_int :: Int -> Literal
 number_int =
-  JSON . inline A.intDec
+  Literal . inline A.intDec
 
 -- |
 -- JSON Number literal from 'Integer'.
 {-# INLINE number_integer #-}
-number_integer :: Integer -> JSON
+number_integer :: Integer -> Literal
 number_integer =
-  JSON . inline A.integerDec
+  Literal . inline A.integerDec
 
 -- |
 -- JSON Number literal from 'Double'.
 {-# INLINE number_double #-}
-number_double :: Double -> JSON
+number_double :: Double -> Literal
 number_double =
-  JSON . inline A.doubleDec
+  Literal . inline A.doubleDec
 
 -- |
 -- JSON Number literal from 'Scientific'.
 {-# INLINE number_scientific #-}
-number_scientific :: Scientific -> JSON
+number_scientific :: Scientific -> Literal
 number_scientific =
-  JSON . inline E.scientific
+  Literal . inline E.scientific
 
 -- |
 -- JSON String literal from 'Text'.
 {-# INLINE string #-}
-string :: Text -> JSON
+string :: Text -> Literal
 string =
-  JSON . inline E.string
+  Literal . inline E.string
 
 -- |
--- JSON Object literal from the 'Object' builder.
+-- JSON Object literal from the 'Rows' builder.
 {-# INLINE object #-}
-object :: Object -> JSON
-object (Object x) =
-  JSON (maybe E.emptyObject (inline E.inCurlies) x)
+object :: Rows -> Literal
+object (Rows x) =
+  Literal (maybe E.emptyObject (inline E.inCurlies) x)
 
 -- |
--- JSON Array literal from the 'Array' builder.
+-- JSON Array literal from the 'Elements' builder.
 {-# INLINE array #-}
-array :: Array -> JSON
-array (Array x) =
-  JSON (maybe E.emptyArray (inline E.inSquarelies) x)
+array :: Elements -> Literal
+array (Elements x) =
+  Literal (maybe E.emptyArray (inline E.inSquarelies) x)
 
 -- |
--- Object builder from a key-value pair,
+-- Rows builder from a key-value pair,
 -- where value is an already encoded JSON literal.
 -- 
--- Use the 'Object' 'Monoid' instance
+-- Use the 'Rows' 'Monoid' instance
 -- to construct multi-row objects.
 {-# INLINE row #-}
-row :: Text -> JSON -> Object
-row key (JSON value) =
-  Object (Just (inline E.row key value))
+row :: Text -> Literal -> Rows
+row key (Literal literal) =
+  Rows (Just (inline E.row key literal))
 
 -- |
--- Array builder from an element,
+-- Elements builder from an element,
 -- which is an already encoded JSON literal.
 -- 
--- Use the 'Array' 'Monoid' instance
+-- Use the 'Elements' 'Monoid' instance
 -- to construct multi-element arrays.
 {-# INLINE element #-}
-element :: JSON -> Array
-element (JSON value) =
-  Array (Just value)
+element :: Literal -> Elements
+element (Literal literal) =
+  Elements (Just literal)
 
diff --git a/library/JSONBytesBuilder/Interpreters/ByteString.hs b/library/JSONBytesBuilder/Interpreters/ByteString.hs
--- a/library/JSONBytesBuilder/Interpreters/ByteString.hs
+++ b/library/JSONBytesBuilder/Interpreters/ByteString.hs
@@ -1,6 +1,6 @@
 module JSONBytesBuilder.Interpreters.ByteString
 (
-  compactJSON,
+  jsonLiteral,
 )
 where
 
@@ -11,8 +11,8 @@
 
 
 -- |
--- Produce a strict JSON ByteString with compact syntax
-{-# INLINE compactJSON #-}
-compactJSON :: JSON -> ByteString
-compactJSON =
-  B.toStrict . A.compactJSON
+-- Produce a strict JSON ByteString with compact syntax from a literal builder.
+{-# INLINE jsonLiteral #-}
+jsonLiteral :: Literal -> ByteString
+jsonLiteral =
+  B.toStrict . A.jsonLiteral
diff --git a/library/JSONBytesBuilder/Interpreters/ByteStringBuilder.hs b/library/JSONBytesBuilder/Interpreters/ByteStringBuilder.hs
--- a/library/JSONBytesBuilder/Interpreters/ByteStringBuilder.hs
+++ b/library/JSONBytesBuilder/Interpreters/ByteStringBuilder.hs
@@ -1,6 +1,6 @@
 module JSONBytesBuilder.Interpreters.ByteStringBuilder
 (
-  compactJSON,
+  jsonLiteral,
 )
 where
 
@@ -10,8 +10,8 @@
 
 
 -- |
--- Produce a JSON ByteString builder with compact syntax
-{-# INLINE compactJSON #-}
-compactJSON :: JSON -> Builder
-compactJSON =
+-- Produce a JSON ByteString builder with compact syntax from a literal builder.
+{-# INLINE jsonLiteral #-}
+jsonLiteral :: Literal -> Builder
+jsonLiteral =
   unsafeCoerce
diff --git a/library/JSONBytesBuilder/Interpreters/LazyByteString.hs b/library/JSONBytesBuilder/Interpreters/LazyByteString.hs
--- a/library/JSONBytesBuilder/Interpreters/LazyByteString.hs
+++ b/library/JSONBytesBuilder/Interpreters/LazyByteString.hs
@@ -1,6 +1,6 @@
 module JSONBytesBuilder.Interpreters.LazyByteString
 (
-  compactJSON,
+  jsonLiteral,
 )
 where
 
@@ -12,8 +12,8 @@
 
 
 -- |
--- Produce a lazy JSON ByteString with compact syntax
-{-# INLINE compactJSON #-}
-compactJSON :: JSON -> B.ByteString
-compactJSON =
-  toLazyByteString . A.compactJSON
+-- Produce a lazy JSON ByteString with compact syntax from a literal builder.
+{-# INLINE jsonLiteral #-}
+jsonLiteral :: Literal -> B.ByteString
+jsonLiteral =
+  toLazyByteString . A.jsonLiteral
