refactoring #4
refactoring #5