further DRYing