added coverage and complexity analysis
tests are in