* refactored internal behaviour,
* added extra tests to check exposed values