diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ee333a8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+data/
+stats/
+node_modules/
+dist/
+nextStatic/
+publicDirs/
+extraModules/
+nolog
+
diff --git a/devel/tests/testData/withLocation.json b/devel/tests/testData/withLocation.json
new file mode 100644
index 0000000..6c8ae4c
--- /dev/null
+++ b/devel/tests/testData/withLocation.json
@@ -0,0 +1,78 @@
+{
+  "subj": "Válgazd II. 2020S BSc Nap EA",
+  "version": "2.1.0.0",
+  "id": "1582138883656",
+  "location": "https://bacon.com",
+  "quiz": [
+    {
+      "Q": "Ha a forgóeszközök értéke 42000, a készletek 10000 és a rövid lejáratú kötelezettségek 33600, mekkora a likviditási ráta (L2) (két tizedesig)?",
+      "A": "A helyes válasz: 1,25.",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Folyó források lehetnek",
+      "A": "c. Rövid lejáratú hitel, szállítói kötelezettségek, ÁFA tartozás",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "A pénzügyi tervezés és gazdálkodás módszerei a következők:",
+      "A": "b. mobilitás vizsgálat,likviditási terv, diszponibilitás",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "A mérlegben az eszközök pénzzétételi lehetősége és a források esedékessége között egyensúly kell hogy fenn álljon.",
+      "A": "Igaz",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Ha a nettó forgótőke pozitív, akkor a vállalkozás rövid lejáratú forrásokból fedezi befektetett eszközei egy részét.",
+      "A": "Hamis",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Az adósságszolgálati mutató a vállalati tiszta jövedelem és az azt terhelő kötelezettségek hányadosa.",
+      "A": "Igaz",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Az éves beszámoló részei:",
+      "A": "b. Mérleg, eredménykimutatás, kiegészítő melléklet",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Ha a vállalati saját tőkéje 25M, és az összes kötelezettsége 100M, mekkora a vállalat tőkeellátottsági mutatója (%)?",
+      "A": "A helyes válasz: 20.",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "Egy vállalat tavalyi 2019-es eredményét a mérlegen a saját tőke részeként a mérleg szerinti eredmény soron láthatjuk.\n",
+      "A": "Hamis",
+      "data": {
+        "type": "simple"
+      }
+    },
+    {
+      "Q": "A készletezési periódus a szállítói számla kiegyenlítésétől a vevővel szembeni követelés beérkezéséig tart.",
+      "A": "Hamis",
+      "data": {
+        "type": "simple"
+      }
+    }
+  ]
+}
diff --git a/src/modules/qmining/qmining.ts b/src/modules/qmining/qmining.ts
index 6919e8b..7f86234 100644
--- a/src/modules/qmining/qmining.ts
+++ b/src/modules/qmining/qmining.ts
@@ -98,10 +98,14 @@ function GetApp(): ModuleType {
 
   loadDonateURL()
 
-  utils.WatchFile(linksFile, (newData) => {
-    logger.Log(`Donate URL changed: ${newData.replace(/\/n/g, '')}`)
-    loadDonateURL()
-  })
+  if (utils.FileExists(linksFile)) {
+    utils.WatchFile(linksFile, (newData) => {
+      logger.Log(`Donate URL changed: ${newData.replace(/\/n/g, '')}`)
+      loadDonateURL()
+    })
+  } else {
+    logger.Log('Couldnt read donate URL file!', logger.GetColor('red'))
+  }
 
   // --------------------------------------------------------------
   // REDIRECTS
@@ -187,8 +191,6 @@ function GetApp(): ModuleType {
     },
   ]
 
-  console.log(links, simpleRedirects)
-
   simpleRedirects.forEach((redirect) => {
     app.get(redirect.from, function(req: Request, res) {
       if (!redirect.nolog) {
diff --git a/src/server.ts b/src/server.ts
index 6663bf3..2e6d758 100755
--- a/src/server.ts
+++ b/src/server.ts
@@ -40,7 +40,7 @@ import utils from './utils/utils'
 import dbtools from './utils/dbtools'
 import reqlogger from './middlewares/reqlogger.middleware'
 import idStats from './utils/ids'
-const extraModulesFile = './data/extraModules.json'
+const extraModulesFile = './extraModules/extraModules.json'
 const statExcludeFile = './data/statExclude.json'
 const modulesFile = './src/modules.json'
 const usersDBPath = './data/dbs/users.db'
diff --git a/submodules/qmining-page b/submodules/qmining-page
index 6b6b9a4..599ef00 160000
--- a/submodules/qmining-page
+++ b/submodules/qmining-page
@@ -1 +1 @@
-Subproject commit 6b6b9a43d4d9c2e429adaf76c461c0304dad1133
+Subproject commit 599ef00635c15d500dfcc1a9c226212000e74707