add a test for nonbreaking exceptions
refactor Route and dispatch slightly so that Routes know whether or not they're branches