sub is_admin { my $self = shift; $self->roles->find({name => 'admin'}) } around groups => sub { my $orig = shift; my $self = shift; return $self->is_admin ? $self->organization->groups(@_) : $self->$orig(@_); };