refact & update doc