It is a bit tricky that the event handling logic is split and partially defined in this block and partially in receiveUpdate. What is the rationale for this?