diff --git a/CMakeLists.txt b/CMakeLists.txt
index fcddb20d5740a6141fe8a409e053ca1ca8b36f9d..d023c5063ef0f6aafc32f8ed25da8a63fa8d4a23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 2.8)
 set(CMAKE_VERBOSE_MAKEFILE ON)
 set(CMAKE_COLOR_MAKEFILE   ON)
 set(CMAKE_C_STANDARD 11)
+add_definitions("-fpic")
 
 if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
     set(SUBMODULES_NO_BUILD ON)
@@ -31,11 +32,9 @@ file(GLOB SERVER_CORE_PYTHON_HEADERS include/*.h)
 
 set(Python_ADDITIONAL_VERSIONS 3.7)
 find_package (PythonLibs REQUIRED)
-#find_package(PkgConfig)
-#pkg_check_modules(PC_JSON-C REQUIRED json-c)
 include_directories(${PYTHON_INCLUDE_DIR} include/)
 
-add_library(${PROJECT_NAME} SHARED ${SERVER_CORE_PYTHON_SRCS} ${SERVER_CORE_PYTHON_HEADERS})
+add_library(${PROJECT_NAME} STATIC ${SERVER_CORE_PYTHON_SRCS} ${SERVER_CORE_PYTHON_HEADERS})
 
 target_link_libraries(${PROJECT_NAME})
 
@@ -46,8 +45,5 @@ target_compile_options(
 
 target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core)
 
-#if(BUILD_DAP_PYTHON_TESTS)
-#    add_subdirectory(test)
-#    enable_testing()
-#endif()
+target_include_directories(${PROJECT_NAME} PUBLIC include/ )
 
diff --git a/include/dap_events_python.h b/include/dap_events_python.h
index 7f652fcc26dd894e78ee945ffc0faa56653cc327..3df4f8ffef3934428d0f75cc3b4fe777fc413f2f 100644
--- a/include/dap_events_python.h
+++ b/include/dap_events_python.h
@@ -17,16 +17,12 @@ typedef struct PyDapEvents{
 void PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject);
 
 PyObject *PyDapEventsObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds);
+PyObject *dap_events_socket_remove_and_delete_py(PyDapEventsObject *self, PyObject *args);
 
-//PyObject *dap_events_new_py();
-//PyObject *dap_events_delete_py(PyObject *self, PyObject *args); //dap_events_t * sh );
-//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es );
-PyObject *dap_events_socket_remove_and_delete_py(PyDapEventsObject *self, PyObject *args); //dap_events_socket_t* a_es, bool preserve_inheritor );
+PyObject *dap_events_kill_socket_py(PyDapEventsObject *self, PyObject *args);
 
-PyObject *dap_events_kill_socket_py(PyDapEventsObject *self, PyObject *args); //dap_events_socket_t *a_es );
-
-PyObject *dap_events_start_py(PyDapEventsObject *self); //dap_events_t *sh );
-PyObject *dap_events_wait_py(PyDapEventsObject *self); //dap_events_t *sh );
+PyObject *dap_events_start_py(PyDapEventsObject *self);
+PyObject *dap_events_wait_py(PyDapEventsObject *self);
 
 static PyMethodDef PyDapEventsObject_methods[] = {
     {"start", (PyCFunction)dap_events_start_py, METH_NOARGS, ""},
@@ -38,44 +34,44 @@ static PyMethodDef PyDapEventsObject_methods[] = {
 
 static PyTypeObject dapEvents_dapEventsType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "libDapServerCore.DapEvents",             /* tp_name */
-    sizeof(PyDapEventsObject),             /* tp_basicsize */
-    0,                         /* tp_itemsize */
-    (destructor)PyDapEventsObject_dealloc,//(destructor)Noddy_dealloc, /* tp_dealloc */
-    0,                         /* tp_print */
-    0,                         /* tp_getattr */
-    0,                         /* tp_setattr */
-    0,                         /* tp_reserved */
-    0,                         /* tp_repr */
-    0,                         /* tp_as_number */
-    0,                         /* tp_as_sequence */
-    0,                         /* tp_as_mapping */
-    0,                         /* tp_hash  */
-    0,                         /* tp_call */
-    0,                         /* tp_str */
-    0,                         /* tp_getattro */
-    0,                         /* tp_setattro */
-    0,                         /* tp_as_buffer */
+    "CellFrame.ServerCore.DapEvents",           /* tp_name */
+    sizeof(PyDapEventsObject),		        /* tp_basicsize */
+    0,			                        /* tp_itemsize */
+    (destructor)PyDapEventsObject_dealloc,	/* tp_dealloc */
+    0,                         			/* tp_print */
+    0,                         			/* tp_getattr */
+    0,                         			/* tp_setattr */
+    0,                         			/* tp_reserved */
+    0,                         			/* tp_repr */
+    0,                         			/* tp_as_number */
+    0,                         			/* tp_as_sequence */
+    0,                         			/* tp_as_mapping */
+    0,                         			/* tp_hash  */
+    0,                         			/* tp_call */
+    0,                         			/* tp_str */
+    0,                         			/* tp_getattro */
+    0,                         			/* tp_setattro */
+    0,                         			/* tp_as_buffer */
     Py_TPFLAGS_DEFAULT |
-        Py_TPFLAGS_BASETYPE,   /* tp_flags */
-    "DapEvents objects",           /* tp_doc */
-    0,		               /* tp_traverse */
-    0,		               /* tp_clear */
-    0,		               /* tp_richcompare */
-    0,		               /* tp_weaklistoffset */
-    0,		               /* tp_iter */
-    0,		               /* tp_iternext */
-    PyDapEventsObject_methods,//Noddy_methods,             /* tp_methods */
-    0,//Noddy_members,             /* tp_members */
-    0,//Noddy_getseters,           /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    0,//(initproc)PyDapEventsObject_init,//(initproc)Noddy_init,      /* tp_init */
-    0,                         /* tp_alloc */
-    PyDapEventsObject_new,//Noddy_new,                 /* tp_new */
+        Py_TPFLAGS_BASETYPE,   			/* tp_flags */
+    "DapEvents objects",           		/* tp_doc */
+    0,		               			/* tp_traverse */
+    0,		               			/* tp_clear */
+    0,		               			/* tp_richcompare */
+    0,		               			/* tp_weaklistoffset */
+    0,		               			/* tp_iter */
+    0,		               			/* tp_iternext */
+    PyDapEventsObject_methods,			/* tp_methods */
+    0,						/* tp_members */
+    0,						/* tp_getset */
+    0,                         			/* tp_base */
+    0,                         			/* tp_dict */
+    0,                         			/* tp_descr_get */
+    0,                         			/* tp_descr_set */
+    0,                         			/* tp_dictoffset */
+    0,						/* tp_init */
+    0,                         			/* tp_alloc */
+    PyDapEventsObject_new,	                /* tp_new */
 };
 
 #ifdef __cplusplus
diff --git a/include/dap_events_socket_python.h b/include/dap_events_socket_python.h
index 9795e7e3ecfc91ada1213b1004df6cd09ca9574d..09309cd35b2b70d8280a809bd1897e7a8bc2bac2 100644
--- a/include/dap_events_socket_python.h
+++ b/include/dap_events_socket_python.h
@@ -14,31 +14,23 @@ typedef struct PyDapEventsSocket{
     dap_events_socket_t *t_events_socket;
 }PyDapEventsSocketObject;
 
-PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self);//dap_events_socket_t * a_es);
+PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self);
 
-//PyObject *dap_events_socket_wrap_no_add_py(PyObject *self, PyObject *args);//struct dap_events * a_events,
-                                           // int s, dap_events_socket_callbacks_t * a_callbacks); // Create new client and add it to the list
+PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args);// Find client by socket
+PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args);
+PyObject *dap_events_socket_set_writable_py(PyDapEventsSocketObject *self, PyObject *args);
 
+PyObject *dap_events_socket_write_py(PyDapEventsSocketObject *self, PyObject *args);
+PyObject *dap_events_socket_write_f_py(PyDapEventsSocketObject *self, PyObject *args);
+PyObject *dap_events_socket_read_py(PyDapEventsSocketObject *self, PyObject *args);
 
-PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args);//int sock, struct dap_events * sh); // Find client by socket
-//PyObject *dap_events_socket_is_ready_to_read_py(PyDapEventsSocketObject *self);//dap_events_socket_t * sc);
-//PyObject *dap_events_socket_is_ready_to_write_py(PyDapEventsSocketObject *self);//dap_events_socket_t * sc);
-PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready);
-PyObject *dap_events_socket_set_writable_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * sc,bool is_ready);
+PyObject *dap_events_socket_delete_py(PyDapEventsSocketObject *self, PyObject *args);// Removes the client from the list
 
-PyObject *dap_events_socket_write_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, const void * data, size_t data_size);
-PyObject *dap_events_socket_write_f_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, const char * format,...);
-PyObject *dap_events_socket_read_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc, void * data, size_t data_size);
-
-PyObject *dap_events_socket_delete_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t *sc,bool preserve_inheritor); // Removes the client from the list
-
-PyObject *dap_events_socket_shrink_buf_in_py(PyDapEventsSocketObject *self, PyObject *args);//dap_events_socket_t * cl, size_t shrink_size);
+PyObject *dap_events_socket_shrink_buf_in_py(PyDapEventsSocketObject *self, PyObject *args);
 
 static PyMethodDef PyDapEventsObjectSocket_methods[] = {
     {"createAfter", (PyCFunction)dap_events_socket_create_after_py, METH_NOARGS, ""},
     {"find", (PyCFunction)dap_events_socket_find_py, METH_VARARGS, ""},
-//    {"isReadyToRead", (PyCFunction)dap_events_socket_is_ready_to_read_py, METH_NOARGS, ""},
-//    {"isReadyToWrite", (PyCFunction)dap_events_socket_is_ready_to_write_py, METH_NOARGS, ""},
     {"setReadable", (PyCFunction)dap_events_socket_set_readable_py, METH_VARARGS, ""},
     {"setWritable", (PyCFunction)dap_events_socket_set_writable_py, METH_VARARGS, ""},
     {"write", (PyCFunction)dap_events_socket_write_py, METH_VARARGS, ""},
@@ -51,44 +43,44 @@ static PyMethodDef PyDapEventsObjectSocket_methods[] = {
 
 static PyTypeObject dapEventsSocket_dapEventsSocketType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "libDapServerCore.DapEventsSocket",             /* tp_name */
-    sizeof(PyDapEventsSocketObject),             /* tp_basicsize */
-    0,                         /* tp_itemsize */
-    0,//(destructor)Noddy_dealloc, /* tp_dealloc */
-    0,                         /* tp_print */
-    0,                         /* tp_getattr */
-    0,                         /* tp_setattr */
-    0,                         /* tp_reserved */
-    0,                         /* tp_repr */
-    0,                         /* tp_as_number */
-    0,                         /* tp_as_sequence */
-    0,                         /* tp_as_mapping */
-    0,                         /* tp_hash  */
-    0,                         /* tp_call */
-    0,                         /* tp_str */
-    0,                         /* tp_getattro */
-    0,                         /* tp_setattro */
-    0,                         /* tp_as_buffer */
+    "CellFrame.ServerCore.DapEventsSocket",             /* tp_name */
+    sizeof(PyDapEventsSocketObject),                   /* tp_basicsize */
+    0,                                                 /* tp_itemsize */
+    0,                                                 /* tp_dealloc */
+    0,                                                 /* tp_print */
+    0,                                                 /* tp_getattr */
+    0,                                                 /* tp_setattr */
+    0,                                                 /* tp_reserved */
+    0,                                                 /* tp_repr */
+    0,                                                 /* tp_as_number */
+    0,                                                 /* tp_as_sequence */
+    0,                                                 /* tp_as_mapping */
+    0,                                                 /* tp_hash  */
+    0,                                                 /* tp_call */
+    0,                                                 /* tp_str */
+    0,                                                 /* tp_getattro */
+    0,                                                 /* tp_setattro */
+    0,                                                 /* tp_as_buffer */
     Py_TPFLAGS_DEFAULT |
-        Py_TPFLAGS_BASETYPE,   /* tp_flags */
-    "DapEventsSocket objects",           /* tp_doc */
-    0,		               /* tp_traverse */
-    0,		               /* tp_clear */
-    0,		               /* tp_richcompare */
-    0,		               /* tp_weaklistoffset */
-    0,		               /* tp_iter */
-    0,		               /* tp_iternext */
-    PyDapEventsObjectSocket_methods,             /* tp_methods */
-    0,                         /* tp_members */
-    0,                         /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    0,//(initproc)PyDapEventsObject_init,//(initproc)Noddy_init,      /* tp_init */
-    0,                         /* tp_alloc */
-    PyType_GenericNew,//PyDapEventsObject_new,//Noddy_new,                 /* tp_new */
+        Py_TPFLAGS_BASETYPE,                           /* tp_flags */
+    "DapEventsSocket objects",                         /* tp_doc */
+    0,		                                       /* tp_traverse */
+    0,                        		               /* tp_clear */
+    0,		                                       /* tp_richcompare */
+    0,                        		               /* tp_weaklistoffset */
+    0,		                                       /* tp_iter */
+    0,                        		               /* tp_iternext */
+    PyDapEventsObjectSocket_methods,                   /* tp_methods */
+    0,                                                 /* tp_members */
+    0,                                                 /* tp_getset */
+    0,                                                 /* tp_base */
+    0,                                                 /* tp_dict */
+    0,                                                 /* tp_descr_get */
+    0,                                                 /* tp_descr_set */
+    0,                                                 /* tp_dictoffset */
+    0,                                                 /* tp_init */
+    0,                                                 /* tp_alloc */
+    PyType_GenericNew,                                 /* tp_new */
 };
 
 #ifdef __cplusplus
diff --git a/include/dap_server_python.h b/include/dap_server_python.h
new file mode 100644
index 0000000000000000000000000000000000000000..420b4b0041a62ac538abc187f68f85bf7feeaefd
--- /dev/null
+++ b/include/dap_server_python.h
@@ -0,0 +1,39 @@
+#include "Python.h"
+#include "dap_server.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct PyDapServer {
+    PyObject_HEAD
+    dap_server_t *t_server;
+}PyDapServerObject;
+
+static PyTypeObject dapServer_dapServerType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "CellFrame.ServerCore.DapServer",             /* tp_name */
+    sizeof(PyDapServerObject),                    /* tp_basicsize */
+    0,                                            /* tp_itemsize */
+    0,                                            /* tp_dealloc */
+    0,                                            /* tp_print */
+    0,                                            /* tp_getattr */
+    0,                                            /* tp_setattr */
+    0,                                            /* tp_compare */
+    0,                                            /* tp_repr */
+    0,                                            /* tp_as_number */
+    0,                                            /* tp_as_sequence */
+    0,                                            /* tp_as_mapping */
+    0,                                            /* tp_hash */
+    0,                                            /* tp_call */
+    0,                                            /* tp_str */
+    0,                                            /* tp_getattro */
+    0,                                            /* tp_setattro */
+    0,                                            /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT,                           /* tp_flags */
+    "DapServer objects",                          /* tp_doc */
+};
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/libdap-server-core-python.h b/include/libdap-server-core-python.h
index 047549eaf13d1d165ae58b497a8b6c7eedaf4b64..5b633700508bca281785717cf4109f85fd1c1a6a 100644
--- a/include/libdap-server-core-python.h
+++ b/include/libdap-server-core-python.h
@@ -1,5 +1,6 @@
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
+#include "dap_server_python.h"
 #include "dap_server.h"
 #include "dap_client_remote.h"
 #include "dap_events.h"
@@ -11,61 +12,68 @@
 extern "C" {
 #endif
 
-typedef struct PyDapServer {
-    PyObject_HEAD
-    dap_server_t *t_server;
-}PyDapServerObject;
-
-PyTypeObject dapServer_dapServerType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "libDapServerCore.DapServer",             /* tp_name */
-    sizeof(PyDapServerObject), /* tp_basicsize */
-    0,                         /* tp_itemsize */
-    0,                         /* tp_dealloc */
-    0,                         /* tp_print */
-    0,                         /* tp_getattr */
-    0,                         /* tp_setattr */
-    0,                         /* tp_compare */
-    0,                         /* tp_repr */
-    0,                         /* tp_as_number */
-    0,                         /* tp_as_sequence */
-    0,                         /* tp_as_mapping */
-    0,                         /* tp_hash */
-    0,                         /* tp_call */
-    0,                         /* tp_str */
-    0,                         /* tp_getattro */
-    0,                         /* tp_setattro */
-    0,                         /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,        /* tp_flags */
-    "DapServer objects",           /* tp_doc */
-};
-
+#undef LOG_TAG
 #define LOG_TAG "libdap-server-core-python"
 
-static PyObject *dap_server_core_init(PyObject *self, PyObject *args);
-static PyObject *dap_server_core_deinit();
+typedef struct SeverCore{
+    PyObject_HEAD
+}PyServerCoreObject;
+
+int dap_server_core_init(uint32_t l_thread_cnt, size_t conn_t);
+void 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);
+PyObject *dap_server_core_loop(PyObject *self, PyObject *args);
+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, ""},
+static PyMethodDef ServerCorePythonMethods[] = {
+        {"loop", dap_server_core_loop, METH_VARARGS | METH_STATIC, ""},
+        {"listen", dap_server_core_listen, METH_VARARGS | METH_STATIC, ""},
         {NULL, NULL, 0, NULL}
 };
 
-static struct PyModuleDef dapservercorepythonmodule = {
-        PyModuleDef_HEAD_INIT,
-        "libDapServerCore",   /* name of module */
-        NULL, /* module documentation, may be NULL */
-        -1,       /* size of per-interpreter state of the module,
-                 or -1 if the module keeps state in global variables. */
-        DapServerCorePythonMethods
+
+static PyTypeObject ServerCore_ServerCoreType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "CellFrame.ServerCore",             /* tp_name */
+    sizeof(PyServerCoreObject),         /* tp_basicsize */
+    0,                                  /* tp_itemsize */
+    0,                                  /* tp_dealloc */
+    0,                                  /* tp_print */
+    0,                                  /* tp_getattr */
+    0,                                  /* tp_setattr */
+    0,                                  /* tp_reserved */
+    0,                                  /* tp_repr */
+    0,                                  /* tp_as_number */
+    0,                                  /* tp_as_sequence */
+    0,                                  /* tp_as_mapping */
+    0,                                  /* tp_hash  */
+    0,                                  /* tp_call */
+    0,                                  /* tp_str */
+    0,                                  /* tp_getattro */
+    0,                                  /* tp_setattro */
+    0,                                  /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT |
+        Py_TPFLAGS_BASETYPE,            /* tp_flags */
+    "ServerCore objects",               /* tp_doc */
+    0,		                        /* tp_traverse */
+    0,         		                /* tp_clear */
+    0,		                        /* tp_richcompare */
+    0,		                        /* tp_weaklistoffset */
+    0,		                        /* tp_iter */
+    0,         		                /* tp_iternext */
+    ServerCorePythonMethods,            /* tp_methods */
+    0,                                  /* tp_members */
+    0,                                  /* tp_getset */
+    0,                                  /* tp_base */
+    0         ,                         /* tp_dict */
+    0,                                  /* tp_descr_get */
+    0,                                  /* tp_descr_set */
+    0,                                  /* tp_dictoffset */
+    0,                                  /* tp_init */
+    0,                                  /* tp_alloc */
+    PyType_GenericNew,                  /* tp_new */
 };
 
-PyMODINIT_FUNC PyInit_libDapServerCore(void);
 
 
 #ifdef __cplusplus
diff --git a/libdap b/libdap
index 6c5dd5a5b0de5573b03ed144c651352467a56101..f91fb3b3b6a69ef53531c8fd729592cdff4ec442 160000
--- a/libdap
+++ b/libdap
@@ -1 +1 @@
-Subproject commit 6c5dd5a5b0de5573b03ed144c651352467a56101
+Subproject commit f91fb3b3b6a69ef53531c8fd729592cdff4ec442
diff --git a/libdap-crypto b/libdap-crypto
index 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e..4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10 160000
--- a/libdap-crypto
+++ b/libdap-crypto
@@ -1 +1 @@
-Subproject commit 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e
+Subproject commit 4d764dfacaaa6aa1d8e5ba3c8242d8466e4faf10
diff --git a/libdap-server-core b/libdap-server-core
index de9b4c77a021af36148515e3dbc56403ab45490f..73dfe6c2616ef8a805231560051de3c407d7cd89 160000
--- a/libdap-server-core
+++ b/libdap-server-core
@@ -1 +1 @@
-Subproject commit de9b4c77a021af36148515e3dbc56403ab45490f
+Subproject commit 73dfe6c2616ef8a805231560051de3c407d7cd89
diff --git a/src/dap_events_python.c b/src/dap_events_python.c
index aee762b3eb4dc65439aa4878106610c9331e0d4d..cb32c4e0396c31652143841d81cd8e90f102daa6 100644
--- a/src/dap_events_python.c
+++ b/src/dap_events_python.c
@@ -11,7 +11,6 @@ void PyDapEventsObject_dealloc(PyDapEventsObject *eventsObject){
     Py_TYPE(eventsObject)->tp_free((PyObject*)eventsObject);
 }
 
-//void dap_events_socket_remove_and_delete( dap_events_socket_t* a_es );
 PyObject *dap_events_socket_remove_and_delete_py(PyDapEventsObject *self, PyObject *args){
     PyObject *in_obj;
     PyObject *in_bool;
diff --git a/src/dap_events_socket_python.c b/src/dap_events_socket_python.c
index f44de06fa7743ef046dcefc29373117d277f7f4b..b9c7344d38ef58d0cc4d9b2dede5ca6aaaa1ce6d 100644
--- a/src/dap_events_socket_python.c
+++ b/src/dap_events_socket_python.c
@@ -8,11 +8,6 @@ PyObject *dap_events_socket_create_after_py(PyDapEventsSocketObject *self){
     return  PyLong_FromLong(0);
 }
 
-//PyObject *dap_events_socket_wrap_no_add_py(PyObject *self, PyObject *args){
-//    return  PyLong_FromLong(0);
-//}
-
-
 PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *args){
     if (self->t_events_socket != NULL){
         return NULL;
@@ -25,21 +20,6 @@ PyObject *dap_events_socket_find_py(PyDapEventsSocketObject *self, PyObject *arg
     self->t_events_socket = dap_events_socket_find(socket, ((PyDapEventsObject*)in_object)->t_events);
     return  PyLong_FromLong(0);
 }
-
-//PyObject *dap_events_socket_is_ready_to_read_py(PyDapEventsSocketObject *self){
-//    bool result = dap_events_socket_is_ready_to_read(self->t_events_socket);
-//    if (result)
-//        return Py_BuildValue("O", Py_True);
-//    else
-//        return Py_BuildValue("O", Py_False);
-//}
-//PyObject *dap_events_socket_is_ready_to_write_py(PyDapEventsSocketObject *self){
-//    bool result = dap_events_socket_is_ready_to_write(self->t_events_socket);
-//    if (result)
-//        return Py_BuildValue("O", Py_True);
-//    else
-//        return Py_BuildValue("O", Py_False);
-//}
 PyObject *dap_events_socket_set_readable_py(PyDapEventsSocketObject *self, PyObject *args){
     if (self->t_events_socket == NULL){
         return NULL;
diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c
index 64b5682897afb4bb6ad527adb902e4b083eff803..738ec3e870cdddd3d7bed85854e2dffd4f75f0c7 100644
--- a/src/libdap-server-core-python.c
+++ b/src/libdap-server-core-python.c
@@ -1,33 +1,22 @@
 #include "libdap-server-core-python.h"
 
-
-static PyObject *dap_server_core_init(PyObject *self, PyObject *args){
-    uint32_t l_thread_cnt;
-    size_t conn_t;
-    const char *app_name;
-    const char *app_log;
-    if (!PyArg_ParseTuple(args, "I|n|s|s", &l_thread_cnt, &conn_t, &app_name, &app_log)){
-        return NULL;
-    }
-    int32_t result_common_init = dap_common_init(app_name, app_log);
-    if (result_common_init != 0)
-        return PyLong_FromLong(result_common_init);
-    int32_t result = dap_server_init(l_thread_cnt);
+int dap_server_core_init(uint32_t l_thread_cnt, size_t conn_t){
+    int 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);
+    return result;
 }
-static PyObject *dap_server_core_deinit(){
+
+void dap_server_core_deinit(void){
     dap_client_remote_deinit();
     dap_server_deinit();
     dap_events_deinit();
-    return PyLong_FromLong(0);
 }
 
-static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){
+PyObject *dap_server_core_loop(PyObject *self, PyObject *args){
     PyObject *obj_server;
     if (!PyArg_ParseTuple(args, "O", &obj_server)){
         return NULL;
@@ -37,7 +26,7 @@ static PyObject *dap_server_core_loop(PyObject *self, PyObject *args){
     return PyLong_FromLong(result);
 }
 
-static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
+PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
     const char *addr;
     uint16_t port;
     uint16_t type;
@@ -50,44 +39,3 @@ static PyObject *dap_server_core_listen(PyObject *self, PyObject *args){
     ((PyDapServerObject*)obj)->t_server = dap_server_listen(addr, port, type);
     return Py_BuildValue("O", obj);
 }
-
-PyMODINIT_FUNC PyInit_libDapServerCore(void){
-    dapServer_dapServerType.tp_new = PyType_GenericNew;
-    //dapEvents_dapEventsType.tp_new = PyType_GenericNew;
-    dapEventsSocket_dapEventsSocketType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&dapServer_dapServerType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0
-            || PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0)
-            return NULL;
-
-    PyObject *module = PyModule_Create(&dapservercorepythonmodule);
-
-    PyModule_AddObject(module, "DapEvents", (PyObject*)&dapEvents_dapEventsType);
-    PyModule_AddObject(module, "DapEventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType);
-
-    return module;
-}
-
-int main(int argc, char **argv) {
-    wchar_t *program = Py_DecodeLocale(argv[0], NULL);
-    if (program == NULL) {
-        fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
-        exit(1);
-    }
-
-    /* Add a built-in module, before Py_Initialize */
-    PyImport_AppendInittab("libDapServerCore", PyInit_libDapServerCore);
-
-    /* Pass argv[0] to the Python interpreter */
-    Py_SetProgramName(program);
-
-    /* Initialize the Python interpreter.  Required. */
-    Py_Initialize();
-
-    /* Optionally import the module; alternatively,
-       import can be deferred until the embedded script
-       imports it. */
-    PyImport_ImportModule("libDapServerCore");
-
-    PyMem_RawFree(program);
-    return 0;
-}