refact

do some refact