further refractoring