package Tail; use Moose; sub wag { ... } package Dog; use Moose; has tail => ( is => 'ro', isa => 'Tail', default => sub { Tail->new }, handles => { 'wag_tail' => 'wag' } ); ## later in your code ... my $fido = Dog->new; $fido->wag_tail; # is equivalent too $fido->tail->wag;