                 nextCardView.alpha = shouldTransparentizeNextCard ? alphaValueSemiTransparent : alphaValueOpaque
                 
                 visibleCards.append(nextCardView)
+                configureCard(nextCardView, atIndex: UInt(currentCardNumber + index))
                 insertSubview(nextCardView, belowSubview: visibleCards[index - 1])
-                configureCard(nextCardView, atIndex: UInt(currentCardNumber + index))
             }
         }
     }

    
    private func layoutCard(card: DraggableCardView, AtIndex index: UInt) {
        if index == 0 {
            card.frame = frameForTopCard()
            card.layer.transform = CATransform3DIdentity
        } else {
            let cardParameters = backgroundCardParametersForFrame(frameForCardAtIndex(UInt(index)))
            

        }
    }
    
    // MARK: Cards managing - Insertion
    
    private func removeVisibleCardAtIndex(index: Int) {
        let card = visibleCards[index]
        card.delegate = nil
        card.swipe(.Right)
        visibleCards.removeAtIndex(index)
    }
    
    private func removeLastCard() {
        removeVisibleCardAtIndex(visibleCards.count - 1)
    }
    
    private func proceedInsertion(insertionIndex: Int) {
        if insertionIndex < currentCardNumber {
            assertionFailure("Insertion supported unsupported for index \(insertionIndex)")
        } else if insertionIndex >= currentCardNumber && insertionIndex < currentCardNumber + countOfVisibleCards {
            insertCardInTheVisibleRange(insertionIndex)
        }
