diff --git a/src/main/kotlin/link/infra/packwiz/installer/UpdateManager.kt b/src/main/kotlin/link/infra/packwiz/installer/UpdateManager.kt
index 6c88db2..05f9951 100644
--- a/src/main/kotlin/link/infra/packwiz/installer/UpdateManager.kt
+++ b/src/main/kotlin/link/infra/packwiz/installer/UpdateManager.kt
@@ -367,7 +367,8 @@ class UpdateManager internal constructor(private val opts: Options, val ui: IUse
 				handleCancellation()
 			}
 		}
-		ui.disableOptionsButton()
+		// TODO: keep this enabled? then apply changes after download process?
+		ui.disableOptionsButton(optionTasks.isNotEmpty())
 
 		// TODO: different thread pool type?
 		val threadPool = Executors.newFixedThreadPool(10)
diff --git a/src/main/kotlin/link/infra/packwiz/installer/ui/IUserInterface.kt b/src/main/kotlin/link/infra/packwiz/installer/ui/IUserInterface.kt
index 4248aa4..7a19aed 100644
--- a/src/main/kotlin/link/infra/packwiz/installer/ui/IUserInterface.kt
+++ b/src/main/kotlin/link/infra/packwiz/installer/ui/IUserInterface.kt
@@ -19,7 +19,7 @@ interface IUserInterface {
 	fun showOptions(options: List<IOptionDetails>): Boolean
 
 	fun showExceptions(exceptions: List<ExceptionDetails>, numTotal: Int, allowsIgnore: Boolean): ExceptionListResult
-	fun disableOptionsButton() {}
+	fun disableOptionsButton(hasOptions: Boolean) {}
 
 	fun showCancellationDialog(): CancellationResult = CancellationResult.QUIT
 
diff --git a/src/main/kotlin/link/infra/packwiz/installer/ui/gui/GUIHandler.kt b/src/main/kotlin/link/infra/packwiz/installer/ui/gui/GUIHandler.kt
index 5ca24cb..ae51df7 100644
--- a/src/main/kotlin/link/infra/packwiz/installer/ui/gui/GUIHandler.kt
+++ b/src/main/kotlin/link/infra/packwiz/installer/ui/gui/GUIHandler.kt
@@ -131,8 +131,8 @@ class GUIHandler : IUserInterface {
 		return future.get()
 	}
 
-	override fun disableOptionsButton() = EventQueue.invokeLater {
-		frmPackwizlauncher.disableOptionsButton()
+	override fun disableOptionsButton(hasOptions: Boolean) = EventQueue.invokeLater {
+		frmPackwizlauncher.disableOptionsButton(hasOptions)
 	}
 
 	override fun showCancellationDialog(): IUserInterface.CancellationResult {
diff --git a/src/main/kotlin/link/infra/packwiz/installer/ui/gui/InstallWindow.kt b/src/main/kotlin/link/infra/packwiz/installer/ui/gui/InstallWindow.kt
index 0386b64..0eca323 100644
--- a/src/main/kotlin/link/infra/packwiz/installer/ui/gui/InstallWindow.kt
+++ b/src/main/kotlin/link/infra/packwiz/installer/ui/gui/InstallWindow.kt
@@ -77,10 +77,10 @@ class InstallWindow(private val handler: GUIHandler) : JFrame() {
 		lblProgresslabel.text = progress.message
 	}
 
-	fun disableOptionsButton() {
+	fun disableOptionsButton(hasOptions: Boolean) {
 		btnOptions.apply {
-			text = "No optional mods"
-			isEnabled = false
+			text = if (hasOptions) { "Optional mods..." } else { "No optional mods" }
+ 			isEnabled = false
 		}
 	}
 }
\ No newline at end of file