         let flexibleEndRowM = (isLandscape ? layoutConstants.flexibleEndRowTotalWidthToKeyWidthMLandscape : layoutConstants.flexibleEndRowTotalWidthToKeyWidthMPortrait)
         let flexibleEndRowC = (isLandscape ? layoutConstants.flexibleEndRowTotalWidthToKeyWidthCLandscape : layoutConstants.flexibleEndRowTotalWidthToKeyWidthCPortrait)
         
+        let lastRowLeftSideRatio = (isLandscape ? layoutConstants.lastRowLandscapeFirstTwoButtonAreaWidthToKeyboardAreaWidth : layoutConstants.lastRowPortraitFirstTwoButtonAreaWidthToKeyboardAreaWidth)
+        let lastRowRightSideRatio = (isLandscape ? layoutConstants.lastRowLandscapeLastButtonAreaWidthToKeyboardAreaWidth : layoutConstants.lastRowPortraitLastButtonAreaWidthToKeyboardAreaWidth)
+        let lastRowKeyGap = (isLandscape ? layoutConstants.lastRowKeyGapLandscape(bounds.width) : layoutConstants.lastRowKeyGapPortrait)
+        
         let mostKeysInRow: Int = {
             var currentMax: Int = 0
             for page in model.pages {

                    beforeSpace = false
                }
                else if beforeSpace {
                    view.frame = CGRectMake(currentOrigin, frame.origin.y, leftSideIndividualKeyWidth, frame.height)
                    currentOrigin += (leftSideIndividualKeyWidth + gapWidth)
                }
                else {
                    view.frame = CGRectMake(currentOrigin, frame.origin.y, otherKeyWidth, frame.height)
                    currentOrigin += (otherKeyWidth + gapWidth)
                }
            }
            else {


import UIKit

// TODO: need to rename, consolidate, and define terms
struct layoutConstants {
    static let landscapeRatio: CGFloat = 2
    
