Added a separate project for tests and reworked the function hierarchy a bit