first refactoring
missing files in commit