refact all