                                                   options: [],
                                                   metrics: nil,
                                                   views: stateZipViews)
+    constraints += NSLayoutConstraint.constraints(withVisualFormat: "V:|[zip]|",
+                                                  options: [],
+                                                  metrics: nil,
+                                                  views: stateZipViews)
 
     NSLayoutConstraint.activate(constraints)
   }

    state.autocapitalizationType = .allCharacters
    return state
  }()

  let zip: MDCTextField = {
    let zip = MDCTextField()


    let fullString = NSString(string: rawText).replacingCharacters(in: range, with: string)

    if textField == state {
      if let range = fullString.rangeOfCharacter(from: CharacterSet.letters.inverted),
        fullString[range].characters.count > 0 {
        stateController.setErrorText("Error: State can only contain letters",
                                   errorAccessibilityValue: nil)
      } else {
        stateController.setErrorText(nil, errorAccessibilityValue: nil)
      }
    } else if textField == zip {
      if let range = fullString.rangeOfCharacter(from: CharacterSet.letters),
        fullString[range].characters.count > 0 {
        zipController.setErrorText("Error: Zip can only contain numbers",
