refactoring
initial