add doc
refactor