Bread::Board::Declare package MyApp::Container; use Moose; use Bread::Board::Declare; has dsn => (is => 'ro', isa => 'Str', value => 'dbi:mysql:myapp_db'); has logger => (is => 'ro', isa => 'Logger'); has view => (is => 'ro', isa => 'View', infer => 1); has model => ( is => 'ro', isa => 'Model', infer => 1, dependencies => ['dsn'], block => sub { my $m = Model->connect($_[0]->param('dsn')); $m->set_logger($_[0]->param('logger')); return $m; }, ); has app => (is => 'ro', isa => 'MyApp', infer => 1);