     /**
      Public Login Action function for the login button that runs our closure.
      */
-    public func loginAction() {
+    open func loginAction() {
         waterwheel.login(username: usernameField.text!, password: passwordField.text!) { (success, _, _, error) in
             if (success) {
                 self.hideAnonymousSubviews()

    /**
     Lays out the login field.
     */
    public func layoutLoginField() {
        usernameField.constrainEqual(.leadingMargin, to: view)
        usernameField.constrainEqual(.trailingMargin, to: view)
        usernameField.constrainEqual(.top, to: view, .top, multiplier: 1.0, constant: 44)

    /**
     Layout the Anonymous Subviews.
     */
    open func layoutSubviews() {
        self.layoutLoginField()
        self.layoutPasswordField()
        self.layoutSubmitButton()
