Basic classes
Basic classes, some class and interface refactoring