diff --git a/.gitignore b/.gitignore
index 15fb17b133b4c707651b8411b4934d2734968688..a003eda10b9827f972a29ecccbe9b67c3cfa7de1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -109,3 +109,4 @@ ENV/
 
 
 images/test/
+test_save.dat
diff --git a/MANIFEST.in b/MANIFEST.in
index 965b2dda7db7c49f68857dc3aea9af37e30a745e..30bf97cf0de32bad7e630a80e2b977eb85d48911 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,6 +3,7 @@ include CONTRIBUTING.rst
 include HISTORY.rst
 include LICENSE
 include README.rst
+include requirements_dev.txt
 
 recursive-include tests *
 recursive-exclude * __pycache__
diff --git a/flatland/envs/observations.py b/flatland/envs/observations.py
index 0fdec364ecc3d8415b27e2101c339d6f49e89022..651d83520ee1f492ea71ba6ddf82cfa5f9093964 100644
--- a/flatland/envs/observations.py
+++ b/flatland/envs/observations.py
@@ -219,8 +219,8 @@ class TreeObsForRailEnv(ObservationBuilder):
             if possible_transitions[branch_direction]:
                 new_cell = self._new_position(agent.position, branch_direction)
 
-                branch_observation, branch_visited = self._explore_branch(handle, new_cell, branch_direction, root_observation,
-                                                                   1)
+                branch_observation, branch_visited = \
+                    self._explore_branch(handle, new_cell, branch_direction, root_observation, 1)
                 observation = observation + branch_observation
                 visited = visited.union(branch_visited)
             else:
diff --git a/setup.py b/setup.py
index 96afbe85dc99aa47533936d2a001b9d74717ec58..d14070351559b5e59ed677751b70c20891dbc2f4 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 
 """The setup script."""
-
+import os
 from setuptools import setup, find_packages
 
 with open('README.rst') as readme_file:
@@ -11,11 +11,19 @@ with open('README.rst') as readme_file:
 with open('HISTORY.rst') as history_file:
     history = history_file.read()
 
-requirements = ['Click>=6.0', ]
-
-setup_requirements = ['pytest-runner', ]
-
-test_requirements = ['pytest', ]
+# Gather requirements from requirements_dev.txt
+# TODO : We could potentially split up the test/dev dependencies later
+install_reqs = []
+requirements_path = 'requirements_dev.txt'
+with open(requirements_path, 'r') as f:
+    install_reqs += [
+        s for s in [
+            line.strip(' \n') for line in f
+        ] if not s.startswith('#') and s != ''
+    ]
+requirements = install_reqs
+setup_requirements = install_reqs
+test_requirements = install_reqs
 
 setup(
     author="S.P. Mohanty",
diff --git a/tox.ini b/tox.ini
index 5a97b7e1c5b2f09db2cca8da5e1cf9db002f26f1..1c9a170724b2ed111eac11061ba598eea52a571c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -23,7 +23,10 @@ commands = make docs
 [testenv:coverage]
 basepython = python
 whitelist_externals = make
-commands = make coverage
+commands = 
+    pip install -U pip
+    pip install -r requirements_dev.txt
+    make coverage
 
 [testenv]
 setenv =
@@ -35,6 +38,7 @@ deps =
 ;     -r{toxinidir}/requirements.txt
 commands =
     pip install -U pip
+    pip install -r requirements_dev.txt
     py.test --basetemp={envtmpdir}