diff --git a/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java b/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java
deleted file mode 100644
index dd77c4ef9..000000000
--- a/src/api/java/yalter/mousetweaks/api/IMTModGuiContainer2.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package yalter.mousetweaks.api;
-
-import net.minecraft.inventory.Container;
-import net.minecraft.inventory.Slot;
-
-/**
- * This is the interface you want to implement in your GuiScreen to make it compatible with Mouse Tweaks.
- * If this interface is not enough (for example, you need a custom slot click function, or if you use a custom Container
- * which happens to be incompatible), check IMTModGuiContainer2Ex instead.
- * If you just need to disable Mouse Tweaks or the wheel tweak, see the MouseTweaksIgnore
- * or the MouseTweaksDisableWheelTweak annotations.
- */
-public interface IMTModGuiContainer2 {
- /**
- * If you want to disable Mouse Tweaks in your GuiScreen, return true from this method.
- *
- * @return True if Mouse Tweaks should be disabled, false otherwise.
- */
- boolean MT_isMouseTweaksDisabled();
-
- /**
- * If you want to disable the Wheel Tweak in your GuiScreen, return true from this method.
- *
- * @return True if the Wheel Tweak should be disabled, false otherwise.
- */
- boolean MT_isWheelTweakDisabled();
-
- /**
- * Returns the Container.
- *
- * @return Container that is currently in use.
- */
- Container MT_getContainer();
-
- /**
- * Returns the Slot that is currently selected by the player, or null if no Slot is selected.
- *
- * @return Slot that is located under the mouse, or null if no Slot it currently under the mouse.
- */
- Slot MT_getSlotUnderMouse();
-
- /**
- * Return true if the given Slot behaves like the vanilla crafting output slots (inside the crafting table,
- * or the furnace output slot, or the anvil output slot, etc.). These slots are handled differently by Mouse Tweaks.
- *
- * @param slot the slot to check
- * @return True if slot is a crafting output slot.
- */
- boolean MT_isCraftingOutput(Slot slot);
-
- /**
- * Return true if the given Slot should be ignored by Mouse Tweaks. Examples of ignored slots are the item select
- * slots and the Destroy Item slot in the vanilla creative inventory.
- *
- * @param slot the slot to check
- * @return Tru if slot should be ignored by Mouse Tweaks.
- */
- boolean MT_isIgnored(Slot slot);
-
- /**
- * If your container has an RMB dragging functionality (like vanilla containers), disable it inside this method.
- * This method is called every frame (render tick), which is after all mouseClicked / mouseClickMove / mouseReleased
- * events are handled (although note these events are handled every game tick, which is far less frequent than every
- * render tick).
- *
- * If true is returned from this method, Mouse Tweaks (after checking other conditions like isIgnored) will click
- * the slot on which the right mouse button was initially pressed (in most cases this is the slot currently under
- * mouse). This is needed because the vanilla RMB dragging functionality prevents the initial slot click.
- *
- * For vanilla containers this method looks like this:
- *
- * this.ignoreMouseUp = true;
- *
- * if (this.dragSplitting) {
- * if (this.dragSplittingButton == 1) {
- * this.dragSplitting = false;
- * return true;
- * }
- * }
- *
- * return false;
- *
- *
- * @return True if Mouse Tweaks should click the slot on which the RMB was pressed.
- */
- boolean MT_disableRMBDraggingFunctionality();
-}
diff --git a/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java b/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java
new file mode 100644
index 000000000..78737d128
--- /dev/null
+++ b/src/api/java/yalter/mousetweaks/api/MouseTweaksIgnore.java
@@ -0,0 +1,14 @@
+package yalter.mousetweaks.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Put this on your GuiScreen to disable Mouse Tweaks.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface MouseTweaksIgnore {
+}
\ No newline at end of file
diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java
index e0c952eb7..ea695d166 100644
--- a/src/main/java/appeng/client/gui/AEBaseGui.java
+++ b/src/main/java/appeng/client/gui/AEBaseGui.java
@@ -69,13 +69,11 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fml.common.Optional;
-import net.minecraftforge.items.SlotItemHandler;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
-import yalter.mousetweaks.api.IMTModGuiContainer2;
+import yalter.mousetweaks.api.MouseTweaksIgnore;
-import javax.annotation.Nonnull;
import java.awt.*;
import java.io.IOException;
import java.text.DecimalFormat;
@@ -88,8 +86,8 @@ import static appeng.integration.modules.jei.JEIPlugin.aeGuiHandler;
import static appeng.integration.modules.jei.JEIPlugin.runtime;
-@Optional.Interface(iface = "yalter.mousetweaks.api.IMTModGuiContainer2", modid = "mousetweaks")
-public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContainer2 {
+@MouseTweaksIgnore
+public abstract class AEBaseGui extends GuiContainer {
private final List