diff --git a/config.js b/config.js
index c29eefe1350c3a8a0175fef466db2d780dec1f01..229d311a32f2cd9d6b7a5bd538dfa9f465d01efb 100644
--- a/config.js
+++ b/config.js
@@ -1,5 +1,6 @@
 const config = {
-  port: 9000
+  port: 9000,
+  boundingBoxBufferPercent: 15
 }
 
 module.exports = config;
\ No newline at end of file
diff --git a/routes/v1.js b/routes/v1.js
index 2b8a79101977d2443e91a56513dcf9c93d274d48..c8890ef546fed0106d70013f23f4c5f6e29c8d29 100644
--- a/routes/v1.js
+++ b/routes/v1.js
@@ -1,10 +1,11 @@
 const express = require("express");
-const { check, validationResult, oneOf } = require("express-validator")
+const { check, validationResult } = require("express-validator")
 const { toLower } = require("../src/customSanitizers");
 const { errorHandler } = require("../src/errorHandler");
 const checkFactory = require("../src/validationCheckFactory");
 const { getSceneHandler } = require("../src/getSceneHandler");
 const { getCapabilitiesHandler } = require("../src/getCapabilitiesHandler");
+const assets = require("../src/assets");
 const bb = require("../src/boundingbox");
 const redirectTo = require("../src/redirectTo");
 
@@ -56,8 +57,11 @@ const sceneChecks = [
     .exists().withMessage("MissingParameterValue")
     .customSanitizer(toLower)
     .equals("getscene").withMessage("InvalidParameterValue"),
-  check("boundingbox")
+  check("layers")
     .exists().withMessage("MissingParameterValue")
+    .custom(value => assets.allLayersExist(value)).withMessage("UnknownLayer"),
+  check("boundingbox")
+    .optional()
     .matches(/^((\-?\d+(\.\d+)?),){3}(\-?\d+(\.\d+)?)$/).withMessage("InvalidParameterValue")
     .custom(value => bb.isValid(value)).withMessage("InvalidParameterValue"),
   check("cullingvolume")
@@ -74,11 +78,7 @@ const sceneChecks = [
     .matches(/^((\-?\d+(\.\d+)?),){1}(\-?\d+(\.\d+)?)$/).withMessage("InvalidParameterValue"),
   check("time")
     .exists().withMessage("MissingParameterValue")
-    .matches(/\d+/).withMessage("InvalidParameterValue"),
-  check("intersect")
-    .exists().withMessage("MissingParameterValue")
-    .customSanitizer(toLower)
-    .isIn(["true", "false"]).withMessage("InvalidParameterValue")
+    .matches(/\d+/).withMessage("InvalidParameterValue")
 ];
 
 router.route("/scene").get(sceneChecks, (req, res) => {
diff --git a/src/assets.js b/src/assets.js
index 98017b6da4d55a6e80dd8e3abab266f73438eb91..30f1a6e708baebbb62e2af7a90c0bb0c823de854 100644
--- a/src/assets.js
+++ b/src/assets.js
@@ -2,6 +2,22 @@ const fs = require("fs");
 const boxIntersect = require("box-intersect");
 const path = require('path');
 
+const getLayers = (layers) => {
+  return new Promise((resolve, reject) => {
+    fs.readFile("./assets/assets.json", (err, data) => {
+      if (err) {
+        reject();
+      }
+      let assets = JSON.parse(data);
+      let requestedLayers = layers.split(",");
+
+      assets = assets.filter(asset => requestedLayers.includes(asset.id));
+      assets = assets.filter(asset => asset.scope == "public");
+      resolve(assets);
+    });
+  });
+}
+
 const getIntersectingLayers = (bb, layers) => {
 
   return new Promise((resolve, reject) => {
@@ -124,4 +140,4 @@ const isPublic = (url) => {
 
 }
 
-module.exports = { getIntersectingLayers, getIntersecting, allLayersExist, getPublicLayers, isPublic };
\ No newline at end of file
+module.exports = { getIntersectingLayers, getIntersecting, allLayersExist, getPublicLayers, isPublic, getLayers };
\ No newline at end of file
diff --git a/src/context.js b/src/context.js
index 6e15ab81673896462d2992671b8e2072a9d4b8de..d613551c8a5edc115e52883677d99e7f0bf761c7 100644
--- a/src/context.js
+++ b/src/context.js
@@ -12,8 +12,7 @@ const fromRequest = (req) => {
     camera: camera.fromString(req.query.camera),
     offCenterFrustum: offCenterFrustum.fromString(req.query.frustum),
     drawingBuffer: drawingBuffer.fromString(req.query.drawingbuffer),
-    requestTime: req.query.time,
-    intersect: JSON.parse(req.query.intersect.toLowerCase())
+    requestTime: req.query.time
   };
 
 }
diff --git a/src/geographicBoundingBox.js b/src/geographicBoundingBox.js
index 2d20803fd44ff4a2902814bac4f6e96a6c605162..5d39594946effb82f6588a563ff73862749f9730 100644
--- a/src/geographicBoundingBox.js
+++ b/src/geographicBoundingBox.js
@@ -61,6 +61,7 @@ class GeographicBoundingBox {
 }
 
 const fromString = (str) => {
+  if(!str) return null;
   let tokens = str.split(",");
   return new GeographicBoundingBox(...tokens.map(token => parseFloat(token)));
 }
diff --git a/src/getSceneHandler.js b/src/getSceneHandler.js
index 2b4c696cf87226bc28f17cf6e427de0e5aac5cdd..045afdf07b5f8d4223235b6b96369e3502f71cf9 100644
--- a/src/getSceneHandler.js
+++ b/src/getSceneHandler.js
@@ -3,7 +3,7 @@ const Traverse = require("./traverse");
 
 const getSceneHandler = (req, res) => {
 
-  assets.getIntersecting(req.query.boundingbox).then(layers => {
+  assets.getLayers(req.query.layers).then(layers => {
 
     let traverse = new Traverse();
     traverse.begin(req, layers[0].url)
diff --git a/src/nodes.js b/src/nodes.js
index 454be1ec86c1b21886e15982a48470a896e86fa1..f034c344662a0f6b7d4b757b253e17e49f244502 100644
--- a/src/nodes.js
+++ b/src/nodes.js
@@ -1,3 +1,5 @@
+const config = require("../config");
+
 class Nodes {
 
   constructor() {
@@ -21,9 +23,9 @@ class Nodes {
       time: context.requestTime
     };
 
-    if (context.intersect) {
+    if (context.bb != null) {
       let requestedBB = context.bb.clone();
-      requestedBB.extend(25);
+      requestedBB.extend(config.boundingBoxBufferPercent);
       if (requestedBB.intersectWithGeographic(boundingSphere.geographicCenter)) {
         this.nodes.push(entry);
       }