more DRY [skip ci]