Updates project structure
Fixes bugs and updates test suite
Improves documentation