diff --git a/csound-expression.cabal b/csound-expression.cabal
--- a/csound-expression.cabal
+++ b/csound-expression.cabal
@@ -1,5 +1,5 @@
 Name:          csound-expression
-Version:       0.0.1
+Version:       0.0.2
 Cabal-Version: >= 1.2
 License:       BSD3
 License-File:  LICENSE
@@ -15,7 +15,7 @@
 
 Library
   Build-Depends:
-        base >= 4, base < 5, containers, mtl, pretty, filepath, directory, haskell98, temporal-media == 0.0
+        base >= 4, base < 5, containers, mtl == 2.0.1.0, pretty, filepath, directory, haskell98, temporal-media == 0.0
   Hs-Source-Dirs:      src/
   Exposed-Modules:
         CsoundExpr
diff --git a/src/CsoundExpr/Translator/AssignmentElimination.hs b/src/CsoundExpr/Translator/AssignmentElimination.hs
--- a/src/CsoundExpr/Translator/AssignmentElimination.hs
+++ b/src/CsoundExpr/Translator/AssignmentElimination.hs
@@ -41,7 +41,7 @@
 eliminateAssignment :: [ExprLayer Int LaExpr Int] -> [SubstExpr]
 eliminateAssignment xs = filter (flip elem ids . lineNum) ys
     where (ys, (ids, _)) = runState (mapM stateFun xs) ([], M.empty)
-          stateFun x = State $ \(ids, m) -> substFun x ids m 
+          stateFun x = state $ \(ids, m) -> substFun x ids m 
 
 substFun :: ExprLayer Int LaExpr Int 
          -> [Int] -> SubstTable 
diff --git a/src/CsoundExpr/Translator/ExprTree/TreeSeq.hs b/src/CsoundExpr/Translator/ExprTree/TreeSeq.hs
--- a/src/CsoundExpr/Translator/ExprTree/TreeSeq.hs
+++ b/src/CsoundExpr/Translator/ExprTree/TreeSeq.hs
@@ -4,7 +4,7 @@
 	)	
 where
 
-import Control.Monad.State
+import Control.Monad.State.Strict
 import qualified Data.Map as M
 
 import CsoundExpr.Translator.ExprTree.Tree
@@ -53,7 +53,7 @@
 
 adjList' :: Int -> Tree a -> State Int [TreeLayer Int a]
 adjList' root (Node a xs) = 
-    State $ \s -> let s'  = nextId s
+    state $ \s -> let s'  = nextId s
                       xs' = zip (ids s) xs
                       vs  = fst $ runState (foldM foldAdjList [] xs') s'
                   in  (mkLayer root a (ids s) : vs, s')
@@ -78,7 +78,7 @@
           -> TreeLayer Int a
           -> State (RegisterData a) [(TreeLayer Int a)]
 reduceAdjList' res x = 
-    State $ \s@(id, mNodes, mIds) -> 
+    state $ \s@(id, mNodes, mIds) -> 
     let k = (layerOp x, map (mIds M.! ) $ layerIns x)
     in  case (M.lookup k mNodes) of
           Nothing  -> registerNewNode (layerOut x) k (res, s)
diff --git a/src/CsoundExpr/Translator/InstrOrder.hs b/src/CsoundExpr/Translator/InstrOrder.hs
--- a/src/CsoundExpr/Translator/InstrOrder.hs
+++ b/src/CsoundExpr/Translator/InstrOrder.hs
@@ -32,7 +32,7 @@
 
 
 f :: InstrOrder -> Instr -> State Id (Instr, Id)
-f xs q = State $ \s -> case findIndex ((liftPredicateToList equalStructureByParams) q) xs of
+f xs q = state $ \s -> case findIndex ((liftPredicateToList equalStructureByParams) q) xs of
                          (Just i) -> ((q, startId + i), s)
                          Nothing  -> ((q, s), s + 1)
 
@@ -40,7 +40,7 @@
 
 resolveCollisions :: [Int] -> [Int]
 resolveCollisions xs = fst $ runState (mapM f xs) (head xs - 1, 0)
-    where f x = State $ \(prev, shift) -> 
+    where f x = state $ \(prev, shift) -> 
                 if x + shift == prev
                 then (x + shift + 1, (x + shift + 1, shift + 1))
                 else (x + shift,     (x + shift    , shift))
diff --git a/src/CsoundExpr/Translator/MultiOutsFolding.hs b/src/CsoundExpr/Translator/MultiOutsFolding.hs
--- a/src/CsoundExpr/Translator/MultiOutsFolding.hs
+++ b/src/CsoundExpr/Translator/MultiOutsFolding.hs
@@ -105,6 +105,6 @@
 
 mkOuts :: (Maybe Cs.ArgOut, Cs.Rate) -> State Int Cs.ArgOut
 mkOuts (arg, rate) = 
-    State $ \n -> case arg of
+    state $ \n -> case arg of
                     Nothing  -> (numArgName rate n, n + 1)
                     (Just a) -> (a, n)
