/// <summary>
        /// Facilitates control over what tab is being entered, and whether it is okay to leave the last one.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void Entered(object sender, EventArgs e)
        {
            if (_blockEntrance)
            {
                return;
            }
            var casted  = _prev as ITrackableWithSaving; //try to upcast to imply saveability
            var current = sender as ITrackable;

            if (casted == null || !casted.IsBeingWatched() || !casted.HasUnsavedChanges || _prev == current)
            {
                _prev = current;
                return;
            }

            _blockEntrance = true;
            _prev.Focus();
            switch (_prev.RequestExit())
            {
            case RequestExitResult.AllowAndSave:
                casted.SaveChanges();
                _prev = current;
                break;

            case RequestExitResult.AllowWithoutSave:
                _prev = current;
                break;
            }
            _prev.Focus();
            _blockEntrance = false;
        }