1. bug fix
2. add tests