diff --git a/.gitmodules b/.gitmodules
index ad423c99a4ec20968904fb99c3d321a09e7f1869..d188ca5dd3844206f4b1e5b1d3e1c9ca9c9d40b5 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
 [submodule "tinydtls"]
-	path = tinydtls
+	path = lowlevel/tinydtls
 	url = https://git.eclipse.org/r/tinydtls/org.eclipse.tinydtls
diff --git a/DTLSSocket.py b/DTLSSocket.py
index b581649ccc7358fd7547fcdd0d07bfad5a8a87ab..c0525b22b04514f5e2949f672ef9588b47254c75 100644
--- a/DTLSSocket.py
+++ b/DTLSSocket.py
@@ -1,4 +1,5 @@
-import socket, dtls, time
+import socket, time
+import lowlevel.dtls as dtls
 
 DTLS_CLIENT = dtls.DTLS_CLIENT
 DTLS_SERVER = dtls.DTLS_SERVER
@@ -11,11 +12,12 @@ class DTLSSocket():
   outancbuff = None
   _sock = None
   
-  def __init__(self, pskId=b"Client_identity", pskStore={b"Client_identity": b"secretPSK"}):
+  def __init__(self, pskId=b"Client_identity", pskStore={b"Client_identity": b"secretPSK"}, logLevel = dtls.DTLS_LOG_EMERG):
     self._sock = socket.socket(family=socket.AF_INET6, type=socket.SOCK_DGRAM)
     self._sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_RECVPKTINFO, 1)
     self.d = dtls.DTLS(read=self._read, write=self._write, event=self._event, pskId=pskId, pskStore=pskStore)
-    print("Init done:", self._sock, self.d)
+    self.d.setLogLevel(logLevel)
+    #print("Init done:", self._sock, self.d)
   
   def __del__(self):
     self.connected.clear()
@@ -121,7 +123,7 @@ class DTLSSocket():
                 print("Debug: dst =", dst)
                 mc = True
       if mc:
-        ret = self.d.handleMessageAddr(dst[0], dst[1], data, mc)
+        ret = self.d.handleMessageAddr(dst[0], dst[1], data)
         if ret != 0:
           print("handleMessageAddr returned", ret)
           raise BlockingIOError
@@ -129,7 +131,7 @@ class DTLSSocket():
         addr, port = src[:2]
         addr = addr.split("%")[0]
         #print("recvmsg call handleMessageAddr with:", addr, port)
-        ret = self.d.handleMessageAddr(addr, port, data, mc)
+        ret = self.d.handleMessageAddr(addr, port, data)
         if ret != 0:
           print("handleMessageAddr returned", ret)
           raise BlockingIOError
diff --git a/dtls.pyx b/lowlevel/dtls.pyx
similarity index 100%
rename from dtls.pyx
rename to lowlevel/dtls.pyx
diff --git a/tdtls.pxd b/lowlevel/tdtls.pxd
similarity index 100%
rename from tdtls.pxd
rename to lowlevel/tdtls.pxd
diff --git a/tinydtls b/lowlevel/tinydtls
similarity index 100%
rename from tinydtls
rename to lowlevel/tinydtls
diff --git a/setup.py b/setup.py
index 68a75d556ca148bc4b254f768c1408eff6962426..f644a6bcf5297f6b944c41f73b8bc36ebbdfd131 100644
--- a/setup.py
+++ b/setup.py
@@ -9,7 +9,7 @@ class prepare_tinydtls(build_ext):
     def run(self):
         def run_command(args):
             print("Running:", " ".join(args))
-            subprocess.check_call(args, cwd="./tinydtls")
+            subprocess.check_call(args, cwd="./lowlevel/tinydtls")
         commands = [
             ["autoconf"],
             ["autoheader"],
@@ -20,12 +20,13 @@ class prepare_tinydtls(build_ext):
         build_ext.run(self)
 
 cy_build = cythonize([
-      Extension("dtls", 
-                ["dtls.pyx", "tinydtls/dtls.c", "tinydtls/crypto.c", "tinydtls/ccm.c",
-                 "tinydtls/hmac.c", "tinydtls/netq.c", "tinydtls/peer.c", "tinydtls/dtls_time.c",
-                 "tinydtls/session.c", "tinydtls/dtls_debug.c",
-                 "tinydtls/aes/rijndael.c", "tinydtls/sha2/sha2.c"],
-                include_dirs=['tinydtls'],
+      Extension("lowlevel.dtls",
+                ["lowlevel/dtls.pyx", "lowlevel/tinydtls/dtls.c", "lowlevel/tinydtls/crypto.c",
+                 "lowlevel/tinydtls/ccm.c", "lowlevel/tinydtls/hmac.c", "lowlevel/tinydtls/netq.c",
+                 "lowlevel/tinydtls/peer.c", "lowlevel/tinydtls/dtls_time.c",
+                 "lowlevel/tinydtls/session.c", "lowlevel/tinydtls/dtls_debug.c",
+                 "lowlevel/tinydtls/aes/rijndael.c", "lowlevel/tinydtls/sha2/sha2.c"],
+                include_dirs=['lowlevel/tinydtls'],
                 define_macros=[('DTLSv12', '1'),
                                ('WITH_SHA256', '1'),
                                ('DTLS_CHECK_CONTENTTYPE', '1'),
diff --git a/testSocket.py b/tests/testSocket.py
similarity index 100%
rename from testSocket.py
rename to tests/testSocket.py
diff --git a/testSocketServer.py b/tests/testSocketServer.py
similarity index 100%
rename from testSocketServer.py
rename to tests/testSocketServer.py