     ///   - items: The items that will be used for each label/input combonation for the form.
     ///   - idPrefix: The prefix for the id's for the wrappr divs, inputs and labels. This defaults for `nil`.
     ///   - submitText: The text for the submission button.
-    public init(with items: [String], idPrefix: String? = nil, submitText: String) {
+    ///   - action: The path that the data will be sent to at form submission.
+    public init(with items: [String], idPrefix: String? = nil, submitText: String, and action: String? = nil) {
         for item in items {
             self.form.add(UIFormElement(with: item, and: idPrefix))
         }

        }
        formItems.append("Password")
        
        return UIForm(with: formItems, idPrefix: "user", submitText: "Login")
    }
    
    /// Creates a basic form for signing up a user.

        formSubmitButton.attributes["id"] = submitText.lowercased()
        formSubmitButton.add(submitText)
        self.form.add(formSubmitButton)
        
        guard let action = action else { return }
        
        self.form.attributes["action"] = action
        self.form.attributes["method"] = "POST"
    }
    
    /// Creates a form for loging in a user.
    ///
    /// - Parameters:
    ///   - login: The login that will be used to authenticate the user. This could be an email or username.
    ///   - action: The path that the data will be sent to at form submission.
    /// - Returns: A `UIForm` for authenticating a user.
    public class func loginForm(with login: LoginFormType, and action: String) -> UIForm {
        var formItems: [String] = []
        
        switch login {
