more cleanup
- comments
- remove some repeation
- refactored names of interfaces