package Controller;
    use Moose;
    
    has view  => (is => 'ro', isa => 'View',  required => 1);
    has model => (is => 'ro', isa => 'Model', required => 1);
    
    sub index { }
    sub inc   { my $self = shift; $self->model->inc }
    sub dec   { my $self = shift; $self->model->dec }
    sub reset { my $self = shift; $self->model->reset }
    sub set   { my $self = shift; $self->model->set($_[1]) }
    
    around [qw(index inc dec set reset)] => sub {
        my $orig = shift;
        my $self = shift;
        $self->$orig(@_);
        return $self->view->render($self->model->count);
    };
    
    __PACKAGE__->meta->make_immutable;
    1;