start for the refactoring