package Child; # insert usual Moose stuff has context => (is => 'ro', isa => Str, init_arg => '_context', required => 1); sub new_for_parent { my $class = shift; $class->new(@_, _context => 'parent'); } sub new_for_teacher { my $class = shift; $class->new(@_, _context => 'teacher'); }