first refactoring

split big class into smaller ones