continue to refactor code structure