package AbstractWidget; use Moose; use MooseX::ABC; requires 'get_widget_type'; package LessAbstractWidget; use Moose; use MooseX::ABC; extends 'AbstractWidget'; package SnazzyWidget; use Moose; extends 'LessAbstractWidget'; sub get_widget_type{ "BasicWidget" } # BOOM: # AbstractWidget requires LessAbstractWidget to implement get_widget_type