code refactoring
1. implement more tests - tests for APIs 2. clean API - make unified API for different data types
issue