changed a lot of stuff around, restructuring the project and adding a setup, also some tests