         
         addEdgeConstraints()
         
+        // TODO: autolayout class that can optionally "bake" values?
         createRowGapConstraints(keyboard)
         createKeyGapConstraints(keyboard)
         createKeyConstraints(keyboard)
+        
+        self.view.clipsToBounds = false
     }
     
     override func viewWillLayoutSubviews() {

                    leftAnchor: "leftSpacer",
                    rightAnchor: "rightSpacer",
                    vertical: false,
                    width: nil)
                addFixedGapsInRange(
                    "keyGap%dx%d",
                    row: i,
                    startIndex: 1,

            else {
                if !canonicalRowGap {
                    allConstraints += "V:[key\(0)x\(i-1)][\(rowGapName)]"
                    allConstraints += "V:[\(rowGapName)(>=5)]" // QQQ:
                    canonicalRowGap = rowGapName
                }
                else {
