ok starting to refactoring