diff --git a/examples/demo.py b/examples/demo.py
index 40ebeb4c776e5ac245328eff76f2cde5339a1cd8..783df56e8b8b534450031cc9e40a2bd30ef11ebd 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -96,6 +96,7 @@ class Demo:
             for iAgent in range(self.env.get_num_agents()):
                 # allways walk straight forward
                 action = 2
+                action = np.random.choice([0, 1, 2, 3], 1, p=[0.0, 0.5, 0.5, 0.0])[0]
 
                 # update the actions
                 action_dict.update({iAgent: action})
diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py
index 081cf02c804f5a8d64542b2cfdc75c664bc479a9..6137a07ff83f296b766d6d5bac0dd67fb36d966a 100644
--- a/flatland/utils/editor.py
+++ b/flatland/utils/editor.py
@@ -9,7 +9,6 @@ from ipywidgets import IntSlider, VBox, HBox, Checkbox, Output, Text, RadioButto
 from numpy import array
 
 import flatland.utils.rendertools as rt
-from examples.play_model import Player
 from flatland.envs.agent_utils import EnvAgent, EnvAgentStatic
 from flatland.envs.env_utils import mirror
 from flatland.envs.generators import complex_rail_generator, empty_rail_generator
@@ -75,10 +74,6 @@ class View(object):
         self.wDebug_move = Checkbox(description="Debug mouse move")
         self.wDebug_move.observe(self.controller.setDebugMove, names="value")
 
-        # Checkbox for rendering observations
-        self.wShowObs = Checkbox(description="Show Agent Observations")
-        self.wShowObs.observe(self.controller.refresh, names="value")
-
         # This is like a cell widget where loggin goes
         self.wOutput = Output()
 
@@ -109,13 +104,9 @@ class View(object):
         for i, title in enumerate(tab_contents):
             self.wTab.set_title(i, title)
         self.wTab.children = [
-            VBox([self.wRegenSizeWidth, self.wRegenSizeHeight, self.wRegenNAgents]),
-            VBox([self.wShowObs]),
+            VBox([self.wRegenSizeWidth, self.wRegenSizeHeight, self.wRegenNAgents])
         ]
 
-        # Progress bar intended for stepping in the background (not yet working)
-        self.wProg_steps = ipywidgets.IntProgress(value=0, min=0, max=20, step=1, description="Step")
-
         # abbreviated description of buttons and the methods they call
         ldButtons = [
             dict(name="Refresh", method=self.controller.refresh, tip="Redraw only"),
@@ -128,7 +119,6 @@ class View(object):
                  tip="Regenerate the rails using the method selected below"),
             dict(name="Load", method=self.controller.load),
             dict(name="Save", method=self.controller.save),
-            dict(name="Step", method=self.controller.step)
         ]
 
         self.lwButtons = []
@@ -166,7 +156,7 @@ class View(object):
 
             self.oRT.renderEnv(spacing=False, arrows=False, sRailColor="gray", agents=True,
                                show=False, iSelectedAgent=self.model.iSelectedAgent,
-                               show_observations=self.show_observations())
+                               show_observations=False)
             img = self.oRT.getImage()
 
             self.wImage.data = img
@@ -201,13 +191,6 @@ class View(object):
         else:
             print(*args, **kwargs)
 
-    def show_observations(self):
-        ''' returns whether to show observations - boolean '''
-        if self.wShowObs.value:
-            return True
-        else:
-            return False
-
 
 class Controller(object):
     """
@@ -360,7 +343,6 @@ class Controller(object):
                                             self.model.init_agents_static]
             self.model.env.agents = None
             self.model.init_agents_static = None
-            self.player = None
             self.model.env.restart_agents()
             self.model.env.reset(False, False)
         self.refresh(event)
@@ -413,7 +395,6 @@ class EditorModel(object):
         self.env_filename = "temp.pkl"
         self.set_env(env)
         self.iSelectedAgent = None
-        self.player = None
         self.init_agents_static = None
         self.thread = None
 
@@ -616,7 +597,6 @@ class EditorModel(object):
         self.env.rail.grid[:, :] = 0
         self.env.agents = []
         self.env.agents_static = []
-        self.player = None
 
         self.redraw()
 
@@ -631,7 +611,6 @@ class EditorModel(object):
 
     def restartAgents(self):
         self.env.agents = EnvAgent.list_from_static(self.env.agents_static)
-        self.player = None
         self.redraw()
 
     def setFilename(self, filename):
@@ -650,6 +629,7 @@ class EditorModel(object):
             self.env.restart_agents()
             self.env.reset(False, False)
             self.init_agents_static = None
+            self.view.oRT.update_background()
             self.fix_env()
             self.set_env(self.env)
             self.redraw()
@@ -688,7 +668,6 @@ class EditorModel(object):
         self.env.reset(regen_rail=True)
         self.fix_env()
         self.set_env(self.env)
-        self.player = None
         self.view.new_env()
         self.redraw()
 
@@ -721,7 +700,7 @@ class EditorModel(object):
                 # Create a new agent and select it.
                 agent_static = EnvAgentStatic(rcCell, 0, rcCell, moving=False)
                 self.iSelectedAgent = self.env.add_agent_static(agent_static)
-                self.player = None  # will need to start a new player
+                self.view.oRT.update_background()
             else:
                 # Move the selected agent to this cell
                 agent_static = self.env.agents_static[self.iSelectedAgent]
@@ -745,26 +724,9 @@ class EditorModel(object):
         if self.iSelectedAgent is not None:
             self.env.agents_static[self.iSelectedAgent].target = rcCell
             self.init_agents_static = None
+            self.view.oRT.update_background()
             self.redraw()
 
-    def step(self):
-        if self.init_agents_static is None:
-            self.init_agents_static = [agent.to_list() for agent in self.env.agents_static]
-        if self.player is None:
-            self.player = Player(self.env)
-            self.env.reset(regen_rail=False, replace_agents=False)
-        self.player.step()
-        self.redraw()
-
-    def bg_updater(self, wProg_steps):
-        try:
-            for i in range(20):
-                self.step()
-                time.sleep(0.2)
-                wProg_steps.value = i + 1  # indicate progress on bar
-        finally:
-            self.thread = None
-
     def fix_env(self):
         self.env.width = self.env.rail.width
         self.env.height = self.env.rail.height
diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py
index 23f8b8790a44be3d4835a1a9594effaa1ee33164..f3a27c59c9701d23084c232cc842f79534e4401c 100644
--- a/flatland/utils/graphics_pil.py
+++ b/flatland/utils/graphics_pil.py
@@ -358,17 +358,17 @@ class PILSVG(PILGL):
             "NN SS": "Bahnhof_#d50000_Gleis_vertikal.svg"}
 
         # Dict of rail cell images indexed by binary transitions
-        self.dPilRail = self.loadSVGs(dRailFiles, rotate=True, backgroundImage="Background_rail.svg",
+        dPilRailFiles = self.loadSVGs(dRailFiles, rotate=True, backgroundImage="Background_rail.svg",
                                       whitefilter="Background_white_filter.svg")
 
         # Load the target files (which have rails and transitions of their own)
         # They are indexed by (binTrans, iAgent), ie a tuple of the binary transition and the agent index
-        dPilRail2 = self.loadSVGs(dTargetFiles, rotate=False, agent_colors=self.ltAgentColors,
-                                  backgroundImage="Background_rail.svg",
-                                  whitefilter="Background_white_filter.svg")
+        dPilTargetFiles = self.loadSVGs(dTargetFiles, rotate=False, agent_colors=self.ltAgentColors,
+                                        backgroundImage="Background_rail.svg",
+                                        whitefilter="Background_white_filter.svg")
         # Merge them with the regular rails.
         # https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression
-        self.dPilRail = {**self.dPilRail, **dPilRail2}
+        self.dPilRail = {**dPilRailFiles, **dPilTargetFiles}
 
     def loadSVGs(self, dDirFile, rotate=False, agent_colors=False, backgroundImage=None, whitefilter=None):
         dPil = {}
@@ -445,13 +445,13 @@ class PILSVG(PILGL):
 
                 self.drawImageRC(pilTrack, (row, col))
             else:
-                print("Illegal rail:", row, col, format(binTrans, "#018b")[2:])
+                print("Illegal rail:", row, col, format(binTrans, "#018b")[2:], binTrans)
         else:
             if (binTrans, iTarget) in self.dPilRail:
                 pilTrack = self.dPilRail[(binTrans, iTarget)]
                 self.drawImageRC(pilTrack, (row, col))
             else:
-                print("Illegal target rail:", row, col, format(binTrans, "#018b")[2:])
+                print("Illegal target rail:", row, col, format(binTrans, "#018b")[2:], (binTrans, iTarget))
 
             if isSelected:
                 svgBG = self.pilFromSvgFile("svg", "Selected_Target.svg")
diff --git a/notebooks/Scene_Editor.ipynb b/notebooks/Scene_Editor.ipynb
index 444c1ebf023a06294b04f58a4f180a46608f6d96..cf4deebb5d8689b7f593a9594c77cda33b8deab0 100644
--- a/notebooks/Scene_Editor.ipynb
+++ b/notebooks/Scene_Editor.ipynb
@@ -11,29 +11,6 @@
    "cell_type": "code",
    "execution_count": 1,
    "metadata": {},
-   "outputs": [],
-   "source": [
-    "%load_ext autoreload\n",
-    "%autoreload 2"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "from numpy import array\n",
-    "import ipywidgets\n",
-    "import IPython\n",
-    "from IPython.core.display import display, HTML"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -49,24 +26,17 @@
     }
    ],
    "source": [
+    "from IPython.core.display import display, HTML\n",
     "display(HTML(\"<style>.container { width:95% !important; }</style>\"))"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from flatland.utils.editor import EditorMVC"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
+    "from flatland.utils.editor import EditorMVC\n",
     "mvc = EditorMVC(sGL=\"PILSVG\" ) "
    ]
   },
@@ -92,7 +62,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 3,
    "metadata": {
     "scrolled": false
    },
@@ -100,7 +70,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "140f16d2c9a643e39d68c6421e50b9bd",
+       "model_id": "a1b27bcebefc4ddebb5bde8297d52d9e",
        "version_major": 2,
        "version_minor": 0
       },
diff --git a/rendering/make_video_ffmpeg.txt b/rendering/make_video_ffmpeg.txt
index 198b660db97c711adbb10bb082f7dd62132bac08..982b5066d7b243a766d0fa6ce9955c72c075126f 100644
--- a/rendering/make_video_ffmpeg.txt
+++ b/rendering/make_video_ffmpeg.txt
@@ -1,4 +1,6 @@
 
 ffmpeg -y -framerate 12 -i frame_%04d.bmp -hide_banner -c:v libx264 -pix_fmt yuv420p test.mp4
 
+ffmpeg -i test.mp4 test.gif
+
 pause
\ No newline at end of file
diff --git a/tox.ini b/tox.ini
index 43a02f37343c8a09ea7825e525992842944d420f..61f8b0a9427b8d09e51540c7e047026c56466693 100644
--- a/tox.ini
+++ b/tox.ini
@@ -98,7 +98,9 @@ deps =
 commands =
 ; run tests from subfolder to ensure that resources are accessed via resources and not via relative paths
     sh -c 'mkdir -p {envtmpdir}/6f59bc68108c3895b1828abdd04b9a06'
+    sh -c 'jupyter nbextension install --py --sys-prefix widgetsnbextension'
     sh -c 'jupyter nbextension enable --py --sys-prefix widgetsnbextension'
+    sh -c 'jupyter nbextension install --py --sys-prefix jpy_canvas'
     sh -c 'jupyter nbextension enable --py --sys-prefix jpy_canvas'
 ; https://stackoverflow.com/questions/35545402/how-to-run-an-ipynb-jupyter-notebook-from-terminal/35545463
     sh -c 'ls notebooks/*.ipynb  | xargs -n 1 jupyter nbconvert --to python'