                             let sizeOfSpan = CGFloat(numberOfCharactersInSpan) * letterKeyWidth + CGFloat(numberOfCharactersInSpan - 1) * keyGaps
                             let sizeDiff = ((offsets.right - offsets.left) - sizeOfSpan) / CGFloat(2)
                             
-                            assert(sizeDiff > 0, "character row does not fit in layout")
+//                            assert(sizeDiff > 0, "character row does not fit in layout")
                             
                             offsets.left += sizeDiff
                             offsets.right -= sizeDiff

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

                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)
