diff --git a/src/test/java/com/syncleus/grail/graph/action/AbstractPrioritySerialTriggerTest.java b/src/test/java/com/syncleus/grail/graph/action/AbstractPrioritySerialTriggerTest.java
index 0f018480ce1d05dc0b685c2774c5a1c7f0ca137c..f6901f4ecb29cc02f6a508c6a3bbcb1820b2a429 100644
--- a/src/test/java/com/syncleus/grail/graph/action/AbstractPrioritySerialTriggerTest.java
+++ b/src/test/java/com/syncleus/grail/graph/action/AbstractPrioritySerialTriggerTest.java
@@ -52,6 +52,72 @@ public class AbstractPrioritySerialTriggerTest {
         Assert.assertTrue(actionNode.isDone());
     }
 
+    @Test
+    public void testDoesTriggerInOrder() {
+        final FramedTransactionalGraph<?> graph = FACTORY.create(new MockTransactionalTinkerGraph());
+
+        final List<String> triggerOrder = new ArrayList<String>(2);
+
+        // construct graph
+        final SimpleActionNode firstActionNode = (SimpleActionNode) graph.addVertex(null, SimpleActionNode.class);
+        firstActionNode.setTriggerOrder(triggerOrder);
+        final SimpleActionNode secondActionNode = (SimpleActionNode) graph.addVertex(null, SimpleActionNode.class);
+        secondActionNode.setTriggerOrder(triggerOrder);
+        final PrioritySerialTrigger trigger = (PrioritySerialTrigger) graph.addVertex(null, PrioritySerialTrigger.class);
+        final PrioritySerialTriggerEdge firstTriggerEdge = (PrioritySerialTriggerEdge) graph.addEdge(null, trigger.asVertex(), firstActionNode.asVertex(), "triggers", PrioritySerialTriggerEdge.class);
+        firstTriggerEdge.setTriggerAction("first");
+        firstTriggerEdge.setTriggerPriority(1000);
+        final PrioritySerialTriggerEdge secondTriggerEdge = (PrioritySerialTriggerEdge) graph.addEdge(null, trigger.asVertex(), secondActionNode.asVertex(), "triggers", PrioritySerialTriggerEdge.class);
+        secondTriggerEdge.setTriggerAction("second");
+        secondTriggerEdge.setTriggerPriority(0);
+
+        Assert.assertTrue(triggerOrder.isEmpty());
+
+        //process the weight
+        trigger.trigger();
+
+        //make sure we clear out the action node since the attribute is static.
+        firstActionNode.setTriggerOrder(null);
+        secondActionNode.setTriggerOrder(null);
+
+        Assert.assertTrue(triggerOrder.size() == 2);
+        Assert.assertTrue(triggerOrder.get(0).equals("first"));
+        Assert.assertTrue(triggerOrder.get(1).equals("second"));
+    }
+
+    @Test
+    public void testDoesTriggerInOrderReversed() {
+        final FramedTransactionalGraph<?> graph = FACTORY.create(new MockTransactionalTinkerGraph());
+
+        final List<String> triggerOrder = new ArrayList<String>(2);
+
+        // construct graph
+        final SimpleActionNode firstActionNode = (SimpleActionNode) graph.addVertex(null, SimpleActionNode.class);
+        firstActionNode.setTriggerOrder(triggerOrder);
+        final SimpleActionNode secondActionNode = (SimpleActionNode) graph.addVertex(null, SimpleActionNode.class);
+        secondActionNode.setTriggerOrder(triggerOrder);
+        final PrioritySerialTrigger trigger = (PrioritySerialTrigger) graph.addVertex(null, PrioritySerialTrigger.class);
+        final PrioritySerialTriggerEdge secondTriggerEdge = (PrioritySerialTriggerEdge) graph.addEdge(null, trigger.asVertex(), secondActionNode.asVertex(), "triggers", PrioritySerialTriggerEdge.class);
+        secondTriggerEdge.setTriggerAction("second");
+        secondTriggerEdge.setTriggerPriority(0);
+        final PrioritySerialTriggerEdge firstTriggerEdge = (PrioritySerialTriggerEdge) graph.addEdge(null, trigger.asVertex(), firstActionNode.asVertex(), "triggers", PrioritySerialTriggerEdge.class);
+        firstTriggerEdge.setTriggerAction("first");
+        firstTriggerEdge.setTriggerPriority(1000);
+
+        Assert.assertTrue(triggerOrder.isEmpty());
+
+        //process the weight
+        trigger.trigger();
+
+        //make sure we clear out the action node since the attribute is static.
+        firstActionNode.setTriggerOrder(null);
+        secondActionNode.setTriggerOrder(null);
+
+        Assert.assertTrue(triggerOrder.size() == 2);
+        Assert.assertTrue(triggerOrder.get(0).equals("first"));
+        Assert.assertTrue(triggerOrder.get(1).equals("second"));
+    }
+
     @Test(expected = UndeclaredThrowableException.class )
     public void testBadArguments() {
         final FramedTransactionalGraph<?> graph = FACTORY.create(new MockTransactionalTinkerGraph());
diff --git a/src/test/java/com/syncleus/grail/graph/action/AbstractSimpleActionNode.java b/src/test/java/com/syncleus/grail/graph/action/AbstractSimpleActionNode.java
index 33a666f9f508e85b59591b79d12e2db1d30c950f..7677adea76197d5e878016fd840f4b323e90fd6c 100644
--- a/src/test/java/com/syncleus/grail/graph/action/AbstractSimpleActionNode.java
+++ b/src/test/java/com/syncleus/grail/graph/action/AbstractSimpleActionNode.java
@@ -20,9 +20,33 @@ package com.syncleus.grail.graph.action;
 
 import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
 
+import java.util.List;
+
 public abstract class AbstractSimpleActionNode implements SimpleActionNode, JavaHandlerContext {
+    private static List<String> triggerOrder;
+
+    @Override
+    public void setTriggerOrder(final List<String> triggerOrder) {
+        this.triggerOrder = triggerOrder;
+    }
+
+    @Override
+    public List<String> getTriggerOrder() {
+        return this.triggerOrder;
+    }
+
     @Override
     public void doSomething() {
         this.setDone(true);
     }
+
+    @Override
+    public void doSomethingFirst() {
+        this.triggerOrder.add("first");
+    }
+
+    @Override
+    public void doSomethingSecond() {
+        this.triggerOrder.add("second");
+    }
 }
diff --git a/src/test/java/com/syncleus/grail/graph/action/SimpleActionNode.java b/src/test/java/com/syncleus/grail/graph/action/SimpleActionNode.java
index 4c0e96a776538e0b4efe985b4fc0efdb9ef6023d..766eba916ab01d2ebca9b12b591edcd8308e4939 100644
--- a/src/test/java/com/syncleus/grail/graph/action/SimpleActionNode.java
+++ b/src/test/java/com/syncleus/grail/graph/action/SimpleActionNode.java
@@ -23,6 +23,8 @@ import com.tinkerpop.frames.*;
 import com.tinkerpop.frames.modules.javahandler.*;
 import com.tinkerpop.frames.modules.typedgraph.*;
 
+import java.util.List;
+
 @TypeValue("SimpleActionNode")
 @JavaHandlerClass(AbstractSimpleActionNode.class)
 public interface SimpleActionNode extends Node {
@@ -32,7 +34,21 @@ public interface SimpleActionNode extends Node {
     @Property("isDone")
     void setDone(boolean isDone);
 
+    @JavaHandler
+    void setTriggerOrder(List<String> triggerOrder);
+
+    @JavaHandler
+    List<String> getTriggerOrder();
+
     @JavaHandler
     @Action("action")
     void doSomething();
+
+    @JavaHandler
+    @Action("first")
+    void doSomethingFirst();
+
+    @JavaHandler
+    @Action("second")
+    void doSomethingSecond();
 }