more elegant message routing