Added tests. Fixed few minor issues found while writing tests.

Added tests. Fixed few minor issues found while writing tests.
Fixes #5 
Probably if we consider those attrs as `protected` not `private` - it makes sense.  I'm not sure if we use the naming convention:  `_var_name` - protected and `__var_name` - private.  But probably we should start to.