             // Send mail
             try Mailer.sendResetPasswordMail(drop: drop, backendUser: backendUser, token: token)
             
-            return Response(redirect: "/admin/login").flash(.success, "E-mail with instructions sent")
+            return Response(redirect: "/admin/login").flash(.success, "E-mail with instructions sent if user exists")
         } catch {
             return Response(redirect: "/admin/login/reset").flash(.error, "Error occurred")
         }
     }
     
-    /**
-     * Reset password token form
-     *
-     * - param: Request
-     * - return: ResponseRepresentable
-     */
-    public func resetPasswordTokenForm(request: Request) throws -> ResponseRepresentable {
+    
+    /// Reset password token form
+    ///
+    /// - Parameter request: Request
+    /// - Returns: View
+    /// - Throws: Various Abort.customs
+    public func resetPasswordTokenForm(request: Request) throws -> View {
         guard let tokenStr = request.parameters["token"]?.string else {
             throw Abort.custom(status: .badRequest, message: "Missing token")
         }
         
-        guard let token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first() else {
+        // If token does not exist or cannot be used is the same error
+        guard let token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first(), !token.canBeUsed() else {
             throw Abort.custom(status: .badRequest, message: "Token does not exist")
         }
-        
-        if(!token.canBeUsed()) {
-            throw Abort.custom(status: .badRequest, message: "Token does not exist")
-        }
-        
         
         return try drop.view.make("ResetPassword/form", [
             "token": token
         ], for: request)
     }
     
-    /**
-     * Reset password token submit
-     *
-     * - param: Request
-     * - return: ResponseRepresentable
-     */
-    public func resetPasswordTokenSubmit(request: Request) throws -> ResponseRepresentable {
+    
+    /// Reset password token submit, check token and make sure new password is matching requirement
+    ///
+    /// - Parameter request: Request
+    /// - Returns: Response
+    /// - Throws: Varius Abort.customs
+    public func resetPasswordTokenSubmit(request: Request) throws -> Response {
         guard let tokenStr = request.data["token"]?.string, let email = request.data["email"]?.string,
             let password = request.data["password"]?.string, let passwordRepeat = request.data["password_repeat"]?.string else {
                 throw Abort.badRequest
         }
         
-        guard var token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first() else {
-            throw Abort.custom(status: .badRequest, message: "Token does not exist")
-        }
-        
-        if !token.canBeUsed() {
+        guard var token = try BackendUserResetPasswordTokens.query().filter("token", tokenStr).first(), !token.canBeUsed() else {
             throw Abort.custom(status: .badRequest, message: "Token does not exist")
         }
         

        }
    }
    
    /**
     * Reset password form
     *
     * - param: Request
     * - return: View
     */
    public func resetPasswordForm(request: Request) throws -> ResponseRepresentable {
        return try drop.view.make("Login/reset", for: request)
    }
    
    /**
     * Reset password submit
     *
     * - param: Request
     * - return: Response
     */
    public func resetPasswordSubmit(request: Request) throws -> ResponseRepresentable {
        guard let email = request.data["email"]?.string, let backendUser: BackendUser = try BackendUser.query().filter("email", email).first() else {
            return Response(redirect: "/admin/login/reset").flash(.error, "Email was not found")
            //return Response(redirect: "/admin/login").flash(.success, "E-mail with instructions sent")
        }
        
        do {
            // TODO, when a direct delete func is added to fluent, change this for performance increase
            for token in try BackendUserResetPasswordTokens.query().filter("email", email).all() {
                try token.delete()
            }
            
            // Make a token
            var token = BackendUserResetPasswordTokens(email: email)

        }
        
        do {
            let remember: Bool = request.data["remember"]?.bool ?? false
            
            try request.auth.login(UsernamePassword(username: username, password: password), persist: remember)
            
            // Generate redirect path
            var redirect = "/admin/dashboard"
            if let next: String = request.query?["next"]?.string, !next.isEmpty {
                redirect = next
            }
        
            return Response(redirect: redirect).flash(.success, "Logged in as \(username)")
        } catch {
