fixing branches with complicated dependencies

- a present is just a future that executes immediately
- branches need to wait until they've decided on their path before
  evaluating