diff --git a/stable.user.js b/stable.user.js
index 074a3ce..12741d8 100755
--- a/stable.user.js
+++ b/stable.user.js
@@ -84,13 +84,13 @@
 
   // forcing pages for testing. unless you test, do not set these to true!
   // only one of these should be true for testing
-  setVal('ISDEVEL', false)
+  setVal('ISDEVEL', true)
   const forceTestPage = false
-  const forceResultPage = false
+  const forceResultPage = true
   const forceDefaultPage = false
   const logElementGetting = false
-  const log = false
-  const showErrors = false
+  const log = true
+  const showErrors = true
 
   const motdShowCount = 3 /* Ammount of times to show motd */
   let infoExpireTime = 60 // Every n seconds basic info should be loaded from server
@@ -154,6 +154,62 @@
     }
   }
 
+  // ----------------------------------------------------------------------------------------------
+  // Result page processing functions
+  // ----------------------------------------------------------------------------------------------
+  function getQuiz() {
+    let result = []
+    let i = 1
+    let containerNode = document.getElementById(`q${i}`)
+    do {
+      const question = getQuestionFromNode(containerNode)
+      const answer = getAnswerFromNode(containerNode)
+      result = [
+        ...result,
+        {
+          Q: question,
+          A: answer,
+        },
+      ]
+      console.log(question)
+      console.log(answer)
+      console.log('########################')
+
+      i++
+      containerNode = document.getElementById(`q${i}`)
+    } while (containerNode)
+
+    // [{
+    //    "Q": "Mekkora tényezővel kell számolnunk, ha 100.000 Ft jelenértékét keressük 24% kamatláb, havi tőkésítés és 2,5 éves futamidő mellett?\n\n\n",
+    //    "A": "c.\n\n0,552\n",
+    //    "data": {
+    //      "type": "simple"
+    //    }
+    // }]
+    return result
+  }
+
+  function getAnswerFromNode(node) {
+    let answer = node.getElementsByClassName('rightanswer')
+    if (answer.length === 0) {
+      console.warn('NO ANSWER FOR ANSWER')
+    }
+    answer = answer[0]
+
+    return SUtils.RemoveUnnecesarySpaces(answer.innerText)
+  }
+
+  function getQuestionFromNode(node) {
+    let question = node.getElementsByClassName('qtext')
+    if (question.length === 0) {
+      console.warn('NO QUESTION FOR QTEXT')
+    }
+    question = question[0].innerText
+    return SUtils.RemoveUnnecesarySpaces(question)
+  }
+
+  // ----------------------------------------------------------------------------------------------
+
   class StringUtils {
     RemoveStuff(value, removableStrings, toReplace) {
       removableStrings.forEach(x => {
@@ -485,465 +541,6 @@
     }
   }
 
-  class ResultsPageModell {
-    GetFormulationClearfix() {
-      if (logElementGetting) {
-        Log('getting formulation clearfix lol')
-      }
-      return document.getElementsByClassName('formulation clearfix')
-    }
-
-    GetGrade(i) {
-      if (logElementGetting) {
-        Log('getting grade')
-      }
-      const fcf = QPM.GetFormulationClearfix()[i]
-      return fcf.parentNode.parentNode.childNodes[0].childNodes[2].innerText
-    }
-
-    DetermineQuestionType(nodes) {
-      let qtype = ''
-      let i = 0
-
-      while (i < nodes.length && qtype === '') {
-        let inps = nodes[i].getElementsByTagName('input')
-
-        if (inps.length > 0) {
-          qtype = inps[0].type
-        }
-
-        i++
-      }
-
-      return qtype
-    }
-
-    GetSelectAnswer(i) {
-      if (logElementGetting) {
-        Log('getting selected answer')
-      }
-      var t = document.getElementsByTagName('select')
-      if (t.length > 0) {
-        return t[i].options[t[i].selectedIndex].innerText
-      }
-    }
-
-    GetCurrQuestion(i) {
-      if (logElementGetting) {
-        Log('getting curr questions by index: ' + i)
-      }
-      return document.getElementsByTagName('form')[0].childNodes[0].childNodes[
-        i
-      ].childNodes[1].childNodes[0].innerText
-    }
-
-    GetFormResult() {
-      if (logElementGetting) {
-        Log('getting form result')
-      }
-      var t = document.getElementsByTagName('form')[0].childNodes[0].childNodes
-      if (t.length > 0 && t[0].tagName === undefined) {
-        // debreceni moodle
-        return document.getElementsByTagName('form')[1].childNodes[0].childNodes
-      } else {
-        return t
-      }
-    }
-
-    getGeneralFeedback(i) {
-      return document.getElementsByClassName('generalfeedback')[0]
-    }
-
-    GetAnswerNode(i) {
-      if (logElementGetting) {
-        Log('getting answer node')
-      }
-
-      var results = this.GetFormResult() // getting results element
-
-      var r = results[i].getElementsByClassName('answer')[0].childNodes
-      var ret = []
-      for (var j = 0; j < r.length; j++) {
-        if (
-          r[j].tagName !== undefined &&
-          r[j].tagName.toLowerCase() === 'div'
-        ) {
-          ret.push(r[j])
-        }
-      }
-
-      let qtype = this.DetermineQuestionType(ret)
-
-      return {
-        nodes: ret,
-        type: qtype,
-      }
-    }
-
-    getTextAreaAnswer() {
-      const a = document.getElementsByClassName('generalfeedback')
-      if (a.length > 0) {
-        return a[0].innerText
-      }
-    }
-
-    GetCurrentAnswer(i) {
-      if (logElementGetting) {
-        Log('getting curr answer by index: ' + i)
-      }
-      var results = this.GetFormResult() // getting results element
-      var t = results[i]
-        .getElementsByClassName('formulation clearfix')[0]
-        .getElementsByTagName('span')
-      if (t.length > 2) {
-        return t[1].innerHTML.split('<br>')[1]
-      }
-    }
-
-    GetQText(i) {
-      if (logElementGetting) {
-        Log('getting qtext by index: ' + i)
-      }
-      var results = this.GetFormResult() // getting results element
-      return results[i].getElementsByClassName('qtext')
-    }
-
-    GetDropboxes(i) {
-      if (logElementGetting) {
-        Log('getting dropboxes by index: ' + i)
-      }
-      var results = this.GetFormResult() // getting results element
-      return results[i].getElementsByTagName('select')
-    }
-
-    GetAllAnswer(index) {
-      if (logElementGetting) {
-        Log('getting all answers, ind: ' + index)
-      }
-      return document.getElementsByClassName('answer')[index].childNodes
-    }
-
-    GetPossibleAnswers(i) {
-      if (logElementGetting) {
-        Log('getting possible answers')
-      }
-      var results = this.GetFormResult() // getting results element
-      var items = results[i].getElementsByTagName('label')
-      var r = []
-      for (var j = 0; j < items.length; j++) {
-        const TryGetCorrect = j => {
-          var cn = items[j].parentNode.className
-          if (cn.includes('correct')) {
-            return cn.includes('correct') && !cn.includes('incorrect')
-          }
-        }
-        r.push({
-          value: items[j].innerText,
-          iscorrect: TryGetCorrect(j),
-        })
-      }
-      return r
-    }
-
-    GetAnswersFromGrabBox(i) {
-      try {
-        if (logElementGetting) {
-          Log('testing if question is grab-box')
-        }
-        let results = this.GetFormResult() // getting results element
-        let t = results[i].getElementsByClassName('dragitems')[0].childNodes
-        if (t.length !== 1) {
-          Log('grab box drag items group length is not 1!')
-          Log(results[i].getElementsByClassName('dragitems')[0])
-        }
-        let placedItems = t[0].getElementsByClassName('placed')
-        let res = []
-        for (let i = 0; i < placedItems.length; i++) {
-          let item = placedItems[i]
-          res.push({
-            text: item.innerText,
-            left: item.style.left,
-            top: item.style.top,
-          })
-        }
-        return res
-      } catch (e) {
-        if (showErrors) {
-          console.info(e)
-        }
-      }
-    }
-
-    GetRightAnswerIfCorrectShown(i) {
-      if (logElementGetting) {
-        Log('getting right answer if correct shown')
-      }
-      var results = this.GetFormResult() // getting results element
-      return results[i].getElementsByClassName('rightanswer')
-    }
-
-    GetWrongAnswerIfCorrectNotShown(i) {
-      if (logElementGetting) {
-        Log('getting wrong answer if correct not shown')
-      }
-      var results = this.GetFormResult() // getting results element
-      var n = results[i].getElementsByTagName('i')[0].parentNode
-      if (n.className.includes('incorrect')) {
-        return results[i].getElementsByTagName('i')[0].parentNode.innerText
-      } else {
-        return ''
-      }
-    }
-
-    GetRightAnswerIfCorrectNotShown(i) {
-      if (logElementGetting) {
-        Log('Getting right answer if correct not shown')
-      }
-      var results = this.GetFormResult() // getting results element
-      var n = results[i].getElementsByTagName('i')[0].parentNode
-      if (
-        n.className.includes('correct') &&
-        !n.className.includes('incorrect')
-      ) {
-        return results[i].getElementsByTagName('i')[0].parentNode.innerText
-      }
-    }
-
-    GetFormCFOfResult(result) {
-      if (logElementGetting) {
-        Log('getting formulation clearfix')
-      }
-      return result.getElementsByClassName('formulation clearfix')[0]
-    }
-
-    GetResultText(i) {
-      if (logElementGetting) {
-        Log('getting result text')
-      }
-      var results = this.GetFormResult() // getting results element
-      return this.GetFormCFOfResult(results[i]).getElementsByTagName('p')
-    }
-
-    GetResultImage(i) {
-      if (logElementGetting) {
-        Log('getting result image')
-      }
-      var results = this.GetFormResult() // getting results element
-      return this.GetFormCFOfResult(results[i]).getElementsByTagName('img')
-    }
-
-    // gets the question from the result page
-    // i is the index of the question
-    GetQuestionFromResult(i) {
-      var temp = this.GetQText(i)
-      var currQuestion = ''
-      if (temp.length > 0) {
-        currQuestion = temp[0].innerText // adding the question to curr question as .q
-      } else {
-        // this is black magic fuckery a bit
-        if (this.GetDropboxes(i).length > 0) {
-          var allNodes = this.GetResultText(i)
-          currQuestion = ''
-          for (var k = 0; k < allNodes.length; k++) {
-            var allQuestions = this.GetResultText(i)[k].childNodes
-            for (var j = 0; j < allQuestions.length; j++) {
-              if (
-                allQuestions[j].data !== undefined &&
-                !SUtils.EmptyOrWhiteSpace(allQuestions[j].data)
-              ) {
-                currQuestion += allQuestions[j].data + ' '
-              }
-            }
-          }
-        } else {
-          try {
-            currQuestion = this.GetCurrQuestion(i)
-          } catch (e) {
-            currQuestion = 'REEEEEEEEEEEEEEEEEEEEE' // this shouldnt really happen sry guys
-            Log('Unable to get question in GetQuestionFromResult')
-          }
-        }
-      }
-      return currQuestion
-    }
-
-    GetRightAnswerFromResult(i) {
-      let res = this.GetRightAnswerFromResultv2(i)
-      if (!res) {
-        res = this.GetRightAnswerFromResultv1(i)
-      }
-      return res
-    }
-
-    // tries to get right answer from result page
-    // i is the index of the question
-    GetRightAnswerFromResultv1(i) {
-      var fun = []
-
-      // "húzza oda ..." skip
-      fun.push(i => {
-        let temp = RPM.GetAnswersFromGrabBox(i)
-        return temp
-          .map(x => {
-            return x.text
-          })
-          .join(', ')
-      })
-
-      // the basic type of getting answers
-      fun.push(i => {
-        var temp = RPM.GetRightAnswerIfCorrectShown(i) // getting risht answer
-        if (temp.length > 0) {
-          return temp[0].innerText
-        } // adding the answer to curr question as .a
-      })
-
-      // if there is dropdown list in the current question
-      fun.push(i => {
-        if (RPM.GetDropboxes(i).length > 0) {
-          return RPM.GetCurrentAnswer(i)
-        }
-      })
-
-      // if the correct answers are not shown, and the selected answer
-      // is correct
-      fun.push(i => {
-        return RPM.GetRightAnswerIfCorrectNotShown(i)
-      })
-
-      // if there is dropbox in the question
-      fun.push(i => {
-        return RPM.GetSelectAnswer(i)
-      })
-
-      // if the correct answers are not shown, and the selected answer
-      // is incorrect, and there are only 2 options
-      fun.push(i => {
-        var possibleAnswers = RPM.GetPossibleAnswers(i)
-        if (possibleAnswers.length === 2) {
-          for (var k = 0; k < possibleAnswers.length; k++) {
-            if (possibleAnswers[k].iscorrect === undefined) {
-              return possibleAnswers[k].value
-            }
-          }
-        }
-      })
-
-      // if everything fails
-      fun.push(i => {
-        return undefined
-      })
-
-      var j = 0
-      var currAnswer
-      while (j < fun.length && SUtils.EmptyOrWhiteSpace(currAnswer)) {
-        try {
-          currAnswer = fun[j](i)
-        } catch (e) {
-          if (showErrors) {
-            console.info(e)
-          }
-        }
-        j++
-      }
-
-      return currAnswer
-    }
-
-    GuessCorrectIn2LengthAnswersByIncorrect(items) {
-      const first = items[0]
-      const second = items[1]
-      if (first.className.includes('incorrect')) {
-        return second.innerText
-      }
-      if (second.className.includes('incorrect')) {
-        return first.innerText
-      }
-    }
-
-    GuessCorrectIn2LengthAnswersByPoints(i, items) {
-      const first = {
-        elem: items[0],
-        val: items[0].childNodes[0].checked,
-        text: items[0].innerText,
-      }
-      const second = {
-        elem: items[1],
-        val: items[1].childNodes[0].checked,
-        text: items[1].innerText,
-      }
-
-      const grade = RPM.GetGrade(i) // 1,00 közül 1,00 leosztályozva
-      const grades = grade.split(' ').reduce((acc, text) => {
-        if (text.includes(',')) {
-          // FIXME: fancy regexp
-          acc.push(parseInt(text))
-        } else if (text.includes('.')) {
-          // FIXME: fancy regexp
-          acc.push(parseInt(text))
-        }
-        return acc
-      }, [])
-
-      if (grades[0] === 1) {
-        if (first.val) {
-          return first.text
-        } else {
-          return second.text
-        }
-      } else {
-        if (!first.val) {
-          return first.text
-        } else {
-          return second.text
-        }
-      }
-    }
-
-    // version 2 of getting right answer from result page
-    // i is the index of the question
-    GetRightAnswerFromResultv2(i) {
-      try {
-        var answerNodes = this.GetAnswerNode(i)
-        let items = answerNodes.nodes
-        const generalfeedback = this.getGeneralFeedback(i)
-
-        if (generalfeedback) {
-          return generalfeedback.innerText
-        }
-
-        if (answerNodes.type === 'checkbox') {
-          return RPM.GetRightAnswerFromResultv1(i)
-        }
-
-        for (let j = 0; j < items.length; j++) {
-          let cn = items[j].className
-          if (cn.includes('correct') && !cn.includes('incorrect')) {
-            return items[j].getElementsByTagName('label')[0].innerText
-          }
-        }
-        if (items.length === 2) {
-          const resByIncorrect = this.GuessCorrectIn2LengthAnswersByIncorrect(
-            items
-          )
-          if (!resByIncorrect) {
-            const resPoints = this.GuessCorrectIn2LengthAnswersByPoints(
-              i,
-              items
-            )
-            return resPoints
-          }
-          return resByIncorrect
-        }
-      } catch (e) {
-        Log('error at new nodegetting, trying the oldschool way')
-        if (showErrors) {
-          console.info(e)
-        }
-      }
-    }
-  }
-
   class MiscPageModell {
     GetCurrentSubjectName() {
       if (logElementGetting) {
@@ -977,7 +574,6 @@
   }
 
   var QPM = new QuestionsPageModell()
-  var RPM = new ResultsPageModell()
   var MPM = new MiscPageModell()
 
   // : }}}
@@ -1439,7 +1035,7 @@
   // : Quiz saving {{{
 
   function HandleResults(url) {
-    SaveQuiz(GetQuiz(), ShowSaveQuizDialog) // saves the quiz questions and answers
+    SaveQuiz(getQuiz(), ShowSaveQuizDialog) // saves the quiz questions and answers
   }
 
   function ShowSaveQuizDialog(sendResult, sentData, newQuestions) {
@@ -1549,35 +1145,6 @@
     }
   }
 
-  // getting quiz from finish page
-  function GetQuiz() {
-    try {
-      var quiz = [] // final quiz stuff
-      var results = RPM.GetFormResult() // getting results element
-      for (var i = 0; i < results.length - 2; i++) {
-        var question = {} // the current question
-        // QUESTION --------------------------------------------------------------------------------------------------------------------
-        question.Q = RPM.GetQuestionFromResult(i)
-        // RIGHTANSWER ---------------------------------------------------------------------------------------------------------------------
-        question.A = RPM.GetRightAnswerFromResult(i)
-        // DATA ---------------------------------------------------------------------------------------------------------------------
-        question.data = GetDataFormResult(i)
-
-        if (question.A !== undefined) {
-          quiz.push(question) // adding current question to quiz
-        } else {
-          Log(
-            'error getting queston, no correct answer given, or its incorrect'
-          )
-          Log(question)
-        }
-      }
-      return quiz
-    } catch (e) {
-      Exception(e, 'script error at quiz parsing:')
-    }
-  }
-
   // : }}}
 
   // : Helpers {{{