diff --git a/Control/Trees/LTreeT.hs b/Control/Trees/LTreeT.hs
new file mode 100644
--- /dev/null
+++ b/Control/Trees/LTreeT.hs
@@ -0,0 +1,35 @@
+module Control.Trees.LTreeT(TreeT(..)) where
+
+import Control.Monad.Trans.Class
+import Control.Monad.IO.Class
+import Control.Monad
+import Control.Applicative
+
+import Data.Trees.LTree
+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 c =  TreeT $ return $ Leaf c
+    tmb_v >>= f = TreeT $ runTreeT tmb_v >>= onone f
+               where onone f (Node b_ets) = do
+                       ets_ <- mapM (onone f) b_ets
+                       return $ Node ets_
+                     onone f (Leaf x) = runTreeT $ f x
+
+instance MonadTrans TreeT where
+   lift x = TreeT $ x >>= return . Leaf
+
+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/LTree.cabal b/LTree.cabal
--- a/LTree.cabal
+++ b/LTree.cabal
@@ -1,5 +1,5 @@
 Name:          LTree
-Version:       0.0
+Version:       0.1
 Cabal-Version: >=1.6
 Synopsis:   Tree with only leaves carrying the data.
 Description:
@@ -19,7 +19,7 @@
 
 Library
   Build-Depends:    base >= 2 && < 5, transformers
-  Exposed-Modules:  Data.Trees.LTree
+  Exposed-Modules:  Data.Trees.LTree, Control.Trees.LTreeT
 
 Source-Repository head
   type:     darcs
