diff --git a/package.json b/package.json
index 186fc23fb1320ea1fb1d07058036e419a156a750..2af187d225e1df8d6609b0b8485dac8ea87a3903 100644
--- a/package.json
+++ b/package.json
@@ -18,8 +18,8 @@
   },
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
-    "watch": "parcel watch index.js --target debug",
-    "build": "parcel build index.js --target release && gulp build"
+    "watch": "parcel watch src/index.js --target debug",
+    "build": "parcel build src/index.js --target release && gulp build"
   },
   "repository": {
     "type": "git",
diff --git a/config.js b/src/config.js
similarity index 100%
rename from config.js
rename to src/config.js
diff --git a/display/display.css b/src/display/display.css
similarity index 100%
rename from display/display.css
rename to src/display/display.css
diff --git a/display/display.js b/src/display/display.js
similarity index 100%
rename from display/display.js
rename to src/display/display.js
diff --git a/display/graph.js b/src/display/graph.js
similarity index 99%
rename from display/graph.js
rename to src/display/graph.js
index 581e777bd0fc8beac75a2ba3816f0de1d1366e2a..9834119c4b36a7830d5021f12732764e242387fa 100644
--- a/display/graph.js
+++ b/src/display/graph.js
@@ -1,6 +1,6 @@
 import * as Config from "../config";
 import * as Helpers from "./helpers";
-import { loadGraphJson } from "../datasets/datasets";
+import { loadGraphJson } from "../../datasets/datasets";
 
 import * as THREE from "three";
 import ForceGraph3D from "3d-force-graph";
diff --git a/display/helpers.js b/src/display/helpers.js
similarity index 100%
rename from display/helpers.js
rename to src/display/helpers.js
diff --git a/display/overlays/filteroverlay.js b/src/display/overlays/filteroverlay.js
similarity index 100%
rename from display/overlays/filteroverlay.js
rename to src/display/overlays/filteroverlay.js
diff --git a/display/overlays/neighbors.js b/src/display/overlays/neighbors.js
similarity index 100%
rename from display/overlays/neighbors.js
rename to src/display/overlays/neighbors.js
diff --git a/display/overlays/nodeinfo.js b/src/display/overlays/nodeinfo.js
similarity index 100%
rename from display/overlays/nodeinfo.js
rename to src/display/overlays/nodeinfo.js
diff --git a/editor/css/editor.css b/src/editor/css/editor.css
similarity index 100%
rename from editor/css/editor.css
rename to src/editor/css/editor.css
diff --git a/editor/editor.php b/src/editor/editor.php
similarity index 100%
rename from editor/editor.php
rename to src/editor/editor.php
diff --git a/editor/images/onerror.png b/src/editor/images/onerror.png
similarity index 100%
rename from editor/images/onerror.png
rename to src/editor/images/onerror.png
diff --git a/editor/images/tools/addnode.png b/src/editor/images/tools/addnode.png
similarity index 100%
rename from editor/images/tools/addnode.png
rename to src/editor/images/tools/addnode.png
diff --git a/editor/images/tools/collect.png b/src/editor/images/tools/collect.png
similarity index 100%
rename from editor/images/tools/collect.png
rename to src/editor/images/tools/collect.png
diff --git a/editor/images/tools/connect.png b/src/editor/images/tools/connect.png
similarity index 100%
rename from editor/images/tools/connect.png
rename to src/editor/images/tools/connect.png
diff --git a/editor/images/tools/delete.png b/src/editor/images/tools/delete.png
similarity index 100%
rename from editor/images/tools/delete.png
rename to src/editor/images/tools/delete.png
diff --git a/editor/images/tools/redo.png b/src/editor/images/tools/redo.png
similarity index 100%
rename from editor/images/tools/redo.png
rename to src/editor/images/tools/redo.png
diff --git a/editor/images/tools/save.png b/src/editor/images/tools/save.png
similarity index 100%
rename from editor/images/tools/save.png
rename to src/editor/images/tools/save.png
diff --git a/editor/images/tools/select.png b/src/editor/images/tools/select.png
similarity index 100%
rename from editor/images/tools/select.png
rename to src/editor/images/tools/select.png
diff --git a/editor/images/tools/settings.png b/src/editor/images/tools/settings.png
similarity index 100%
rename from editor/images/tools/settings.png
rename to src/editor/images/tools/settings.png
diff --git a/editor/images/tools/undo.png b/src/editor/images/tools/undo.png
similarity index 100%
rename from editor/images/tools/undo.png
rename to src/editor/images/tools/undo.png
diff --git a/editor/images/tools/wand.png b/src/editor/images/tools/wand.png
similarity index 100%
rename from editor/images/tools/wand.png
rename to src/editor/images/tools/wand.png
diff --git a/editor/js/editor.js b/src/editor/js/editor.js
similarity index 93%
rename from editor/js/editor.js
rename to src/editor/js/editor.js
index 8ff82a16be37064cdaab44b31774cf8d48f8e0c8..ab42cae503bb7cbf8c7ca1d4b5d8a7bdcd3a9f7e 100644
--- a/editor/js/editor.js
+++ b/src/editor/js/editor.js
@@ -1,6 +1,6 @@
 import { State } from "./state";
 import * as Graph from "./graph";
-import { loadGraphJson } from "../../datasets/datasets";
+import { loadGraphJson } from "../../../datasets/datasets";
 import ForceGraph from "force-graph";
 import * as Interactions from "./interactions";
 import { setSpace, SPACE } from "../../config";
@@ -57,7 +57,9 @@ function load() {
         .linkColor((link) => state.linkColor(link))
         .nodeColor((node) => state.nodeColor(node))
         .onNodeClick((node) => state.onNodeClick(node))
-        .onNodeDragEnd((node, translate) => state.onNodeDragEnd(node, translate))
+        .onNodeDragEnd((node, translate) =>
+            state.onNodeDragEnd(node, translate)
+        )
         .autoPauseRedraw(false) // keep redrawing after engine has stopped
         .linkWidth((link) => state.linkWidth(link))
         .linkDirectionalParticles(state.linkDirectionalParticles())
diff --git a/editor/js/graph.js b/src/editor/js/graph.js
similarity index 99%
rename from editor/js/graph.js
rename to src/editor/js/graph.js
index c3839268257b431ca705419ff3d2f28b82a1f583..a925719fb1516cddf33e01bc7274e8eb343d525e 100644
--- a/editor/js/graph.js
+++ b/src/editor/js/graph.js
@@ -56,7 +56,6 @@ export class Graph extends ManagedData {
             clearTimeout(this.physicsStopTimeoutId);
         }
 
-        
         this.data = Graph.addIdentifiers(this.getCleanData(this.data, false));
         this.triggerOnChange();
 
@@ -143,7 +142,9 @@ export class Graph extends ManagedData {
             this.enableStoring();
         }
 
-        this.storeCurrentData("Deleted nodes with ids [" + nodeIds.join(",") + "]");
+        this.storeCurrentData(
+            "Deleted nodes with ids [" + nodeIds.join(",") + "]"
+        );
     }
 
     stopPhysics() {
diff --git a/editor/js/interactions.js b/src/editor/js/interactions.js
similarity index 96%
rename from editor/js/interactions.js
rename to src/editor/js/interactions.js
index f493e1c2e497df96cb09de3a2ae3bfd1c9f71cc6..480961239197b3a5e7d12be352cfd54c9c04c933 100644
--- a/editor/js/interactions.js
+++ b/src/editor/js/interactions.js
@@ -1,6 +1,6 @@
 import jQuery from "jquery";
 import { state } from "./editor";
-import { listAllSpaces, saveGraphJson } from "../../datasets/datasets";
+import { listAllSpaces, saveGraphJson } from "../../../datasets/datasets";
 import { SPACE } from "../../config";
 
 /**
diff --git a/editor/js/manageddata.js b/src/editor/js/manageddata.js
similarity index 100%
rename from editor/js/manageddata.js
rename to src/editor/js/manageddata.js
diff --git a/editor/js/state.js b/src/editor/js/state.js
similarity index 98%
rename from editor/js/state.js
rename to src/editor/js/state.js
index cb2458abc4b245144a27dd561329f3888a694169..4f8e562d7d551d9bac096824ca0ae6716e5f4723 100644
--- a/editor/js/state.js
+++ b/src/editor/js/state.js
@@ -95,11 +95,12 @@ export class State extends Tool {
 
     onNodeDragEnd(node, translate) {
         // Handle as click event, if drag distance under a certain threshold
-        var distanceDragged = Math.sqrt(Math.pow(translate.x, 2) + Math.pow(translate.y, 2));
+        var distanceDragged = Math.sqrt(
+            Math.pow(translate.x, 2) + Math.pow(translate.y, 2)
+        );
         if (distanceDragged < DRAG_THRESHOLD_2D) {
             this.onNodeClick(node);
             return;
-            
         } else {
             this.tool.onNodeDragEnd(node, translate);
         }
diff --git a/editor/js/toolbar.js b/src/editor/js/toolbar.js
similarity index 100%
rename from editor/js/toolbar.js
rename to src/editor/js/toolbar.js
diff --git a/editor/js/tools/addnodetool.js b/src/editor/js/tools/addnodetool.js
similarity index 100%
rename from editor/js/tools/addnodetool.js
rename to src/editor/js/tools/addnodetool.js
diff --git a/editor/js/tools/collecttool.js b/src/editor/js/tools/collecttool.js
similarity index 100%
rename from editor/js/tools/collecttool.js
rename to src/editor/js/tools/collecttool.js
diff --git a/editor/js/tools/connecttool.js b/src/editor/js/tools/connecttool.js
similarity index 100%
rename from editor/js/tools/connecttool.js
rename to src/editor/js/tools/connecttool.js
diff --git a/editor/js/tools/deletetool.js b/src/editor/js/tools/deletetool.js
similarity index 100%
rename from editor/js/tools/deletetool.js
rename to src/editor/js/tools/deletetool.js
diff --git a/editor/js/tools/menus/collectmenu.js b/src/editor/js/tools/menus/collectmenu.js
similarity index 100%
rename from editor/js/tools/menus/collectmenu.js
rename to src/editor/js/tools/menus/collectmenu.js
diff --git a/editor/js/tools/menus/selectmenu.js b/src/editor/js/tools/menus/selectmenu.js
similarity index 100%
rename from editor/js/tools/menus/selectmenu.js
rename to src/editor/js/tools/menus/selectmenu.js
diff --git a/editor/js/tools/menus/settingsmenu.js b/src/editor/js/tools/menus/settingsmenu.js
similarity index 100%
rename from editor/js/tools/menus/settingsmenu.js
rename to src/editor/js/tools/menus/settingsmenu.js
diff --git a/editor/js/tools/menus/toolmenu.js b/src/editor/js/tools/menus/toolmenu.js
similarity index 100%
rename from editor/js/tools/menus/toolmenu.js
rename to src/editor/js/tools/menus/toolmenu.js
diff --git a/editor/js/tools/redotool.js b/src/editor/js/tools/redotool.js
similarity index 100%
rename from editor/js/tools/redotool.js
rename to src/editor/js/tools/redotool.js
diff --git a/editor/js/tools/savetool.js b/src/editor/js/tools/savetool.js
similarity index 86%
rename from editor/js/tools/savetool.js
rename to src/editor/js/tools/savetool.js
index 68d7ab527480b2f87f685102583de068140d1fef..efb5707d94abbc18ac1d198bf9e918750b32a134 100644
--- a/editor/js/tools/savetool.js
+++ b/src/editor/js/tools/savetool.js
@@ -1,5 +1,5 @@
 import Tool from "./tool";
-import { saveGraphJson } from "../../../datasets/datasets";
+import { saveGraphJson } from "../../../../datasets/datasets";
 import { state, graph } from "../editor";
 import { SPACE } from "../../../config";
 
diff --git a/editor/js/tools/selecttool.js b/src/editor/js/tools/selecttool.js
similarity index 100%
rename from editor/js/tools/selecttool.js
rename to src/editor/js/tools/selecttool.js
diff --git a/editor/js/tools/settingstool.js b/src/editor/js/tools/settingstool.js
similarity index 100%
rename from editor/js/tools/settingstool.js
rename to src/editor/js/tools/settingstool.js
diff --git a/editor/js/tools/tool.js b/src/editor/js/tools/tool.js
similarity index 100%
rename from editor/js/tools/tool.js
rename to src/editor/js/tools/tool.js
diff --git a/editor/js/tools/undotool.js b/src/editor/js/tools/undotool.js
similarity index 100%
rename from editor/js/tools/undotool.js
rename to src/editor/js/tools/undotool.js
diff --git a/index.js b/src/index.js
similarity index 100%
rename from index.js
rename to src/index.js