refac in progress