refactoring
init