diff --git a/orgmode-parse.cabal b/orgmode-parse.cabal
--- a/orgmode-parse.cabal
+++ b/orgmode-parse.cabal
@@ -1,21 +1,22 @@
 Name:                   orgmode-parse
-Version:                0.1.0
+Version:                0.1.0.1
 Author:                 Parnell Springmeyer <parnell@digitalmentat.com>
 Maintainer:             Parnell Springmeyer <parnell@digitalmentat.com>
 License:                BSD3
 License-File:           LICENSE
 Category:               Data
-Synopsis:               A parser and writer for org-mode flavored documents.
+Synopsis:               A collection of Attoparsec combinators for parsing org-mode
+                        flavored documents.
 Description:
 
   <<https://travis-ci.org/digitalmentat/orgmode-parse.svg?branch=master>>
   .
-  `orgmode-parse` is a parsing and writing library for the org-mode flavor
-  of document markup.
+  `orgmode-parse` is a parsing library for the org-mode flavor of
+  document markup.
   .
-  This library parses the human-readable and textual representation
-  into an AST that can be used for output to another format (HTML?
-  Markdown?), serialized for storage, etc...
+  The provided Attoparsec combinators parse the human-readable and
+  textual representation into a simple AST for storage or output to
+  another format (HTML?  Markdown?).
 
 Cabal-Version:          >= 1.10
 Build-Type:             Simple
@@ -30,24 +31,24 @@
   Default-Language:     Haskell2010
   HS-Source-Dirs:       src
   Ghc-options:
-    -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-orphans -fno-warn-unused-do-bind
+                 -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-orphans -fno-warn-unused-do-bind
 
   Exposed-Modules:
-    Data.OrgMode.Parse
-    Data.OrgMode.Parse.Types
+                  Data.OrgMode.Parse
+                  Data.OrgMode.Parse.Types
 
   Build-Depends:
-                  aeson                     >= 0.8.0.2  && < 0.9
-                , attoparsec                >= 0.12     && < 0.13
-                , base                      >= 4.4      && < 5
-                , bytestring                >= 0.10.4   && < 0.11
-                , containers                >= 0.5.5    && < 0.6
-                , free                      >= 4.9      && < 5
-                , hashable                  >= 1.2      && < 1.3
-                , old-locale                >= 1.0      && < 2.0
-                , text                      >= 1.0      && < 2.0
-                , thyme                     >= 0.3      && < 0.4
-                , unordered-containers      >= 0.2      && < 0.3
+                base                      >= 4.4      && < 5
+              , aeson                     >= 0.8.0.2
+              , attoparsec                >= 0.12
+              , bytestring                >= 0.10.4
+              , containers                >= 0.5.5
+              , free                      >= 4.9
+              , hashable                  >= 1.2
+              , old-locale                >= 1.0
+              , text                      >= 1.0
+              , thyme                     >= 0.3
+              , unordered-containers      >= 0.2
 
 Test-Suite tests
   Type:                 exitcode-stdio-1.0
@@ -56,22 +57,22 @@
   Ghc-Options:          -Wall
   Main-Is:              Test.hs
   Other-Modules:
-    Data.OrgMode.Parse
+                Data.OrgMode.Parse
 
   Build-Depends:
-    base                       >= 4.4      && < 5,
-    aeson                      >= 0.8      && < 0.9,
-    bytestring                 >= 0.10     && < 0.11,
-    text                       >= 1.0      && < 2.0,
-    attoparsec                 >= 0.12     && < 0.13,
-    hashable                   >= 1.2      && < 1.3,
-    unordered-containers       >= 0.2      && < 0.3,
-    thyme                      >= 0.3      && < 0.4,
-    old-locale                 >= 1.0      && < 2.0,
-    HUnit                      >= 1.2.5.2  && < 1.3,
-    tasty                      >= 0.8      && < 0.11,
-    tasty-hunit                >= 0.8.0.1  && < 0.9,
-    containers
+                base                       >= 4.4
+              , aeson                      >= 0.8
+              , bytestring                 >= 0.10
+              , text                       >= 1.0
+              , attoparsec                 >= 0.12
+              , hashable                   >= 1.2
+              , unordered-containers       >= 0.2
+              , thyme                      >= 0.3
+              , old-locale                 >= 1.0
+              , HUnit                      >= 1.2.5.2
+              , tasty                      >= 0.8
+              , tasty-hunit                >= 0.8.0.1
+              , containers
 
 Source-Repository head
   Type:                 git
diff --git a/src/Data/OrgMode/Parse/Types.hs b/src/Data/OrgMode/Parse/Types.hs
--- a/src/Data/OrgMode/Parse/Types.hs
+++ b/src/Data/OrgMode/Parse/Types.hs
@@ -8,12 +8,14 @@
 Types and utility functions.
 -}
 
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE DeriveGeneric              #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverloadedStrings          #-}
 
 module Data.OrgMode.Parse.Types
 ( Document (..)
 , Section (..)
+, Level (..)
 , Heading  (..)
 , Priority (..)
 , Plannings (..)
@@ -36,12 +38,12 @@
 
 import           Control.Applicative
 import           Control.Monad        (mzero)
+import           Data.Aeson           ((.:), (.=))
 import qualified Data.Aeson           as A
-import           Data.Aeson           ((.=),(.:))
-import           Data.Hashable        (Hashable(..))
-import           Data.HashMap.Strict  (HashMap, fromList, toList, keys)
+import           Data.Hashable        (Hashable (..))
+import           Data.HashMap.Strict  (HashMap, fromList, keys, toList)
 import           Data.Text            (Text, pack)
-import           Data.Thyme.Calendar  (YearMonthDay(..))
+import           Data.Thyme.Calendar  (YearMonthDay (..))
 import           Data.Thyme.LocalTime (Hour, Minute)
 import           Data.Traversable
 import           GHC.Generics
@@ -55,7 +57,7 @@
 instance A.FromJSON Document where
 
 data Heading = Heading
-    { level       :: Int                -- ^ Org headline nesting level (1 is at the top)
+    { level       :: Level              -- ^ Org headline nesting level (1 is at the top)
     , keyword     :: Maybe StateKeyword -- ^ State of the headline (e.g. TODO, DONE)
     , priority    :: Maybe Priority     --
     , title       :: Text               -- properties
@@ -65,6 +67,8 @@
     , subHeadings :: [Heading]          -- elements
     } deriving (Show, Eq, Generic)
 
+newtype Level = Level Int deriving (Eq, Show, Num, Generic)
+
 type Properties = HashMap Text Text
 type Clock      = (Maybe Timestamp, Maybe Duration)
 
@@ -157,6 +161,9 @@
 ---------------------------------------------------------------------------
 --instance A.ToJSON Document where
 --instance A.FromJSON Document where
+
+instance A.ToJSON Level where
+instance A.FromJSON Level where
 
 newtype StateKeyword = StateKeyword {unStateKeyword :: Text}
   deriving (Show, Eq, Generic)
