#2 add tests; provide some fixes; new project structure