diff --git a/js/rulesAssistant/conditionEditor.js b/js/rulesAssistant/conditionEditorTree.js
similarity index 99%
rename from js/rulesAssistant/conditionEditor.js
rename to js/rulesAssistant/conditionEditorTree.js
index e6f4ec6be0004e6857e6223bd5ec849d95752fb4..49cbb8e46fa67c537dd8d87fe6a3059820b61bd3 100644
--- a/js/rulesAssistant/conditionEditor.js
+++ b/js/rulesAssistant/conditionEditorTree.js
@@ -1,4 +1,7 @@
-App.RA.Activation.Editor = (function() {
+/**
+ * All functions should only be called from z1-conditionEditorController.js
+ */
+App.RA.Activation.TreeEditor = (function() {
 	/**
 	 * @type {HTMLDivElement}
 	 */
@@ -14,14 +17,13 @@ App.RA.Activation.Editor = (function() {
 
 	/**
 	 * @param {FC.RA.PostFixRule} rule
-	 * @returns {HTMLDivElement}
+	 * @param {HTMLDivElement}parent
 	 */
-	function editor(rule) {
+	function editor(rule, parent) {
 		rulePartMap = new Map();
 		currentRule = deserializeRule(rule);
-		editorNode = document.createElement("div");
+		editorNode = parent;
 		editorNode.append(buildEditor());
-		return editorNode;
 	}
 
 	function refreshEditor() {
diff --git a/js/rulesAssistant/z1-conditionEditorController.js b/js/rulesAssistant/z1-conditionEditorController.js
new file mode 100644
index 0000000000000000000000000000000000000000..abf3b05fd9db17079b2cfae8af0724a26ef94517
--- /dev/null
+++ b/js/rulesAssistant/z1-conditionEditorController.js
@@ -0,0 +1,48 @@
+App.RA.Activation.Editor = (function() {
+	let advanced = true;
+	/**
+	 * @type {HTMLDivElement}
+	 */
+	let editorNode = null;
+
+	/**
+	 * @param {FC.RA.PostFixRule} rule
+	 * @returns {HTMLDivElement}
+	 */
+	function editor(rule) {
+		editorNode = document.createElement("div");
+		if (advanced) {
+			App.RA.Activation.TreeEditor.build(rule, editorNode);
+		} else {
+			// TODO basic
+		}
+		return editorNode;
+	}
+
+	/**
+	 * Save the rule, if it is valid.
+	 *
+	 * @param {(rule:FC.RA.PostFixRule)=>void} callback
+	 */
+	function saveEditor(callback) {
+		if (advanced) {
+			App.RA.Activation.TreeEditor.save(callback);
+		} else {
+			// TODO basic
+		}
+	}
+
+	function resetEditor() {
+		App.RA.Activation.TreeEditor.reset();
+		// TODO basic
+		editorNode = null;
+	}
+
+	return {
+		build: editor,
+		save: saveEditor,
+		reset: resetEditor,
+		// Because of this reference we need to load after conditionEditorTree.js
+		validateRule: App.RA.Activation.TreeEditor.validateRule,
+	};
+})();