even more refractoring