this goes against DRY principles