diff --git a/CSPM-Frontend.cabal b/CSPM-Frontend.cabal
--- a/CSPM-Frontend.cabal
+++ b/CSPM-Frontend.cabal
@@ -1,5 +1,5 @@
 Name:                CSPM-Frontend
-Version:             0.9.0.6
+Version:             0.9.2.0
 
 Synopsis:            A CSP-M parser compatible with FDR-2.91
 
@@ -13,10 +13,10 @@
 License:             BSD3
 category:            Language,Formal Methods,Concurrency
 License-File:        LICENSE
-Author:              Marc Fontaine 2007 - 2012
-Maintainer:          Marc Fontaine <Marc.Fontaine@gmx.de>, me@dobrikov.biz
+Author:              Marc Fontaine 2007 - 2013
+Maintainer:          Marc Fontaine <Marc.Fontaine@gmx.de>, Ivaylo Dobrikov <dobrikov84@yahoo.com>
 Stability:           maintained
-Tested-With:         GHC == 7.4.1
+Tested-With:         GHC == 7.6.3
 
 cabal-Version:       >= 1.14
 build-type: Simple
@@ -24,15 +24,20 @@
 library
   Build-Depends:
     base >=4.0 && < 5.0
-    ,containers >= 0.4 && < 0.5
+    ,containers >= 0.5 && < 0.6
     ,array >= 0.4 && < 0.5
     ,parsec2 >= 1.0.0 && < 1.1.0
     ,prettyclass >= 1.0 && < 1.1
     ,mtl >= 2.1 && < 2.2
-    ,syb >= 0.3 && < 0.4
-    ,ghc-prim >=0.2 && < 0.3
+    ,either >= 3.4 && < 3.5
+    ,transformers >= 0.3 && < 0.4
+    ,dlist >= 0.5 && < 0.6
+    ,syb >= 0.4 && < 0.5
+    ,ghc-prim >=0.3 && < 0.4
+    ,filepath >=1.3
+
   Default-Language: Haskell2010
-  Other-Extensions: 
+  Other-Extensions:
      DeriveDataTypeable
 --     ,DeriveGeneric
   GHC-Options: -funbox-strict-fields -O2 -Wall
diff --git a/dist/build/Language/CSPM/Lexer.hs b/dist/build/Language/CSPM/Lexer.hs
--- a/dist/build/Language/CSPM/Lexer.hs
+++ b/dist/build/Language/CSPM/Lexer.hs
@@ -47,7 +47,7 @@
 alex_deflt :: AlexAddr
 alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x3f\x00\xff\xff\xff\xff\x48\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x00\xcc\x00\xcc\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcc\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
-alex_accept = listArray (0::Int,373) [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_0))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_76))],[(AlexAcc (alex_action_77))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_84))],[(AlexAcc (alex_action_85))],[(AlexAcc (alex_action_86))],[(AlexAcc (alex_action_87))],[(AlexAcc (alex_action_88))],[(AlexAcc (alex_action_89))],[(AlexAcc (alex_action_90))],[(AlexAcc (alex_action_91))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_95))],[(AlexAcc (alex_action_96))],[(AlexAcc (alex_action_97))],[(AlexAcc (alex_action_98))],[(AlexAcc (alex_action_99))],[(AlexAcc (alex_action_100))],[(AlexAcc (alex_action_101))],[(AlexAcc (alex_action_102))],[(AlexAcc (alex_action_103))],[(AlexAcc (alex_action_104))],[(AlexAcc (alex_action_105))],[(AlexAcc (alex_action_106))],[(AlexAcc (alex_action_107))],[(AlexAcc (alex_action_108))],[(AlexAcc (alex_action_109))],[(AlexAcc (alex_action_110))],[(AlexAcc (alex_action_111))],[(AlexAcc (alex_action_112))],[(AlexAcc (alex_action_113))],[(AlexAcc (alex_action_114))],[(AlexAcc (alex_action_115))],[(AlexAcc (alex_action_116))],[(AlexAcc (alex_action_117))],[(AlexAcc (alex_action_118))],[(AlexAcc (alex_action_119))],[(AlexAcc (alex_action_120))],[(AlexAcc (alex_action_121))],[(AlexAcc (alex_action_122))],[(AlexAcc (alex_action_123))],[(AlexAcc (alex_action_124))],[(AlexAcc (alex_action_125))],[(AlexAcc (alex_action_126))],[(AlexAcc (alex_action_127))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_128))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_129))],[(AlexAcc (alex_action_130))],[(AlexAcc (alex_action_131))],[(AlexAcc (alex_action_132))],[(AlexAcc (alex_action_133))],[(AlexAcc (alex_action_134))],[(AlexAcc (alex_action_135))],[(AlexAcc (alex_action_136))],[(AlexAcc (alex_action_137))],[(AlexAcc (alex_action_138))],[(AlexAcc (alex_action_139))],[(AlexAcc (alex_action_140))],[(AlexAcc (alex_action_141))],[(AlexAcc (alex_action_142))],[(AlexAcc (alex_action_143))],[(AlexAcc (alex_action_144))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))],[(AlexAcc (alex_action_145))]]
+alex_accept = listArray (0::Int,373) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAcc (alex_action_0),AlexAcc (alex_action_1),AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67),AlexAcc (alex_action_68),AlexAcc (alex_action_69),AlexAcc (alex_action_70),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAcc (alex_action_80),AlexAcc (alex_action_81),AlexAcc (alex_action_82),AlexAcc (alex_action_83),AlexAcc (alex_action_84),AlexAcc (alex_action_85),AlexAcc (alex_action_86),AlexAcc (alex_action_87),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_95),AlexAcc (alex_action_96),AlexAcc (alex_action_97),AlexAcc (alex_action_98),AlexAcc (alex_action_99),AlexAcc (alex_action_100),AlexAcc (alex_action_101),AlexAcc (alex_action_102),AlexAcc (alex_action_103),AlexAcc (alex_action_104),AlexAcc (alex_action_105),AlexAcc (alex_action_106),AlexAcc (alex_action_107),AlexAcc (alex_action_108),AlexAcc (alex_action_109),AlexAcc (alex_action_110),AlexAcc (alex_action_111),AlexAcc (alex_action_112),AlexAcc (alex_action_113),AlexAcc (alex_action_114),AlexAcc (alex_action_115),AlexAcc (alex_action_116),AlexAcc (alex_action_117),AlexAcc (alex_action_118),AlexAcc (alex_action_119),AlexAcc (alex_action_120),AlexAcc (alex_action_121),AlexAcc (alex_action_122),AlexAcc (alex_action_123),AlexAcc (alex_action_124),AlexAcc (alex_action_125),AlexAcc (alex_action_126),AlexAcc (alex_action_127),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_128),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_129),AlexAcc (alex_action_130),AlexAcc (alex_action_131),AlexAcc (alex_action_132),AlexAcc (alex_action_133),AlexAcc (alex_action_134),AlexAcc (alex_action_135),AlexAcc (alex_action_136),AlexAcc (alex_action_137),AlexAcc (alex_action_138),AlexAcc (alex_action_139),AlexAcc (alex_action_140),AlexAcc (alex_action_141),AlexAcc (alex_action_142),AlexAcc (alex_action_143),AlexAcc (alex_action_144),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145),AlexAcc (alex_action_145)]
 {-# LINE 218 "src/Language/CSPM/Lexer.x" #-}
 
 alexMonadScan = do
@@ -232,8 +232,8 @@
 alex_action_145 =  skip            
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<eingebaut>" #-}
-{-# LINE 1 "<Kommandozeile>" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- -----------------------------------------------------------------------------
 -- ALEX TEMPLATE
@@ -244,9 +244,9 @@
 -- -----------------------------------------------------------------------------
 -- INTERNALS and main scanner engine
 
-{-# LINE 37 "templates/GenericTemplate.hs" #-}
+{-# LINE 35 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 47 "templates/GenericTemplate.hs" #-}
+{-# LINE 45 "templates/GenericTemplate.hs" #-}
 
 
 data AlexAddr = AlexA# Addr#
@@ -277,14 +277,14 @@
 #ifdef WORDS_BIGENDIAN
   narrow32Int# i
   where
-   !i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
+   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
 		     (b2 `uncheckedShiftL#` 16#) `or#`
 		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
-   !b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
-   !b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
-   !b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
-   !b0   = int2Word# (ord# (indexCharOffAddr# arr off'))
-   !off' = off *# 4#
+   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
+   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
+   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))
+   off' = off *# 4#
 #else
   indexInt32OffAddr# arr off
 #endif
@@ -359,35 +359,29 @@
 
 
 
-	let
-		(base) = alexIndexInt32OffAddr alex_base s
-		((I# (ord_c))) = fromIntegral c
-		(offset) = (base +# ord_c)
-		(check)  = alexIndexInt16OffAddr alex_check offset
+      case fromIntegral c of { (I# (ord_c)) ->
+        let
+                base   = alexIndexInt32OffAddr alex_base s
+                offset = (base +# ord_c)
+                check  = alexIndexInt16OffAddr alex_check offset
 		
-		(new_s) = if (offset >=# 0#) && (check ==# ord_c)
+                new_s = if (offset >=# 0#) && (check ==# ord_c)
 			  then alexIndexInt16OffAddr alex_table offset
 			  else alexIndexInt16OffAddr alex_deflt s
 	in
-	case new_s of 
+        case new_s of
 	    -1# -> (new_acc, input)
 		-- on an error, we want to keep the input *before* the
 		-- character that failed, not after.
     	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
                                                 -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
 			new_input new_s new_acc
-
+      }
   where
-	check_accs [] = last_acc
-	check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))
-	check_accs (AlexAccSkip : _)  = AlexLastSkip  input (I# (len))
-	check_accs (AlexAccPred a predx : rest)
-	   | predx user orig_input (I# (len)) input
-	   = AlexLastAcc a input (I# (len))
-	check_accs (AlexAccSkipPred predx : rest)
-	   | predx user orig_input (I# (len)) input
-	   = AlexLastSkip input (I# (len))
-	check_accs (_ : rest) = check_accs rest
+	check_accs (AlexAccNone) = last_acc
+	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
+	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
+{-# LINE 191 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
   = AlexNone
@@ -400,35 +394,10 @@
     fmap f (AlexLastSkip x y) = AlexLastSkip x y
 
 data AlexAcc a user
-  = AlexAcc a
+  = AlexAccNone
+  | AlexAcc a
   | AlexAccSkip
-  | AlexAccPred a (AlexAccPred user)
-  | AlexAccSkipPred (AlexAccPred user)
-
-type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
-
--- -----------------------------------------------------------------------------
--- Predicates on a rule
-
-alexAndPred p1 p2 user in1 len in2
-  = p1 user in1 len in2 && p2 user in1 len in2
-
---alexPrevCharIsPred :: Char -> AlexAccPred _ 
-alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input
-
-alexPrevCharMatches f _ input _ _ = f (alexInputPrevChar input)
-
---alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ 
-alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input
-
---alexRightContext :: Int -> AlexAccPred _
-alexRightContext (I# (sc)) user _ _ input = 
-     case alex_scan_tkn user input 0# input sc AlexNone of
-	  (AlexNone, _) -> False
-	  _ -> True
-	-- TODO: there's no need to find the longest
-	-- match when checking the right context, just
-	-- the first match will do.
+{-# LINE 235 "templates/GenericTemplate.hs" #-}
 
 -- used by wrappers
 iUnbox (I# (i)) = i
diff --git a/src/Language/CSPM/AST.hs b/src/Language/CSPM/AST.hs
--- a/src/Language/CSPM/AST.hs
+++ b/src/Language/CSPM/AST.hs
@@ -1,7 +1,7 @@
 ----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.CSPM.AST
--- Copyright   :  (c) Fontaine 2008 - 2012
+-- Copyright   :  (c) Fontaine 2008 - 2013
 -- License     :  BSD3
 -- 
 -- Maintainer  :  Fontaine@cs.uni-duesseldorf.de
@@ -24,7 +24,6 @@
 import Data.Typeable (Typeable)
 import Data.Generics.Basics (Data)
 import GHC.Generics (Generic)
-import Data.Generics.Instances ()
 import Data.IntMap (IntMap)
 import Data.Map (Map)
 import Data.Array.IArray
diff --git a/src/Language/CSPM/Frontend.hs b/src/Language/CSPM/Frontend.hs
--- a/src/Language/CSPM/Frontend.hs
+++ b/src/Language/CSPM/Frontend.hs
@@ -30,6 +30,7 @@
 
 -- Language.CSPM.LexHelper
   ,Lexer.lexInclude
+  ,Lexer.lexIncludePath
   ,Lexer.lexPlain
   ,Lexer.removeIgnoredToken
 
@@ -70,7 +71,7 @@
   (removeSourceLocations,removeParens ,unUniqueIdent
  , computeFreeNames, setNodeIdsZero)
 import qualified Language.CSPM.LexHelper as Lexer
-  (lexInclude, lexPlain, removeIgnoredToken)
+  (lexInclude, lexIncludePath, lexPlain, removeIgnoredToken)
 import Language.CSPM.PrettyPrinter ()
 import Language.CSPM.Utils
   (eitherToExc, handleLexError, handleParseError, handleRenameError
diff --git a/src/Language/CSPM/LexHelper.hs b/src/Language/CSPM/LexHelper.hs
--- a/src/Language/CSPM/LexHelper.hs
+++ b/src/Language/CSPM/LexHelper.hs
@@ -2,6 +2,7 @@
 module Language.CSPM.LexHelper
 (
    lexInclude
+  ,lexIncludePath
   ,lexPlain
   ,removeIgnoredToken
   ,tokenIsComment
@@ -14,8 +15,13 @@
 import Language.CSPM.Token (Token(..), LexError(..))
 import Language.CSPM.TokenClasses (PrimToken(..))
 import Language.CSPM.UnicodeSymbols (lookupDefaultSymbol)
+import Control.Monad.IO.Class
 import qualified Data.Set as Set
 
+import qualified Data.DList as DList
+import Control.Monad.Trans.Either
+import System.FilePath(isAbsolute,splitDirectories,normalise,joinPath)
+
 -- | lex a String .
 lexPlain :: String -> Either LexError [Token]
 lexPlain src = fmap reverse $ Lexer.scanner src
@@ -36,41 +42,65 @@
       Just (_, symbol) -> symbol
       Nothing -> tokenString token
 
--- | lex a String and process CSP-M include statements.
+type Chunk = [Token]
+type Chunks = DList.DList Chunk
+data FilePart
+    = Toks    Chunk
+    | Include FilePath
+    deriving Show
+
+-- | lex input-string and import all includes files
 lexInclude :: String -> IO (Either LexError [Token])
-lexInclude src = do
-  case Lexer.scanner src of
-    Left err -> return $ Left err
-    Right toks -> do
-      tokenIncl <- processIncludeAndReverse toks
-      case tokenIncl of
-        Left err -> return $ Left err
-        Right t -> return $ Right t
+lexInclude input
+   = lexIncludePath "" input
 
--- | Monsterfunction : todo refactor
-processIncludeAndReverse :: [Token] -> IO (Either LexError [Token] )
-processIncludeAndReverse tokens = picl_acc tokens []
-  where 
-  picl_acc ::[Token] ->[Token] -> IO (Either LexError [Token] )
-  picl_acc [] acc = return $ Right acc
-  picl_acc ((Token _ _ _ L_String fname) : (Token _ _ _ L_Include _) :trest) acc = do
-    let fileName = reverse $ tail $ reverse $ tail fname -- remove quotes
-    -- putStrLn $ "Including file : " ++ fileName
-    input <-readFile fileName
-    case Lexer.scanner input of
-      Right toks -> do
-        new_acc <- picl_acc toks acc
-        case new_acc of
-          Right t -> picl_acc trest t
-          e -> return e
-      Left e -> return $ Left e
-  picl_acc ((incl@(Token _ _ _ L_Include _)) : _) _ = 
-    return $ Left $ LexError {
+-- | lex input-string and import all includes files
+lexIncludePath :: FilePath -> String -> IO (Either LexError [Token])
+lexIncludePath srcName input
+   = eitherT (return . Left) (return . Right . concat . DList.toList) $ lexInclude2 srcName input
+
+lexInclude2 :: FilePath -> String -> EitherT LexError IO Chunks
+lexInclude2 srcName input = do
+        hoistEither $ lexPlain input
+    >>= hoistEither . splitIncludes []
+    >>= mapM (processPart srcName)
+    >>= return . DList.concat
+
+processPart :: FilePath -> FilePart -> EitherT LexError IO Chunks
+processPart srcName part = case part of
+    Toks ch -> return $ DList.singleton $ ch
+    Include fname -> (liftIO $ readFile absolutePath) >>= lexInclude2 absolutePath
+     where
+       absolutePath = getAbsoluteIncludeFileName srcName fname 
+
+-- | micro-parser for include-statements
+splitIncludes :: [Token] -> [Token] -> Either LexError [FilePart]
+splitIncludes acc  []  = return [Toks $ reverse acc]
+splitIncludes acc (h:rest) = case h of
+    tok@(Token _ _ _ L_Include _) -> do
+        r <- scanInclude tok rest
+        return $ (Toks $ reverse acc) : r
+    _ -> splitIncludes (h:acc) rest
+
+scanInclude :: Token -> [Token] -> Either LexError [FilePart]
+scanInclude incl (h:rest) = case h of
+    Token _ _ _ T_WhiteSpace _ -> scanInclude incl rest
+    Token _ _ _ L_String fname -> do
+       r <- splitIncludes [] rest
+       let fileName = reverse $ tail $ reverse $ tail fname -- remove quotes
+       return $ (Include fileName) : r
+    _ -> Left $ LexError {
        lexEPos = tokenStart incl
-      ,lexEMsg = "Include without filename" 
+      ,lexEMsg = "Include without filename"
       }
-  picl_acc (h:rest) acc = picl_acc rest $ h:acc
 
+
+scanInclude incl _ = Left $ LexError {
+       lexEPos = tokenStart incl
+      ,lexEMsg = "Include without filename at end of file"
+      }
+
+
 -- | Remove comments, whitespaces and unneeded newlines.
 removeIgnoredToken :: [Token] -> [Token]
 removeIgnoredToken = soakNewlines . removeComments
@@ -126,3 +156,21 @@
          ++ binaryOperators)
     consumeNLAfterToken
       = Set.fromList ( [T_openParen, T_openBrace, T_lt] ++ binaryOperators)
+
+-- Helper function for determining the absolute path of an include file name.
+-- getAbsoluteIncludeFileName makes it possible to include other CSP modules by 
+-- giving the file path locally w.r.t. the current file path of the CSP module,
+-- which includes the particular CSP modules.
+getAbsoluteIncludeFileName :: FilePath -> FilePath -> FilePath
+getAbsoluteIncludeFileName srcFileName inclFileName = 
+   case isAbsolute inclFileName of 
+	True  -> inclFileName 
+	False -> joinPath $ (
+		take ((length srcDirSequence)-(countBackDirs fileDirSequence)) srcDirSequence 
+			++ (removeBackDirs fileDirSequence))
+	where
+		fileDirSequence = splitDirectories $ normalise inclFileName
+		srcDirSequence  = init $ splitDirectories $ normalise srcFileName
+		countBackDirs   = length . filter (".." ==) 
+		removeBackDirs  = dropWhile (".." == )
+
diff --git a/src/Language/CSPM/Parser.hs b/src/Language/CSPM/Parser.hs
--- a/src/Language/CSPM/Parser.hs
+++ b/src/Language/CSPM/Parser.hs
@@ -504,6 +504,7 @@
    ,[ infixM proc_op_lparallel AssocLeft ]
 
    ,[infixM procOpSharing AssocLeft ]
+   ,[infixM (nfun2 T_backslash  F_Hiding     ) AssocLeft]
    ,[infixM (nfun2 T_amp        F_Guard      ) AssocLeft]
    ,[infixM (nfun2 T_semicolon  F_Sequential ) AssocLeft]
    ,[infixM (nfun2 T_triangle   F_Interrupt  ) AssocLeft]
@@ -512,7 +513,6 @@
    ,[infixM (nfun2 T_sqcap      F_IntChoice  ) AssocLeft]
    ,[infixM procOpException AssocLeft]
    ,[infixM (nfun2 T_interleave F_Interleave ) AssocLeft]
-   ,[infixM (nfun2 T_backslash  F_Hiding     ) AssocLeft]
   ]
   )
   where
diff --git a/src/Language/CSPM/Utils.hs b/src/Language/CSPM/Utils.hs
--- a/src/Language/CSPM/Utils.hs
+++ b/src/Language/CSPM/Utils.hs
@@ -22,7 +22,7 @@
 import Language.CSPM.Rename (RenameError(..), renameModule, ModuleFromRenaming)
 import Language.CSPM.Token (LexError(..))
 import Language.CSPM.AST (ModuleFromParser)
-import qualified Language.CSPM.LexHelper as Lexer (lexInclude)
+import qualified Language.CSPM.LexHelper as Lexer (lexIncludePath)
 
 import Control.Exception as Exception
 import System.CPUTime
@@ -56,7 +56,7 @@
 
 parseNamedString :: FilePath -> String -> IO ModuleFromParser
 parseNamedString name str = do
-  tokenList <- Lexer.lexInclude str >>= eitherToExc
+  tokenList <- Lexer.lexIncludePath name str >>= eitherToExc
   eitherToExc $ parse name tokenList
 
 -- | Lex and parse File.
@@ -67,7 +67,7 @@
 
   putStrLn $ "Reading File " ++ fileName
   startTime <- (return $ length src) >> getCPUTime
-  tokenList <- Lexer.lexInclude src >>= eitherToExc
+  tokenList <- Lexer.lexIncludePath fileName src >>= eitherToExc
   time_have_tokens <- getCPUTime
 
   ast <- eitherToExc $ parse fileName tokenList
