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 33bf7bc358694f62068dab8b9c341047ea051a1f..749e5e01aa94e8ddb59d33d5787e3bd55d05f9eb 100644
--- a/flatland/envs/rail_env.py
+++ b/flatland/envs/rail_env.py
@@ -329,6 +329,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,