diff --git a/examples/demo.py b/examples/demo.py
index b2da6ccbc09e2ce61663cca8285584765f33cb34..6c02f3552da2fe64f46a251bb17c7ac95709967a 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -138,9 +138,12 @@ class Demo:
 
         for step in range(max_nbr_of_steps):
             # Action
-            for a in range(self.env.get_num_agents()):
-                action = 2  # np.random.choice(self.action_size) #self.agent.act(agent_obs[a])
-                action_dict.update({a: action})
+            for iAgent in range(self.env.get_num_agents()):
+                action = 2
+                agent = self.env.agents.copy()[iAgent]
+                if not self.env.check_action(agent, action)[1]:
+                   action = np.random.choice(self.action_size)
+                action_dict.update({iAgent: action})
 
             self.renderer.renderEnv(show=True, action_dict=action_dict)
 
@@ -172,7 +175,6 @@ if False:
     demo_002.run_demo()
     demo_002 = None
 
-
 demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl'))
 demo_flatland_000.renderer.resize()
 demo_flatland_000.run_demo(1800)
diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py
index 05f81e43be3f33bfdfc81911d6cf6272bfba2d7e..a5f18f3f723c703339092eb8875010d2e82eac63 100644
--- a/flatland/envs/agent_utils.py
+++ b/flatland/envs/agent_utils.py
@@ -4,7 +4,6 @@ from itertools import starmap
 import numpy as np
 # from flatland.envs.rail_env import RailEnv
 
-
 @attrs
 class EnvDescription(object):
     n_agents = attrib()
diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py
index d4facaf5c681f4d5187be03aca69618b1f8cd466..e56395f4220ee7b7639a7fa79df1ce88796132c5 100644
--- a/flatland/envs/rail_env.py
+++ b/flatland/envs/rail_env.py
@@ -4,14 +4,18 @@ Definition of the RailEnv environment and related level-generation functions.
 Generator functions are functions that take width, height and num_resets as arguments and return
 a GridTransitionMap object.
 """
-import numpy as np
+### TODO  _ this is a global method --> utils or remove later
+from inspect import currentframe
+
 import msgpack
+import numpy as np
 
 from flatland.core.env import Environment
-from flatland.envs.observations import TreeObsForRailEnv
-from flatland.envs.generators import random_rail_generator
-from flatland.envs.env_utils import get_new_position
 from flatland.envs.agent_utils import EnvAgentStatic, EnvAgent
+from flatland.envs.env_utils import get_new_position
+from flatland.envs.generators import random_rail_generator
+from flatland.envs.observations import TreeObsForRailEnv
+
 
 # from flatland.core.transitions import Grid8Transitions, RailEnvTransitions
 # from flatland.core.transition_map import GridTransitionMap
@@ -111,7 +115,7 @@ class RailEnv(Environment):
         self.agents_static = [None] * number_of_agents  # static agent information
         self.num_resets = 0
         self.reset()
-        self.num_resets = 0   # yes, set it to zero again!
+        self.num_resets = 0  # yes, set it to zero again!
 
         self.valid_positions = None
 
@@ -197,6 +201,8 @@ class RailEnv(Environment):
                 continue
 
             if self.dones[iAgent]:  # this agent has already completed...
+                print("rail_env.py @", currentframe().f_back.f_lineno, " agent ", iAgent,
+                      "has already completed : why action will not be executed!!!!? ADRIAN")
                 continue
             action = action_dict[iAgent]