some merges with david code (why it wasn't merged automatically?)
class names and interface refactoring. Dry run with some success