diff --git a/backend/config.js b/backend/config.js
deleted file mode 100644
index 3ee914c29bdb9c186248653807758bb6ac1245fa..0000000000000000000000000000000000000000
--- a/backend/config.js
+++ /dev/null
@@ -1,45 +0,0 @@
-
-var Connection = require('tedious').Connection
-var Request = require('tedious').Request
-
-var config = {
-  server: 'DESKTOP-BP4I6KI',
-  database: 'SAMPLE',
-  options: {
-    trustServerCertificate: true
-  },
-  authentication: {
-    type: 'default',
-    options: {
-        userName: 'test', //update me
-        password: 'test'  //update me
-    }
-},
-}
-
-var connection = new Connection(config)
-
-connection.on('connect', function (err) {
-  if (err) {
-    console.log(err)
-  } else {
-    executeStatement()
-  }
-})
-
-function executeStatement () {
-  request = new Request("SELECT * FROM SAMPLE.dbo.pointTable", function (err, rowCount) {
-    if (err) {
-      console.log(err)
-    } else {
-      console.log(rowCount + ' rows')
-    }
-    connection.close()
-  })
-
-  request.on('row', function (columns) {
-    console.log(columns);
-  })
-
-  connection.execSql(request)
-}
\ No newline at end of file
diff --git a/backend/database/config.js b/backend/database/config.js
new file mode 100644
index 0000000000000000000000000000000000000000..e3e1dcc669bfcc55e286954d7e06fd2d53f3d894
--- /dev/null
+++ b/backend/database/config.js
@@ -0,0 +1,50 @@
+
+var Connection = require('tedious').Connection
+var Request = require('tedious').Request
+
+const config = {
+  server: 'DESKTOP-BP4I6KI',
+  database: 'SAMPLE',
+  options: {
+    trustServerCertificate: true
+  },
+  authentication: {
+    type: 'default',
+    options: {
+        userName: 'test', //update me
+        password: 'test'  //update me
+    }
+},
+}
+
+function executeLocalQuery(query,connection){  
+  request = new Request(query, function (err, rowCount) {
+    if (err) {
+      console.log("ERROR: " + err);
+      return "ERROR: " + err;
+    }
+    connection.close()
+  })
+
+  request.on('row', function (columns) {
+    return columns;
+  })
+
+  connection.execSql(request)
+}
+
+module.exports = {
+  executeQuery: async function(query){
+
+    var connection = new Connection(config)
+    connection.on('connect', function (err) {
+      if (err) {
+        console.log("ERROR: " + err);
+        return "ERROR: " + err;
+      } else { 
+        var result = await executeLocalQuery(query,connection);
+        return result
+      }
+    })
+  } 
+};
diff --git a/backend/package-lock.json b/backend/gatewayserver/package-lock.json
similarity index 100%
rename from backend/package-lock.json
rename to backend/gatewayserver/package-lock.json
diff --git a/backend/package.json b/backend/gatewayserver/package.json
similarity index 100%
rename from backend/package.json
rename to backend/gatewayserver/package.json
diff --git a/backend/server(OLD).js b/backend/gatewayserver/server(OLD).js
similarity index 100%
rename from backend/server(OLD).js
rename to backend/gatewayserver/server(OLD).js
diff --git a/backend/server.js b/backend/gatewayserver/server.js
similarity index 71%
rename from backend/server.js
rename to backend/gatewayserver/server.js
index ca9d35891da4f0d953c2975050da4a2b21e5364e..3137d607eae4833a8d9b9f80152c81f5338a6751 100644
--- a/backend/server.js
+++ b/backend/gatewayserver/server.js
@@ -1,5 +1,5 @@
 //SETUP
-var PROTO_PATH = __dirname + '../../../protos/v3/projector.proto';
+var PROTO_PATH = __dirname + '../../../../protos/v3/projector.proto';
 var assert = require('assert');
 var async = require('async');
 const axios = require('axios');
@@ -7,6 +7,9 @@ var _ = require('lodash');
 var grpc = require('@grpc/grpc-js');
 var protoLoader = require('@grpc/proto-loader');
 const http = require("http");
+
+var database=require('../database/config');
+const { callErrorFromStatus } = require('@grpc/grpc-js/build/src/call');
 //let connection = mysql.createConnection(config);
 
 var packageDefinition = protoLoader.loadSync(
@@ -27,25 +30,32 @@ function sendPoint(call, callback) {
   })
 }
 
+//Create the query and execute it
 function addToDB(call){
-  return
-  let sql = `INSERT INTO SAMPLE.dbo.pointTable
-           VALUES (2,2)`;
+  data = call.request.rows;
+  var query = 'INSERT INTO SAMPLE.dbo.pointTable (x,y) \n VALUES \n'
 
-  // execute the insert statment
-  connection.query(sql);
+  for(var i = 0; i < data.length-1; i++){
+    hdvector = data[i].hdvector;
+    query += `(${hdvector[1]}, ${hdvector[2]}),\n`
+  }
+  query += `(${data[data.length-1].hdvector[1]}, ${data[data.length-1].hdvector[2]});`
+  database.executeQuery(query);
 }
 
 //Route the grpc function to the microservice
 function sendPointStream(call) {
   
+  var modelID = "undefined";
   if(call.request.modelid){
     //Non-empty training set
     addToDB(call);
+    modelID = call.request.modelid;
   }
-  console.log(call.request.modelid)
-  console.log(call.request.rows)
-  http.get("http://localhost:8090/generatePointStream", res =>{
+
+  var requestURL = "http://localhost:8090/generatePointStream?modelID=${modelID}" + modelID;
+    
+   http.get(requestURL, res =>{
 
     res.on("data", data =>{
       sendDataStream(data,call)
@@ -67,7 +77,6 @@ function sendDataStream(data,call){
   }
 }
 
-
 //Create server and route the grpc functions to js functions
 function getServer() {
 
diff --git a/backend/microservices and load balancing/app/index.js b/backend/microservices and load balancing/app/index.js
index 0c4fa40a14b48cc41f8bebe930966768d3dfd7b6..57c08306eef5c3b363e0ddfda406aaa92fa35968 100644
--- a/backend/microservices and load balancing/app/index.js	
+++ b/backend/microservices and load balancing/app/index.js	
@@ -1,5 +1,6 @@
 const app = require("express")();
 const http = require('http');
+var database=require('../../database/config');
 
 //Default at 8090 to enable easy development
 const appid = process.env.APPID || 8090;
@@ -13,7 +14,29 @@ app.get("/generatePoint", (req,res) => {
 //Sends the stream Had to limit the speed with intervals
 // Otherwise it sends 2.000.000+ points a sec
 app.get("/generatePointStream",(req,res)=>{
-  console.log("Generating points")
+
+  let modelID = req.query.modelID;
+  console.log(modelID);
+  if(modelID == "undefined"){
+    streamGeneratedPoints(res);
+  }
+  else{
+    streamDatabasePoints(res)
+  }
+})
+
+function streamDatabasePoints(res){
+  console.log("Sending database points")
+  var result = database.executeQuery("SELECT * from SAMPLE.dbo.pointTable");
+  
+  console.log(result);
+}
+
+
+function streamGeneratedPoints(res){
+
+
+  console.log("Sending generated points");
   var intervalId = setInterval(function(){    
 
     for(var i = 0; i<100;i++){
@@ -27,8 +50,7 @@ app.get("/generatePointStream",(req,res)=>{
     }, 10000);
 
 },10);
-
-})
+}
 
 
 //Generate randomPoint