protected virtual void SetUpDeterriorationTimer(KitchenShelf shelf, ShelfOrder shelfOrder)
        {
            var timer = deterriorationTimerFactory.Create(shelf, shelfOrder);

            timer.Elapsed += (sender, args) =>
            {
                lock (shelfOrder)
                {
                    if (!shelfOrder.HasTriggeredEvent)
                    {
                        shelfOrder.HasTriggeredEvent = true;

                        OnOrderDeterrioration(shelf, shelfOrder);
                    }
                }
            };

            timer.Start();

            shelfOrder.AddTimer(timer);
        }
        protected virtual void SetUpCourierTimer(KitchenShelf shelf, ShelfOrder shelfOrder)
        {
            var timer = courierTimerFactory.Create(shelf, shelfOrder);

            timer.Elapsed += (sender, args) =>
            {
                lock (shelfOrder)
                {
                    if (!shelfOrder.HasTriggeredEvent)
                    {
                        shelfOrder.HasTriggeredEvent = true;

                        OnCourierArrival(shelfOrder, shelf, timer);
                    }
                }
            };

            timer.Start();

            shelfOrder.AddTimer(timer);
        }