diff --git a/src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt b/src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt
index e69dad76b..445622920 100644
--- a/src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt
+++ b/src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt
@@ -54,7 +54,7 @@ import com.maddyhome.idea.vim.options.OptionConstants
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import java.awt.event.InputEvent
 import java.awt.event.KeyEvent
 import javax.swing.KeyStroke
diff --git a/src/main/java/com/maddyhome/idea/vim/extension/VimExtensionRegistrar.kt b/src/main/java/com/maddyhome/idea/vim/extension/VimExtensionRegistrar.kt
index 370c01025..826346e70 100644
--- a/src/main/java/com/maddyhome/idea/vim/extension/VimExtensionRegistrar.kt
+++ b/src/main/java/com/maddyhome/idea/vim/extension/VimExtensionRegistrar.kt
@@ -28,7 +28,7 @@ import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.statistic.PluginState
 import com.maddyhome.idea.vim.vimscript.Executor
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import com.maddyhome.idea.vim.vimscript.model.options.ToggleOption
 
 object VimExtensionRegistrar {
diff --git a/src/main/java/com/maddyhome/idea/vim/group/EditorGroup.java b/src/main/java/com/maddyhome/idea/vim/group/EditorGroup.java
index 95be1be5f..7f343950f 100644
--- a/src/main/java/com/maddyhome/idea/vim/group/EditorGroup.java
+++ b/src/main/java/com/maddyhome/idea/vim/group/EditorGroup.java
@@ -37,7 +37,7 @@ import com.maddyhome.idea.vim.helper.*;
 import com.maddyhome.idea.vim.newapi.IjVimEditor;
 import com.maddyhome.idea.vim.api.VimEditor;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType;
-import com.maddyhome.idea.vim.vimscript.model.options.LocalOptionChangeListener;
+import com.maddyhome.idea.vim.options.LocalOptionChangeListener;
 import com.maddyhome.idea.vim.options.OptionConstants;
 import com.maddyhome.idea.vim.options.OptionScope;
 import org.jdom.Element;
diff --git a/src/main/java/com/maddyhome/idea/vim/group/MotionGroup.java b/src/main/java/com/maddyhome/idea/vim/group/MotionGroup.java
index 3dbdb21a5..ee0371f11 100755
--- a/src/main/java/com/maddyhome/idea/vim/group/MotionGroup.java
+++ b/src/main/java/com/maddyhome/idea/vim/group/MotionGroup.java
@@ -53,7 +53,7 @@ import com.maddyhome.idea.vim.api.VimEditor;
 import com.maddyhome.idea.vim.ui.ex.ExEntryPanel;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt;
-import com.maddyhome.idea.vim.vimscript.model.options.LocalOptionChangeListener;
+import com.maddyhome.idea.vim.options.LocalOptionChangeListener;
 import com.maddyhome.idea.vim.options.OptionConstants;
 import com.maddyhome.idea.vim.options.OptionScope;
 import kotlin.Pair;
diff --git a/src/main/java/com/maddyhome/idea/vim/group/RegisterGroup.java b/src/main/java/com/maddyhome/idea/vim/group/RegisterGroup.java
index 4fe4c5c72..989bd3c1f 100644
--- a/src/main/java/com/maddyhome/idea/vim/group/RegisterGroup.java
+++ b/src/main/java/com/maddyhome/idea/vim/group/RegisterGroup.java
@@ -61,7 +61,7 @@ import com.maddyhome.idea.vim.newapi.IjVimEditor;
 import com.maddyhome.idea.vim.ui.ClipboardHandler;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString;
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener;
+import com.maddyhome.idea.vim.options.OptionChangeListener;
 import com.maddyhome.idea.vim.options.OptionConstants;
 import com.maddyhome.idea.vim.options.OptionScope;
 import kotlin.Pair;
diff --git a/src/main/java/com/maddyhome/idea/vim/group/SearchGroup.java b/src/main/java/com/maddyhome/idea/vim/group/SearchGroup.java
index a08d80966..13344d7cd 100644
--- a/src/main/java/com/maddyhome/idea/vim/group/SearchGroup.java
+++ b/src/main/java/com/maddyhome/idea/vim/group/SearchGroup.java
@@ -53,7 +53,7 @@ import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString;
 import com.maddyhome.idea.vim.vimscript.model.expressions.Expression;
 import com.maddyhome.idea.vim.vimscript.model.expressions.SimpleExpression;
 import com.maddyhome.idea.vim.vimscript.model.functions.handlers.SubmatchFunctionHandler;
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener;
+import com.maddyhome.idea.vim.options.OptionChangeListener;
 import com.maddyhome.idea.vim.vimscript.parser.VimscriptParser;
 import com.maddyhome.idea.vim.options.OptionConstants;
 import com.maddyhome.idea.vim.options.OptionScope;
diff --git a/src/main/java/com/maddyhome/idea/vim/helper/CaretVisualAttributesHelper.kt b/src/main/java/com/maddyhome/idea/vim/helper/CaretVisualAttributesHelper.kt
index 874f66f30..e18d409f4 100644
--- a/src/main/java/com/maddyhome/idea/vim/helper/CaretVisualAttributesHelper.kt
+++ b/src/main/java/com/maddyhome/idea/vim/helper/CaretVisualAttributesHelper.kt
@@ -31,7 +31,7 @@ import com.maddyhome.idea.vim.newapi.vim
 import com.maddyhome.idea.vim.options.OptionConstants
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import com.maddyhome.idea.vim.vimscript.model.options.helpers.GuiCursorMode
 import com.maddyhome.idea.vim.vimscript.model.options.helpers.GuiCursorOptionHelper
 import com.maddyhome.idea.vim.vimscript.model.options.helpers.GuiCursorType
diff --git a/src/main/java/com/maddyhome/idea/vim/helper/SearchHelper.java b/src/main/java/com/maddyhome/idea/vim/helper/SearchHelper.java
index e128972d9..f1f90402c 100644
--- a/src/main/java/com/maddyhome/idea/vim/helper/SearchHelper.java
+++ b/src/main/java/com/maddyhome/idea/vim/helper/SearchHelper.java
@@ -39,7 +39,7 @@ import com.maddyhome.idea.vim.regexp.CharPointer;
 import com.maddyhome.idea.vim.regexp.RegExp;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType;
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString;
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener;
+import com.maddyhome.idea.vim.options.OptionChangeListener;
 import com.maddyhome.idea.vim.options.OptionConstants;
 import com.maddyhome.idea.vim.options.OptionScope;
 import kotlin.Pair;
diff --git a/src/main/java/com/maddyhome/idea/vim/option/OptionChangeListener.java b/src/main/java/com/maddyhome/idea/vim/option/OptionChangeListener.java
index ae15aeff8..2c9267046 100644
--- a/src/main/java/com/maddyhome/idea/vim/option/OptionChangeListener.java
+++ b/src/main/java/com/maddyhome/idea/vim/option/OptionChangeListener.java
@@ -21,7 +21,7 @@ package com.maddyhome.idea.vim.option;
 import org.jetbrains.annotations.ApiStatus;
 /**
  * This interface is used for classes that wish to be notified whenever the value of an option has changed
- * @deprecated use {@link com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener} instead
+ * @deprecated use {@link com.maddyhome.idea.vim.options.OptionChangeListener} instead
  */
 @Deprecated
 @ApiStatus.ScheduledForRemoval(inVersion = "1.11")
diff --git a/src/main/java/com/maddyhome/idea/vim/ui/ShowCmd.kt b/src/main/java/com/maddyhome/idea/vim/ui/ShowCmd.kt
index 47da1b78e..f4114e8b7 100644
--- a/src/main/java/com/maddyhome/idea/vim/ui/ShowCmd.kt
+++ b/src/main/java/com/maddyhome/idea/vim/ui/ShowCmd.kt
@@ -35,10 +35,10 @@ import com.maddyhome.idea.vim.helper.StringHelper
 import com.maddyhome.idea.vim.helper.VimNlsSafe
 import com.maddyhome.idea.vim.helper.commandState
 import com.maddyhome.idea.vim.newapi.vim
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import com.maddyhome.idea.vim.options.OptionConstants
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
 import org.jetbrains.annotations.NonNls
 import java.awt.Component
 import java.awt.event.MouseEvent
diff --git a/src/main/java/com/maddyhome/idea/vim/ui/StatusBar.kt b/src/main/java/com/maddyhome/idea/vim/ui/StatusBar.kt
index c455fc649..b0fca1f34 100644
--- a/src/main/java/com/maddyhome/idea/vim/ui/StatusBar.kt
+++ b/src/main/java/com/maddyhome/idea/vim/ui/StatusBar.kt
@@ -50,7 +50,7 @@ import com.maddyhome.idea.vim.options.OptionConstants
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import org.jetbrains.annotations.NonNls
 import java.awt.Point
 import java.awt.event.MouseEvent
diff --git a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/Option.kt b/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/Option.kt
index 29a7b7b15..495bfd77c 100644
--- a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/Option.kt
+++ b/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/Option.kt
@@ -20,6 +20,8 @@ package com.maddyhome.idea.vim.vimscript.model.options
 
 import com.intellij.util.containers.ContainerUtil
 import com.maddyhome.idea.vim.ex.ExException
+import com.maddyhome.idea.vim.options.LocalOptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimInt
diff --git a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/helpers/KeywordOptionHelper.kt b/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/helpers/KeywordOptionHelper.kt
index 27af797f0..bfcc8392a 100644
--- a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/helpers/KeywordOptionHelper.kt
+++ b/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/helpers/KeywordOptionHelper.kt
@@ -23,7 +23,7 @@ import com.maddyhome.idea.vim.options.OptionConstants
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import org.apache.commons.lang.math.NumberUtils
 import java.util.regex.Pattern
 
diff --git a/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionService.kt b/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
index d569c12d8..f3556f158 100644
--- a/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
+++ b/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionService.kt
@@ -21,7 +21,7 @@ package com.maddyhome.idea.vim.vimscript.services
 import com.maddyhome.idea.vim.options.OptionScope
 import com.maddyhome.idea.vim.vimscript.model.datatypes.VimDataType
 import com.maddyhome.idea.vim.vimscript.model.options.Option
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 
 interface OptionService {
 
diff --git a/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionServiceImpl.kt b/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionServiceImpl.kt
index 30f831b22..652929fff 100644
--- a/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionServiceImpl.kt
+++ b/src/main/java/com/maddyhome/idea/vim/vimscript/services/OptionServiceImpl.kt
@@ -36,7 +36,7 @@ import com.maddyhome.idea.vim.vimscript.model.datatypes.VimString
 import com.maddyhome.idea.vim.vimscript.model.datatypes.parseNumber
 import com.maddyhome.idea.vim.vimscript.model.options.NumberOption
 import com.maddyhome.idea.vim.vimscript.model.options.Option
-import com.maddyhome.idea.vim.vimscript.model.options.OptionChangeListener
+import com.maddyhome.idea.vim.options.OptionChangeListener
 import com.maddyhome.idea.vim.vimscript.model.options.StringOption
 import com.maddyhome.idea.vim.vimscript.model.options.ToggleOption
 import com.maddyhome.idea.vim.vimscript.model.options.helpers.GuiCursorOptionHelper
diff --git a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/OptionChangeListener.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/options/OptionChangeListener.kt
similarity index 95%
rename from src/main/java/com/maddyhome/idea/vim/vimscript/model/options/OptionChangeListener.kt
rename to vim-engine/src/main/kotlin/com/maddyhome/idea/vim/options/OptionChangeListener.kt
index 182bda562..652764ec1 100644
--- a/src/main/java/com/maddyhome/idea/vim/vimscript/model/options/OptionChangeListener.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/options/OptionChangeListener.kt
@@ -16,7 +16,7 @@
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
  */
 
-package com.maddyhome.idea.vim.vimscript.model.options
+package com.maddyhome.idea.vim.options
 
 import com.maddyhome.idea.vim.api.VimEditor