Could be DRYer