Couldn't this be abstracted to Animal instead of putting it in every Animal extension?