refactoring first part
- refactoring finished