exercise 2.76 explicit dispatch vs data-directed style vs message-passing style