diff --git a/build.gradle.kts b/build.gradle.kts
index de3d285..92c1ee7 100755
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -29,4 +29,4 @@ intellij {
 }
 
 group = "org.acejump"
-version = "chylex-7"
+version = "chylex-8"
diff --git a/src/main/kotlin/org/acejump/action/AceTagAction.kt b/src/main/kotlin/org/acejump/action/AceTagAction.kt
index 4a8d4ee..0ecb943 100644
--- a/src/main/kotlin/org/acejump/action/AceTagAction.kt
+++ b/src/main/kotlin/org/acejump/action/AceTagAction.kt
@@ -1,12 +1,7 @@
 package org.acejump.action
 
-import com.intellij.codeInsight.intention.actions.ShowIntentionActionsAction
-import com.intellij.codeInsight.navigation.actions.GotoDeclarationAction
-import com.intellij.codeInsight.navigation.actions.GotoTypeDeclarationAction
-import com.intellij.find.actions.FindUsagesAction
 import com.intellij.find.actions.ShowUsagesAction
 import com.intellij.openapi.actionSystem.ActionManager
-import com.intellij.openapi.actionSystem.AnAction
 import com.intellij.openapi.actionSystem.IdeActions
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.openapi.command.CommandProcessor
@@ -26,16 +21,8 @@ import com.intellij.openapi.ui.playback.commands.ActionCommand
 import com.intellij.openapi.util.TextRange
 import com.intellij.psi.PsiDocumentManager
 import com.intellij.psi.codeStyle.CodeStyleManager
-import com.intellij.refactoring.actions.RefactoringQuickListPopupAction
-import com.intellij.refactoring.actions.RenameElementAction
-import org.acejump.countMatchingCharacters
-import org.acejump.humpEnd
-import org.acejump.humpStart
-import org.acejump.immutableText
-import org.acejump.isWordPart
+import org.acejump.*
 import org.acejump.search.SearchProcessor
-import org.acejump.wordEnd
-import org.acejump.wordStart
 import kotlin.math.max
 
 /**
@@ -171,8 +158,12 @@ sealed class AceTagAction {
       caretModel.moveToOffset(cursorOffset)
     }
     
-    fun performAction(action: AnAction) {
-      ActionManager.getInstance().tryToExecute(action, ActionCommand.getInputEvent(null), null, null, true)
+    fun performAction(actionName: String) {
+      val actionManager = ActionManager.getInstance()
+      val action = actionManager.getAction(actionName)
+      if (action != null) {
+        actionManager.tryToExecute(action, ActionCommand.getInputEvent(null), null, null, true)
+      }
     }
     
     fun ensureEditorFocused(editor: Editor) {
@@ -366,10 +357,8 @@ sealed class AceTagAction {
     override fun invoke(editor: Editor, searchProcessor: SearchProcessor, offset: Int) {
       JumpToSearchEnd(editor, searchProcessor, offset, shiftMode = false, isFinal = true)
       
-      val action = ActionManager.getInstance().getAction(IdeActions.ACTION_EDITOR_SELECT_WORD_AT_CARET)
-      
       repeat(extendCount) {
-        performAction(action)
+        performAction(IdeActions.ACTION_EDITOR_SELECT_WORD_AT_CARET)
       }
     }
   }
@@ -454,7 +443,7 @@ sealed class AceTagAction {
   object GoToDeclaration : AceTagAction() {
     override fun invoke(editor: Editor, searchProcessor: SearchProcessor, offset: Int, shiftMode: Boolean, isFinal: Boolean) {
       JumpToWordStart(editor, searchProcessor, offset, shiftMode = false, isFinal = isFinal)
-      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) GotoTypeDeclarationAction() else GotoDeclarationAction()) }
+      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) IdeActions.ACTION_GOTO_TYPE_DECLARATION else IdeActions.ACTION_GOTO_DECLARATION) }
     }
   }
   
@@ -466,7 +455,7 @@ sealed class AceTagAction {
   object ShowUsages : AceTagAction() {
     override fun invoke(editor: Editor, searchProcessor: SearchProcessor, offset: Int, shiftMode: Boolean, isFinal: Boolean) {
       JumpToWordStart(editor, searchProcessor, offset, shiftMode = false, isFinal = isFinal)
-      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) FindUsagesAction() else ShowUsagesAction()) }
+      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) IdeActions.ACTION_FIND_USAGES else ShowUsagesAction.ID) }
     }
   }
   
@@ -477,7 +466,7 @@ sealed class AceTagAction {
   object ShowIntentions : AceTagAction() {
     override fun invoke(editor: Editor, searchProcessor: SearchProcessor, offset: Int, shiftMode: Boolean, isFinal: Boolean) {
       JumpToWordStart(editor, searchProcessor, offset, shiftMode = false, isFinal = isFinal)
-      ApplicationManager.getApplication().invokeLater { performAction(ShowIntentionActionsAction()) }
+      ApplicationManager.getApplication().invokeLater { performAction(IdeActions.ACTION_SHOW_INTENTION_ACTIONS) }
     }
   }
   
@@ -489,7 +478,7 @@ sealed class AceTagAction {
   object Refactor : AceTagAction() {
     override fun invoke(editor: Editor, searchProcessor: SearchProcessor, offset: Int, shiftMode: Boolean, isFinal: Boolean) {
       JumpToWordStart(editor, searchProcessor, offset, shiftMode = false, isFinal = isFinal)
-      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) RenameElementAction() else RefactoringQuickListPopupAction()) }
+      ApplicationManager.getApplication().invokeLater { performAction(if (shiftMode) IdeActions.ACTION_RENAME else "Refactorings.QuickListPopupAction") }
     }
   }
 }