diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,23 @@
+astview: View abstract syntax trees for your custom languages and
+parsers in a graphical (GTK+) application.
+
+Copyright (C) 2009 Sebastian Menge and Pascal Hof
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+``Software''), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHOR(s) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
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/astview-utils.cabal b/astview-utils.cabal
new file mode 100644
--- /dev/null
+++ b/astview-utils.cabal
@@ -0,0 +1,20 @@
+Name:            astview-utils
+Version:         0.1
+License:         BSD4
+License-File:    LICENSE
+Author:          
+                 Pascal Hof <pascal.hof@udo.edu>, 
+                 Sebastian Menge <sebastian.menge@udo.edu>
+Maintainer:      Sebastian Menge <sebastian.menge@udo.edu>
+Synopsis:        Interfacing between hint and astview
+Description:     see README
+
+Category:        Language
+
+Cabal-Version:   >= 1.2
+Build-Type:      Simple
+
+Library
+  Hs-Source-Dirs:  src
+  Exposed-Modules: Language.Astview.Parser, Language.Astview.DataTree
+  Build-Depends:   base>=4 && <5, containers, syb
diff --git a/src/Language/Astview/DataTree.hs b/src/Language/Astview/DataTree.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Astview/DataTree.hs
@@ -0,0 +1,42 @@
+module Language.Astview.DataTree where
+
+-- syb
+import Data.Generics (Data
+                     ,extQ
+                     ,gmapQ
+                     ,showConstr
+                     ,toConstr)
+
+-- containers
+import Data.Tree (Tree(Node,rootLabel))
+
+-- | Trealise Data to Tree (from SYB 2, sec. 3.4 )
+data2tree :: Data a => a -> Tree String
+data2tree = gdefault `extQ` atString
+  where 
+    atString x = Node x []
+    gdefault x = Node (showConstr $ toConstr x) (gmapQ data2tree x) 
+    
+flat :: Tree String -> Tree String
+flat = id -- do nothing, see commentary below
+
+
+
+
+
+{- -- try to flatten degenerated trees (lists of cons)
+
+
+flat (Node a xs) = Node a xs --(flat <$> (children False =<< xs))    
+
+-- use a boolean marker to notice whether we are inside a list (True) 
+-- or should start a new list, then recurse
+children :: Bool -> Tree String -> [Tree String]
+children False (Node "(:)" [left,right])        = [Node ("ListOf"++(rootLabel left)) (left:(children True right)) ]
+children True  (Node "(:)" [left,Node "[]" []]) = [left]
+children True  (Node "(:)" [left,right])        = left:(children True right)
+children _ (Node a xs) 
+ | null xs  =  [Node a []]
+ |otherwise =  [Node a xs]
+children x y = error ("No pattern match for children " ++ show x ++ " " ++ (drawTree y))
+-}
diff --git a/src/Language/Astview/Parser.hs b/src/Language/Astview/Parser.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Astview/Parser.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE Rank2Types, DeriveDataTypeable #-}
+
+module Language.Astview.Parser where
+
+import Data.Generics (Data,Typeable)
+import Data.Tree
+
+data ParseError = ParseError
+                deriving (Show,Data,Typeable)
+
+-- | consists of a unique name, a list of extensions and the parse 
+-- function.
+data Parser = Parser 
+  { name :: String -- ^unique name
+  , exts  :: [String] -- ^file extensions assotiated with 
+  , tree :: String -> Tree String
+  } deriving (Typeable)
+
+instance Eq Parser where
+  Parser n1 _ _ == Parser n2 _ _ = n1 ==n2
+
