diff --git a/docs/source/examples/RWTH Evaluation.ipynb b/docs/source/examples/RWTH Evaluation.ipynb
index c90f02ca99d9a344d720176d8c4fec98df05b193..db6ecca9ee86881013eb4ab0158272747df31695 100644
--- a/docs/source/examples/RWTH Evaluation.ipynb	
+++ b/docs/source/examples/RWTH Evaluation.ipynb	
@@ -39,8 +39,15 @@
     "\n",
     "from rwth_nb.misc.feedback import RWTHFeedbackEvaluator\n",
     "\n",
-    "eva = RWTHFeedbackEvaluator(data)  # collect feedback data using rwth_nb.misc.feedback.RWTHFeedbackCollector first\n",
-    "eva.evaluate(lang='de')"
+    "eva = RWTHFeedbackEvaluator([\n",
+    "    {'id': 'likes', 'type': 'free-text-required', 'label': 'Das war gut:'}, \n",
+    "    {'id': 'dislikes', 'type': 'free-text-required', 'label': 'Das könnte verbessert werden:'}, \n",
+    "    {'id': 'misc', 'type': 'free-text', 'label': 'Was ich sonst noch sagen möchte:'}, \n",
+    "    {'id': 'learning', 'type': 'scale', 'label' : 'Ich habe das Gefühl etwas gelernt zu haben.'},\n",
+    "    {'id': 'supervision', 'type': 'scale', 'label' : 'Die Betreuung des Versuchs war gut.'},\n",
+    "    {'id': 'script', 'type': 'scale', 'label' : 'Die Versuchsunterlagen sind verständlich.'},\n",
+    "])  # collect feedback data using rwth_nb.misc.feedback.RWTHFeedbackCollector first\n",
+    "eva.evaluate([data_v6, data_v7], lang='de')"
    ]
   }
  ],
diff --git a/rwth_nb/misc/feedback.py b/rwth_nb/misc/feedback.py
index 58c228606ee590c4be9889da4b04119c15cfcc9d..265f6d3148846fe1ea582cc09179ad427e858f9a 100644
--- a/rwth_nb/misc/feedback.py
+++ b/rwth_nb/misc/feedback.py
@@ -483,8 +483,8 @@ class RWTHFeedbackEvaluator:
 
     Parameters
     ----------
-    data: pandas.Dataframe
-        dataframe created by collector class using json files
+    questions: Dict
+        same dict of questions as in RWTHFeedback
 
 
     Examples
@@ -496,8 +496,10 @@ class RWTHFeedbackEvaluator:
     scale_options = []
     free_text_options = []
 
-    def __init__(self, data):
-        self.data = data
+    def __init__(self, questions=None):
+        if questions is not None:
+            self.scale_options = [q['id'] for q in questions if q['type'] in ('scale')]
+            self.free_text_options = [q['id'] for q in questions if q['type'] in ('free-text', 'free-text-required')]
 
     def evaluate(self, data, lang='en', scale_options=['learning', 'supervision', 'script'],
                  free_text_options=['likes', 'dislikes', 'misc']):
@@ -525,8 +527,9 @@ class RWTHFeedbackEvaluator:
 
         likert_scale = getattr(RWTHFeedback, f'feedback_scale_options_{lang}')
 
-        scale_options = scale_options
-        free_text_options = free_text_options
+        if not (self.scale_options and self.free_text_options):
+            self.scale_options = scale_options
+            self.free_text_options = free_text_options
 
         out = [widgets.Output() for _ in self.data]
 
@@ -538,8 +541,8 @@ class RWTHFeedbackEvaluator:
         for ind, d in enumerate(self.data):
             with out[ind]:
                 # likert scale plots
-                fig, axs = plt.subplots(1, len(scale_options), figsize=(13, 3))
-                for i, l in enumerate(scale_options):
+                fig, axs = plt.subplots(1, len(self.scale_options), figsize=(13, 3))
+                for i, l in enumerate(self.scale_options):
                     # list with counts
                     counts = [int(self.data[d][l].count(a)) for a in likert_scale]
 
@@ -558,7 +561,7 @@ class RWTHFeedbackEvaluator:
                 # free text lists
                 tab = widgets.Tab()
                 tab_children = []
-                for i, f in enumerate(free_text_options):
+                for i, f in enumerate(self.free_text_options):
                     tab.set_title(i, f)
 
                     v_box = [widgets.HTML(f'<li>{label}</li>',