code refactoring

  1. implement more tests
  • tests for APIs
  1. clean API
  • make unified API for different data types