diff --git a/CSPM-Interpreter.cabal b/CSPM-Interpreter.cabal
--- a/CSPM-Interpreter.cabal
+++ b/CSPM-Interpreter.cabal
@@ -1,5 +1,5 @@
 Name:                CSPM-Interpreter
-Version:             0.2.0.0
+Version:             0.3.0.0
 
 Synopsis:            An interpreter for CSPM
 Description:
diff --git a/src/CSPM/Interpreter.hs b/src/CSPM/Interpreter.hs
--- a/src/CSPM/Interpreter.hs
+++ b/src/CSPM/Interpreter.hs
@@ -19,6 +19,7 @@
   ,getAllEvents
   ,prepareAST
   ,runInterpreter
+  ,runInterpreterP
   ,module CSPM.Interpreter.Types
   ,module CSPM.Interpreter.Bindings
   ,module CSPM.Interpreter.CoreInstances
@@ -38,15 +39,23 @@
 import Data.IntMap as IntMap
 
 -- | Run the interpreter for a given module and top-level identifier.
-runInterpreter :: AST.LModule -> AST.UniqueIdent -> IO (Process,Env)
-runInterpreter ast entry = do
-  initEnv <- initialEnvirionment
-  let
-    env = processDeclList (hs "TopLevelEnvirionment") initEnv
+runInterpreter :: AST.LModule -> AST.UniqueIdent -> (Value,Env)
+runInterpreter ast entry
+  = (getLetBindings env IntMap.! AST.uniqueIdentId entry
+    ,env)
+  where 
+    env = processDeclList (hs "TopLevelEnvirionment") emptyEnvirionment
           $ AST.moduleDecls $ unLabel ast
-    val :: Value
-    val = (IntMap.!) (getLetBindings env) $ AST.uniqueIdentId entry
-  case val of
-    VProcess x -> return (x,env)
+
+-- | Run the interpreter for a given module and top-level identifier.
+-- Cast result to a process
+runInterpreterP :: AST.LModule -> AST.UniqueIdent -> (Process,Env)
+runInterpreterP ast entry = case val of
+    VProcess x -> (x,env)
     _ -> throwTypingError "entrypoint is not a CSPM-process" (Just $ AST.bindingLoc entry)
            $  Just val
+  where
+    env = processDeclList (hs "TopLevelEnvirionment") emptyEnvirionment
+          $ AST.moduleDecls $ unLabel ast
+    val :: Value
+    val = (IntMap.!) (getLetBindings env) $ AST.uniqueIdentId entry
diff --git a/src/CSPM/Interpreter/CoreInstances.hs b/src/CSPM/Interpreter/CoreInstances.hs
--- a/src/CSPM/Interpreter/CoreInstances.hs
+++ b/src/CSPM/Interpreter/CoreInstances.hs
@@ -75,8 +75,8 @@
   isInRenamingRange _ty e rel = Set.member e $ renamingRange rel
   getRenamingDomain _ty = Set.toList . renamingDomain
   getRenamingRange _ty = Set.toList . renamingRange
-  imageRenaming _ty = Renaming.imageRenaming2
-  preImageRenaming _ty = Renaming.imageRenaming1
+  imageRenaming _ty = Renaming.imageRenaming
+  preImageRenaming _ty = Renaming.preImageRenaming
   singleEventToClosureSet _ty = ClosureSet.singleEventToClosureSet
 
 instance BF INT where
diff --git a/src/CSPM/Interpreter/Renaming.hs b/src/CSPM/Interpreter/Renaming.hs
--- a/src/CSPM/Interpreter/Renaming.hs
+++ b/src/CSPM/Interpreter/Renaming.hs
@@ -83,12 +83,12 @@
 
 {- sets have actually no advantage because we convert to lists anyway -} 
 
-imageRenaming1 :: RenamingRelation -> Event -> [Event]
-imageRenaming1 relation prefix
+imageRenaming :: RenamingRelation -> Event -> [Event]
+imageRenaming relation prefix
   = List.map snd $ List.filter (\(x,_) -> x == prefix) $ Set.toList $ renamingPairs relation
 
-imageRenaming2 :: RenamingRelation -> Event -> [Event]
-imageRenaming2 relation prefix
+preImageRenaming :: RenamingRelation -> Event -> [Event]
+preImageRenaming relation prefix
   = List.map fst $ List.filter (\(_,x) -> x == prefix) $ Set.toList $ renamingPairs relation
 
 isInRelation :: RenamingRelation -> Event -> Event -> Bool
diff --git a/src/CSPM/Interpreter/Test/CLI.hs b/src/CSPM/Interpreter/Test/CLI.hs
--- a/src/CSPM/Interpreter/Test/CLI.hs
+++ b/src/CSPM/Interpreter/Test/CLI.hs
@@ -40,7 +40,7 @@
 import CSPM.Interpreter.Eval
 import qualified CSPM.Interpreter.Types as Types
 import CSPM.Interpreter.Types
-  (Value,initialEnvirionment,getLetBindings)
+  (Value,emptyEnvirionment,getLetBindings)
 import CSPM.Interpreter.PrepareAST (prepareAST)
 import CSPM.Interpreter.Hash
 import CSPM.Interpreter.CoreInstances ()
@@ -77,7 +77,7 @@
   srcPlain <- case context of
     Just path -> readFile path
     Nothing -> return ""
-  let fileName = maybe "expression" id context
+  let fileName = fromMaybe "expression" context
 {- this is a hack:
 we simply append the expression to be evaluated at the end of the sourcefile
 and parse both together in one go
@@ -105,13 +105,12 @@
 --  putStrLn $ "total : " ++ showTime(time_have_ast - startTime)
 
   time_start_execute <- getCPUTime
-  initEnv <- initialEnvirionment
   let
     entry :: AST.UniqueIdent
     entry = fromJust $ Map.lookup "test__entry" $ (\(x,_,_) -> x) renaming
     astP :: LModule
     astP = compilePattern astNew
-    env = processDeclList (hs "TopLevelEnvirionment") initEnv
+    env = processDeclList (hs "TopLevelEnvirionment") emptyEnvirionment
           $ AST.moduleDecls $ unLabel astP
     val :: Value
     val = (IntMap.!) (getLetBindings env) $ AST.uniqueIdentId entry
diff --git a/src/CSPM/Interpreter/Types.hs b/src/CSPM/Interpreter/Types.hs
--- a/src/CSPM/Interpreter/Types.hs
+++ b/src/CSPM/Interpreter/Types.hs
@@ -145,9 +145,6 @@
   ,letDigests :: IntMap Digest
   }
 
-initialEnvirionment :: IO Env
-initialEnvirionment = return emptyEnvirionment
-
 emptyEnvirionment :: Env
 emptyEnvirionment = Env {
    argBindings = IntMap.empty
