diff --git a/build.gradle.kts b/build.gradle.kts
index 43abee4..b7a371d 100755
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,11 +1,13 @@
 import org.jetbrains.changelog.Changelog.OutputType.HTML
 import org.jetbrains.changelog.date
+import org.jetbrains.intellij.platform.gradle.TestFrameworkType
 
 plugins {
   idea
-  kotlin("jvm") version "1.8.20" // https://plugins.jetbrains.com/docs/intellij/using-kotlin.html#kotlin-standard-library
-  id("org.jetbrains.intellij") version "1.17.3"
-  id("org.jetbrains.changelog") version "2.2.0"
+  alias(libs.plugins.kotlin) // Kotlin support
+  alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin
+  alias(libs.plugins.changelog) // Gradle Changelog Plugin
+  alias(libs.plugins.kover) // Gradle Kover Plugin
   id("com.github.ben-manes.versions") version "0.51.0"
 }
 
@@ -31,10 +33,6 @@ tasks {
     }
   }
 
-  runPluginVerifier {
-    ideVersions = listOf("241.*")
-  }
-
   // Remove pending: https://youtrack.jetbrains.com/issue/IDEA-278926
   val test by getting(Test::class) {
     isScanForTestClasses = false
@@ -71,18 +69,31 @@ changelog {
 
 repositories {
   mavenCentral()
+  intellijPlatform.defaultRepositories()
+//  intellijPlatform.localPlatformArtifacts()
 }
 
 dependencies {
   // https://github.com/anyascii/anyascii
   implementation("com.anyascii:anyascii:0.3.2")
+  intellijPlatform{
+    testImplementation(libs.junit)
+
+    bundledPlugins("com.intellij.java")
+    create("IC", "2024.1.4")
+    pluginVerifier()
+    instrumentationTools()
+    testFramework(TestFrameworkType.Platform)
+  }
 }
 
-intellij {
-  version = "2024.1"
-  pluginName = "AceJump"
-  updateSinceUntilBuild = false
-  plugins = listOf("java")
+intellijPlatform {
+  pluginConfiguration {
+    version = acejumpVersion
+    name = "AceJump"
+  }
+
+  pluginVerification.ides.recommended()
 }
 
 group = "org.acejump"
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 0000000..f345e14
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,18 @@
+[versions]
+# libraries
+junit = "4.13.2"
+
+# plugins
+changelog = "2.2.1"
+intelliJPlatform = "2.0.0"
+kotlin = "2.0.0"
+kover = "0.8.3"
+
+[libraries]
+junit = { group = "junit", name = "junit", version.ref = "junit" }
+
+[plugins]
+changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
+intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "intelliJPlatform" }
+kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 48c0a02..19cfad9 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists