package Enemy { use Moo::Role; has wounds => (is => 'ro'); ...; } # Look how tiny these classes are. # Creating lots of classes doesn't have to be painful. package Rat { use Moo; with 'Enemy' } package Cat { use Moo; with 'Enemy' }