refactored: files structure, classes, some of the classes splitted, some are added etc.