diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h
index 87b2402acc83ed7416a744efcc8eb2937bca3231..1d7771d10322e2ef4810c2b3dec267aa5defc6a2 100644
--- a/include/libdap-server-core-python.h
+++ b/include/libdap-server-core-python.h
@@ -1,17 +1,31 @@
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
 #include "dap_server.h"
+#include "dap_client_remote.h"
+#include "dap_events.h"
+#include "dap_common.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+dap_server_t *t_server;
+
+
+
+#define LOG_TAG "libdap-server-core-python"
+
 static PyObject *dap_server_core_init(PyObject *self, PyObject *args);
-static PyObject *dap_server_core_deinit();
+static PyObject *dap_server_core_deinit(void);
+
+static PyObject *dap_server_core_loop(PyObject *self, PyObject *args);
+static PyObject *dap_server_core_listen(PyObject *self, PyObject *args);
 
 static PyMethodDef DapServerCorePythonMethods[] = {
         {"init", dap_server_core_init, METH_VARARGS, "Initialization of the DAP (Deus Applicaions Prototypes) server core library"},
         {"deinit", dap_server_core_deinit, METH_NOARGS, "Deinitialization of the DAP (Deus Applicaions Prototypes) server core library"},
+        {"loop", dap_server_core_loop, METH_VARARGS, ""},
+        {"listen", dap_server_core_listen, METH_VARARGS, ""},
         {NULL, NULL, 0, NULL}
 };
 
diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c
index 431db0e350e6f8983d4ee6014162a4ce4ffedbe2..4eb618a565a0b92dcb9a758f8cd8b1c22f5b6723 100644
--- a/src/libdap-server-core-python.c
+++ b/src/libdap-server-core-python.c
@@ -2,9 +2,41 @@
 
 
 static PyObject *dap_server_core_init(PyObject *self, PyObject *args){
-    return PyLong_FromLong(0);
+    uint32_t l_thread_cnt;
+    size_t conn_t;
+    if (!PyArg_ParseTuple(args, "I|n", &l_thread_cnt, &conn_t)){
+        return NULL;
+    }
+    int32_t result = dap_server_init(l_thread_cnt);
+    if ( result != 0 ) {
+       log_it( L_CRITICAL, "Can't init socket server module" );
+     }
+    dap_events_init(l_thread_cnt, conn_t);
+    dap_client_remote_init();
+    return PyLong_FromLong(result);
 }
 static PyObject *dap_server_core_deinit(){
+    dap_client_remote_deinit();
+    dap_server_deinit();
+    dap_events_deinit();
+    return PyLong_FromLong(0);
+}
+
+static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){
+    int32_t result = dap_server_loop(t_server);
+    return PyLong_FromLong(result);
+}
+
+static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
+    const char *addr;
+    uint16_t port;
+    uint16_t type;
+    if (!PyArg_ParseTuple(args, "s|H|H", &addr, &port, &type)){
+        return NULL;
+    }
+    if (type > 1)
+        return  NULL;
+    t_server = dap_server_listen(addr, port, type);
     return PyLong_FromLong(0);
 }