- fiddling with interfaces
- some refactoring