Structure I

* Added a few test cases
* Changed structure a bit
* Abstract module class added