public void swapCards(CardComponent card1, CardComponent card2) {
        int index1 = this.getSubComponentIndex(card1);
        int index2 = this.getSubComponentIndex(card2);

        if (index1 < 0 || index2 < 0) {
            return;
        }

        this.getSlot(index1).unSocket();
        this.getSlot(index2).unSocket();

        this.swapSubComponents(card1, card2);

        card1.trackTarget(this.getSlot(index2));
        card2.trackTarget(this.getSlot(index1));
    }