refactoring
finished refactoring