More refactor
More clean up
Add mock setup
Add mock tests to api interfaces
Add more implementation