diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py
index 5819b741731a58df5a133cfc60e2817fd481ee04..671faf3acb0b38f9bf1530b00f1ac50128712436 100644
--- a/flatland/utils/editor.py
+++ b/flatland/utils/editor.py
@@ -134,19 +134,19 @@ class View(object):
 
         # abbreviated description of buttons and the methods they call
         ldButtons = [
-            dict(name="Refresh", method=self.controller.refresh, tip="Redraw only"),
-            dict(name="Clear", method=self.controller.clear, tip="Clear rails and agents"),
-            dict(name="Reset", method=self.controller.reset,
-                 tip="Standard env reset, including regen rail + agents"),
-            dict(name="Rotate Agent", method=self.controller.rotate_agent, tip="Rotate selected agent"),
-            dict(name="Restart Agents", method=self.controller.restartAgents,
-                 tip="Move agents back to start positions"),
-            dict(name="Regenerate", method=self.controller.regenerate,
-                 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),
-            dict(name="Run Steps", method=self.controller.start_run)]
+                dict(name="Refresh", method=self.controller.refresh, tip="Redraw only"),
+                dict(name="Clear", method=self.controller.clear, tip="Clear rails and agents"),
+                dict(name="Reset", method=self.controller.reset,
+                     tip="Standard env reset, including regen rail + agents"),
+                dict(name="Rotate Agent", method=self.controller.rotate_agent, tip="Rotate selected agent"),
+                dict(name="Restart Agents", method=self.controller.restartAgents,
+                     tip="Move agents back to start positions"),
+                dict(name="Regenerate", method=self.controller.regenerate,
+                     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 = []
         for dButton in ldButtons:
@@ -361,7 +361,17 @@ class Controller(object):
 
     def restartAgents(self, event):
         self.log("Restart Agents - nAgents:", self.view.wRegenNAgents.value)
-        self.model.restartAgents()
+        if self.model.init_agents_static is not None:
+            print("Restart Agents ...................")
+            print(self.model.env.agents_static)
+            self.model.env.agents_static = [EnvAgentStatic(d[0], d[1], d[2]) for d in self.model.init_agents_static ]
+            print(self.model.env.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)
 
     def regenerate(self, event):
         method = self.view.wRegenMethod.value
@@ -383,8 +393,6 @@ class Controller(object):
     def step(self, event):
         self.model.step()
 
-    def start_run(self, event):
-        self.model.start_run()
 
     def log(self, *args, **kwargs):
         if self.view is None:
@@ -415,6 +423,7 @@ class EditorModel(object):
         self.set_env(env)
         self.iSelectedAgent = None
         self.player = None
+        self.init_agents_static = None
         self.thread = None
 
     def set_env(self, env):
@@ -641,12 +650,12 @@ class EditorModel(object):
         # if replace_agents:
         #    self.env.agents_handles = range(nAgents)
         self.env.reset(regen_rail=True, replace_agents=replace_agents)
-        self.player = Player(self.env)
+        self.player = None
         self.redraw()
 
     def restartAgents(self):
         self.env.agents = EnvAgent.list_from_static(self.env.agents_static)
-        self.player = Player(self.env)
+        self.player = None
         self.redraw()
 
     def setFilename(self, filename):
@@ -666,7 +675,7 @@ class EditorModel(object):
 
             self.env.restart_agents()
             self.env.reset(False,False)
-
+            self.init_agents_static = None
             self.fix_env()
             self.set_env(self.env)
             self.redraw()
@@ -707,7 +716,7 @@ class EditorModel(object):
         self.env.reset(regen_rail=True)
         self.fix_env()
         self.set_env(self.env)
-        self.player = Player(self.env)
+        self.player = None
         self.view.new_env()
         # self.view.init_canvas() # Can't do init_canvas - need to keep the same canvas widget!
         self.redraw()
@@ -761,21 +770,18 @@ class EditorModel(object):
     def add_target(self, rcCell):
         if self.iSelectedAgent is not None:
             self.env.agents_static[self.iSelectedAgent].target = rcCell
+            self.init_agents_static = None
             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 start_run(self):
-        if self.thread is None:
-            self.thread = threading.Thread(target=self.bg_updater, args=(self.view.wProg_steps,))
-            self.thread.start()
-        else:
-            self.log("thread already present")
 
     def bg_updater(self, wProg_steps):
         try:
diff --git a/notebooks/Editor2.ipynb b/notebooks/Editor2.ipynb
index 023d665c1f41f11a852e2607330a6311bda4c5f6..00250ea80c931d2bbaa1afcb3a3aa1fdebf27c23 100644
--- a/notebooks/Editor2.ipynb
+++ b/notebooks/Editor2.ipynb
@@ -9,18 +9,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 1,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "The autoreload extension is already loaded. To reload it, use:\n",
-      "  %reload_ext autoreload\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "%load_ext autoreload\n",
     "%autoreload 2"
@@ -28,7 +19,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -41,7 +32,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
@@ -63,50 +54,32 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 4,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "cairo installed: OK\n"
+     ]
+    }
+   ],
    "source": [
     "from flatland.utils.editor import EditorMVC, EditorModel, View, Controller"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "<flatland.utils.graphics_pil.PILSVG object at 0x0000020D4CDD2E10> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
+      "<flatland.utils.graphics_pil.PILSVG object at 0x0000021AB01F0198> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
       "<super: <class 'PILSVG'>, <PILSVG object>> <class 'super'>\n",
-      " 0000000000000000 Background_#91D1DD.svg\n",
-      "WE 0000000000000100 Gleis_Deadend.svg\n",
-      "WW EE NN SS 1000010000100001 Gleis_Diamond_Crossing.svg\n",
-      "WW EE 0000010000000001 Gleis_horizontal.svg\n",
-      "EN SW 0000100000010000 Gleis_Kurve_oben_links.svg\n",
-      "WN SE 0000000001001000 Gleis_Kurve_oben_rechts.svg\n",
-      "ES NW 0001001000000000 Gleis_Kurve_unten_links.svg\n",
-      "NE WS 0100000000000010 Gleis_Kurve_unten_rechts.svg\n",
-      "NN SS 1000000000100000 Gleis_vertikal.svg\n",
-      "NN SS EE WW ES NW SE WN 1001011001101001 Weiche_Double_Slip.svg\n",
-      "EE WW EN SW 0000110000010001 Weiche_horizontal_oben_links.svg\n",
-      "EE WW SE WN 0000010001001001 Weiche_horizontal_oben_rechts.svg\n",
-      "EE WW ES NW 0001011000000001 Weiche_horizontal_unten_links.svg\n",
-      "EE WW NE WS 0100010000000011 Weiche_horizontal_unten_rechts.svg\n",
-      "NN SS EE WW NW ES 1001011000100001 Weiche_Single_Slip.svg\n",
-      "NE NW ES WS 0101001000000010 Weiche_Symetrical.svg\n",
-      "NN SS EN SW 1000100000110000 Weiche_vertikal_oben_links.svg\n",
-      "NN SS SE WN 1000000001101000 Weiche_vertikal_oben_rechts.svg\n",
-      "NN SS NW ES 1001001000100000 Weiche_vertikal_unten_links.svg\n",
-      "NN SS NE WS 1100000000100010 Weiche_vertikal_unten_rechts.svg\n",
-      "EW 0000000100000000 Bahnhof_#d50000_Deadend_links.svg\n",
-      "NS 0010000000000000 Bahnhof_#d50000_Deadend_oben.svg\n",
-      "WE 0000000000000100 Bahnhof_#d50000_Deadend_rechts.svg\n",
-      "SN 0000000010000000 Bahnhof_#d50000_Deadend_unten.svg\n",
-      "EE WW 0000010000000001 Bahnhof_#d50000_Gleis_horizontal.svg\n",
-      "NN SS 1000000000100000 Bahnhof_#d50000_Gleis_vertikal.svg\n",
       "Clear rails\n"
      ]
     },
@@ -142,7 +115,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 6,
    "metadata": {
     "scrolled": false
    },
@@ -150,7 +123,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "4c81e4d508834d7f93d104fd2642bc3a",
+       "model_id": "0f3ff6aff8954f3cb369b80b053f9f1a",
        "version_major": 2,
        "version_minor": 0
       },
@@ -162,37 +135,15 @@
      "output_type": "display_data"
     },
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<flatland.utils.graphics_pil.PILSVG object at 0x0000020D4CF49D30> <class 'flatland.utils.graphics_pil.PILSVG'>\n",
-      "<super: <class 'PILSVG'>, <PILSVG object>> <class 'super'>\n",
-      " 0000000000000000 Background_#91D1DD.svg\n",
-      "WE 0000000000000100 Gleis_Deadend.svg\n",
-      "WW EE NN SS 1000010000100001 Gleis_Diamond_Crossing.svg\n",
-      "WW EE 0000010000000001 Gleis_horizontal.svg\n",
-      "EN SW 0000100000010000 Gleis_Kurve_oben_links.svg\n",
-      "WN SE 0000000001001000 Gleis_Kurve_oben_rechts.svg\n",
-      "ES NW 0001001000000000 Gleis_Kurve_unten_links.svg\n",
-      "NE WS 0100000000000010 Gleis_Kurve_unten_rechts.svg\n",
-      "NN SS 1000000000100000 Gleis_vertikal.svg\n",
-      "NN SS EE WW ES NW SE WN 1001011001101001 Weiche_Double_Slip.svg\n",
-      "EE WW EN SW 0000110000010001 Weiche_horizontal_oben_links.svg\n",
-      "EE WW SE WN 0000010001001001 Weiche_horizontal_oben_rechts.svg\n",
-      "EE WW ES NW 0001011000000001 Weiche_horizontal_unten_links.svg\n",
-      "EE WW NE WS 0100010000000011 Weiche_horizontal_unten_rechts.svg\n",
-      "NN SS EE WW NW ES 1001011000100001 Weiche_Single_Slip.svg\n",
-      "NE NW ES WS 0101001000000010 Weiche_Symetrical.svg\n",
-      "NN SS EN SW 1000100000110000 Weiche_vertikal_oben_links.svg\n",
-      "NN SS SE WN 1000000001101000 Weiche_vertikal_oben_rechts.svg\n",
-      "NN SS NW ES 1001001000100000 Weiche_vertikal_unten_links.svg\n",
-      "NN SS NE WS 1100000000100010 Weiche_vertikal_unten_rechts.svg\n",
-      "EW 0000000100000000 Bahnhof_#d50000_Deadend_links.svg\n",
-      "NS 0010000000000000 Bahnhof_#d50000_Deadend_oben.svg\n",
-      "WE 0000000000000100 Bahnhof_#d50000_Deadend_rechts.svg\n",
-      "SN 0000000010000000 Bahnhof_#d50000_Deadend_unten.svg\n",
-      "EE WW 0000010000000001 Bahnhof_#d50000_Gleis_horizontal.svg\n",
-      "NN SS 1000000000100000 Bahnhof_#d50000_Gleis_vertikal.svg\n"
+     "ename": "AttributeError",
+     "evalue": "'EditorModel' object has no attribute 'model'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
+      "\u001b[1;32mc:\\users\\u216993\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\flatland_rl-0.1.1-py3.6.egg\\flatland\\utils\\editor.py\u001b[0m in \u001b[0;36mstep\u001b[1;34m(self, event)\u001b[0m\n\u001b[0;32m    386\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    387\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevent\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 388\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    389\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    390\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mstart_run\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mevent\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;32mc:\\users\\u216993\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\flatland_rl-0.1.1-py3.6.egg\\flatland\\utils\\editor.py\u001b[0m in \u001b[0;36mstep\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    771\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    772\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplayer\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 773\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minit_agents_static\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0magents_static\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    774\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplayer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPlayer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    775\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mregen_rail\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreplace_agents\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;31mAttributeError\u001b[0m: 'EditorModel' object has no attribute 'model'"
      ]
     }
    ],
@@ -202,7 +153,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 7,
    "metadata": {
     "scrolled": false
    },
@@ -210,7 +161,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "83b942888352481995b35116bb2237d9",
+       "model_id": "8df099a612d94e34bc64abd0263ae21f",
        "version_major": 2,
        "version_minor": 0
       },
@@ -229,7 +180,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -238,7 +189,7 @@
        "(0, 0)"
       ]
      },
-     "execution_count": 16,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }