+ refactor code