diff --git a/CPClient_main.txt b/CPClient_main.txt
index f0f86aaf363170cf272b8847fff9683d2d8232f5..41d578f0e82bc376320837ffc1124e939f6ba6dc 100644
--- a/CPClient_main.txt
+++ b/CPClient_main.txt
@@ -16,16 +16,12 @@ participant PhyMsg
 participant CPMsg
 
 participant CPCookieRequestMsg
-
 participant CPCookieResponseMsg
-participant Protocol
 
 #To-Do
 #Sort into Blocks
 #Add Datagram Socket
 
-participant [
-
 [->CPClient:main
 activate CPClient
 
@@ -104,13 +100,13 @@ CPProtocol->CPMsg:<<create>>
 activate CPMsg
 CPMsg-->CPProtocol:
 deactivate CPMsg
-CPProtocol->PhyProtocol:receive
+CPProtocol->PhyProtocol:receive()
 activate PhyProtocol
 PhyProtocol->DatagramSocket:setSoTimeout()
 activate DatagramSocket
 DatagramSocket-->PhyProtocol:
 deactivate DatagramSocket
-PhyProtocol->PhyProtocol:receive
+PhyProtocol->PhyProtocol:receive()
 activate PhyProtocol
 PhyProtocol->DatagramPacket:<<create>>
 activate DatagramPacket
@@ -169,7 +165,7 @@ deactivate CPProtocol
 CPProtocol-->CPClient:
 
 deactivate CPProtocol
-CPClient->CPProtocol:receive
+CPClient->CPProtocol:receive()
 activate CPProtocol
 CPProtocol-->CPClient:
 deactivate CPProtocol
diff --git a/pom.xml b/pom.xml
index 0a62eb6da9ad9324c78dfac3a9ffaf50da07c899..2c1b211df7ed3c99736c5a81e7eda15f00e4f229 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,11 @@
             <artifactId>junit-jupiter-engine</artifactId>
             <version>5.9.0</version>
         </dependency>
+        <dependency>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy</artifactId>
+            <version>1.14.6</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/src/main/java/cp/CPCommandMsg.java b/src/main/java/cp/CPCommandMsg.java
index 8b615dc297eb90636b09c8e99ef1b3d07ce088a0..20a4fb72901fe0d54da24583e96cbd0ca5be5724 100644
--- a/src/main/java/cp/CPCommandMsg.java
+++ b/src/main/java/cp/CPCommandMsg.java
@@ -1,2 +1,25 @@
-package cp;public class CPCommandMsg {
+package cp;
+
+import java.util.zip.CRC32;
+
+public class CPCommandMsg extends CPMsg{
+
+    private String cmd;
+    private long crc;
+    protected static final String HEADER = "command";
+
+    public CPCommandMsg(String cookie, String cmd){
+        this.cmd = cmd;
+        this.crc = calcCRC(cookie, cmd);
+    }
+
+    public long getCRC(){
+        return this.crc;
+    }
+
+    private long calcCRC(String cookie, String cmd) {
+        CRC32 crc = new CRC32();
+        //crc.update();
+        return 0;
+    }
 }
diff --git a/src/main/java/cp/CPProtocol.java b/src/main/java/cp/CPProtocol.java
index fc58dadfef6c4d895b401e8154ad03675509d62d..3a075e2a0dd98ea74f0728403dffa44191f8f16b 100644
--- a/src/main/java/cp/CPProtocol.java
+++ b/src/main/java/cp/CPProtocol.java
@@ -44,12 +44,36 @@ public class CPProtocol extends Protocol {
             requestCookie(0);
         }
 
+        //1.2: 1 a
+        if(cookie != null) {
 
+            //1.2: 1 b
+            CPCommandMsg cmdMsg = new CPCommandMsg(cookie, s);
+
+            //1.2: 1 c
+            PhyProto.send(s, this.PhyConfig);
+        }
     }
 
     @Override
     public Msg receive() throws IOException {
-        return null;
+
+        //1.2: 2 a
+        Msg in = this.PhyProto.receive(CP_TIMEOUT);
+
+        //1.2: 2 b
+        CPMsg cpmsg = new CPMsg();
+        cpmsg.create(in.getData());
+
+        try {
+            //1.2: 2 b
+            in = cpmsg.parse(in.getData());
+        } catch (Exception e) {
+            //Discard Message
+            return null;
+        }
+
+        return in;
     }