Feature first order reform

Still working on improving the tests, but apart from that, the code is ready to be reviewed!