I'd prefer storing hooks for each client separately, e.g. `hooks["#{client_file_#{hook_name}"] = ...`

And remove the check for already existing hooks - a hook can be run multiple times (e.g. when going back and forth in the installation workflow)