     private func join() {
         Tracker.sharedTracker.tappedJoin()
 
-        if allFieldsValid() {
+        let email = emailField.text
+        let username = usernameField.text
+        let password = passwordField.text
+
+        if allFieldsValid(email: email, username: username, password: password) {
             hideErrorLabel()
             hideMessageLabel()
 

        return spacing > 0 ? spacing : 0
    }

    private func validateEmail(text: String) -> Bool {
        if text.isEmpty {
            let msg = NSLocalizedString("Email is required.", comment: "email is required message")
            self.showErrorLabel(msg)
            return false
        }
        else if text.isValidEmail() {
            return true
        }
        else {
            let msg = NSLocalizedString("That email is invalid.\nPlease try again.", comment: "invalid email message")
            self.showErrorLabel(msg)
            return false
        }
    }


// MARK: Text field validation
extension JoinViewController {

    private func allFieldsValid(#email: String, username: String, password: String) -> Bool {
        return emailIsValid(email) && usernameIsValid(username) && passwordIsValid(password)
    }

    private func extraHeight() -> CGFloat {
