redo project structure and add unit tests

Signed-off-by: Sietse van der Molen <sietse@vdmolen.eu>