refactor, doc