public static IDisposable AtInterval(IIntervalController intervalController, Action<IIntervalController> action, bool firstLaunchNow = false)
        {
            Execute trigger = new Execute(action, intervalController);
            trigger.controller.Reset();

            trigger.start(firstLaunchNow);
            return trigger;
        }
 private Execute(Action<IIntervalController> action, IIntervalController intervalController)
 {
     this.controller = intervalController;
        this._action = action;
 }