package MyModel; @MyModel::ISA = qw(SomethingElse Model); sub changeSomething { my $self = shift; my $value = shift; $self->{something} = $value; $self->_changed('something', $value); } package MyView; sub update { my ($self, $model, $aspect, $otherStuff) = @_; # hey! $model has changed its $aspect! } package main; my $view = bless {}, 'MyView'; my $model = bless {}, 'MyModel'; $model->addDependent($view); # now the following # calls $view->update($model, 'something', 123); $model->changeSomething(123);