     
     
     /**
-    returns a string that matches the format of the number on the card itself based on the spacing pattern
+    Returns a string that matches the format of the number on the card itself based on the spacing pattern
     
-    - Parameter configurations: the valid configurations to check for when
+    - Parameter configurations: The valid configurations to check for when
     
-    - Returns: a formatted String that matches the credit card format
+    - Returns: A formatted String that matches the credit card format
     
-    - Throws CardLengthMismatchError: if amount of characters is longer than the maximum character number
-    - Throws InvalidCardNumber: if the card number is invalid
+    - Throws CardLengthMismatchError: If amount of characters is longer than the maximum character number
+    - Throws InvalidCardNumber: If the card number is invalid
     */
     func cardPresentationString(configurations: [Card.Configuration]) throws -> String {
         
         let strippedSelf = self.strippedWhitespaces
         
-        // do not continue if the string is empty or out of range
+        // Do not continue if the string is empty or out of range
         if strippedSelf.characters.count == 0 {
             return ""
         } else if strippedSelf.characters.count > Card.maximumLength {

            throw JudoError(.InvalidEntry)
        }
        
        // make sure to only check validity for the necessary networks
        let cardNetwork = strippedSelf.cardNetwork()
        
        // only try to format if a specific card number has been recognized
        if cardNetwork == .Unknown {
            return strippedSelf
        }
        
        // special secret ingredient
        // 1. filter out networks that dont match the entered card numbers
        // 2. map all remaining strings while removing all optional values
        // 3. check if the current string has already passed any valid Card number lengths
        let patterns = configurations.filter({ $0.cardNetwork == cardNetwork }).flatMap({ $0.patternString() })
        
        let cardLengthMatchedPatterns = patterns.filter({ $0.strippedWhitespaces.characters.count >= strippedSelf.characters.count })
        
        if cardLengthMatchedPatterns.count == 0 {
            // if no patterns are left - the entered number is invalid
            var message = "We do not accept \(cardNetwork.stringValue())"
            if cardLengthMatchedPatterns.count != patterns.count {
                message += " with a length of \(strippedSelf.characters.count) digits"

    
    
    /**
    See https://en.wikipedia.org/wiki/Bank_card_number
    This method will not do any validation - just a check for numbers from at least 1 character and return an assumption about what the card might be.
    
    - Parameter configurations: Only return valid responses for the given configurations
    
    - Returns: CardNetwork object
    */
