diff --git a/app/bcc1/alarm1/verify_a.py b/app/bcc1/alarm1/verify_a.py
index 510d02fea275b06d00993645f113837c7bd6c8d3..4a2069aed7fae2901b5a72289141f3b77823911b 100644
--- a/app/bcc1/alarm1/verify_a.py
+++ b/app/bcc1/alarm1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/alarm1/verify_b.py b/app/bcc1/alarm1/verify_b.py
index 072fa65cc6a8dd520c9ee3b58233b3553a6d6dd0..31e40f49ae8958a1a955f1d573e5522be164c7b0 100644
--- a/app/bcc1/alarm1/verify_b.py
+++ b/app/bcc1/alarm1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/alarm1/verify_c.py b/app/bcc1/alarm1/verify_c.py
index e93204d7e0b835d23d1e4b685f25f4373855e220..680974bf0cad5f82050598473a716758df6aa002 100644
--- a/app/bcc1/alarm1/verify_c.py
+++ b/app/bcc1/alarm1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/alarm1/verify_d.py b/app/bcc1/alarm1/verify_d.py
index 006e9f219b15a0e5abd5ca45369994cc61357483..be909e1e390d5e122f49ecf01f86e92f81d03a66 100644
--- a/app/bcc1/alarm1/verify_d.py
+++ b/app/bcc1/alarm1/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/alarm1/verify_e.py b/app/bcc1/alarm1/verify_e.py
index 994365a24bb17bdbcd1b89e6da9033d3f17eb135..1d363962810aec6edf2473da42cc37d3e5e1d5f4 100644
--- a/app/bcc1/alarm1/verify_e.py
+++ b/app/bcc1/alarm1/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/alarm3/verify_a.py b/app/bcc1/alarm3/verify_a.py
index e47cc29964fc9c214419b5a268d7f4cec7b38263..5e1c4dc745fc7feb00f24e388e2c068cba3f0292 100644
--- a/app/bcc1/alarm3/verify_a.py
+++ b/app/bcc1/alarm3/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def computation_blocks(analysis, function):
     provider = analysis.global_abb_information_provider()
diff --git a/app/bcc1/alarm3/verify_b.py b/app/bcc1/alarm3/verify_b.py
index 2a6ab5c4dafb553667b2a7172e708ed3e7e30edf..bfe905e306fcbd0fd55a49763cbdeaacd475075a 100644
--- a/app/bcc1/alarm3/verify_b.py
+++ b/app/bcc1/alarm3/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 from verify_a import *
 
 def after_ConstructGlobalCFG(analysis):
diff --git a/app/bcc1/alarm3/verify_c.py b/app/bcc1/alarm3/verify_c.py
index 110b65ff12ee80259e620c7f98bac451a084c32e..069aa2d4c9775c2a01d39eff4d957122c11c82a5 100644
--- a/app/bcc1/alarm3/verify_c.py
+++ b/app/bcc1/alarm3/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 from verify_a import *
 
 def after_ConstructGlobalCFG(analysis):
diff --git a/app/bcc1/alarm3/verify_d.py b/app/bcc1/alarm3/verify_d.py
index 3e2e1adf504615588377e42649048bc4f1ea0e08..c8b85680a6287c22cb53db688e533528154d9b2a 100644
--- a/app/bcc1/alarm3/verify_d.py
+++ b/app/bcc1/alarm3/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 from verify_a import *
 
 def after_ConstructGlobalCFG(analysis):
diff --git a/app/bcc1/alarm3/verify_e.py b/app/bcc1/alarm3/verify_e.py
index 99e919e5d6904330ef3d617a8ac57efaa53aaf79..6c490ff3f471c6834ae64b3de6274cea827e0c9b 100644
--- a/app/bcc1/alarm3/verify_e.py
+++ b/app/bcc1/alarm3/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 from verify_a import *
 
 def after_ConstructGlobalCFG(analysis):
diff --git a/app/bcc1/complex1/verify_a.py b/app/bcc1/complex1/verify_a.py
index 05bee157862bbbede19d6eb8ba0bfbd5c6854329..da4a2286060de536fce589bb47911c5a17d7480e 100644
--- a/app/bcc1/complex1/verify_a.py
+++ b/app/bcc1/complex1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/complex1/verify_b.py b/app/bcc1/complex1/verify_b.py
index cbb196b30c42b14fd3bed683f25cb17d1d1355ab..d9278819b9dc8e6d68ca15896df58f218f795a81 100644
--- a/app/bcc1/complex1/verify_b.py
+++ b/app/bcc1/complex1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/complex1/verify_c.py b/app/bcc1/complex1/verify_c.py
index 1f9f011600ef3fa657d7a059bbe9bb27a398bb71..3c59404a5df2909624a269506c336422a33e8701 100644
--- a/app/bcc1/complex1/verify_c.py
+++ b/app/bcc1/complex1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/complex2/verify_a.py b/app/bcc1/complex2/verify_a.py
index ee9debb5f635ee1f8d5f3d553ea47012d02e4026..f78c37c48d2ae34a537a2c81d46565fd14564b40 100644
--- a/app/bcc1/complex2/verify_a.py
+++ b/app/bcc1/complex2/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/isr2/verify_a.py b/app/bcc1/isr2/verify_a.py
index 3529648dd5c14b59ddb254f700c575c70e32c24b..78b5167bd5f060aaa93681d4e73e2d262c917c8c 100644
--- a/app/bcc1/isr2/verify_a.py
+++ b/app/bcc1/isr2/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/isr2/verify_b.py b/app/bcc1/isr2/verify_b.py
index 4abb4e9c9302a7366150dc580ec71b924ca48132..73acbc95e0456d272357b92a03cfa8cdef5aef89 100644
--- a/app/bcc1/isr2/verify_b.py
+++ b/app/bcc1/isr2/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/isr2/verify_c.py b/app/bcc1/isr2/verify_c.py
index 6473891453c21fae718dffb2e12515f6fc69c5c3..9ffd846104d08b7423344d2625454fd2bb08adf9 100644
--- a/app/bcc1/isr2/verify_c.py
+++ b/app/bcc1/isr2/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/isr2/verify_d.py b/app/bcc1/isr2/verify_d.py
index ba927240b165b33f9231404f41dd1713cd61e7fe..6fcfbd691dc6e6c07d47bb312b3d8293b0b6dca2 100644
--- a/app/bcc1/isr2/verify_d.py
+++ b/app/bcc1/isr2/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/isr2/verify_e.py b/app/bcc1/isr2/verify_e.py
index 022073d80232696363979ee5154fd53e3a78e4f7..1280c07060b4dfd7cd390145b22c415db4029a06 100644
--- a/app/bcc1/isr2/verify_e.py
+++ b/app/bcc1/isr2/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_a.py b/app/bcc1/resource1/verify_a.py
index 2a4d5204fdd28d4586aac5cad84ab1fab706f663..757d99ce859f587b2780ab4ec141303ae234f593 100644
--- a/app/bcc1/resource1/verify_a.py
+++ b/app/bcc1/resource1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_b.py b/app/bcc1/resource1/verify_b.py
index a79be35c877f13c9165462811e69fa624e1f45b2..38193e4fdcf5a2e086f640125297cdd641f88687 100644
--- a/app/bcc1/resource1/verify_b.py
+++ b/app/bcc1/resource1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_d.py b/app/bcc1/resource1/verify_d.py
index acd06ab3f2132ace85d57251c08c07296f902827..b801be5ad0024978a665eb1875127c8043dcc842 100644
--- a/app/bcc1/resource1/verify_d.py
+++ b/app/bcc1/resource1/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_e.py b/app/bcc1/resource1/verify_e.py
index 0e405b8a2ae3b173dc42da1b6353c20a23ddfcfd..35af3d76686dc2842159f7cf762af64094e50b53 100644
--- a/app/bcc1/resource1/verify_e.py
+++ b/app/bcc1/resource1/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_f.py b/app/bcc1/resource1/verify_f.py
index 7eb29596670eda62339ee0f971b6aea709a1ff96..b98baa89a0f94761f1f8b52ada9dc9b3074c3a09 100644
--- a/app/bcc1/resource1/verify_f.py
+++ b/app/bcc1/resource1/verify_f.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_g.py b/app/bcc1/resource1/verify_g.py
index 86f11456d51ab9c8d089151ebb9be5230177ea39..d7e8538502fdb58955c0ce5211ccd0fcbd1aa97d 100644
--- a/app/bcc1/resource1/verify_g.py
+++ b/app/bcc1/resource1/verify_g.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_h.py b/app/bcc1/resource1/verify_h.py
index 469900efd8909a757aa64b4c1983152a3ed49f9e..80e48e409d41f98b5a98a5b0a9cca6b35441e09b 100644
--- a/app/bcc1/resource1/verify_h.py
+++ b/app/bcc1/resource1/verify_h.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource1/verify_k.py b/app/bcc1/resource1/verify_k.py
index f323e8a9ac5d848c3d8134f026de3cce32b28aa1..1b7f8e34ff4e297609a1420b327215ca0972108b 100644
--- a/app/bcc1/resource1/verify_k.py
+++ b/app/bcc1/resource1/verify_k.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource2/verify_a.py b/app/bcc1/resource2/verify_a.py
index ba23dbde74380c3cca01855ba2962dc64e40445e..64947833c69596ad576b2c46fc1f0dae0a9d95ae 100644
--- a/app/bcc1/resource2/verify_a.py
+++ b/app/bcc1/resource2/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/resource2/verify_b.py b/app/bcc1/resource2/verify_b.py
index 346257b7afb55b949855434bdeae5b71936ef3cd..2b782f2247ca6e1e29b54ae941f588b010ad67c7 100644
--- a/app/bcc1/resource2/verify_b.py
+++ b/app/bcc1/resource2/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/sse1/verify_a.py b/app/bcc1/sse1/verify_a.py
index bbf7c47dd2bf8d8a01ec2b8b5c0d3b9ecad9ef38..c9018569aaf99e5cc676c16276a158532a8349fb 100644
--- a/app/bcc1/sse1/verify_a.py
+++ b/app/bcc1/sse1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/sse1/verify_b.py b/app/bcc1/sse1/verify_b.py
index 3cdfc2205f698395f6944177f89a4c60ee5ea7ec..cf37df76a17301ed1430aa25d1386b317404cc89 100644
--- a/app/bcc1/sse1/verify_b.py
+++ b/app/bcc1/sse1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/sse1/verify_c.py b/app/bcc1/sse1/verify_c.py
index 4e964883434911642f2fda8fc9745338054eff91..5c134ab126ac9d774a50993cc02f781ef1063795 100644
--- a/app/bcc1/sse1/verify_c.py
+++ b/app/bcc1/sse1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task1/verify_a.py b/app/bcc1/task1/verify_a.py
index 588a21e336d94ac25978fbd740de4a549a69519e..5dfed77c516bc60c470fd2a1b98752135023db4b 100644
--- a/app/bcc1/task1/verify_a.py
+++ b/app/bcc1/task1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task1/verify_b.py b/app/bcc1/task1/verify_b.py
index 4b4488bee1b836a0bab02a8f9566b9f1b3d5c8b7..3f98dc6990c9684d4114243895356c2e403a23eb 100644
--- a/app/bcc1/task1/verify_b.py
+++ b/app/bcc1/task1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_CurrentRunningSubtask(analysis):
     (Handler11,  bar) = \
diff --git a/app/bcc1/task1/verify_c.py b/app/bcc1/task1/verify_c.py
index fc626b4caa34c1f7afd61f251f959a2e5f8b2959..b2f9d9c5c96f0b5bf725f55961143ffaf5734d19 100644
--- a/app/bcc1/task1/verify_c.py
+++ b/app/bcc1/task1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_CurrentRunningSubtask(analysis):
     (Handler11,  bar) = \
diff --git a/app/bcc1/task1/verify_d.py b/app/bcc1/task1/verify_d.py
index 6f8a6b029094774223ed790d9bb0627fb9400693..2c8c2d10cb7e05dde160fae77bb72d8610f88ea4 100644
--- a/app/bcc1/task1/verify_d.py
+++ b/app/bcc1/task1/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_CurrentRunningSubtask(analysis):
     (Handler11,  bar) = \
diff --git a/app/bcc1/task1/verify_e.py b/app/bcc1/task1/verify_e.py
index 52f57aca7d31183867f1bdd0c1932340639ade86..7ae2686f9aae747db57cd04d36a41864663cd967 100644
--- a/app/bcc1/task1/verify_e.py
+++ b/app/bcc1/task1/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task1/verify_f.py b/app/bcc1/task1/verify_f.py
index 2a11f38abef4374d9b3984b177cbf4778ad031c9..5429420b911e074c30bae46554e51867f313f90f 100644
--- a/app/bcc1/task1/verify_f.py
+++ b/app/bcc1/task1/verify_f.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task1/verify_g.py b/app/bcc1/task1/verify_g.py
index d48d67d12ff725ebe6772bb0bc45f475e8798b62..b088f5987c9d80fab2a06bbf17c529f0bb2103e5 100644
--- a/app/bcc1/task1/verify_g.py
+++ b/app/bcc1/task1/verify_g.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task2/verify_a.py b/app/bcc1/task2/verify_a.py
index 018851d63c1e37994899755ce1506e7abcb14cc2..ca68146bfbe5ece623312d1daa95c6e1980e96be 100644
--- a/app/bcc1/task2/verify_a.py
+++ b/app/bcc1/task2/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/bcc1/task2/verify_b.py b/app/bcc1/task2/verify_b.py
index 93bcbfb0699546a148cd6250daab73a61e17efd3..0a37afd2ae329d143b51ab4b97f6679689308ae6 100644
--- a/app/bcc1/task2/verify_b.py
+++ b/app/bcc1/task2/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_SystemStateFlow(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/event1/verify_a.py b/app/ecc1/event1/verify_a.py
index 2a328abc899c32e067288eaf7a774b79d3460fc9..a59ae3c6254d05dc5a8e83f868c46cf9e995b4fb 100644
--- a/app/ecc1/event1/verify_a.py
+++ b/app/ecc1/event1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/event1/verify_b.py b/app/ecc1/event1/verify_b.py
index 7b686139ffad10380055e0a26db46de99a112fa8..d843789d11d06d9e97f968f7d1fa96bad7687b3b 100644
--- a/app/ecc1/event1/verify_b.py
+++ b/app/ecc1/event1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/event1/verify_c.py b/app/ecc1/event1/verify_c.py
index 63b684e718952be25d16ca5c982763dc0bfb0801..bb908a41006e02ea061ed0aa4426d2a4b2ff4ddf 100644
--- a/app/ecc1/event1/verify_c.py
+++ b/app/ecc1/event1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/event1/verify_d.py b/app/ecc1/event1/verify_d.py
index 2a643e43b3d6b7055be52b9e4ca8de43b588c773..3bc72fe802cfcab6a14d632faecdd677dc9864e2 100644
--- a/app/ecc1/event1/verify_d.py
+++ b/app/ecc1/event1/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/event1/verify_e.py b/app/ecc1/event1/verify_e.py
index aba3bc308924d5ce29fcc909e26fbc8e1b625ac1..9973dd00090e83513bd8ce6870ac9d9d7d044de6 100644
--- a/app/ecc1/event1/verify_e.py
+++ b/app/ecc1/event1/verify_e.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/eventisr1/verify_a.py b/app/ecc1/eventisr1/verify_a.py
index 107489ec7f6b521f7497985c3d5f865d717293a8..1690cc3ad01c046acd4490091db9af4a0ea944bb 100644
--- a/app/ecc1/eventisr1/verify_a.py
+++ b/app/ecc1/eventisr1/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/eventisr1/verify_b.py b/app/ecc1/eventisr1/verify_b.py
index 752a00b0609ceb9b16d1337b188872c9139c923a..a396464e8bdaf8efb9593f2bc1d775501dae7942 100644
--- a/app/ecc1/eventisr1/verify_b.py
+++ b/app/ecc1/eventisr1/verify_b.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/eventisr1/verify_c.py b/app/ecc1/eventisr1/verify_c.py
index b200caae0c8abb7b4a9779089eaf1a18d560df87..29e90d529c1f078c1d64d40c6ff2b10c1140e51f 100644
--- a/app/ecc1/eventisr1/verify_c.py
+++ b/app/ecc1/eventisr1/verify_c.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/ecc1/eventisr1/verify_d.py b/app/ecc1/eventisr1/verify_d.py
index 9cd36e8403ab8b5f88d03e954689d67c2d27ba09..eee5e9d6dae9ea6386ae894e49b90df0b3dd0c56 100644
--- a/app/ecc1/eventisr1/verify_d.py
+++ b/app/ecc1/eventisr1/verify_d.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/sysmodel/1alarm/verify_a.py b/app/sysmodel/1alarm/verify_a.py
index 0b0ad4dba1d03624a41654a0ee8fb6ef53780564..80461af38447045e001c0304b5bda01993c4f4b0 100644
--- a/app/sysmodel/1alarm/verify_a.py
+++ b/app/sysmodel/1alarm/verify_a.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/app/sysmodel/1alarm/verify_aa.py b/app/sysmodel/1alarm/verify_aa.py
index 23b1003fd0ba246d9b118b5bc528f5d1d364c375..df9095e3260beede5437795929bfecb557fc58c4 100644
--- a/app/sysmodel/1alarm/verify_aa.py
+++ b/app/sysmodel/1alarm/verify_aa.py
@@ -1,4 +1,4 @@
-from generator.graph.verifier_tools import *
+from generator.analysis.verifier_tools import *
 
 def after_ConstructGlobalCFG(analysis):
     # Find all three systemcall handlers
diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt
index e7b96ef177f6cc6ff75cc45308b0198a6ef92fec..bfe1469447c5bc89fec2b6c480efb278487e3887 100644
--- a/generator/CMakeLists.txt
+++ b/generator/CMakeLists.txt
@@ -1,6 +1,6 @@
 
 set(PYTHON_MODULES_TEST
-    elements/template
+    coder/elements/template
 )
 
 foreach(module ${PYTHON_MODULES_TEST})
diff --git a/generator/Generator.py b/generator/Generator.py
index cef15290e8ec3d1650f292ee7d0da46e8f078b4a..0d9f6da679abaa24d1229cc7cd5ed114f1794c28 100644
--- a/generator/Generator.py
+++ b/generator/Generator.py
@@ -1,8 +1,8 @@
-from generator.elements import *
-from generator.graph.Function import Function as GraphFunction
-from generator.graph.types import S
-from .rules.implementations import *
-from .rules import SignatureGenerator
+from .coder.elements import *
+from .analysis.Function import Function as GraphFunction
+from .analysis.types import S
+from .coder.implementations import *
+from .coder import SignatureGenerator
 
 import logging
 
diff --git a/generator/LLVMPYAnalysis.py b/generator/LLVMPYAnalysis.py
index df5ff0214a83a864586d612f9f34e1ac580a030e..69c656be0bf46b7f97c9052fbddc2c0a27504daa 100644
--- a/generator/LLVMPYAnalysis.py
+++ b/generator/LLVMPYAnalysis.py
@@ -4,8 +4,8 @@ import sys
 from functools import reduce
 from llvmpy import api
 from collections import defaultdict, namedtuple
-from generator.graph.AtomicBasicBlock import S, E, ControlFlowEdge
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from generator.analysis.AtomicBasicBlock import S, E, ControlFlowEdge
+from generator.analysis.common import Node, Edge, EdgeType, NodeType
 
 
 
diff --git a/generator/graph/ABBMergePass.py b/generator/analysis/ABBMergePass.py
similarity index 98%
rename from generator/graph/ABBMergePass.py
rename to generator/analysis/ABBMergePass.py
index 06072653d9b66f3e90d84abb785c99949ed6bef8..973bf64feef8f314f5bd678bb9176999f8a2c3c3 100644
--- a/generator/graph/ABBMergePass.py
+++ b/generator/analysis/ABBMergePass.py
@@ -1,7 +1,7 @@
 import logging
-from generator.graph.Analysis import Analysis, FixpointIteration
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Function import Function
+from .Analysis import Analysis, FixpointIteration
+from .AtomicBasicBlock import E, S
+from .Function import Function
 from .DominanceAnalysis import DominanceAnalysis
 from generator.tools import panic, stack
 from collections import namedtuple
diff --git a/generator/graph/AddFunctionCalls.py b/generator/analysis/AddFunctionCalls.py
similarity index 94%
rename from generator/graph/AddFunctionCalls.py
rename to generator/analysis/AddFunctionCalls.py
index 528ba0ae79cb8b1b688541185a60f44f39e4eef9..68095a8c508138ced8076cfd1d47d70dfaa004f2 100644
--- a/generator/graph/AddFunctionCalls.py
+++ b/generator/analysis/AddFunctionCalls.py
@@ -1,6 +1,6 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Function import Function
+from .Analysis import Analysis
+from .AtomicBasicBlock import E, S
+from .Function import Function
 import logging
 
 class AddFunctionCalls(Analysis):
diff --git a/generator/graph/Analysis.py b/generator/analysis/Analysis.py
similarity index 99%
rename from generator/graph/Analysis.py
rename to generator/analysis/Analysis.py
index 8f491dcaf52f67745faf5595bbf14e34256de80e..9b7ab585c52507a420fbd588bb3cef78273e086e 100644
--- a/generator/graph/Analysis.py
+++ b/generator/analysis/Analysis.py
@@ -1,7 +1,7 @@
 import logging
 import sys
-from generator.graph.common import *
-from generator.graph.AtomicBasicBlock import E, S
+from .common import *
+from .AtomicBasicBlock import E, S
 from collections import defaultdict
 from .Event import Event
 import copy
diff --git a/generator/graph/AtomicBasicBlock.py b/generator/analysis/AtomicBasicBlock.py
similarity index 95%
rename from generator/graph/AtomicBasicBlock.py
rename to generator/analysis/AtomicBasicBlock.py
index aab55b8506a691c1e8ccc27f84ae205a0c51cb6f..92d013325a757d4ef70b5015a5576d517f541a8e 100644
--- a/generator/graph/AtomicBasicBlock.py
+++ b/generator/analysis/AtomicBasicBlock.py
@@ -1,9 +1,9 @@
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from .common import Node, Edge, EdgeType, NodeType
 import collections
-from generator.graph.types import S, E, ControlFlowEdge, SyscallType
-from generator.graph.Sporadic import Counter, Alarm, ISR
-from generator.graph.Resource import Resource
-from generator.graph.Subtask import Subtask
+from .types import S, E, ControlFlowEdge, SyscallType
+from .Sporadic import Counter, Alarm, ISR
+from .Resource import Resource
+from .Subtask import Subtask
 
 
 
diff --git a/generator/graph/ConstructGlobalCFG.py b/generator/analysis/ConstructGlobalCFG.py
similarity index 98%
rename from generator/graph/ConstructGlobalCFG.py
rename to generator/analysis/ConstructGlobalCFG.py
index 3bff99fc0d9ef5c26f2ffe75412bc6ab4fa1c190..998bf80696fb0908a4d9e6ee9ba65f9fdd795229 100644
--- a/generator/graph/ConstructGlobalCFG.py
+++ b/generator/analysis/ConstructGlobalCFG.py
@@ -1,8 +1,8 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.AtomicBasicBlock import E, S
+from .Analysis import Analysis
+from .AtomicBasicBlock import E, S
 from generator.tools import panic, stack
-from generator.graph.common import Edge
-from generator.graph.SymbolicSystemExecution import StateTransition, SavedStateTransition
+from .common import Edge
+from .SymbolicSystemExecution import StateTransition, SavedStateTransition
 import logging
 import hashlib
 
diff --git a/generator/graph/DominanceAnalysis.py b/generator/analysis/DominanceAnalysis.py
similarity index 97%
rename from generator/graph/DominanceAnalysis.py
rename to generator/analysis/DominanceAnalysis.py
index 09f9b57df5c56cfcee3fb92f2bf53cc40927a61b..9b1cca1576e60bf3d33ece6610597b41e65b6141 100644
--- a/generator/graph/DominanceAnalysis.py
+++ b/generator/analysis/DominanceAnalysis.py
@@ -1,8 +1,8 @@
-from generator.graph.Analysis           import Analysis
-from generator.graph.common             import dfs, GraphObject, Edge, GraphObjectContainer
+from .Analysis           import Analysis
+from .common             import dfs, GraphObject, Edge, GraphObjectContainer
 from generator.tools                    import stack
-from generator.graph.AtomicBasicBlock   import E,S
-from generator.graph.Function           import Function
+from .AtomicBasicBlock   import E,S
+from .Function           import Function
 import logging
 from functools import reduce
 
diff --git a/generator/graph/DynamicPriorityAnalysis.py b/generator/analysis/DynamicPriorityAnalysis.py
similarity index 96%
rename from generator/graph/DynamicPriorityAnalysis.py
rename to generator/analysis/DynamicPriorityAnalysis.py
index 1a34b095897652b87c850b30522efdf3e7d01799..ca7dd32fa5495a1be59168819335c5ebc89e08ff 100644
--- a/generator/graph/DynamicPriorityAnalysis.py
+++ b/generator/analysis/DynamicPriorityAnalysis.py
@@ -1,7 +1,7 @@
-from generator.graph.Analysis import Analysis, FixpointIteration
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Resource import Resource
-from generator.graph.Function import Function
+from .Analysis import Analysis, FixpointIteration
+from .AtomicBasicBlock import E, S
+from .Resource import Resource
+from .Function import Function
 from collections import namedtuple
 
 class DynamicPriorityAnalysis(Analysis):
diff --git a/generator/graph/Event.py b/generator/analysis/Event.py
similarity index 100%
rename from generator/graph/Event.py
rename to generator/analysis/Event.py
diff --git a/generator/graph/Function.py b/generator/analysis/Function.py
similarity index 94%
rename from generator/graph/Function.py
rename to generator/analysis/Function.py
index 77c1a6a5c28331335d7d32b6ae374393d3115e0d..470a65d371dcfa7bbf4136629b79aef71e1236b9 100644
--- a/generator/graph/Function.py
+++ b/generator/analysis/Function.py
@@ -1,5 +1,5 @@
-from generator.graph.common import GraphObject, Edge
-from generator.graph.AtomicBasicBlock import S, E
+from .common import GraphObject, Edge
+from .AtomicBasicBlock import S, E
 
 class Function(GraphObject):
     def __init__(self, functionname):
diff --git a/generator/graph/GlobalAbbInfo.py b/generator/analysis/GlobalAbbInfo.py
similarity index 100%
rename from generator/graph/GlobalAbbInfo.py
rename to generator/analysis/GlobalAbbInfo.py
diff --git a/generator/graph/GlobalControlFlowMetric.py b/generator/analysis/GlobalControlFlowMetric.py
similarity index 94%
rename from generator/graph/GlobalControlFlowMetric.py
rename to generator/analysis/GlobalControlFlowMetric.py
index c6a3d220ac59b254f7885e0e65e511f604629b32..c9baa6a8e8bd6666c93307d52d3b7948492aef35 100644
--- a/generator/graph/GlobalControlFlowMetric.py
+++ b/generator/analysis/GlobalControlFlowMetric.py
@@ -1,5 +1,5 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.AtomicBasicBlock import E
+from .Analysis import Analysis
+from .AtomicBasicBlock import E
 
 class GlobalControlFlowMetric(Analysis):
     def __init__(self, filename):
diff --git a/generator/graph/InterruptControlAnalysis.py b/generator/analysis/InterruptControlAnalysis.py
similarity index 96%
rename from generator/graph/InterruptControlAnalysis.py
rename to generator/analysis/InterruptControlAnalysis.py
index fb4338aa2bfbc717a2f0416a1954c9a80f4363d6..7999651b18acfaa564a19513fe1824ddc57cee12 100644
--- a/generator/graph/InterruptControlAnalysis.py
+++ b/generator/analysis/InterruptControlAnalysis.py
@@ -1,5 +1,5 @@
-from generator.graph.Analysis import Analysis, FixpointIteration
-from generator.graph.AtomicBasicBlock import E, S
+from .Analysis import Analysis, FixpointIteration
+from .AtomicBasicBlock import E, S
 from generator.tools import panic
 
 from collections import namedtuple
diff --git a/generator/graph/PassManager.py b/generator/analysis/PassManager.py
similarity index 98%
rename from generator/graph/PassManager.py
rename to generator/analysis/PassManager.py
index 21724206a658876200b570765599dd8e7cf0da2e..96c9a090ecfd6ac5f7bdede4ea8eb3c2bf757908 100644
--- a/generator/graph/PassManager.py
+++ b/generator/analysis/PassManager.py
@@ -2,8 +2,8 @@ import logging
 import os
 import sys
 import time
-from generator.graph.AtomicBasicBlock import AtomicBasicBlock
-from generator.graph.common import *
+from .AtomicBasicBlock import AtomicBasicBlock
+from .common import *
 from generator.tools import stack
 
 class PassManager:
diff --git a/generator/graph/PreciseSystemState.py b/generator/analysis/PreciseSystemState.py
similarity index 97%
rename from generator/graph/PreciseSystemState.py
rename to generator/analysis/PreciseSystemState.py
index b62fd4e0aad247c49586bb1d1acf264dfb636d5a..54344fc2a5cbedcd9c46ecd7f01c71d643614bde 100644
--- a/generator/graph/PreciseSystemState.py
+++ b/generator/analysis/PreciseSystemState.py
@@ -1,9 +1,9 @@
 from generator.tools import stack, unwrap_seq, panic
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Sporadic import Alarm
-from generator.graph.Subtask import Subtask
-from generator.graph.Event import Event
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from .AtomicBasicBlock import E, S
+from .Sporadic import Alarm
+from .Subtask import Subtask
+from .Event import Event
+from .common import Node, Edge, EdgeType, NodeType
 from .SystemState import SystemState
 
 class PreciseSystemState(SystemState):
diff --git a/generator/graph/PrioritySpreadingPass.py b/generator/analysis/PrioritySpreadingPass.py
similarity index 93%
rename from generator/graph/PrioritySpreadingPass.py
rename to generator/analysis/PrioritySpreadingPass.py
index 36931839acfbe2f8bc70a67c517e1e85755f627b..2fa937cf7d581a738d9a1627a79db8b4aa3e0284 100644
--- a/generator/graph/PrioritySpreadingPass.py
+++ b/generator/analysis/PrioritySpreadingPass.py
@@ -1,5 +1,5 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.Subtask  import Subtask
+from .Analysis import Analysis
+from .Subtask  import Subtask
 
 class PrioritySpreadingPass(Analysis):
     """This pass reallocated the priorities in the way, that every
diff --git a/generator/graph/Resource.py b/generator/analysis/Resource.py
similarity index 100%
rename from generator/graph/Resource.py
rename to generator/analysis/Resource.py
diff --git a/generator/graph/Sporadic.py b/generator/analysis/Sporadic.py
similarity index 100%
rename from generator/graph/Sporadic.py
rename to generator/analysis/Sporadic.py
diff --git a/generator/graph/Subtask.py b/generator/analysis/Subtask.py
similarity index 92%
rename from generator/graph/Subtask.py
rename to generator/analysis/Subtask.py
index 6f11ce8ff4e4c7d7dc71b975ac66a69186db4d03..b1c0284ef71b62e1a9f77c4cb697fa79ab4cfbba 100644
--- a/generator/graph/Subtask.py
+++ b/generator/analysis/Subtask.py
@@ -1,6 +1,6 @@
-from generator.graph.Function import Function
-from generator.graph.SystemObject import SystemObject
-from generator.graph.Event import Event
+from .Function import Function
+from .SystemObject import SystemObject
+from .Event import Event
 
 
 class Subtask(Function, SystemObject):
diff --git a/generator/graph/SymbolicSystemExecution.py b/generator/analysis/SymbolicSystemExecution.py
similarity index 98%
rename from generator/graph/SymbolicSystemExecution.py
rename to generator/analysis/SymbolicSystemExecution.py
index 09467a5eab81571385f21428444954030cb21833..c7b9ad345497f0067c28b4b4300e9cdf36b409b4 100644
--- a/generator/graph/SymbolicSystemExecution.py
+++ b/generator/analysis/SymbolicSystemExecution.py
@@ -1,8 +1,8 @@
-from generator.graph.common import *
-from generator.graph.Analysis import *
-from generator.graph.GlobalAbbInfo import GlobalAbbInfo
-from generator.graph.SystemSemantic import *
-from generator.graph.Function import Function
+from .common import *
+from .Analysis import *
+from .GlobalAbbInfo import GlobalAbbInfo
+from .SystemSemantic import *
+from .Function import Function
 from generator.tools import stack, unwrap_seq, group_by, IntEnum
 
 @unique
diff --git a/generator/graph/SystemGraph.py b/generator/analysis/SystemGraph.py
similarity index 97%
rename from generator/graph/SystemGraph.py
rename to generator/analysis/SystemGraph.py
index e23040ab9fae2c04bdfd58695edade34220e398c..148a419a2b5fc1359d7a72fffbbb708b646737b9 100644
--- a/generator/graph/SystemGraph.py
+++ b/generator/analysis/SystemGraph.py
@@ -1,13 +1,13 @@
 import logging
-from generator.graph.Task import Task
-from generator.graph.Subtask import Subtask
-from generator.graph.AtomicBasicBlock import AtomicBasicBlock, E, S
-from generator.graph.Function import Function
-from generator.graph.PassManager import PassManager
-from generator.graph.Sporadic import Counter, Alarm, ISR, AlarmSubtask
-from generator.graph.Resource import Resource
-from generator.graph.Event import Event
-from generator.graph.common import GraphObject
+from .Task import Task
+from .Subtask import Subtask
+from .AtomicBasicBlock import AtomicBasicBlock, E, S
+from .Function import Function
+from .PassManager import PassManager
+from .Sporadic import Counter, Alarm, ISR, AlarmSubtask
+from .Resource import Resource
+from .Event import Event
+from .common import GraphObject
 from generator.statistics import Statistics
 from generator.tools import panic
 from collections import namedtuple
diff --git a/generator/graph/SystemObject.py b/generator/analysis/SystemObject.py
similarity index 100%
rename from generator/graph/SystemObject.py
rename to generator/analysis/SystemObject.py
diff --git a/generator/graph/SystemSemantic.py b/generator/analysis/SystemSemantic.py
similarity index 98%
rename from generator/graph/SystemSemantic.py
rename to generator/analysis/SystemSemantic.py
index a0eedc2055defa4b1f2d7d51e1c4ea1ba4d42ced..d8a12c1ce82af782f1e3e5ecf6f5d3301553b04d 100644
--- a/generator/graph/SystemSemantic.py
+++ b/generator/analysis/SystemSemantic.py
@@ -1,9 +1,9 @@
 from generator.tools import stack, unwrap_seq, panic
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Sporadic import Alarm
-from generator.graph.Subtask import Subtask
-from generator.graph.Event import Event
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from .AtomicBasicBlock import E, S
+from .Sporadic import Alarm
+from .Subtask import Subtask
+from .Event import Event
+from .common import Node, Edge, EdgeType, NodeType
 from .SystemState import SystemState
 from .PreciseSystemState import PreciseSystemState
 
diff --git a/generator/graph/SystemState.py b/generator/analysis/SystemState.py
similarity index 98%
rename from generator/graph/SystemState.py
rename to generator/analysis/SystemState.py
index f11c2af90b7bb6fdbf6976a223aec5d33577ef1f..2ea3b0838bc8e60ce3e45dda7e28f396120f1979 100644
--- a/generator/graph/SystemState.py
+++ b/generator/analysis/SystemState.py
@@ -1,9 +1,9 @@
 from generator.tools import stack, unwrap_seq, panic
-from generator.graph.AtomicBasicBlock import E, S
-from generator.graph.Sporadic import Alarm
-from generator.graph.Subtask import Subtask
-from generator.graph.Event import Event
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from .AtomicBasicBlock import E, S
+from .Sporadic import Alarm
+from .Subtask import Subtask
+from .Event import Event
+from .common import Node, Edge, EdgeType, NodeType
 
 class SystemState(Node):
     """Normal system states capture the state at a specific point in the
diff --git a/generator/graph/SystemStateFlow.py b/generator/analysis/SystemStateFlow.py
similarity index 97%
rename from generator/graph/SystemStateFlow.py
rename to generator/analysis/SystemStateFlow.py
index 50edc4a3b0df8c19d99fa47a3570ed091f652518..10f6e5290fb874eca506310dbde7704a47ae99c3 100644
--- a/generator/graph/SystemStateFlow.py
+++ b/generator/analysis/SystemStateFlow.py
@@ -1,12 +1,12 @@
 from collections import defaultdict
-from generator.graph.common import *
-from generator.graph.Analysis import *
-from generator.graph.DynamicPriorityAnalysis import DynamicPriorityAnalysis
-from generator.graph.Sporadic import SporadicEvent
-from generator.graph.Function import Function
-from generator.graph.GlobalAbbInfo import GlobalAbbInfo
-from generator.graph.SystemSemantic import *
-from generator.graph.AtomicBasicBlock import E
+from .common import *
+from .Analysis import *
+from .DynamicPriorityAnalysis import DynamicPriorityAnalysis
+from .Sporadic import SporadicEvent
+from .Function import Function
+from .GlobalAbbInfo import GlobalAbbInfo
+from .SystemSemantic import *
+from .AtomicBasicBlock import E
 
 
 class SystemStateFlow(Analysis):
diff --git a/generator/graph/Task.py b/generator/analysis/Task.py
similarity index 97%
rename from generator/graph/Task.py
rename to generator/analysis/Task.py
index f9d6bd677b0ef1fa227a532b6bb960044ee4cf10..d1763a0423c3eaceaab8381c0fbb52d515a2e14b 100644
--- a/generator/graph/Task.py
+++ b/generator/analysis/Task.py
@@ -1,4 +1,4 @@
-from generator.graph.common import GraphObject
+from .common import GraphObject
 
 class Task(GraphObject):
     """A Task represents a whole set of SubTasks. All subtasks belong logically together"""
diff --git a/generator/analysis/__init__.py b/generator/analysis/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..51245698dd681a96c841090bd0fb05569ab4891c
--- /dev/null
+++ b/generator/analysis/__init__.py
@@ -0,0 +1,28 @@
+__doc__ = """The graph module abstracts from all kind of Tasks, SubTasks,
+AtomicBasicBlocks and BasicBlocks, that make up an System."""
+
+assert __name__ == 'generator.analysis'
+
+
+from .AddFunctionCalls import AddFunctionCalls
+from .Analysis import *
+from .AtomicBasicBlock import AtomicBasicBlock
+from .ABBMergePass import ABBMergePass
+from .ConstructGlobalCFG import ConstructGlobalCFG
+from .DynamicPriorityAnalysis import DynamicPriorityAnalysis
+from .Function import Function
+from .GlobalControlFlowMetric import GlobalControlFlowMetric
+from .InterruptControlAnalysis import InterruptControlAnalysis
+from .PrioritySpreadingPass import PrioritySpreadingPass
+from .Resource import Resource
+from .Sporadic import Alarm
+from .Subtask import Subtask
+from .SymbolicSystemExecution import SymbolicSystemExecution, StateTransition, SavedStateTransition
+from .SystemGraph import SystemGraph
+from .SystemSemantic import *
+from .SystemStateFlow import *
+from .DominanceAnalysis import *
+
+
+from .Task import Task
+from .common import GraphObject
diff --git a/generator/graph/common.py b/generator/analysis/common.py
similarity index 100%
rename from generator/graph/common.py
rename to generator/analysis/common.py
diff --git a/generator/graph/types.py b/generator/analysis/types.py
similarity index 97%
rename from generator/graph/types.py
rename to generator/analysis/types.py
index a0d21037996cbac3e7e1e220bbe921cc78956b58..470e735243f4095063e5754bd1d95e7fc9816034 100644
--- a/generator/graph/types.py
+++ b/generator/analysis/types.py
@@ -1,4 +1,4 @@
-from generator.graph.common import Node, Edge, EdgeType, NodeType
+from .common import Node, Edge, EdgeType, NodeType
 from generator.tools import IntEnum, unique
 
 @unique
diff --git a/generator/graph/verifier_tools.py b/generator/analysis/verifier_tools.py
similarity index 96%
rename from generator/graph/verifier_tools.py
rename to generator/analysis/verifier_tools.py
index ce2bbd6c7ea58d051f40f87def69500ecdc7ecbe..5e84ed7189c8d090d72c8b85b74bfe5bb4900603 100644
--- a/generator/graph/verifier_tools.py
+++ b/generator/analysis/verifier_tools.py
@@ -1,7 +1,7 @@
-from generator.graph.AtomicBasicBlock import E,S
-from generator.graph.SystemStateFlow import SystemStateFlow
-from generator.graph.SymbolicSystemExecution import SymbolicSystemExecution
-from generator.graph.Resource import Resource
+from .AtomicBasicBlock import E,S
+from .SystemStateFlow import SystemStateFlow
+from .SymbolicSystemExecution import SymbolicSystemExecution
+from .Resource import Resource
 
 
 global E
diff --git a/generator/coder/__init__.py b/generator/coder/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e87b5b73ebd71ceb7e1f9594bf4dd61fbfa93dc
--- /dev/null
+++ b/generator/coder/__init__.py
@@ -0,0 +1,14 @@
+assert __name__ == "generator.coder"
+
+from .arch_generic import GenericArch
+from .arch_x86 import X86Arch
+from .arch_arm import ARMArch
+from .arch_posix import PosixArch
+
+from .os_generic import GenericOS
+from .os_encoded import EncodedOS, SignatureGenerator
+from .os_unencoded import UnencodedOS
+
+from .syscall_full import FullSystemCalls
+from .syscall_specialized import SpecializedSystemCalls
+from .syscall_fsm import FSMSystemCalls
diff --git a/generator/rules/arm.py b/generator/coder/arch_arm.py
similarity index 95%
rename from generator/rules/arm.py
rename to generator/coder/arch_arm.py
index b242bbfa7230dc5fc354824362978ffd35f51a4d..8b5dfefa8b34904a11dc7c795c89230eb3dbddcf 100644
--- a/generator/rules/arm.py
+++ b/generator/coder/arch_arm.py
@@ -1,12 +1,10 @@
-from generator.rules.simple import SimpleArch
-from generator.elements import CodeTemplate, FunctionDefinitionBlock, \
-    Include, FunctionDeclaration, Comment, Function, DataObject, \
-    DataObjectArray, Hook, Block, VariableDefinition, Statement
-from generator.graph.Subtask import Subtask
+from .arch_generic import GenericArch
+from .elements import *
+from generator.analysis.Subtask import Subtask
 
-class ARMArch(SimpleArch):
+class ARMArch(GenericArch):
     def __init__(self):
-        SimpleArch.__init__(self)
+        super(ARMArch, self).__init__()
 
     def generate_linkerscript(self):
         linker_script = LinkerScriptTemplate(self)
@@ -192,8 +190,7 @@ class LinkerScriptTemplate(CodeTemplate):
         CodeTemplate.__init__(self, ARM.generator, "arch/arm/linker.ld.in")
         self.ARM = ARM
         self.system_graph    = self.ARM.system_graph
-        # Reference to the objects object of our rule system
-        self.objects = self.ARM.objects
+
         # Link the foreach_subtask method from the rules
         self.foreach_subtask = self.ARM.foreach_subtask
 
diff --git a/generator/coder/arch_generic.py b/generator/coder/arch_generic.py
new file mode 100644
index 0000000000000000000000000000000000000000..5b21b8adb820448f3d000c8350cf0e82506bcbb8
--- /dev/null
+++ b/generator/coder/arch_generic.py
@@ -0,0 +1,62 @@
+from .elements import *
+from .base import BaseCoder
+from generator.analysis.Function import Function as GraphFunction
+from .implementations import *
+import logging
+
+from collections import namedtuple
+
+class GenericArch(BaseCoder):
+    def __init__(self):
+        super(GenericArch, self).__init__()
+
+    def generate_dataobjects_task_stacks(self):
+        """Generate the stacks for the tasks, including the task pointers"""
+        # Ignore the Idle thread and ISR subtasks
+        for subtask in self.system_graph.real_subtasks:
+            stacksize = subtask.get_stack_size()
+            stack = DataObjectArray("uint8_t", subtask.name + "_stack", stacksize,
+                                    extern_c = True)
+            self.generator.source_file.data_manager.add(stack)
+
+            stackptr = DataObject("void *", "OS_" + subtask.name + "_stackptr")
+            self.generator.source_file.data_manager.add(stackptr, namespace = ("arch",))
+
+
+            subtask.impl.stack = stack
+            subtask.impl.stackptr = stackptr
+            subtask.impl.stacksize = stacksize
+
+
+    def generate_dataobjects_task_entries(self):
+        for subtask in self.system_graph.subtasks:
+            # Ignore the Idle thread
+            if not subtask.is_real_thread():
+                continue
+            entry_function = FunctionDeclaration(subtask.function_name, "void", [],
+                                                                 extern_c = True)
+            self.generator.source_file.function_manager.add(entry_function)
+            subtask.impl.entry_function = entry_function
+
+    KernelSpace = namedtuple("KernelSpace", ["pre_hook", "system", "post_hook"])
+    def generate_kernelspace(self, userspace, abb, arguments):
+        """returns a KernelSpace object"""
+        raise NotImplementedError()
+
+    def asm_marker(self, block, label):
+        self.call_function(block, "asm_label", "void",
+                           ['"%s"' % label])
+
+    def kickoff(self, abb, block):
+        self.call_function(block, "Machine::enable_interrupts",
+                           "void", [])
+
+    def enable_irq(self, block):
+        self.call_function(block,
+                           "Machine::enable_interrupts",
+                           "void", [])
+
+    def disable_irq(self, block):
+        self.call_function(block,
+                           "Machine::disable_interrupts",
+                           "void", [])
diff --git a/generator/rules/posix.py b/generator/coder/arch_posix.py
similarity index 92%
rename from generator/rules/posix.py
rename to generator/coder/arch_posix.py
index 26dd5477d6fe53ff75373715f14cb182fdd9e421..c2a2ff8774d0bf4a247cf7cc30e44bb786501ad9 100644
--- a/generator/rules/posix.py
+++ b/generator/coder/arch_posix.py
@@ -1,13 +1,11 @@
-from generator.elements import Include, FunctionDeclaration, Comment, \
-                               DataObject, Block, Hook, VariableDefinition, Function
+from .arch_generic import GenericArch
+from .elements import *
+from generator.analysis.Subtask import Subtask
 
-from generator.graph.Subtask import Subtask
-from generator.rules.simple import SimpleArch
 
-
-class PosixArch(SimpleArch):
+class PosixArch(GenericArch):
     def __init__(self):
-        SimpleArch.__init__(self)
+        super(PosixArch, self).__init__()
 
     def generate_linkerscript(self):
         """Posix does not require a linker script"""
diff --git a/generator/rules/x86.py b/generator/coder/arch_x86.py
similarity index 94%
rename from generator/rules/x86.py
rename to generator/coder/arch_x86.py
index a265301f2241d34c88cc991ad535e5175504d4fc..d25ac21adae8c2250a5ef5b877dd7ced80d41e5b 100644
--- a/generator/rules/x86.py
+++ b/generator/coder/arch_x86.py
@@ -1,12 +1,10 @@
-from generator.rules.simple import SimpleArch
-from generator.elements import CodeTemplate, FunctionDefinitionBlock, \
-    Include, FunctionDeclaration, Comment, Function, DataObject, \
-    DataObjectArray, Hook, Block, VariableDefinition, Statement
-from generator.graph.Subtask import Subtask
+from .arch_generic import GenericArch
+from .elements import *
+from generator.analysis.Subtask import Subtask
 
-class X86Arch(SimpleArch):
+class X86Arch(GenericArch):
     def __init__(self):
-        SimpleArch.__init__(self)
+        super(X86Arch, self).__init__()
 
     def generate_linkerscript(self):
         linker_script = LinkerScriptTemplate(self)
@@ -131,8 +129,7 @@ class LinkerScriptTemplate(CodeTemplate):
         CodeTemplate.__init__(self, x86.generator, "arch/i386/linker.ld.in")
         self.x86 = x86
         self.system_graph    = self.x86.system_graph
-        # Reference to the objects object of our rule system
-        self.objects = self.x86.objects
+
         # Link the foreach_subtask method from the rules
         self.foreach_subtask = self.x86.foreach_subtask
 
diff --git a/generator/rules/base.py b/generator/coder/base.py
similarity index 95%
rename from generator/rules/base.py
rename to generator/coder/base.py
index 048944fc60a8091b0f4611c297f5437cc87aa129..ae0aa66c7426e9240b624649ffbd7ce08cb84a68 100755
--- a/generator/rules/base.py
+++ b/generator/coder/base.py
@@ -1,15 +1,16 @@
 #!/usr/bin/python
 
-from generator.elements import *
+from .elements import *
 
-class BaseRules:
+class BaseCoder:
     def __init__(self):
         self.generator     = None
         self.system_graph  = None
-        self.objects       = None
+
         self.arch_rules    = None
         self.os_rules      = None
         self.syscall_rules = None
+
         self.stats         = None
 
     def set_generator(self, generator):
diff --git a/generator/elements/DataObjectManager.py b/generator/coder/elements/DataObjectManager.py
similarity index 98%
rename from generator/elements/DataObjectManager.py
rename to generator/coder/elements/DataObjectManager.py
index f47a416378f976874a5aa32ef6336fa4a9ba2fee..b37fd0a03d8893b6b6f3a87769ddac9024d1f536 100755
--- a/generator/elements/DataObjectManager.py
+++ b/generator/coder/elements/DataObjectManager.py
@@ -12,7 +12,7 @@
     @ingroup generator
     @brief Data object cook.
 """
-from generator.elements.SourceElement import Block, Statement, ForRange
+from .SourceElement import Block, Statement, ForRange
 
 class DataObject:
     """Manages a variable"""
diff --git a/generator/elements/FunctionManager.py b/generator/coder/elements/FunctionManager.py
similarity index 98%
rename from generator/elements/FunctionManager.py
rename to generator/coder/elements/FunctionManager.py
index bda2763bc52c21d9d55327708d282db5cc2a915d..c2f8eefcec018af632996f4d04734e9b4c2ac16b 100755
--- a/generator/elements/FunctionManager.py
+++ b/generator/coder/elements/FunctionManager.py
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 
-from generator.elements.SourceElement import Block, Statement
+from .SourceElement import Block, Statement
 from collections import namedtuple
 
 class Function:
diff --git a/generator/elements/IncludeManager.py b/generator/coder/elements/IncludeManager.py
similarity index 94%
rename from generator/elements/IncludeManager.py
rename to generator/coder/elements/IncludeManager.py
index 9e91f6d5de4dbb0865f6f1ceff9ec2efba134a13..a3e8f00d41a63e04db4ee51e69ad5c5182e7e639 100644
--- a/generator/elements/IncludeManager.py
+++ b/generator/coder/elements/IncludeManager.py
@@ -5,7 +5,7 @@
     @ingroup primitives
     @brief Building include statements
 """
-from generator.elements.SourceElement import CPPStatement, Comment
+from .SourceElement import CPPStatement, Comment
 
 class Include:
     def __init__(self, filename, system_include=False, comment = None):
diff --git a/generator/elements/SourceElement.py b/generator/coder/elements/SourceElement.py
similarity index 100%
rename from generator/elements/SourceElement.py
rename to generator/coder/elements/SourceElement.py
diff --git a/generator/elements/SourceFile.py b/generator/coder/elements/SourceFile.py
similarity index 84%
rename from generator/elements/SourceFile.py
rename to generator/coder/elements/SourceFile.py
index 94852d602368dfc7a6a68a985bb5533d9d2690a7..ccee519e645fad5f50fefcdc561fb6a5c115c80c 100644
--- a/generator/elements/SourceFile.py
+++ b/generator/coder/elements/SourceFile.py
@@ -7,9 +7,9 @@
 """
 
 
-from generator.elements.IncludeManager import IncludeManager
-from generator.elements.DataObjectManager import DataObjectManager
-from generator.elements.FunctionManager import FunctionManager
+from .IncludeManager import IncludeManager
+from .DataObjectManager import DataObjectManager
+from .FunctionManager import FunctionManager
 from generator import tools
 
 class SourceFile:
diff --git a/generator/coder/elements/__init__.py b/generator/coder/elements/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9111bf08d16b0e6006318f8f9bc3f54f2cbfa8eb
--- /dev/null
+++ b/generator/coder/elements/__init__.py
@@ -0,0 +1,9 @@
+from .SourceFile import SourceFile
+from .FunctionManager import Function, FunctionManager, FunctionDeclaration, \
+    FunctionDefinitionBlock
+from .IncludeManager import Include, IncludeManager
+from .DataObjectManager import DataObject, DataObjectArray, ExternalDataObject
+from .SourceElement import *
+from .template import CodeTemplate
+
+assert __name__ == "generator.coder.elements"
diff --git a/generator/elements/template.py b/generator/coder/elements/template.py
similarity index 100%
rename from generator/elements/template.py
rename to generator/coder/elements/template.py
diff --git a/generator/rules/implementations.py b/generator/coder/implementations.py
similarity index 100%
rename from generator/rules/implementations.py
rename to generator/coder/implementations.py
diff --git a/generator/rules/encoded.py b/generator/coder/os_encoded.py
similarity index 96%
rename from generator/rules/encoded.py
rename to generator/coder/os_encoded.py
index 285afd45ebd838e62907b2cb3a70881542541768..ec9ee9fcbb1ebd105f83a39170e4567cca90616d 100644
--- a/generator/rules/encoded.py
+++ b/generator/coder/os_encoded.py
@@ -1,7 +1,7 @@
-from generator.rules.unencoded import UnencodedSystem, TaskListTemplate, \
+from .os_unencoded import UnencodedOS, TaskListTemplate, \
     SchedulerTemplate
-from generator.elements import *
-from generator.graph.Resource import Resource
+from .elements import *
+from generator.analysis.Resource import Resource
 from .implementations import *
 
 class SignatureGenerator:
@@ -47,9 +47,9 @@ class SignatureGenerator:
         return x
 
 
-class EncodedSystem(UnencodedSystem):
+class EncodedOS(UnencodedOS):
     def __init__(self):
-        UnencodedSystem.__init__(self)
+        super(EncodedOS, self).__init__()
         self.task_list = EncodedTaskListTemplate
         self.scheduler = EncodedSchedulerTemplate
         self.counter_signatures = {}
@@ -65,7 +65,7 @@ class EncodedSystem(UnencodedSystem):
         impl.current_prio_sig = self.sigs.current_prio
         impl.current_task_sig = self.sigs.current_task
 
-        UnencodedSystem.generate_system_code(self)
+        super(EncodedOS, self).generate_system_code()
 
     def convert_argument(self, block, argument):
         b = self.generator.signature_generator.new()
diff --git a/generator/rules/simple.py b/generator/coder/os_generic.py
similarity index 77%
rename from generator/rules/simple.py
rename to generator/coder/os_generic.py
index dbf56e61297dea508e9f53e6f7053d7fccbec482..7ddb24e2b33cf8395e9a68515c9581f538f62ee9 100644
--- a/generator/rules/simple.py
+++ b/generator/coder/os_generic.py
@@ -1,16 +1,14 @@
-from generator.elements import *
-from generator.elements.DataObjectManager import ExternalDataObject
-from generator.rules.base import BaseRules
-from generator.graph.Function import Function as GraphFunction
+from .elements import *
+from .base import BaseCoder
+from generator.analysis.Function import Function as GraphFunction
 from .implementations import *
 import logging
 
 from collections import namedtuple
 
-class SimpleSystem(BaseRules):
+class GenericOS(BaseCoder):
     def __init__(self):
-        BaseRules.__init__(self)
-
+        super(GenericOS, self).__init__()
 
     def return_statement(self, block, expression):
         block.add(Statement("return %s" % expression))
@@ -196,57 +194,3 @@ class SimpleSystem(BaseRules):
         self.generator.source_file.function_manager.add(multiplexer, "dep")
 
 
-class SimpleArch(BaseRules):
-    def __init__(self):
-        BaseRules.__init__(self)
-
-    def generate_dataobjects_task_stacks(self):
-        """Generate the stacks for the tasks, including the task pointers"""
-        # Ignore the Idle thread and ISR subtasks
-        for subtask in self.system_graph.real_subtasks:
-            stacksize = subtask.get_stack_size()
-            stack = DataObjectArray("uint8_t", subtask.name + "_stack", stacksize,
-                                    extern_c = True)
-            self.generator.source_file.data_manager.add(stack)
-
-            stackptr = DataObject("void *", "OS_" + subtask.name + "_stackptr")
-            self.generator.source_file.data_manager.add(stackptr, namespace = ("arch",))
-
-
-            subtask.impl.stack = stack
-            subtask.impl.stackptr = stackptr
-            subtask.impl.stacksize = stacksize
-
-
-    def generate_dataobjects_task_entries(self):
-        for subtask in self.system_graph.subtasks:
-            # Ignore the Idle thread
-            if not subtask.is_real_thread():
-                continue
-            entry_function = FunctionDeclaration(subtask.function_name, "void", [],
-                                                                 extern_c = True)
-            self.generator.source_file.function_manager.add(entry_function)
-            subtask.impl.entry_function = entry_function
-
-    KernelSpace = namedtuple("KernelSpace", ["pre_hook", "system", "post_hook"])
-    def generate_kernelspace(self, userspace, abb, arguments):
-        """returns a KernelSpace object"""
-        raise NotImplementedError()
-
-    def asm_marker(self, block, label):
-        self.call_function(block, "asm_label", "void",
-                           ['"%s"' % label])
-
-    def kickoff(self, abb, block):
-        self.call_function(block, "Machine::enable_interrupts",
-                           "void", [])
-
-    def enable_irq(self, block):
-        self.call_function(block,
-                           "Machine::enable_interrupts",
-                           "void", [])
-
-    def disable_irq(self, block):
-        self.call_function(block,
-                           "Machine::disable_interrupts",
-                           "void", [])
diff --git a/generator/rules/unencoded.py b/generator/coder/os_unencoded.py
similarity index 92%
rename from generator/rules/unencoded.py
rename to generator/coder/os_unencoded.py
index 81d0535b7e9cff6adae6c9ca74a88a952c2915cd..821ae6087187d96740c836c4dacc87fb159898d7 100644
--- a/generator/rules/unencoded.py
+++ b/generator/coder/os_unencoded.py
@@ -1,15 +1,15 @@
-from generator.rules.simple import SimpleSystem
-from generator.elements import CodeTemplate, Include, VariableDefinition, \
+from .os_generic import GenericOS
+from .elements import CodeTemplate, Include, VariableDefinition, \
     Block, Statement, Comment, Function, Hook, DataObject
-from generator.graph.AtomicBasicBlock import S, AtomicBasicBlock
-from generator.graph.Resource import Resource
-from generator.graph.Subtask import Subtask
-from generator.graph.Function import Function
+from generator.analysis.AtomicBasicBlock import S, AtomicBasicBlock
+from generator.analysis.Resource import Resource
+from generator.analysis.Subtask import Subtask
+from generator.analysis.Function import Function
 
 
-class UnencodedSystem(SimpleSystem):
+class UnencodedOS(GenericOS):
     def __init__(self):
-        SimpleSystem.__init__(self)
+        super(UnencodedOS, self).__init__()
         # These template slots are used by the system call layer
         self.task_list = TaskListTemplate
         self.scheduler = SchedulerTemplate
@@ -152,8 +152,6 @@ class TaskListTemplate(CodeTemplate):
         CodeTemplate.__init__(self, rules.generator, self.template_file())
         self.rules = rules
         self.system_graph = self.generator.system_graph
-        # Reference to the objects object of our rule system
-        self.objects = self.rules.objects
         self.idle = self.system_graph.find(Function, "Idle")
 
     def template_file(self):
@@ -192,8 +190,6 @@ class SchedulerTemplate(CodeTemplate):
         CodeTemplate.__init__(self, rules.generator, self.template_file())
         self.rules = rules
         self.system_graph = self.generator.system_graph
-        # Reference to the objects object of our rule system
-        self.objects = self.rules.objects
 
     def template_file(self):
         return "os/scheduler/scheduler-unencoded.h.in"
diff --git a/generator/rules/syscalls_fsm.py b/generator/coder/syscall_fsm.py
similarity index 96%
rename from generator/rules/syscalls_fsm.py
rename to generator/coder/syscall_fsm.py
index 95bb6f6647a251e47e848a154df695131df9b8da..e51c83b58c4ce8c2bd2960df4b7ef45a25a214d9 100644
--- a/generator/rules/syscalls_fsm.py
+++ b/generator/coder/syscall_fsm.py
@@ -1,10 +1,10 @@
-from generator.rules.syscalls_full import FullSystemCalls, AlarmTemplate
-from generator.elements import Statement, Comment
-from generator.elements import CodeTemplate, Include, VariableDefinition, \
+from .syscall_full import FullSystemCalls, AlarmTemplate
+from .elements import Statement, Comment
+from .elements import CodeTemplate, Include, VariableDefinition, \
     Block, Statement, Comment, Function, Hook, DataObject, DataObjectArray
 from generator.tools import unwrap_seq
-from generator.graph.AtomicBasicBlock import E,S
-from generator.graph.SystemSemantic import SystemState
+from generator.analysis.AtomicBasicBlock import E,S
+from generator.analysis.SystemSemantic import SystemState
 import logging
 
 
diff --git a/generator/rules/syscalls_full.py b/generator/coder/syscall_full.py
similarity index 97%
rename from generator/rules/syscalls_full.py
rename to generator/coder/syscall_full.py
index 09af7b07f175cc5fd7cbf5b946b251ee222c761a..d34744d78479d2702fc75a56cc551b9d2a1c00c1 100644
--- a/generator/rules/syscalls_full.py
+++ b/generator/coder/syscall_full.py
@@ -1,16 +1,16 @@
-from generator.rules.base import BaseRules
-from generator.graph.AtomicBasicBlock import E,S
-from generator.graph.Event import Event
-from generator.elements import Statement, Comment, Function, VariableDefinition, Block, Include, \
+from .base import BaseCoder
+from generator.analysis.AtomicBasicBlock import E,S
+from generator.analysis.Event import Event
+from .elements import Statement, Comment, Function, VariableDefinition, Block, Include, \
     CodeTemplate, FunctionDeclaration
-from generator.graph.GenerateAssertions import AssertionType
-from generator.graph.Function import Function as GraphFunction
+from generator.transform.GenerateAssertions import AssertionType
+from generator.analysis.Function import Function as GraphFunction
 from generator.tools import panic
 
 
-class FullSystemCalls(BaseRules):
+class FullSystemCalls(BaseCoder):
     def __init__(self):
-        BaseRules.__init__(self)
+        super(FullSystemCalls, self).__init__()
 
         self.alarms = AlarmTemplate
 
@@ -350,8 +350,6 @@ class AlarmTemplate(CodeTemplate):
         CodeTemplate.__init__(self, rules.generator, "os/alarm.h.in")
         self.rules = rules
         self.system_graph = self.generator.system_graph
-        # Reference to the objects object of our rule system
-        self.objects = self.rules.objects
 
         # Link the foreach_subtask method from the rules
         self.foreach_subtask = self.rules.foreach_subtask
diff --git a/generator/rules/syscalls_specialized.py b/generator/coder/syscall_specialized.py
similarity index 97%
rename from generator/rules/syscalls_specialized.py
rename to generator/coder/syscall_specialized.py
index 76b7558984b9cf1c497dabf0da3077f630175974..5991c2c17ea32780e6452a951ecd9a52c3d1d8e3 100644
--- a/generator/rules/syscalls_specialized.py
+++ b/generator/coder/syscall_specialized.py
@@ -1,13 +1,13 @@
-from generator.rules.syscalls_full import FullSystemCalls
-from generator.elements import Statement, Comment
+from .syscall_full import FullSystemCalls
+from .elements import Statement, Comment
 from generator.tools import unwrap_seq
-from generator.graph.AtomicBasicBlock import E,S
-from generator.graph.SystemSemantic import SystemState
+from generator.analysis.AtomicBasicBlock import E,S
+from generator.analysis.SystemSemantic import SystemState
 
 
 class SpecializedSystemCalls(FullSystemCalls):
     def __init__(self, global_abb_info):
-        FullSystemCalls.__init__(self)
+        super(SpecializedSystemCalls).__init__(self)
         self.global_abb_info = global_abb_info
 
     def Comment(self, kernelspace, comment, *args):
diff --git a/generator/elements/__init__.py b/generator/elements/__init__.py
deleted file mode 100644
index 06a14ea2b9c760533b967c054aa2dcc27e869200..0000000000000000000000000000000000000000
--- a/generator/elements/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from generator.elements.SourceFile import SourceFile
-from generator.elements.FunctionManager import Function, FunctionManager, FunctionDeclaration, \
-    FunctionDefinitionBlock
-from generator.elements.IncludeManager import Include, IncludeManager
-from generator.elements.DataObjectManager import DataObject, DataObjectArray
-from generator.elements.SourceElement import *
-from generator.elements.template import CodeTemplate
-
-assert __name__ == "generator.elements"
diff --git a/generator/graph/__init__.py b/generator/graph/__init__.py
deleted file mode 100644
index 908eb21116d1ab61834484ea9ff26024dfa4156c..0000000000000000000000000000000000000000
--- a/generator/graph/__init__.py
+++ /dev/null
@@ -1,31 +0,0 @@
-__doc__ = """The graph module abstracts from all kind of Tasks, SubTasks,
-AtomicBasicBlocks and BasicBlocks, that make up an System."""
-
-assert __name__ == 'generator.graph'
-
-
-from generator.graph.AddFunctionCalls import AddFunctionCalls
-from generator.graph.Analysis import *
-from generator.graph.AtomicBasicBlock import AtomicBasicBlock
-from generator.graph.ABBMergePass import ABBMergePass
-from generator.graph.ConstructGlobalCFG import ConstructGlobalCFG
-from generator.graph.DynamicPriorityAnalysis import DynamicPriorityAnalysis
-from generator.graph.Function import Function
-from generator.graph.GlobalControlFlowMetric import GlobalControlFlowMetric
-from generator.graph.InterruptControlAnalysis import InterruptControlAnalysis
-from generator.graph.PrioritySpreadingPass import PrioritySpreadingPass
-from generator.graph.Resource import Resource
-from generator.graph.Sporadic import Alarm
-from generator.graph.Subtask import Subtask
-from generator.graph.SymbolicSystemExecution import SymbolicSystemExecution, StateTransition, SavedStateTransition
-from generator.graph.SystemGraph import SystemGraph
-from generator.graph.SystemSemantic import *
-from generator.graph.SystemStateFlow import *
-from generator.graph.GenerateAssertions import *
-from generator.graph.DominanceAnalysis import *
-from generator.graph.FiniteStateMachineBuilder import *
-from generator.graph.CFGRegions import CFGRegions
-
-
-from generator.graph.Task import Task
-from generator.graph.common import GraphObject
diff --git a/generator/main.py b/generator/main.py
index f4209ed933379820d5bc6aa57479e8601bb40099..8122dd5d71dbdac20595f49c42323253afa9a8bf 100755
--- a/generator/main.py
+++ b/generator/main.py
@@ -44,8 +44,9 @@ if __name__ == "__main__":
     sys.path.insert(0, os.path.abspath(os.path.join(source_dir, "..")))
 
     from generator import LLVMPYAnalysis, Generator, OILSystemDescription
-    from generator.rules import *
-    from generator.graph import *
+    from generator.analysis import *
+    from generator.transform import *
+    from generator.coder import *
     from generator.tools import panic, wrap_typecheck_functions
 
     # Install the typechecking
@@ -186,12 +187,12 @@ if __name__ == "__main__":
         panic("Unknown --arch=%s", options.arch)
 
     if options.unencoded:
-        os_rules = UnencodedSystem()
+        os_rules = UnencodedOS()
     else:
-        os_rules = EncodedSystem()
+        os_rules = EncodedOS()
 
     assert options.systemcalls in ("full", "specialized", "fsm")
-        
+
     if options.systemcalls == "specialized":
         # Only when we want to specialize the system calls, run the
         # System-Level analyses
diff --git a/generator/rules/__init__.py b/generator/rules/__init__.py
deleted file mode 100644
index bbd0cfe79ea601864e01647afe37592b90417f6b..0000000000000000000000000000000000000000
--- a/generator/rules/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-assert __name__ == "generator.rules"
-
-from generator.rules.base import BaseRules
-from generator.rules.simple import SimpleSystem
-from generator.rules.encoded import EncodedSystem, SignatureGenerator
-from generator.rules.unencoded import UnencodedSystem
-from generator.rules.syscalls_full import FullSystemCalls
-from generator.rules.syscalls_specialized import SpecializedSystemCalls
-from generator.rules.syscalls_fsm import FSMSystemCalls
-from generator.rules.x86 import X86Arch
-from generator.rules.arm import ARMArch
-from generator.rules.posix import PosixArch
diff --git a/generator/rules/fsm_kernel.py b/generator/rules/fsm_kernel.py
deleted file mode 100644
index d147e954d6c2234e3833f6dd82b22537c036bf75..0000000000000000000000000000000000000000
--- a/generator/rules/fsm_kernel.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from generator.rules.simple import SimpleSystem, AlarmTemplate
-from generator.elements import CodeTemplate, Include, VariableDefinition, \
-    Block, Statement, Comment, Function, Hook, DataObject
-from generator.graph.AtomicBasicBlock import S, AtomicBasicBlock
-from generator.graph.Resource import Resource
-from generator.graph.Subtask import Subtask
-from generator.graph.Function import Function
-
-
-class FSMSystem(SimpleSystem):
diff --git a/generator/graph/CFGRegions.py b/generator/transform/CFGRegions.py
similarity index 97%
rename from generator/graph/CFGRegions.py
rename to generator/transform/CFGRegions.py
index 46cebe9b19c79e003ce852a6a00e8e34bb7fa6d2..408096fabf409be3f6e015ba91ee441c1e03bfd8 100644
--- a/generator/graph/CFGRegions.py
+++ b/generator/transform/CFGRegions.py
@@ -1,6 +1,6 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.AtomicBasicBlock import E, S
-from generator.elements import DataObject, Include
+from generator.analysis.Analysis import Analysis
+from generator.analysis.AtomicBasicBlock import E, S
+from generator.coder.elements import DataObject, Include
 import logging
 
 class CFGRegions(Analysis):
diff --git a/generator/graph/FiniteStateMachineBuilder.py b/generator/transform/FiniteStateMachineBuilder.py
similarity index 99%
rename from generator/graph/FiniteStateMachineBuilder.py
rename to generator/transform/FiniteStateMachineBuilder.py
index 5a8a34a31b1bc197c262c7a55dacfdda7f27995e..45779263a32258755b5356167c4349abf5373a37 100644
--- a/generator/graph/FiniteStateMachineBuilder.py
+++ b/generator/transform/FiniteStateMachineBuilder.py
@@ -1,6 +1,5 @@
-from generator.graph.common import *
-from generator.graph.Analysis import *
-from generator.graph import SymbolicSystemExecution, SavedStateTransition
+from generator.analysis.common import *
+from generator.analysis import Analysis, SavedStateTransition, S, E
 from generator.tools import pairwise
 from types import SimpleNamespace
 from collections import namedtuple, defaultdict
diff --git a/generator/graph/GenerateAssertions.py b/generator/transform/GenerateAssertions.py
similarity index 98%
rename from generator/graph/GenerateAssertions.py
rename to generator/transform/GenerateAssertions.py
index 513be6b9e6b2c19662ac9911f7b374c61f7552db..f044721a6f7e4b8f451dc646a17ae7d0e9809ba1 100644
--- a/generator/graph/GenerateAssertions.py
+++ b/generator/transform/GenerateAssertions.py
@@ -1,5 +1,4 @@
-from generator.graph.Analysis import Analysis
-from generator.graph.AtomicBasicBlock import E
+from generator.analysis import Analysis, E
 from generator.tools import Enum
 import logging
 
@@ -11,7 +10,6 @@ class AssertionType(Enum):
 
     EventsCheck = 4
 
-
 class Assertion:
     def __init__(self, _type, _arguments, prio = 0):
         self.Type = _type
@@ -40,7 +38,6 @@ class Assertion:
         return self.arguments
 
 
-
 class GenerateAssertionsPass(Analysis):
     """This pass generates assertions that must hold before a system call
        and after a systemcall."""
diff --git a/generator/transform/__init__.py b/generator/transform/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f9670d9f91fc0d055810eb9138fb900447e00751
--- /dev/null
+++ b/generator/transform/__init__.py
@@ -0,0 +1,5 @@
+assert __name__ == "generator.transform"
+
+from .FiniteStateMachineBuilder import *
+from .CFGRegions import CFGRegions
+from .GenerateAssertions import *
diff --git a/generator/graph/sage_finite_state_machine.py b/generator/transform/sage_finite_state_machine.py
similarity index 100%
rename from generator/graph/sage_finite_state_machine.py
rename to generator/transform/sage_finite_state_machine.py