diff --git a/src/plugins/qmljseditor/qmljsquickfix.cpp b/src/plugins/qmljseditor/qmljsquickfix.cpp
index a90a76c4ed1de83842eff477e4613928e5443290..cd64160934c854677d6fe46f27c463dc6baab958 100644
--- a/src/plugins/qmljseditor/qmljsquickfix.cpp
+++ b/src/plugins/qmljseditor/qmljsquickfix.cpp
@@ -33,6 +33,35 @@
 
 using namespace QmlJSEditor::Internal;
 
+QmlJSQuickFixOperation::QmlJSQuickFixOperation(TextEditor::BaseTextEditor *editor)
+    : TextEditor::QuickFixOperation(editor)
+{
+}
+
+QmlJSQuickFixOperation::~QmlJSQuickFixOperation()
+{
+}
+
+void QmlJSQuickFixOperation::move(const QmlJS::AST::SourceLocation &loc, int to)
+{
+    move(position(loc.startColumn, loc.startColumn), to);
+}
+
+void QmlJSQuickFixOperation::replace(const QmlJS::AST::SourceLocation &loc, const QString &replacement)
+{
+    replace(position(loc.startLine, loc.startColumn), replacement);
+}
+
+void QmlJSQuickFixOperation::remove(const QmlJS::AST::SourceLocation &loc)
+{
+    remove(position(loc.startLine, loc.startColumn));
+}
+
+void QmlJSQuickFixOperation::copy(const QmlJS::AST::SourceLocation &loc, int to)
+{
+    copy(position(loc.startLine, loc.startColumn), to);
+}
+
 QmlJSQuickFixCollector::QmlJSQuickFixCollector()
 {
 }
diff --git a/src/plugins/qmljseditor/qmljsquickfix.h b/src/plugins/qmljseditor/qmljsquickfix.h
index b5a5d535b181b5a5a967c24a0680ab823d1395af..12274a1baa1875a837d582a8712492eeeee22b0f 100644
--- a/src/plugins/qmljseditor/qmljsquickfix.h
+++ b/src/plugins/qmljseditor/qmljsquickfix.h
@@ -31,6 +31,7 @@
 #define QMLJSQUICKFIX_H
 
 #include <texteditor/quickfix.h>
+#include <qmljs/parser/qmljsastfwd_p.h>
 
 namespace QmlJSEditor {
 
@@ -38,6 +39,31 @@ class ModelManagerInterface;
 
 namespace Internal {
 
+class QmlJSQuickFixOperation: public TextEditor::QuickFixOperation
+{
+    Q_DISABLE_COPY(QmlJSQuickFixOperation)
+
+public:
+    QmlJSQuickFixOperation(TextEditor::BaseTextEditor *editor);
+    virtual ~QmlJSQuickFixOperation();
+
+protected:
+    using TextEditor::QuickFixOperation::move;
+    using TextEditor::QuickFixOperation::replace;
+    using TextEditor::QuickFixOperation::insert;
+    using TextEditor::QuickFixOperation::remove;
+    using TextEditor::QuickFixOperation::flip;
+    using TextEditor::QuickFixOperation::copy;
+    using TextEditor::QuickFixOperation::textOf;
+    using TextEditor::QuickFixOperation::charAt;
+
+    // token based operations
+    void move(const QmlJS::AST::SourceLocation &loc, int to);
+    void replace(const QmlJS::AST::SourceLocation &loc, const QString &replacement);
+    void remove(const QmlJS::AST::SourceLocation &loc);
+    void copy(const QmlJS::AST::SourceLocation &loc, int to);
+};
+
 class QmlJSQuickFixCollector: public TextEditor::QuickFixCollector
 {
     Q_OBJECT