breaking trough! unifinished refactoring