Slow tests
The current test suite takes too long to run (~20mins). There's a mix of unit test and slower integration style tests. I suggest splitting these up into multiple stages so that fast tests are run together, providing faster feedback on failure.