don't want to nitpicking too hard, but would you care if `invoke_for` and `exec_for` had swapped params (ie: `def invoke_for(controller, proc)` and `def exec_for(controller, proc)`)? So that all 3 methods `evaluate`, `exec_for` and `invoke_for` have consistent args order?