refactoring step 0