diff --git a/Control/TreeT.hs b/Control/TreeT.hs
new file mode 100644
--- /dev/null
+++ b/Control/TreeT.hs
@@ -0,0 +1,35 @@
+module Control.TreeT (TreeT(..)) where
+import Data.Tree
+import Data.Monoid
+
+import Control.Monad.Trans.Class
+import Control.Monad.IO.Class
+import Control.Monad
+import Control.Applicative
+
+data TreeT m a = TreeT (m (Tree a))
+runTreeT (TreeT m) = m
+treeT0 = TreeT
+treeT1 f = treeT0 . f . runTreeT
+treeT2 f = treeT1 . f . runTreeT
+
+instance Monad m => Monad (TreeT m) where
+   return m =  TreeT $ return $ Node m []
+   tmb_v >>= f = TreeT $ runTreeT tmb_v >>= onone f
+          where onone f (Node b_ex b_ets) = do
+                   Node ex ets <- runTreeT (f b_ex)
+                   ets_ <- mapM (onone f) b_ets
+                   return $ Node ex (ets_ ++ ets)
+
+instance MonadTrans TreeT where
+  lift x = treeT0 $ x >>= return . flip Node []
+
+instance Functor m => Functor (TreeT m) where
+    fmap = treeT1 . fmap . fmap
+
+instance Applicative m => Applicative (TreeT m)where
+    pure = treeT0 . pure . pure
+    (<*>) = treeT2 . liftA2 . liftA2 $ id
+
+instance MonadIO m => MonadIO (TreeT m) where
+    liftIO = lift . liftIO
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,15 @@
+ALL PUBLIC DOMAIN MATERIAL IS OFFERED AS-IS. NO REPRESENTATIONS OR
+WARRANTIES OF ANY KIND ARE MADE CONCERNING THE MATERIALS, EXPRESS,
+IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION,
+WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR
+PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
+ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
+DISCOVERABLE.
+
+IN NO EVENT WILL THE AUTHOR(S), PUBLISHER(S), OR PRESENTER(S) OF ANY
+PUBLIC DOMAIN MATERIAL BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY
+SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF THE
+AUTHOR(S), PUBLISHER(S), OR PRESENTER(S) HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
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/TreeT.cabal b/TreeT.cabal
new file mode 100644
--- /dev/null
+++ b/TreeT.cabal
@@ -0,0 +1,24 @@
+Name:          TreeT
+Version:       0.0
+Cabal-Version: >=1.6
+Synopsis:   Transformer for Data.Tree 
+Description:
+
+    This library implements a transformer for the Data.Tree package
+
+Category:      Control,Monads
+License:       PublicDomain
+License-File:  LICENSE
+Author:        Rahul Gopinath
+Maintainer:    gopinath@eecs.oregonstate.edu
+Bug-Reports:   mailto:gopinath@eecs.oregonstate.edu
+Build-Type:    Simple
+Stability:     experimental
+
+Library
+  Build-Depends:    base >= 2 && < 5, containers, transformers
+  Exposed-Modules:  Control.TreeT
+
+Source-Repository head
+  type:     darcs
+  location: 
