more refacoring