setting up environment
first basic implementation + test coverage