architectural improvements:

* simplifications
* improved consistency
* increased code coverage
* added more info to README