class ModuleHooksAggregator {

    public List<Hook> aggregateHooks(List<HookPhase> currentHookPhasesForExecution) {
        Map<String, List<String>> alreadyExecutedHooksForModule = getAlreadyExecutedHooks();
        List<Hook> hooksCalculatedForExecution = determineHooksForExecution(alreadyExecutedHooksForModule, currentHookPhasesForExecution);
        updateExecutedHooksForModule(alreadyExecutedHooksForModule, currentHookPhasesForExecution, hooksCalculatedForExecution);
        return hooksCalculatedForExecution;
    }

    public  ModuleHooksAggregator(DelegateExecution execution, Module moduleToDeploy);

}