package MyApp;
use MyFramework;

has logger => (
    is => 'ro', isa => 'Logger',
    default => sub { Logger->new }
);
has model => (
    is => 'ro', isa => 'Model', lazy => 1,
    default => sub { Model->new(logger => $_[0]->logger) },
);
has view  => (
    is => 'ro', isa => 'View', lazy => 1,
    default => sub { View->new(logger => $_[0]->logger) },
);

sub call {
    my $self = shift;
    my $hello = $self->model->get_hello;
    return $self->view->render($hello);
}