Feature/refactoring

This is the best design!)))