some comments of what do be done next, changed interface and added a test case