diff --git a/env-data/tests/__init__.py b/env-data/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/examples/demo.py b/examples/demo.py
index db28717c2f348489a774a2be5a4f5697d9000213..a1ddbf6293f0e81e48f423bdb7e16e753808b9bc 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -122,46 +122,55 @@ class Demo:
 
         self.renderer.close_window()
 
+    @staticmethod
+    def run_generate_random_scenario():
+        demo_000 = Demo(Scenario_Generator.generate_random_scenario())
+        demo_000.run_demo()
+
+    @staticmethod
+    def run_generate_complex_scenario():
+        demo_001 = Demo(Scenario_Generator.generate_complex_scenario())
+        demo_001.run_demo()
+
+    @staticmethod
+    def run_example_network_000():
+        demo_000 = Demo(Scenario_Generator.load_scenario('example_network_000.pkl'))
+        demo_000.run_demo()
+
+    @staticmethod
+    def run_example_network_001():
+        demo_001 = Demo(Scenario_Generator.load_scenario('example_network_001.pkl'))
+        demo_001.run_demo()
+
+    @staticmethod
+    def run_example_network_002():
+        demo_002 = Demo(Scenario_Generator.load_scenario('example_network_002.pkl'))
+        demo_002.run_demo()
+
+    @staticmethod
+    def run_example_network_003():
+        demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_network_003.pkl'))
+        demo_flatland_000.renderer.resize()
+        demo_flatland_000.set_max_framerate(5)
+        demo_flatland_000.run_demo(30)
+
+    @staticmethod
+    def run_example_flatland_000():
+        demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_000.pkl'))
+        demo_flatland_000.renderer.resize()
+        demo_flatland_000.run_demo(60)
+
+    @staticmethod
+    def run_example_flatland_001():
+        demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_001.pkl'))
+        demo_flatland_000.renderer.resize()
+        demo_flatland_000.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp'))
+        demo_flatland_000.run_demo(60)
+
+    @staticmethod
+    def run_complex_scene():
+        demo_001 = Demo(Scenario_Generator.load_scenario('complex_scene.pkl'))
+        demo_001.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp'))
+        demo_001.run_demo(360)
 
-if False:
-    demo_000 = Demo(Scenario_Generator.generate_random_scenario())
-    demo_000.run_demo()
-    demo_000 = None
-
-    demo_001 = Demo(Scenario_Generator.generate_complex_scenario())
-    demo_001.run_demo()
-    demo_001 = None
-
-    demo_000 = Demo(Scenario_Generator.load_scenario('example_network_000.pkl'))
-    demo_000.run_demo()
-    demo_000 = None
-
-    demo_001 = Demo(Scenario_Generator.load_scenario('example_network_001.pkl'))
-    demo_001.run_demo()
-    demo_001 = None
-
-    demo_002 = Demo(Scenario_Generator.load_scenario('example_network_002.pkl'))
-    demo_002.run_demo()
-    demo_002 = None
-
-    demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_000.pkl'))
-    demo_flatland_000.renderer.resize()
-    demo_flatland_000.run_demo(60)
-    demo_flatland_000 = None
-
-    demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_network_003.pkl'))
-    demo_flatland_000.renderer.resize()
-    demo_flatland_000.set_max_framerate(5)
-    demo_flatland_000.run_demo(30)
-    demo_flatland_000 = None
-
-    demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_001.pkl'))
-    demo_flatland_000.renderer.resize()
-    demo_flatland_000.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp'))
-    demo_flatland_000.run_demo(60)
-    demo_flatland_000 = None
-
-demo_001 = Demo(Scenario_Generator.load_scenario('complex_scene.pkl'))
-demo_001.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp'))
-demo_001.run_demo(360)
-demo_001 = None
+Demo.run_complex_scene()
diff --git a/requirements_dev.txt b/requirements_dev.txt
index 9eb74f2b1371c921b4d13718cc7a885c8c8e1d4b..6f8589b52167a0988a8c5531779c595997fc8beb 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -16,4 +16,4 @@ svgutils==0.3.1
 screeninfo==0.3.1
 pyarrow==0.13.0
 importlib-metadata==0.17
-importlib-resources==1.0.2
+importlib_resources==1.0.2
diff --git a/tests/test_env_edit.py b/tests/test_env_edit.py
index 0707cf3ce51c77d9918e25e5b3858a46574b321e..ec9dc07158637a9beec12c456e6604aad8e231c8 100644
--- a/tests/test_env_edit.py
+++ b/tests/test_env_edit.py
@@ -4,7 +4,7 @@ from flatland.envs.rail_env import RailEnv
 
 def test_load_env():
     env = RailEnv(10, 10)
-    env.load("env-data/tests/test-10x10.mpk")
+    env.load_resource('env-data.tests', 'test-10x10.mpk')
 
     agent_static = EnvAgentStatic((0, 0), 2, (5, 5), False)
     env.add_agent_static(agent_static)
diff --git a/tests/test_integration_test.py b/tests/test_integration_test.py
index 8b6db60f991a523a064b8b5f73e07fbda1d768cd..808af10157298cc3630e7ba7980481b0eb17e833 100644
--- a/tests/test_integration_test.py
+++ b/tests/test_integration_test.py
@@ -1,138 +1,49 @@
-import os
 import random
-import time
 
 import numpy as np
 
-from flatland.envs.generators import complex_rail_generator
-from flatland.envs.generators import random_rail_generator
-from flatland.envs.rail_env import RailEnv
-from flatland.utils.rendertools import RenderTool
+from examples.demo import Demo
 
 # ensure that every demo run behave constantly equal
 random.seed(1)
 np.random.seed(1)
 
 
-class Scenario_Generator:
-    @staticmethod
-    def generate_random_scenario(number_of_agents=3):
-        # Example generate a rail given a manual specification,
-        # a map of tuples (cell_type, rotation)
-        transition_probability = [15,  # empty cell - Case 0
-                                  5,  # Case 1 - straight
-                                  5,  # Case 2 - simple switch
-                                  1,  # Case 3 - diamond crossing
-                                  1,  # Case 4 - single slip
-                                  1,  # Case 5 - double slip
-                                  1,  # Case 6 - symmetrical
-                                  0,  # Case 7 - dead end
-                                  1,  # Case 1b (8)  - simple turn right
-                                  1,  # Case 1c (9)  - simple turn left
-                                  1]  # Case 2b (10) - simple switch mirrored
-
-        # Example generate a random rail
-
-        env = RailEnv(width=20,
-                      height=20,
-                      rail_generator=random_rail_generator(cell_type_relative_proportion=transition_probability),
-                      number_of_agents=number_of_agents)
-
-        return env
-
-    @staticmethod
-    def generate_complex_scenario(number_of_agents=3):
-        env = RailEnv(width=15,
-                      height=15,
-                      rail_generator=complex_rail_generator(nr_start_goal=6, nr_extra=30, min_dist=10,
-                                                            max_dist=99999, seed=0),
-                      number_of_agents=number_of_agents)
-
-        return env
-
-    @staticmethod
-    def load_scenario(filename, number_of_agents=3):
-        env = RailEnv(width=2 * (1 + number_of_agents),
-                      height=1 + number_of_agents)
-
-        """
-        env = RailEnv(width=20,
-                      height=20,
-                      rail_generator=rail_from_list_of_saved_GridTransitionMap_generator(
-                          [filename]),
-                      number_of_agents=number_of_agents)
-        """
-        if os.path.exists(filename):
-            print("load file: ", filename)
-            env.load(filename)
-            env.reset(False, False)
-        else:
-            print("File does not exist:", filename, " Working directory: ", os.getcwd())
-
-        return env
-
-
-class Demo:
-
-    def __init__(self, env):
-        self.env = env
-        self.create_renderer()
-        self.action_size = 4
-        self.max_frame_rate = 60
-        self.record_frames = None
-
-    def set_record_frames(self, record_frames):
-        self.record_frames = record_frames
-
-    def create_renderer(self):
-        self.renderer = RenderTool(self.env, gl="PILSVG")
-        handle = self.env.get_agent_handles()
-        return handle
-
-    def set_max_framerate(self, max_frame_rate):
-        self.max_frame_rate = max_frame_rate
+def test_flatland_000():
+    Demo.run_example_flatland_000()
+    # TODO test assertions
 
-    def run_demo(self, max_nbr_of_steps=30):
-        action_dict = dict()
 
-        # Reset environment
-        _ = self.env.reset(False, False)
+def test_flatland_001():
+    Demo.run_example_flatland_001()
+    # TODO test assertions
 
-        time.sleep(0.0001)  # to satisfy lint...
 
-        for step in range(max_nbr_of_steps):
+def test_network_000():
+    Demo.run_example_network_000()
+    # TODO test assertions
 
-            # Action
-            for iAgent in range(self.env.get_num_agents()):
-                # allways walk straight forward
-                action = 2
 
-                # update the actions
-                action_dict.update({iAgent: action})
+def test_network_001():
+    Demo.run_example_network_001()
+    # TODO test assertions
 
-            # environment step (apply the actions to all agents)
-            next_obs, all_rewards, done, _ = self.env.step(action_dict)
 
-            # render
-            self.renderer.renderEnv(show=True, show_observations=False)
-
-            if done['__all__']:
-                break
+def test_network_002():
+    Demo.run_example_network_002()
+    # TODO test assertions
 
-            if self.record_frames is not None:
-                self.renderer.gl.saveImage(self.record_frames.format(step))
 
-        self.renderer.close_window()
+def test_complex_scene():
+    Demo.run_complex_scene()
+    # TODO test assertions
 
 
-def test_temp_pk1():
-    demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/temp.pkl'))
-    demo_001.run_demo(10)
+def test_generate_complex_scenario():
+    Demo.run_generate_complex_scenario()
     # TODO test assertions
 
 
-def test_flatland_001_pkl():
-    demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
-    demo_001.set_record_frames('./rendering/frame_{:04d}.bmp')
-    demo_001.run_demo(60)
+def test_generate_random_scenario():
+    Demo.run_generate_random_scenario()
     # TODO test assertions