It is not intuitive to register it, execute and then finding it to set last. I think better structure is
```
def run hook_name
  hook = create(hook_name, caller.first) #here I rename register to create as it is what you actually do
  hook.execute
  @last = hook
end
```