diff --git a/routes/routes-account.js b/routes/routes-account.js
index ba892df8528ce50279fe71869546f76234f0f059..157ecf621951570797cb0b5547797692dcd085fb 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -12,12 +12,17 @@ const async = require('async')
 const crypto = require('crypto')
 const mailer = require('./mailer')
 const axios = require('axios')
+const logoDir = 'public/upload/'
+const tpGitlabURL = 'https://transfer.hft-stuttgart.de/gitlab/'
 
-const myUser = require('../classes/user')
-var loggedInUser
+const portalUser = require('../classes/user')
+const projectInformation = require('../classes/website')
+const projectRepo = require('../classes/repo')
 
 module.exports = function (app, config, passport, i18n) {
 
+  var loggedInUser
+
   // =========== PASSPORT =======
   passport.serializeUser(function (user, done) {
     done(null, user);
@@ -105,12 +110,6 @@ module.exports = function (app, config, passport, i18n) {
 
   // ======== APP ROUTES - ACCOUNT ====================
   var updatePasswordMailSubject = "Ihr Passwort für das Transferportal wurde gespeichert."
-  // var mailSignature = "Mit den besten Grüßen,\ndas Transferportal-Team der HFT Stuttgart\n\n"+
-  //   "Transferportal der Hochschule für Technik Stuttgart\n"+
-  //   "Schellingstr. 24\n"+
-  //   "70174 Stuttgart\n"+
-  //   "m4lab@hft-stuttgart.de\n"+
-  //   "https://transfer.hft-stuttgart.de"
   var updatePasswordMailContent = '<div>Lieber Nutzer,<br/><br/>Ihr Passwort wurde erfolgreich geändert.<br/><br/>' + mailSignature + '</div>';
 
   app.get('/', function (req, res) {
@@ -119,29 +118,22 @@ module.exports = function (app, config, passport, i18n) {
         if (!err) {
           // Initialize user
           if (!loggedInUser) {
-            loggedInUser = new myUser()
-            loggedInUser.id = data.id
-            loggedInUser.email = req.user.email
-            loggedInUser.salutation = data.salutation
-            loggedInUser.title = data.title
-            loggedInUser.firstName = data.firstname
-            loggedInUser.lastName = data.lastname
-            loggedInUser.industry = data.industry
-            loggedInUser.organisation = data.organisation
-            loggedInUser.speciality = data.speciality
-            loggedInUser.m4lab_idp = data.m4lab_idp
-            loggedInUser.verificationStatus = data.verificationStatus
-
+            loggedInUser = new portalUser(
+              data.id, req.user.email, data.salutation, data.title, data.firstname, data.lastname, data.industry, data.organisation, data.speciality, data.m4lab_idp, null, data.verificationStatus
+            )
             methods.getGitlabId(data.id, function(gitlabUserId, err){
               if(!err) {
-                loggedInUser.gitlabUserId = gitlabUserId
+                loggedInUser.setGitlabUserId(gitlabUserId)
               }
-              //console.log(loggedInUser)
             })
           }
           
+          let userData = {
+            fullName: loggedInUser.getFullName(),
+            m4lab_idp: loggedInUser.getIdpStatus(),
+            verificationStatus: loggedInUser.getVerificationStatus()}
           res.render(lang+'/account/home', {
-            user: data
+            user: userData
           });
         }
       })
@@ -181,6 +173,8 @@ module.exports = function (app, config, passport, i18n) {
 
   app.get('/profile', function (req, res) {
     if (req.isAuthenticated()) {
+      // RS: to be updated = get data from loggedinuser
+      console.log(loggedInUser)
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
           if (data.verificationStatus == 1) {
@@ -202,39 +196,28 @@ module.exports = function (app, config, passport, i18n) {
     }
   });
 
-  app.get('/services', function (req, res) {
-    if (req.isAuthenticated() && loggedInUser) {
-      if (loggedInUser.verificationStatus == 1) {
+  app.get('/services', function(req, res){
+    if(!req.isAuthenticated() && !loggedInUser) {
+      res.redirect('/login')
+    } else {
+      let userData = {
+        fullName: loggedInUser.getFullName(),
+        m4lab_idp: loggedInUser.getIdpStatus()}
+
+      if(loggedInUser.getVerificationStatus() != 1) {
+        res.render(lang+'/account/home', {
+          user: userData
+        })
+      } else {
         let gitlabReposArr = []
         let gitlabPagesArr = []
-        let userData = {
-          firstname: loggedInUser.firstName,
-          lastname: loggedInUser.lastName,
-          m4lab_idp: loggedInUser.m4lab_idp}
         
-        if (loggedInUser.gitlabUserId) {
-          // GitLab is already activated for this user. Allow project creation.
-          /*
-          waterfall([
-            function(callback){
-              callback(null, 'one', 'two');
-            },
-            function(arg1, arg2, callback){
-              callback(null, 'three');
-            },
-            function(arg1, callback){
-              // arg1 now equals 'three'
-              callback(null, 'done');
-            }
-          ], function (err, result) {
-            // result now equals 'done'
-          });
-          */
+        if(loggedInUser.getGitlabUserId()) {
           async.waterfall([
             // check projects in runners
             function(callback) {
               let gitlabRunnersProjectIdsArr
-              gitlab.getProjectIdsFromRunners (loggedInUser.gitlabUserId, function(data){
+              gitlab.getProjectIdsFromRunners(loggedInUser.getGitlabUserId(), function(data){
                 if(data.error)
                   return res.status(500).send(data.data)
                 gitlabRunnersProjectIdsArr = data.data
@@ -243,7 +226,7 @@ module.exports = function (app, config, passport, i18n) {
             }
           ], function(err, gitlabRunnersProjectIdsArr) {
             // get user projects
-            gitlab.getUserProjects (loggedInUser.gitlabUserId, function(data){
+            gitlab.getUserProjects (loggedInUser.getGitlabUserId(), function(data){
               if (data.error)
                 return res.status(500).send(data.data)
               let gitlabData = data.data
@@ -251,22 +234,15 @@ module.exports = function (app, config, passport, i18n) {
                 if (gitlabData[i].tag_list.includes('website')) {
                   let idxRunners = gitlabRunnersProjectIdsArr.indexOf(gitlabData[i].id)
                   let isWebsitePublished = false
+                  //let isWebsitePublished = true
                   if (idxRunners > 0) {
                     isWebsitePublished = true
                   }
-                  let page = {
-                    name: gitlabData[i].name,
-                    description: gitlabData[i].description,
-                    avatar_url: gitlabData[i].avatar_url,
-                    web_url: gitlabData[i].web_url,
-                    isPublished: isWebsitePublished}
+                  let page = new projectInformation(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description, 
+                    gitlabData[i].avatar_url, null, null, isWebsitePublished)
                   gitlabPagesArr.push(page)
                 } else {
-                  let repo = {
-                    name: gitlabData[i].name,
-                    description: gitlabData[i].description,
-                    avatar_url: gitlabData[i].avatar_url,
-                    web_url: gitlabData[i].web_url}
+                  let repo = new projectRepo(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description, gitlabData[i].avatar_url)
                   gitlabReposArr.push(repo)
                 }
               }
@@ -279,6 +255,7 @@ module.exports = function (app, config, passport, i18n) {
             })
           })
         } else {
+          // ========== to do next ===================
           gitlab.getUserIdByEmail(req.user.email, function(data){
             if (!data.error) {
               let gitlabActivationData = {
@@ -297,18 +274,13 @@ module.exports = function (app, config, passport, i18n) {
             }
           })
         }
-      } else {
-        res.render(lang+'/account/home', {
-          user: data
-        })
       }
-    } else {
-      res.redirect('/login')
     }
   })
 
   app.get('/security', function (req, res) {
     if (req.isAuthenticated()) {
+      // RS: to be updated = get data from loggedinuser
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
           if (data.verificationStatus == 1 && data.m4lab_idp == 1) {
@@ -343,15 +315,14 @@ module.exports = function (app, config, passport, i18n) {
     if (req.isAuthenticated()) {
       if (userData.email) {
         dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
-            //if (err) throw err;
             if (err) {
-              req.flash('error', "Failed");
+              res.flash('error', "Failed")
             }
             else {
-              //req.flash('success', 'Profile updated!');
-              req.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!');
+              res.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!')
             }
             res.redirect('/account/profile');
+            // RS: to be updated = update loggedinuser
         })
       }
     } else {
@@ -365,6 +336,7 @@ module.exports = function (app, config, passport, i18n) {
       var newPwd = req.body.inputNewPwd
       var retypePwd = req.body.inputConfirm
 
+      // RS: to be updated = get data from loggedinuser
       methods.getUserIdByEmail(req.user.email, function(userId, err) {
         if (!err) {
           // Load hashed passwd from DB
@@ -386,15 +358,15 @@ module.exports = function (app, config, passport, i18n) {
                 })
               }
               else if (!isMatch) {
-                //req.flash('error', "Sorry, your password was incorrect. Please double-check your password.")
-                req.flash('error', "Das Passwort ist leider falsch. Bitte überprüfen Sie Ihre Eingabe.")
+                //res.flash('error', "Sorry, your password was incorrect. Please double-check your password.")
+                res.flash('error', "Das Passwort ist leider falsch. Bitte überprüfen Sie Ihre Eingabe.")
                 //res.redirect('/security')
                 res.redirect('/account/security')
               }
               else {
                 if ( newPwd != retypePwd ) {
-                  //req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
-                  req.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
+                  //res.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
+                  res.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
                   res.redirect('/account/security')
                 }
                 else {
@@ -407,13 +379,13 @@ module.exports = function (app, config, passport, i18n) {
                       }
                       methods.updateCredential(credentialData, function(err){
                         if (err) {
-                          //req.flash('error', "Database error: Password cannot be modified.")
-                          req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
+                          //res.flash('error', "Database error: Password cannot be modified.")
+                          res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
                           throw err
                         }
                         else {
-                          //req.flash('success', "Pasword updated!")
-                          req.flash('success', "Passwort aktualisiert!")
+                          //res.flash('success', "Pasword updated!")
+                          res.flash('success', "Passwort aktualisiert!")
                           mailer.options.to = req.user.email
                           //mailOptions.subject = "Your M4_LAB Password has been updated."
                           mailer.options.subject = updatePasswordMailSubject
@@ -509,12 +481,12 @@ module.exports = function (app, config, passport, i18n) {
       }
     ], function(err) {
       if (err) {
-        //req.flash('error', 'An error occured. Please try again.');
-        req.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
+        //res.flash('error', 'An error occured. Please try again.');
+        res.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
       }
       else {
-        //req.flash('success', 'If your email is registered, an e-mail has been sent to ' + emailAddress + ' with further instructions.');
-        req.flash('success', 'Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an ' + emailAddress + ' versendet.');
+        //res.flash('success', 'If your email is registered, an e-mail has been sent to ' + emailAddress + ' with further instructions.');
+        res.flash('success', 'Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an ' + emailAddress + ' versendet.');
       }
       //res.redirect('/forgotPwd'); // deployment
       res.redirect('/account/forgotPwd'); // localhost
@@ -524,8 +496,8 @@ module.exports = function (app, config, passport, i18n) {
   app.get('/reset/:token', function(req, res) {
     methods.getUserByToken(req.params.token, function(err, user){
       if (!user) {
-        //req.flash('error', 'Password reset token is invalid or has expired.');
-        req.flash('error', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
+        //res.flash('error', 'Password reset token is invalid or has expired.');
+        res.flash('error', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
         //res.redirect('/forgotPwd'); // deployment
         res.redirect('/account/forgotPwd'); // deployment
       }
@@ -549,13 +521,13 @@ module.exports = function (app, config, passport, i18n) {
             // update password
             methods.updateCredential(credentialData, function(err){
               if (err) {
-                //req.flash('error', "Database error: Password cannot be modified.")
-                req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
+                //res.flash('error', "Database error: Password cannot be modified.")
+                res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
                 throw err
               }
               else {
-                //req.flash('success', "Your pasword has been updated.")
-                req.flash('success', "Passwort aktualisiert!")
+                //res.flash('success', "Your pasword has been updated.")
+                res.flash('success', "Passwort aktualisiert!")
                 // send notifiaction email
                 mailer.options.to = user.email
                 mailer.options.subject = updatePasswordMailSubject
@@ -573,7 +545,7 @@ module.exports = function (app, config, passport, i18n) {
         });
       }
       else {
-        req.flash('error', "User not found.")
+        res.flash('error', "User not found.")
         res.redirect('/login')
       }
     });
@@ -581,117 +553,226 @@ module.exports = function (app, config, passport, i18n) {
   });
 
   // ============= NEW GITLAB PAGES ===========================
-  app.get('/newPages', function(req, res){
-    if (req.isAuthenticated() && loggedInUser) {
+  
+  app.get('/newInformation', function(req, res){
+    if (!req.isAuthenticated() && !loggedInUser) {
+      res.redirect('/login')
+    } else {
       let userData = {
-        firstName: loggedInUser.firstName,
-        lastName: loggedInUser.lastName,
-        m4lab_idp: loggedInUser.m4lab_idp
-      }
-      let projectData = {
-        name: null,
-        description: null,
-        avatar: null
+        fullName: loggedInUser.getFullName(),
+        m4lab_idp: loggedInUser.getIdpStatus()
       }
-      res.render(lang+'/account/newPages', {
-        user: userData,
-        project: projectData
+      res.render(lang+'/account/newInformation', {
+        user: userData
       })
     }
-    else {
-      res.redirect('/login');
+  })
+  app.post('/newInformation', function(req, res) {
+    if(!req.isAuthenticated() && !loggedInUser) {
+      res.redirect('/login')
+    } else {
+      if (!req.body.name && !req.body.description) {
+        res.flash('error', 'Please provide the required data')
+        //res.redirect('/account/newInformation')
+        res.redirect('/newInformation')
+      } else {
+        let projectName = req.body.name.toLowerCase().replace(/\s/g, '-')
+        let projectDesc = req.body.description
+        let newInformation = new projectInformation(loggedInUser.getGitlabUserId(), null, projectName, projectDesc, null, null, null, false)
+            
+        if (!req.files) {
+          res.flash('error', 'Please choose a project logo')
+          //res.redirect('/account/newInformation')
+          res.redirect('/newInformation')
+        } else {
+          let newLogoFile = req.files.logo
+          async.waterfall([
+            function(callback){ // upload logo
+              newLogoFile.mv(logoDir + newLogoFile.name, function(err) {
+                newLogoFile = logoDir+newLogoFile.name
+                callback(err, newLogoFile)
+              })
+            },
+            function(newLogoFile, callback){ // create a new GitLab Page
+              gitlab.createNewPages(newInformation, newLogoFile, function(data){
+                let result = data.data
+                if (data.error) {
+                  if(result.message.name == "has already been taken") {
+                    res.flash("error", "Project name '"+newInformation.getName()+"' has already been taken, please choose another name.")
+                  } else {
+                    res.flash("error", "Something went wrong. Please try again.")
+                  }
+                  //res.redirect('/account/newInformation')
+                  res.redirect('/newInformation')
+                } else {
+                  newInformation.setId(result.id)
+                  newInformation.setLogo(result.avatar_url)
+                  newInformation.setSettingUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/settings.js')
+                  newInformation.setKontaktUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/kontakt.html')
+                  
+                  res.flash("success", "Your website has been created, but not published yet. Please continue to Step 2 and Step 3 to have your new website published.")
+                  //res.redirect('/account/updateInformation?id='+newInformation.getId())
+                  res.redirect('/updateInformation?id='+newInformation.getId())
+                }
+                callback(null)
+              })
+            }
+          ], function (err) {
+            if(err) console.log(err)
+            // remove logo
+            fs.unlink(newLogoFile, (err) => {
+              if(err) console.log(err)
+            })
+          })
+        }
+      }
     }
   })
 
-  app.post('/newPages', function(req, res) {
-    if (req.isAuthenticated() && loggedInUser) {
-      if (req.files && req.body.name && req.body.description) {
+  app.get('/updateInformation', function(req, res){
+    if(!req.isAuthenticated() && !loggedInUser) {
+      res.redirect('/login')
+    } else {
+      let userData = {
+        fullName: loggedInUser.getFullName(),
+        m4lab_idp: loggedInUser.getIdpStatus()}
+
+      if(!req.query.id) {
+        res.redirect('/account/services')
+      } else {
+        gitlab.getUserProjects(loggedInUser.getGitlabUserId(), function(data){
+          if (data.error) {
+            res.status(500).render(lang+'/500', {
+              error: data.data
+            })
+          } else {
+            // quick way to decide whether a website is already published or not
+            let informationStatus
+            if(req.query.s != "y" && req.query.s != "n") {
+              res.redirect('/account/services')
+            } else {
+              if(req.query.s == "y") {
+                informationStatus = true
+              } else if(req.query.s == "n") {
+                informationStatus = false
+              }
+              let gitlabData = data.data
+              let curInformation = new projectInformation(loggedInUser.getGitlabUserId(), req.query.id, null, null, null, null, null, informationStatus)
+              for(let i = 0; i < gitlabData.length; i++){
+                if (gitlabData[i].id == req.query.id) {
+                  curInformation.setName(gitlabData[i].name)
+                  curInformation.setDesc(gitlabData[i].description)
+                  curInformation.setLogo(gitlabData[i].avatar_url)
+                  curInformation.setSettingUrl(tpGitlabURL+gitlabData[i].namespace.path+'/'+gitlabData[i].name+'/-/edit/master/public/settings.js')
+                  curInformation.setKontaktUrl(tpGitlabURL+gitlabData[i].namespace.path+'/'+gitlabData[i].name+'/-/edit/master/public/kontakt.html')
+                  
+                  break
+                }
+              }
+              res.render(lang+'/account/updateInformation', {
+                user: userData,
+                information: curInformation
+              })
+            }            
+          }
+        })
+      }
+    }
+  })
+  app.post('/updateInformation', function(req, res){
+    if(!req.isAuthenticated() && !loggedInUser) {
+      res.redirect('/login')
+    } else {
+      if (!req.body.name && !req.body.description) {
+        res.flash('error', 'Please provide the required data')
+        //res.redirect('/account/updateInformation')
+        res.redirect('/updateInformation')
+      } else {
         let projectName = req.body.name.toLowerCase().replace(/\s/g, '-')
         let projectDesc = req.body.description
-        let projectAvatar = req.files.logo
-        let avatarDir = 'public/upload/'
-
-        let userData = {
-          firstName: loggedInUser.firstName,
-          lastName: loggedInUser.lastName,
-          m4lab_idp: loggedInUser.m4lab_idp}
+        let updatedInformation = new projectInformation(loggedInUser.getGitlabUserId(), req.query.id, projectName, projectDesc, null, null, null, req.body.isPublished)
 
+        let newLogoFile
         async.waterfall([
-          // upload avatar
-          function(done) {
-            projectAvatar.mv(avatarDir + projectAvatar.name, function(err) {
-              if (err)
-                return res.status(500).send(err)
-              console.log('avatar uploaded')
-              done(err)
-            })
+          function(callback){ // upload logo
+            if(!req.files) {
+              callback(null, newLogoFile)
+            } else {
+              newLogoFile = req.files.logo
+              newLogoFile.mv(logoDir + newLogoFile.name, function(err) {
+                newLogoFile = logoDir + newLogoFile.name
+                callback(err, newLogoFile)
+              })
+            }
           },
-          // call gitlab
-          function(done) {
-            let newPagesData = {
-              gitlabUserId: loggedInUser.gitlabUserId,
-              name: projectName,
-              description: projectDesc,
-              avatar: avatarDir+projectAvatar.name}
-            gitlab.createNewPages(newPagesData, function(msg, err){
-              if (err) { callback(err) }
-              else {
-                console.log(msg)
-                if(msg.message) {
-                  if(msg.message.name == "has already been taken") {
-                    let data = {
-                      status: "error",
-                      msg: "project name has already been taken, please choose another name"}
-                    let projectData = {
-                      name: projectName,
-                      description: projectDesc,
-                      avatar: projectAvatar}
-            
-                    req.flash("error", data.msg)
-                    res.render(lang+'/account/newPages', {
-                      user: userData,
-                      project: projectData
-                    })
-                  }
+          function(newLogoFile, callback){ // update gitlab page
+            gitlab.updateProject(updatedInformation, newLogoFile, function(data){
+              let result = data.data
+              if (data.error) {
+                if(result.message.name == "has already been taken") {
+                  res.flash("error", "Project name has already been taken, please choose another name.")
+                } else {
+                  res.flash("error", "Something went wrong. Please try again.")
                 }
-                else {
-                  let data = {
-                    status: "success",
-                    msg: "success"}
-                  let projectData = {
-                    name: projectName,
-                    description: projectDesc,
-                    avatar: projectAvatar,
-                    webUrl: msg.web_url}
-
-                  req.flash("success", data.msg)
-                  res.render(lang+'/account/newPages', {
-                    user: userData,
-                    project: projectData
-                  })
-                } 
+              } else {
+                updatedInformation.setLogo(result.avatar_url)
+                updatedInformation.setSettingUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/settings.js')
+                updatedInformation.setKontaktUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/kontakt.html')
+                res.flash("success", "Your website has been updated")
               }
-              done(err)
+              //res.redirect('/account/updateInformation?id='+updatedInformation.getId())
+              res.redirect('/updateInformation?id='+updatedInformation.getId())
+
+              callback(null)
             })
-          },
-          // delete avatar from /public/avatar
-          function(){
-            fs.unlink(avatarDir+projectAvatar.name, (err) => {
-              if (err) throw err;
-              console.log('avatar is successfully deleted');
+          }
+        ], function (err) {
+          if(err) console.log(err)
+          if(newLogoFile){ // remove logo
+            fs.unlink(newLogoFile, (err) => {
+              if(err) console.log(err)
             })
           }
-        ])
-      }
-      else {
-        console.log('Please provide the data')
+        })
       }
     }
-    else {
-      res.redirect('/login');
+  })
+
+  // RS: delete projektInformation?
+
+  app.post('/sendPublishRequest', function(req, res) {
+    if (!req.isAuthenticated() && loggedInUser) {
+      res.redirect('/login')
+    } else {
+      let emailAddress = loggedInUser.getEmail()
+      let supportAddress = "support-transfer@hft-stuttgart.de"
+      //let supportAddress = "rosanny.sihombing@hft-stuttgart.de"
+      let projectName = req.body.projectName
+      let emailContent = "Guten Tag, \n\nhiermit beantrage Ich die Freischaltung einer Webseite auf dem Transferportal für folgendes Projekt: \n"
+        +projectName+"\n\nVielen Dank,\n"+loggedInUser.getFullName()
+      let emailSubject = "M4_LAB New Website Publish Request"
+      async.waterfall([
+        function(done) {
+            mailer.options.to = supportAddress
+            mailer.options.cc = emailAddress
+            mailer.options.subject = emailSubject
+            mailer.options.text = emailContent
+            mailer.transport.sendMail(mailer.options, function(err) {
+              done(err, 'done')
+            })
+          }
+      ], function(err) {
+        if (err) {
+          console.log(err)
+          res.send('Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.')
+        }
+        else {
+          res.send('Vielen Dank für Ihre Anfrage. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.')
+        }
+      })
     }
   })
-  
+
   // ============= NEW USERS REGISTRATION ===========================
   app.get('/registration', function(req, res) {
     res.render(lang+'/account/registration')
@@ -717,8 +798,8 @@ module.exports = function (app, config, passport, i18n) {
     var emailDomain = userEmail.slice(pos, emailLength);
 
     if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") {
-        req.flash('error', "Fehlgeschlagen: HFT-Account")
-        res.redirect('/account/registration');
+        res.flash('error', "Fehlgeschlagen: HFT-Account")
+        res.redirect('/account/registration')
     }
     else {
       let token
@@ -746,7 +827,7 @@ module.exports = function (app, config, passport, i18n) {
         function(newAccount, err) {
           methods.registerNewUser(newAccount, function(err){
             if (err) {
-              req.flash('error', "Fehlgeschlagen")
+              res.flash('error', "Fehlgeschlagen")
             }
             else {
               // send email
@@ -772,7 +853,7 @@ module.exports = function (app, config, passport, i18n) {
                 }
               })
               // user feedback
-              req.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
+              res.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
                 'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.'+'\r\n'+
                 'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.')
             }
@@ -784,6 +865,7 @@ module.exports = function (app, config, passport, i18n) {
   })
 
   // ============= USER VERIFICATION ================================
+  // RS: update loggedInUser status after successfull verification?
   app.get("/verifyAccount", function(req, res){
     console.log(req.query)
     methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
@@ -899,10 +981,10 @@ module.exports = function (app, config, passport, i18n) {
   })
 
   app.get('/contact', function (req, res) {
-      res.render(lang+'/account/contact', {
-        user: req.user
-      });
-    });
+    res.render(lang+'/account/contact', {
+      user: req.user
+    })
+  })
 
   app.post('/contact', function(req, res, next) {
       //methods.currentDate();
@@ -925,13 +1007,14 @@ module.exports = function (app, config, passport, i18n) {
           }
       ], function(err) {
         if (err) {
-          req.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
+          res.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
         }
         else {
-          req.flash('success', 'Vielen Dank für Ihre Anfrage. Wir melden uns baldmöglichst bei Ihnen. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.');
+          res.flash('success', 'Vielen Dank für Ihre Anfrage. Wir melden uns baldmöglichst bei Ihnen. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.');
         }
         //res.redirect('/forgotPwd'); // deployment
         res.redirect('/account/contact'); // localhost
-      });
-    });
-};
\ No newline at end of file
+      })
+  })
+
+}
\ No newline at end of file