majore refactoring