refine many things :)