GrahamA: extract action handlers into their own classes.