- refactor common interfaces to define more generic interface layer
- add missing files