add support for tests and mocks
change to object oriented implementation
slightly more compact
update documentation
bump version