public void RemoveListener(string stepName, ProgressionStepListener.EventHandler eventHandler)
    {
        ProgressionStepListener invoker;

        if (stepsEvents.TryGetValue(stepName, out invoker))
        {
            invoker.eventHandler -= eventHandler;
        }
    }
    public void AddListener(string stepName, ProgressionStepListener.EventHandler eventHandler)
    {
        ProgressionStepListener invoker;

        if (!stepsEvents.TryGetValue(stepName, out invoker))
        {
            invoker = new ProgressionStepListener();
            stepsEvents.Add(stepName, invoker);
        }
        invoker.eventHandler += eventHandler;
    }