diff --git a/package-lock.json b/package-lock.json
index b04c8d2fc929349a6eeb464c98b17d74a4a32487..af4ca93e55f618d9e869aa3e1bfb4e595cd7fc37 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4862,7 +4862,6 @@
         "filetransfer": "^2.0.4",
         "hark": "^1.2.0",
         "mockconsole": "0.0.1",
-        "pako": "^1.0.10",
         "rtcpeerconnection": "file:src/rtcpeerconnection",
         "socket.io-client": "^2.3.0",
         "webrtc-adapter": "^7.3.0",
diff --git a/package.json b/package.json
index 21bd2440a14d89b76244588458a3cbf2b2f4c630..38cc9623d196a30ce85e5f27239bfbd1b9a4caf7 100644
--- a/package.json
+++ b/package.json
@@ -27,9 +27,11 @@
     "dotenv": "^8.2.0",
     "express": "^4.17.1",
     "liowebrtc": "file:src/liowebrtc",
+    "pako": "^1.0.10",
     "signalbuddy": "file:src/signalbuddy",
     "uuid": "^3.3.3",
     "webrtc-adapter": "^7.3.0",
+    "what-the-pack": "^2.0.3",
     "y-array": "^10.1.4",
     "y-map": "^10.1.3",
     "y-memory": "^8.0.9",
diff --git a/src/liowebrtc b/src/liowebrtc
index 9b066b28a56a902b7ba0fe1532508bf28f269604..7ba21cb4b05ac5ffa2ae46e398dbcb53a6329522 160000
--- a/src/liowebrtc
+++ b/src/liowebrtc
@@ -1 +1 @@
-Subproject commit 9b066b28a56a902b7ba0fe1532508bf28f269604
+Subproject commit 7ba21cb4b05ac5ffa2ae46e398dbcb53a6329522
diff --git a/src/y-webrtc/index.js b/src/y-webrtc/index.js
index 4c5d4b91b7d6ed2d1b208b2c4198bfa9460d781b..ebf27c000f4b4c0b11014a9dde7b36b5a3034be2 100644
--- a/src/y-webrtc/index.js
+++ b/src/y-webrtc/index.js
@@ -2,6 +2,18 @@
 "use strict"
 
 import LioWebRTC from "liowebrtc"
+import MessagePack from "what-the-pack"
+import pako from "pako"
+
+const { encode, decode } = MessagePack.initialize(2 ** 22)
+
+function compressPayload(payload) {
+  return pako.deflate(encode(payload))
+}
+
+function decompressPayload(payload) {
+  return decode(MessagePack.Buffer.from(pako.inflate(payload)))
+}
 
 function extend(Y) {
   class WebRTC extends Y.AbstractConnector {
@@ -45,7 +57,7 @@ function extend(Y) {
       })
 
       this.webrtc.on("leftRoom", () => {
-        console.log("LEFT ROOM")
+        console.log("TODO: LEFT ROOM")
       })
 
       this.webrtc.on("channelOpen", (dataChannel, peer) => {
@@ -63,8 +75,6 @@ function extend(Y) {
             return
           }
 
-          console.log("ping", peer.id)
-
           // Initial message in the handshake
           this.webrtc.whisper(peer, "tw-ml", "tw")
 
@@ -77,11 +87,9 @@ function extend(Y) {
       this.webrtc.on("receivedPeerData", (type, message, peer) => {
         this.checkAndEnsureUser()
 
-        if (message.type !== "update") {
-          console.log("receivedData", peer.id, message)
-        }
-
         if (type === "y-js") {
+          message = decompressPayload(message)
+
           this.checkAndInsertPeer(peer.id)
           this.receiveMessage(peer.id, message)
         } else if (type === "tw-ml") {
@@ -124,8 +132,6 @@ function extend(Y) {
 
       this.peers.add(uid)
 
-      console.log("createdPeer", uid)
-
       this.userJoined(uid, "master")
     }
 
@@ -137,8 +143,6 @@ function extend(Y) {
 
       this.peers.delete(uid)
 
-      console.log("removedPeer", uid)
-
       this.userLeft(uid)
     }
 
@@ -164,15 +168,15 @@ function extend(Y) {
         return
       }
 
-      console.log("send", uid, message)
-
-      this.webrtc.whisper(this.webrtc.getPeerById(uid), "y-js", message)
+      this.webrtc.whisper(
+        this.webrtc.getPeerById(uid),
+        "y-js",
+        compressPayload(message),
+      )
     }
 
     broadcast(message) {
-      if (message.type !== "update") console.log("broadcast", message)
-
-      this.webrtc.shout("y-js", message)
+      this.webrtc.shout("y-js", compressPayload(message))
     }
 
     isDisconnected() {