Split tests into modules, added a lot of stuff