extract partials for less repetition