Hooks

This will actually lead to the hook being skipped entirely if it's locked already since the handle method does not check the return value of run. We should put the call to 'run' in handle into a loop that checks for :retry and sleeps a little bit to simulate what 'publish("run", ...)' will eventually have to do.