public InternalCardData(CardInstance card, int zonePosition)
            {
                Guid = card.Guid;
                Zone = card.Zone;
                ZonePosition = zonePosition;
                OwnerPlayerIndex = card.Owner.Index;
                Model = card.Model;

                var manaCost = card.Behaviors.Get<Behaviors.ManaCost>();
                SummonCost = manaCost != null ? manaCost.Cost : -1;

                var warrior = card.Warrior;
                IsWarrior = warrior != null;
                AttackAndInitialAttack = new Tuple<int, int>(warrior != null ? warrior.Attack : -1, warrior != null ? warrior.InitialAttack : -1);
                LifeAndInitialLife = new Tuple<int, int>(warrior != null ? warrior.Life : -1, warrior != null ? warrior.InitialLife : -1);
                IsWarriorCoolingDown = warrior != null && warrior.State == Behaviors.WarriorState.CoolingDown;

                IsAssist = card.Behaviors.Has<Behaviors.Assist>();
                IsAssistActivated = card.IsActivatedAssist;

                IsInstant = card.Behaviors.Has<Behaviors.Instant>();
                IsTrap = card.Behaviors.Has<Behaviors.Trap>();

                var counters = card.Counters;
                var statusEffects = card.Behaviors.OfType<Behaviors.IStatusEffect>();
                var counterArray = new InternalCounterData[counters.Count() + statusEffects.Count()];
                int i = 0;
                foreach (var counter in counters)
                {
                    counterArray[i++] = new InternalCounterData(counter.Text, counter.IconUri, card.GetCounterCount(counter.GetType()));
                }
                foreach (var statusEffect in statusEffects)
                {
                    counterArray[i++] = new InternalCounterData(statusEffect.Text, statusEffect.IconUri, 0);
                }
                Counters = counterArray.ToIndexable();
            }