diff --git a/Data/Yaml/YamlLight.hs b/Data/Yaml/YamlLight.hs
new file mode 100644
--- /dev/null
+++ b/Data/Yaml/YamlLight.hs
@@ -0,0 +1,92 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Data.Yaml.YamlLight
+-- Copyright   :  Michael Ilseman (c) 2010
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  michael <dot> ilseman <at> gmail <dot> com
+-- Stability   :  provisional
+-- Portability :  portable
+--
+-- A light-weight wrapper with utility functions around HsSyck
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Data.Yaml.YamlLight
+  ( -- * YamlLight data type
+    YamlLight(..)
+    -- * YamlLight versions of Syck functions
+  , parseYaml, parseYamlFile, parseYamlBytes
+    -- * YamlLight utility functions
+  , fromYamlNode, lookupYL, lookupYLWith
+    -- ** Extractors
+  , unSeq, unMap, unStr
+  ) where
+  import Control.Applicative
+  import Data.Data
+  import Data.List
+  import qualified Data.Yaml.Syck as Syck
+  import qualified Data.Map as Map
+  import qualified Data.ByteString as ByteString
+
+  data YamlLight = YMap (Map.Map YamlLight YamlLight)
+                 | YSeq [YamlLight]
+                 | YStr ByteString.ByteString
+                 | YNil
+    deriving (Show, Ord, Eq)
+
+  convert :: (a -> Syck.YamlNode) -> (a -> YamlLight)
+  convert f = fromYamlNode . f
+
+  convertIO :: (a -> IO Syck.YamlNode) -> (a -> IO YamlLight)
+  convertIO f yn = fromYamlNode <$> f yn
+
+  -- | Parse a regular Haskell string
+  parseYaml :: String -> IO YamlLight
+  parseYaml = convertIO Syck.parseYaml
+
+  -- | Given a file name, parse contents of file
+  parseYamlFile :: String -> IO YamlLight
+  parseYamlFile = convertIO Syck.parseYamlFile
+
+  -- | Parse a ByteString buffer (this is faster)
+  parseYamlBytes :: ByteString.ByteString -> IO YamlLight
+  parseYamlBytes = convertIO Syck.parseYamlBytes
+
+  -- | Convert a Syck YamlNode to a YamlLight
+  fromYamlNode :: Syck.YamlNode -> YamlLight
+  fromYamlNode = yamlElemToLight . Syck.n_elem
+
+  yamlElemToLight :: Syck.YamlElem -> YamlLight
+  yamlElemToLight (Syck.EMap ms)  = YMap . Map.fromList . map (\(a,b) -> (fromYamlNode a, fromYamlNode b)) $ ms
+  yamlElemToLight (Syck.ESeq s)   = YSeq $ map fromYamlNode s
+  yamlElemToLight (Syck.EStr buf) = YStr buf
+  yamlElemToLight (Syck.ENil)     = YNil
+
+  -- | Lookup the key's corresponding value in a Map. Returns Nothing if the YamlLight is not a map, or if
+  -- the key is not found
+  lookupYL :: YamlLight -> YamlLight -> Maybe YamlLight
+  lookupYL key (YMap m) = Map.lookup key m
+  lookupYL _ _          = Nothing
+
+  -- | General form of lookup. Will return the first element that satisfies predicate p, otherwise Nothing
+  lookupYLWith :: (YamlLight -> Bool) -> YamlLight -> Maybe YamlLight
+  lookupYLWith p (YMap m) = snd <$> (find (p . fst) $ Map.toList m)
+  lookupYLWith _ _        = Nothing
+
+  -- | Get the contents of a sequence
+  unSeq :: YamlLight -> Maybe [YamlLight]
+  unSeq (YSeq s) = Just s
+  unSeq _       = Nothing
+
+  -- | Get the contents of a map
+  unMap :: YamlLight -> Maybe (Map.Map YamlLight YamlLight)
+  unMap (YMap m) = Just m
+  unMap _       = Nothing
+
+  -- | Get the contents of a string
+  unStr :: YamlLight -> Maybe ByteString.ByteString
+  unStr (YStr s) = Just s
+  unStr _       = Nothing
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c)2010, Michael Ilseman
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Michael Ilseman nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/yaml-light.cabal b/yaml-light.cabal
new file mode 100644
--- /dev/null
+++ b/yaml-light.cabal
@@ -0,0 +1,57 @@
+-- yaml-light.cabal auto-generated by cabal init. For additional
+-- options, see
+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
+-- The name of the package.
+Name:                yaml-light
+
+-- The package version. See the Haskell package versioning policy
+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
+-- standards guiding when and how versions should be incremented.
+Version:             0.1
+
+-- A short (one-line) description of the package.
+Synopsis:            A light-weight wrapper with utility functions around HsSyck
+
+-- A longer description of the package.
+Description:         This package provides a light-weight algebraic data type representing parsed Yaml files. It is implemented as a more conveinent wrapper around the HsSyck package, and provides utility functions as well.
+
+-- The license under which the package is released.
+License:             BSD3
+
+-- The file containing the license text.
+License-file:        LICENSE
+
+-- The package author(s).
+Author:              Michael Ilseman
+
+-- An email address to which users can send suggestions, bug reports,
+-- and patches.
+Maintainer:          michael <dot> ilseman <at> gmail <dot> com
+
+-- A copyright notice.
+-- Copyright:
+
+Category:            Data
+
+Build-type:          Simple
+
+-- Extra files to be distributed with the package, such as examples or
+-- a README.
+-- Extra-source-files:
+
+-- Constraint on the version of Cabal needed to build this package.
+Cabal-version:       >=1.2
+
+
+Library
+  -- Modules exported by the library.
+  Exposed-modules:     Data.Yaml.YamlLight
+
+  -- Packages needed in order to build this package.
+  Build-depends: HsSyck, base >=4 && <=5, bytestring, containers
+
+  -- Modules not exported by this package.
+  -- Other-modules:
+
+  -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
+  -- Build-tools:
