Set portal messages after any possible traversals, to stop that from
swallowing the messages.
Try to do more of the work in update instead of __call__.