diff --git a/PacketQueue.h b/PacketQueue.h
new file mode 100644
index 0000000..cc8adef
--- /dev/null
+++ b/PacketQueue.h
@@ -0,0 +1,42 @@
+#pragma once
+
+// Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved.
+
+// urfd -- The universal reflector
+// Copyright © 2021 Thomas A. Early N7TAE
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+#include
+#include
+#include
+
+#include "TCPacketDef.h"
+
+class CPacketQueue
+{
+public:
+ // lock
+ void Lock() { mutex.lock(); }
+ void Unlock() { mutex.unlock(); }
+
+ // pass thru
+ std::unique_ptr pop() { auto pack = std::move(queue.front()); queue.pop(); return std::move(pack); }
+ bool empty() const { return queue.empty(); }
+ void push(std::unique_ptr &packet) { queue.push(std::move(packet)); }
+
+protected:
+ std::mutex mutex;
+ std::queue> queue;
+};
diff --git a/TCPacketDef.h b/TCPacketDef.h
new file mode 120000
index 0000000..6cf01fc
--- /dev/null
+++ b/TCPacketDef.h
@@ -0,0 +1 @@
+../urfd/reflector/TCPacketDef.h
\ No newline at end of file
diff --git a/UnixDgramSocket.cpp b/UnixDgramSocket.cpp
new file mode 120000
index 0000000..ac38194
--- /dev/null
+++ b/UnixDgramSocket.cpp
@@ -0,0 +1 @@
+../urfd/reflector/UnixDgramSocket.cpp
\ No newline at end of file
diff --git a/UnixDgramSocket.h b/UnixDgramSocket.h
new file mode 120000
index 0000000..e0b3691
--- /dev/null
+++ b/UnixDgramSocket.h
@@ -0,0 +1 @@
+../urfd/reflector/UnixDgramSocket.h
\ No newline at end of file