consider fixing DRY issues