refactor code organization