code refactoring
implement more tests
tests for APIs
clean API
make unified API for different data types