refact some thing