diff --git a/src/dev/w1zzrd/asm/GraftSource.java b/src/dev/w1zzrd/asm/GraftSource.java
index ab7ce12..018b25d 100644
--- a/src/dev/w1zzrd/asm/GraftSource.java
+++ b/src/dev/w1zzrd/asm/GraftSource.java
@@ -128,8 +128,12 @@ public final class GraftSource {
         return fieldAnnotations.get(node);
     }
 
-    public Set<MethodNode> getInjectMethods() {
-        return methodAnnotations.keySet();
+    public List<MethodNode> getInjectMethods() {
+        return methodAnnotations
+                .keySet()
+                .stream()
+                .sorted(Comparator.comparingInt(a -> getInjectAnnotation(a).getEntry("priority")))
+                .collect(Collectors.toList());
     }
 
     public Set<FieldNode> getInjectFields() {
diff --git a/src/dev/w1zzrd/asm/Inject.java b/src/dev/w1zzrd/asm/Inject.java
index c18925a..4f02f39 100644
--- a/src/dev/w1zzrd/asm/Inject.java
+++ b/src/dev/w1zzrd/asm/Inject.java
@@ -30,4 +30,6 @@ public @interface Inject {
      * @return True if the injection method should receive the return value
      */
     boolean acceptOriginalReturn() default false;
+
+    int priority() default Integer.MIN_VALUE;
 }