refactoring
refactor2