final commit. Seven test cases. Waiting for code review.