                 
                 for (k, key) in enumerate(row) {
                     
-                    // establish character range if needed
+                    // character range state processing
                     if !inCharacterRange {
                         if key.type == Key.KeyType.Character {
                             var endIndex = 0

            }
        }
    }
    
//    private func addGapPair(nameFormat: String, page: Int, row: Int?, startIndex: Int, endIndex: Int, leftAnchor: String?, rightAnchor: String?, vertical: Bool, width: String?) {
//        var allConstraints: [String] = []

                return currentMax
            }()
            
            // measurement
            let sideEdges = layoutConstants.sideEdges

            // measurement
            let topEdge: CGFloat = ((isLandscape ? layoutConstants.topEdgeLandscape : layoutConstants.topEdgePortrait) + self.topBanner)
            
            // measurement
            let rowGaps: CGFloat = (isLandscape ? layoutConstants.rowGapsLandscape : layoutConstants.rowGapsPortrait)
            
            // measurement
            let keyGaps: CGFloat = {
                let pastThreshhold = (CGFloat(mostKeysInRow) >= layoutConstants.keyGapsSmallThreshhold)
                return (pastThreshhold ? layoutConstants.keyGapsSmall : layoutConstants.keyGaps)
            }()
            
            // measurement
            let keyHeight: CGFloat = {
                let totalGaps = sideEdges + topEdge + (rowGaps * CGFloat(numRows - 1))
                return (bounds.height - totalGaps) / CGFloat(numRows)
            }()
            
            // measurement
            let letterKeyWidth: CGFloat = {
                let totalGaps = (sideEdges * CGFloat(2)) + (keyGaps * CGFloat(mostKeysInRow - 1))
                return (bounds.width - totalGaps) / CGFloat(mostKeysInRow)
