package Siberia::Indent { use Role::Tiny; requires qw(beer); sub back { ... } sub over { ... } 1; } package Siberia::Acme { use Class::Tiny qw(beer); # whatever you need use Role::Tiny::With; with qw(Siberia::Indent); 1; } #!/usr/bin/env perl use strict; use warnings; use Siberia::Acme; use Try::Tiny; use feature qw(say); my $indent = Siberia::Acme->new( { beer => 2 } ); # say $indent->beer; try { $indent->back; } catch { say qq($_); }; try { $indent->over; } catch { say qq($_); }; __END__