add new interfaces
add tests and fix bugs
2.1.0