void handleStablePhase(Frame frame, DefaultHandInterface dhi)
        {
            OneHandInterface ohi = dhi as OneHandInterface;
            TwoHandInterface thi = dhi as TwoHandInterface;

            switch (frame.Hands.Count)
            {
            case 0:
                dhi.Zero();
                break;

            case 1:
                if (ohi != null)
                {
                    ohi.One(frame.Hands[0]);
                }
                break;

            case 2:
                if (thi != null)
                {
                    thi.Two(HandUtils.designateRightLeftHands(frame));
                }
                break;

            default:
                dhi.TooManyHands();
                break;
            }
        }
        void handleTransitionPhase(Frame frame, int hbtCount, float ctl, DefaultHandInterface dhi)
        {
            OneHandInterface ohi = dhi as OneHandInterface;
            TwoHandInterface thi = dhi as TwoHandInterface;

            switch (frame.Hands.Count)
            {
            case 0:
                if (hbtCount == 1 && ohi != null)
                {
                    ohi.OneToZero(ctl);
                }
                if (hbtCount == 2 && thi != null)
                {
                    thi.TwoToZero(ctl);
                }
                if (hbtCount > 2)
                {
                    dhi.TooManyHands();
                }
                break;

            case 1:
                Hand currentHand = frame.Hands[0];
                if (hbtCount == 0 && ohi != null)
                {
                    ohi.ZeroToOne(currentHand, ctl);
                }
                if (hbtCount == 2 && thi != null)
                {
                    thi.TwoToOne(currentHand, ctl);
                }
                if (hbtCount > 2)
                {
                    dhi.TooManyHands();
                }
                break;

            case 2:
                Hand[] currentHands = HandUtils.designateRightLeftHands(frame);
                if (hbtCount == 0 && thi != null)
                {
                    thi.ZeroToTwo(currentHands, ctl);
                }
                if (hbtCount == 1 && thi != null)
                {
                    thi.OneToTwo(currentHands, ctl);
                }
                if (hbtCount > 2)
                {
                    dhi.TooManyHands();
                }
                break;

            default:
                dhi.TooManyHands();
                break;
            }
        }
        public void updateMaxHandCount()
        {
            maxHandCount = 0;

            if (handInterfaces.Count > 0)
            {
                foreach (DefaultHandInterface dhi in handInterfaces)
                {
                    OneHandInterface ohi = dhi as OneHandInterface;
                    TwoHandInterface thi = dhi as TwoHandInterface;

                    if (ohi != null && maxHandCount < 1)
                    {
                        maxHandCount = 1;
                    }
                    if (thi != null && maxHandCount < 2)
                    {
                        maxHandCount = 2;
                    }
                }
            }
        }