refactor, document