refractoring :P