Getter/setter added

- added getter/setter (mutability after initialization)
- cleaned up some mess
- refactors some methods
- cleaned and added some tests

Signed-off-by: Alex Fork <4ounder@gmail.com>