complete the implementation, with additional tests