diff --git a/flatland/envs/agent_utils.py b/flatland/envs/agent_utils.py
index 1f1bc1db065057a5ced1c917c5a24e2decebf2fa..05f81e43be3f33bfdfc81911d6cf6272bfba2d7e 100644
--- a/flatland/envs/agent_utils.py
+++ b/flatland/envs/agent_utils.py
@@ -1,6 +1,7 @@
 
 from attr import attrs, attrib
 from itertools import starmap
+import numpy as np
 # from flatland.envs.rail_env import RailEnv
 
 
@@ -36,7 +37,18 @@ class EnvAgentStatic(object):
         return list(starmap(EnvAgentStatic, zip(positions, directions, targets)))
 
     def to_list(self):
-        return [self.position, self.direction, self.target]
+
+        # I can't find an expression which works on both tuples, lists and ndarrays
+        # which converts them all to a list of native python ints.
+        lPos = self.position
+        if type(lPos) is np.ndarray:
+            lPos = lPos.tolist()
+
+        lTarget = self.target
+        if type(lTarget) is np.ndarray:
+            lTarget = lTarget.tolist()
+
+        return [lPos, int(self.direction), lTarget]
 
 
 @attrs
diff --git a/flatland/envs/rail_env.py b/flatland/envs/rail_env.py
index a5248a8fb3b5a7ee2d433aa12c5daca84753e6e9..de3401a4bd98a1f114f25d629e7e0f13a7c0337c 100644
--- a/flatland/envs/rail_env.py
+++ b/flatland/envs/rail_env.py
@@ -328,6 +328,11 @@ class RailEnv(Environment):
         grid_data = self.rail.grid.tolist()
         agent_static_data = [agent.to_list() for agent in self.agents_static]
         agent_data = [agent.to_list() for agent in self.agents]
+
+        msgpack.packb(grid_data)
+        msgpack.packb(agent_data)
+        msgpack.packb(agent_static_data)
+
         msg_data = {
             "grid": grid_data,
             "agents_static": agent_static_data,