restructure project for separate Core and Tests
split types into separate files