diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java
new file mode 100644
index 0000000..d0d1e3d
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java
@@ -0,0 +1,9 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class CopyTtlOutAction implements Action {
+
+    public CopyTtlOutAction() {
+
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java
new file mode 100644
index 0000000..02cfeec
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java
@@ -0,0 +1,14 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class DecMplsTtlAction implements Action {
+    private final int dec;
+
+    public DecMplsTtlAction(int d) {
+        this.dec = d;
+    }
+
+    public int getDec() {
+        return dec;
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java
new file mode 100644
index 0000000..5770ea2
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java
@@ -0,0 +1,13 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class DecNwTtlAction implements Action {
+    private final int dec;
+
+    public DecNwTtlAction(int d) {
+        this.dec = d;
+    }
+
+    public int getDec() {
+        return this.dec;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java
new file mode 100644
index 0000000..ba0c866
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java
@@ -0,0 +1,22 @@
+package net.onrc.onos.core.matchaction.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.onrc.onos.core.util.Dpid;
+
+public class GroupAction implements Action {
+    List<Dpid> fwdSws;
+
+    public GroupAction() {
+        fwdSws = new ArrayList<Dpid>();
+    }
+
+    public void AddSwitch(Dpid d) {
+        fwdSws.add(d);
+    }
+
+    public List<Dpid> getDpids() {
+        return fwdSws;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java
new file mode 100644
index 0000000..8e59988
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java
@@ -0,0 +1,8 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class PopMplsAction implements Action {
+
+    public PopMplsAction() {
+
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java
new file mode 100644
index 0000000..6157a18
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java
@@ -0,0 +1,9 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class PushMplsAction implements Action {
+
+    public PushMplsAction() {
+
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java
new file mode 100644
index 0000000..14a39c8
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java
@@ -0,0 +1,13 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class SetMplsIdAction implements Action {
+    private final int mplsId;
+
+    public SetMplsIdAction(int id) {
+        this.mplsId = id;
+    }
+
+    public int getMplsId() {
+        return this.mplsId;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java
new file mode 100644
index 0000000..58d7546
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java
@@ -0,0 +1,17 @@
+package net.onrc.onos.core.matchaction.match;
+
+import net.onrc.onos.core.util.IPv4Net;
+
+public class IpPacketMatch implements Match {
+
+    IPv4Net dstIp;
+
+    public IpPacketMatch(String ipAddressSlash) {
+        this.dstIp = new IPv4Net(ipAddressSlash);
+    }
+
+    public IPv4Net getDestination() {
+        return dstIp;
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java
new file mode 100644
index 0000000..cf4e8d4
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java
@@ -0,0 +1,15 @@
+package net.onrc.onos.core.matchaction.match;
+
+public class MplsPacketMatch implements Match {
+
+    private final int mplsLabel;
+
+    public MplsPacketMatch(int label) {
+        this.mplsLabel = label;
+    }
+
+    public int getMplsLabel() {
+        return mplsLabel;
+    }
+
+}
