diff --git a/CMakeLists.txt b/CMakeLists.txt
index b540a7b4228959c80f88b90401f6ac48dbadd42a..60a9ce5b1f98b2e5eda4f0f223d01f3dfc42e7a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,7 @@
 cmake_minimum_required(VERSION 3.0)
 
-if (SUPPORT_PYTHON_PLUGINS)
-    project(API_CellFrame C)
-else()
-    project(CellFrame C)
-endif()
+project(CellFrame C)
+
 set(CMAKE_VERBOSE_MAKEFILE ON)
 set(CMAKE_COLOR_MAKEFILE   ON)
 set(CMAKE_C_STANDARD 11)
diff --git a/CellFrame/python-cellframe.c b/CellFrame/python-cellframe.c
index 1722227ef6711ba599c57b4343807c0884822568..b589b9ea75252b05d324268008087a34d8f5c944 100644
--- a/CellFrame/python-cellframe.c
+++ b/CellFrame/python-cellframe.c
@@ -25,6 +25,101 @@ static bool submodules_deint;
 
 PyObject* CellFrame_error = NULL;
 
+static PyMethodDef DapPythonMethods[] = {
+    {"init", python_dap_init, METH_VARARGS, "Initialization of the Python Cellframe library."},
+    {"deinit", python_dap_deinit, METH_VARARGS, "Deinitialization of the Python Cellframe library."},
+    {"setLogLevel", (PyCFunction)dap_set_log_level, METH_VARARGS, "Setting the logging level."},
+    {"configGetItem", (PyCFunction)py_m_dap_config_get_item, METH_VARARGS, "Get an item from a configuration."},
+    {"configGetItemDefault", (PyCFunction)py_m_dap_config_get_item_default, METH_VARARGS, "Get an item from a configuration with a default value."},
+    {NULL, NULL, 0, NULL}
+};
+
+static PyMethodDef CellFramePythonMethods[] = {
+    {NULL, NULL, 0, NULL}
+};
+
+static char CellFramePythonModuleDoc[] = "CellFrame SDK.Python v"DAP_VERSION" welcomes you!";
+
+static PyModuleDef CellFramePythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "CellFrame",   /* name of module */
+    CellFramePythonModuleDoc, /* module documentation, may be NULL */
+    -1,       /* size of per-interpreter state of the module,
+             or -1 if the module keeps state in global variables. */
+    CellFramePythonMethods,
+};
+
+static PyModuleDef DapPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "DAP",   /* name of module */
+    "DAP SDK.Python v"DAP_VERSION" welcomes you!", /* module documentation, may be NULL */
+    -1,       /* size of per-interpreter state of the module,
+             or -1 if the module keeps state in global variables. */
+    DapPythonMethods,
+};
+
+static PyModuleDef DapCorePythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "DAP.Core",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef DapCryptoPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "DAP.Crypto",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef DapNetPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "DAP.Network",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef CellframeChainPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "Cellframe.Chain",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef CellframeCommonPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "Cellframe.Common",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef CellframeNetworkPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "Cellframe.Network",   /* 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. */
+    NULL,
+};
+
+static PyModuleDef CellframeConsensusPythonModule = {
+    PyModuleDef_HEAD_INIT,
+    "Cellframe.Consensus",   /* 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. */
+    NULL,
+};
 
 #ifdef _WIN32
 
@@ -47,7 +142,109 @@ void sigfunc(int sig){
 }
 #endif
 
-PyObject *python_cellframe_init(PyObject *self, PyObject *args){
+PyObject *python_cellframe_init(PyObject *self, PyObject *args)
+{
+    PyObject *cellframeModules = args;
+    Py_ssize_t size_list = PyList_Size(cellframeModules);
+    for (int i=0; i < size_list;i++) {
+        PyObject *value = PyList_GetItem(cellframeModules, i);
+        const char *c_value = PyUnicode_AsUTF8(value);
+        log_it(L_INFO, "Initializing \"%s\" module ...", c_value);
+        if (strcmp(c_value, "Chain") == 0){
+            if(dap_chain_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"Chain\" module");
+                return NULL;
+            }
+            if (dap_chain_cs_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"ChainCS\" module");
+                return NULL;
+            }
+        } else if (strcmp(c_value, "Mempool") == 0){
+            if (dap_datum_mempool_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"Mempool\" module");
+                return NULL;
+            }
+            s_init_mempool = true;
+        } else if (strcmp(c_value, "Wallet") == 0){
+            if (dap_chain_wallet_init_py() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"Wallet\" module");
+                return NULL;
+            }
+            s_init_wallet = true;
+        /*        } else if (strcmp(c_value, "ChainCSDag") == 0){
+            if (dap_chain_cs_dag_init() != 0)
+            {
+                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDag module. ");
+                return NULL;
+            }
+        } else if (strcmp(c_value, "ChainCSDagPoa") == 0){
+            if (dap_chain_cs_dag_poa_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDagPoa module. ");
+                return NULL;
+            }
+        } else if (strcmp(c_value, "ChainCSDagPos") == 0){
+            if (dap_chain_cs_dag_pos_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDagPos module. ");
+                return NULL;
+            } */
+        } else if (strcmp(c_value, "ChainNetSrv") == 0){
+            if (dap_chain_net_srv_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"ChainNetSrv\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "StreamChChain") == 0){
+            if (dap_stream_ch_chain_init() != 0 ){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChain\" module");
+                return NULL;
+            }
+        } else if (strcmp(c_value, "StreamChChainNet") == 0){
+            if (dap_stream_ch_chain_net_init() != 0 ){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChainNet\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "StreamChChainNetSrv") == 0){
+            if (dap_stream_ch_chain_net_init() != 0 ){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChainNetSrv\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "EncKS") == 0){
+        //            if (dap_enc_ks_init())
+        //            if (dap_enc_ks_
+        } else if (strcmp(c_value, "GlobalDB") == 0){
+            if (dap_chain_global_db_init(g_config) != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"GlobalDB\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "Client") == 0){
+            if (dap_client_init() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"Client\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "GDB") == 0){
+            if (dap_chain_gdb_init_py() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"GDB\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "Net") == 0){
+            if (dap_chain_net_init_py() != 0 ){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"Net\" module");
+                return NULL;
+            }
+        }else if (strcmp(c_value, "AppCliServer") == 0){
+            if (dap_chain_node_cli_init(g_config) != 0 ){
+                PyErr_SetString(CellFrame_error, "Failed to initialize \"AppCliServer\" module" );
+                return NULL;
+            }
+        }else{
+            log_it(L_WARNING,"Unknown module: \"%s\"", c_value);
+        }
+        log_it(L_INFO, "Initialization of module is completed");
+    }
+    return Py_None;
+}
+
+PyObject *python_dap_init(PyObject *self, PyObject *args)
+{
     const char *app_name;
     const char *file_name_log;
     const char *config_dir;
@@ -225,15 +422,6 @@ PyObject *python_cellframe_init(PyObject *self, PyObject *args){
                 return NULL;
             }
             s_init_server_core = true;
-        } else if (strcmp(c_value, "Chain") == 0){
-            if(init_chain_py() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"Chain\" module");
-                return NULL;
-            }
-            if (dap_chain_cs_init_py() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"ChainCS\" module");
-                return NULL;
-            }
         } else if (strcmp(c_value, "Http") == 0){
             if(dap_http_init() != 0){
                 PyErr_SetString(CellFrame_error, "Failed to initialize \"Http\" module");
@@ -281,12 +469,6 @@ PyObject *python_cellframe_init(PyObject *self, PyObject *args){
                 return NULL;
             }
             s_init_stream_ctl = true;
-        } else if (strcmp(c_value, "Mempool") == 0){
-            if (dap_datum_mempool_init() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"Mempool\" module");
-                return NULL;
-            }
-            s_init_mempool = true;
         /*
         } else if (strcmp(c_value, "HttpClientSimple") == 0){
             if (dap_http_client_simple_init() != 0){
@@ -294,284 +476,252 @@ PyObject *python_cellframe_init(PyObject *self, PyObject *args){
                 return NULL;
             }
             s_init_http_client_simple = true;*/
-        } else if (strcmp(c_value, "Wallet") == 0){
-            if (dap_chain_wallet_init_py() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"Wallet\" module");
-                return NULL;
-            }
-            s_init_wallet = true;
-/*        } else if (strcmp(c_value, "ChainCSDag") == 0){
-            if (dap_chain_cs_dag_init() != 0)
-            {
-                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDag module. ");
-                return NULL;
-            }
-        } else if (strcmp(c_value, "ChainCSDagPoa") == 0){
-            if (dap_chain_cs_dag_poa_init() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDagPoa module. ");
-                return NULL;
-            }
-        } else if (strcmp(c_value, "ChainCSDagPos") == 0){
-            if (dap_chain_cs_dag_pos_init() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize ChainCSDagPos module. ");
-                return NULL;
-            } */
-        } else if (strcmp(c_value, "ChainNetSrv") == 0){
-            if (dap_chain_net_srv_init() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"ChainNetSrv\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "StreamChChain") == 0){
-            if (dap_stream_ch_chain_init() != 0 ){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChain\" module");
-                return NULL;
-            }
-        } else if (strcmp(c_value, "StreamChChainNet") == 0){
-            if (dap_stream_ch_chain_net_init() != 0 ){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChainNet\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "StreamChChainNetSrv") == 0){
-            if (dap_stream_ch_chain_net_init() != 0 ){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"StreamChChainNetSrv\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "EncKS") == 0){
-//            if (dap_enc_ks_init())
-//            if (dap_enc_ks_
-        } else if (strcmp(c_value, "GlobalDB") == 0){
-            if (dap_chain_global_db_init(g_config) != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"GlobalDB\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "Client") == 0){
-            if (dap_client_init() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"Client\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "GDB") == 0){
-            if (dap_chain_gdb_init_py() != 0){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"GDB\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "Net") == 0){
-            if (dap_chain_net_init_py() != 0 ){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"Net\" module");
-                return NULL;
-            }
-        }else if (strcmp(c_value, "AppCliServer") == 0){
-            if (dap_chain_node_cli_init(g_config) != 0 ){
-                PyErr_SetString(CellFrame_error, "Failed to initialize \"AppCliServer\" module" );
-                return NULL;
-            }
-        }else{
-            log_it(L_WARNING,"Unknown module: \"%s\"", c_value);
         }
-        log_it(L_INFO, "Initialization of module is completed");
     }
+    python_cellframe_init(NULL, getModules);        // TODO replace it with module init function
     if (events == NULL)
         return PyLong_FromLong(0);
-    else
-        return Py_BuildValue("iO", PyLong_FromLong(0), events);
+    else {
+        Py_INCREF(events);
+        return Py_BuildValue("iO", 0, events);
+    }
 }
 
-PyMODINIT_FUNC PyInit_libCellFrame(void){
-            /* === DAP === */
-            // === Core ===
-    if (    PyType_Ready( &DapCoreObjectType ) < 0 ||
-            PyType_Ready( &DapLogitObjectType ) < 0 ||
+PyMODINIT_FUNC PyInit_libDAP()
+{
+    /* === DAP === */
+    if (
+        // === Core ===
+        PyType_Ready( &DapCoreObjectType ) < 0 ||
+        PyType_Ready( &DapLogitObjectType ) < 0 ||
 #ifdef DAP_SUPPORT_PYTHON_PLUGINS
-            PyType_Ready(&DapAppContextObjectType) < 0 ||
+        PyType_Ready( &DapAppContextObjectType) < 0 ||
 #endif
-            // === Network ==
-            PyType_Ready( &DapServerCoreObjectType ) < 0 ||
-            PyType_Ready( &DapEventsObjectType ) < 0 ||
-            PyType_Ready( &DapEventsSocketObjectType ) < 0 ||
-            PyType_Ready( &DapHttpCodeObjectType) < 0 ||
-            PyType_Ready( &DapHttpObjectType) < 0 ||
-            PyType_Ready( &DapEncServerObjectType) < 0 ||
-            PyType_Ready( &DapStreamObjectType) < 0 ||
-            PyType_Ready( &DapStreamCtlObjectType) < 0 ||
-            // === Crypto ===
-            PyType_Ready( &DapCryptoObjectType ) < 0 ||
-            PyType_Ready( &DapCryptoCertObjectType ) < 0 ||
-            PyType_Ready( &DapCryptoKeyTypeObjectType ) < 0 ||
-            PyType_Ready( &DapCryptoDataTypeObjectType ) < 0 ||
-            PyType_Ready( &DapCryproSignTypeObjectType ) < 0 ||
-            PyType_Ready( &DapCryptoSignObjectType ) < 0 ||
-            /* === Cellframe === */
-            // ==== Common ===
-            PyType_Ready(&DapAppCliObjectType ) < 0 ||
-            PyType_Ready(&DapChainWalletObjectType) < 0 ||
-            PyType_Ready(&DapJsonRpcRequestObjectType) < 0 ||
-            PyType_Ready(&DapJsonRpcResponseobjectType) < 0 ||
-            // === Chain ===
-            PyType_Ready( &DapChainObjectType ) < 0 ||
-            PyType_Ready( &DapChainTypeObjectType ) < 0 ||
-            PyType_Ready( &DapChainAtomIterObjectType ) < 0 ||
-            PyType_Ready( &DapChainAtomPtrObjectType ) < 0 ||
-            PyType_Ready( &DapChainCellObjectType ) < 0 ||
-            PyType_Ready( &DapChainGdbObjectType) < 0 ||
-            PyType_Ready( &DapChainMempoolObjectType) < 0 ||
-            PyType_Ready( &DapChainCellIdObjectType) < 0 ||
-            PyType_Ready( &DapChainNodeAddrObjectType) < 0 ||
-            PyType_Ready( &DapChainHashSlowObjectType) < 0 ||
-            PyType_Ready( &DapChainHashFastObjectType) < 0 ||
-            PyType_Ready( &DapChainAddrObjectType) < 0 ||
-            PyType_Ready( &DapChainCsObjectType) < 0 ||
-            PyType_Ready( &DapChainLedgerObjectType) < 0 ||
-            // === Chain datum
-            /// Common
-            PyType_Ready( &DapChainDatumTypeIdObjectType) < 0 ||
-            PyType_Ready( &DapChainDatumObjectType) < 0 ||
-            PyType_Ready( &DapChainDatumIterObjectType) < 0 ||
-            /// Token
-            PyType_Ready( &DapChainDatumTokenObjectType) < 0 ||
-            PyType_Ready( &DapChainDatumTokenEmissionObjectType) < 0 ||
-            /// Custom
-            PyType_Ready( &DapChainDatumCustomObjectType) < 0 ||
-            /// Transaction
-            PyType_Ready( &DapChainDatumTxObjectType) < 0 ||
-            PyType_Ready( &DapChainTxItemTypeObjectType) < 0 ||
-            PyType_Ready( &DapChainTxTokenExtType) < 0 ||
-            PyType_Ready( &DapChainTxCondTypeObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutCondObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutCondSubTypeSrvPayObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutCondSubTypeSrvStakeObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutCondSubTypeSrvXchangeObjectType) < 0 ||
-            PyType_Ready( &DapChainTxInObjectType) < 0 ||
-            PyType_Ready( &DapChainTxInCondObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutObjectType) < 0 ||
-            PyType_Ready( &DapChainTxPkeyObjectType) < 0 ||
-            PyType_Ready( &DapChainTxReceiptObjectType) < 0 ||
-            PyType_Ready( &DapChainTxOutExtObjectType) < 0 ||
-            // === Chain net ===
-            /// Node
-            PyType_Ready( &DapChainNodeObjectType) < 0 ||
-            PyType_Ready( &DapChainNodeCliObjectType) < 0 ||
-            PyType_Ready( &DapChainNodeClientObjectType) < 0 ||
-            PyType_Ready( &DapChainNodeInfoObjectType) < 0 ||
-            /// Net
-            PyType_Ready( &DapChainNetObjectType) < 0 ||
-            PyType_Ready( &DapChainNetStateObjectType) < 0 ||
-            /// Srv
-            PyType_Ready( &DapChainNetSrvObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvClientObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvOrderDirectionObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvOrderObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvUidObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvPriceObjectType) < 0 ||
-            PyType_Ready( &DapChainNetSrvPriceUnitUidObjectType) < 0 ||
-            // === Chain consensuses
-            PyType_Ready( &DapChainCsDagPoaObjectType) < 0
-            ){
-        log_it(L_CRITICAL,"Not all python type objects are initialized");
+        // === Crypto ===
+        PyType_Ready( &DapCryptoAlgoObjectType ) < 0 ||
+        PyType_Ready( &DapCryptoCertObjectType ) < 0 ||
+        PyType_Ready( &DapCryptoKeyTypeObjectType ) < 0 ||
+        PyType_Ready( &DapCryptoDataTypeObjectType ) < 0 ||
+        PyType_Ready( &DapCryproSignTypeObjectType ) < 0 ||
+        PyType_Ready( &DapCryptoSignObjectType ) < 0 ||
+        PyType_Ready( &DapChainHashFastObjectType ) < 0 ||
+        // === Network ==
+        PyType_Ready( &DapServerCoreObjectType ) < 0 ||
+        PyType_Ready( &DapEventsObjectType ) < 0 ||
+        PyType_Ready( &DapEventsSocketObjectType ) < 0 ||
+        PyType_Ready( &DapHttpCodeObjectType ) < 0 ||
+        PyType_Ready( &DapHttpObjectType ) < 0 ||
+        PyType_Ready( &DapHttpSimpleObjectType ) < 0 ||
+        PyType_Ready( &DapEncServerObjectType ) < 0 ||
+        PyType_Ready( &DapStreamObjectType ) < 0 ||
+        PyType_Ready( &DapStreamCtlObjectType ) < 0 ||
+        PyType_Ready( &DapJsonRpcRequestObjectType ) < 0 ||
+        PyType_Ready( &DapJsonRpcResponseobjectType ) < 0
+        ) {
+        log_it(L_CRITICAL,"Not all python type objects are initialized for DAP module");
         return NULL;
     }
+    PyObject *coreModule = PyModule_Create(&DapCorePythonModule);
+    PyModule_AddObject(coreModule, "logIt", (PyObject *)&DapLogitObjectType);
+#ifdef DAP_SUPPORT_PYTHON_PLUGINS
+    PyModule_AddObject(coreModule, "AppContext", (PyObject*)&DapAppContextObjectType);
+#endif
 
-    PyObject *module = PyModule_Create(&CellFramePythonModule);
-    PyModule_AddStringConstant(module, "__author__", "Alexey Stratulat <alexey.stratulat@demlabs.net>");
-    PyModule_AddStringConstant(module, "__version__", DAP_VERSION);
+    PyObject *cryptoModule = PyModule_Create(&DapCryptoPythonModule);
+    PyModule_AddObject(cryptoModule, "Algo", (PyObject*)&DapCryptoAlgoObjectType);
+    PyModule_AddObject(cryptoModule, "Cert", (PyObject*)&DapCryptoCertObjectType);
+    PyModule_AddObject(cryptoModule, "SignType", (PyObject*)&DapCryproSignTypeObjectType);
+    PyModule_AddObject(cryptoModule, "Sign", (PyObject*)&DapCryptoSignObjectType);
+    PyModule_AddObject(cryptoModule, "CryptoKeyType", (PyObject*)&DapCryptoKeyTypeObjectType);
+    PyModule_AddObject(cryptoModule, "CryptoDataType", (PyObject*)&DapCryptoDataTypeObjectType);
+    PyModule_AddObject(cryptoModule, "HashFast", (PyObject*)&DapChainHashFastObjectType);
+
+    PyObject *netModule = PyModule_Create(&DapNetPythonModule);
+    PyModule_AddObject(netModule, "ServerCore", (PyObject*)&DapServerCoreObjectType);
+    PyModule_AddObject(netModule, "Events", (PyObject*)&DapEventsObjectType);
+    PyModule_AddObject(netModule, "EventsSocket", (PyObject*)&DapEventsSocketObjectType);
+    PyModule_AddObject(netModule, "Http", (PyObject*)&DapHttpObjectType);
+    PyModule_AddObject(netModule, "HttpCode", (PyObject*)&DapHttpCodeObjectType);
+    PyModule_AddObject(netModule, "HttpSimple", (PyObject*)&DapHttpSimpleObjectType);
+    PyModule_AddObject(netModule, "EncHttp", (PyObject*)&DapEncServerObjectType);
+    PyModule_AddObject(netModule, "Stream", (PyObject*)&DapStreamObjectType);
+    PyModule_AddObject(netModule, "StreamCtl", (PyObject*)&DapStreamCtlObjectType);
+    PyModule_AddObject(netModule, "JSONRPCRequest", (PyObject*)&DapJsonRpcRequestObjectType);
+    PyModule_AddObject(netModule, "JSONRPCResponse", (PyObject*)&DapJsonRpcResponseobjectType);
+
+    PyObject *dapModule = PyModule_Create(&DapPythonModule);
+    PyModule_AddStringConstant(dapModule, "__author__", "Alexey Stratulat <alexey.stratulat@demlabs.net>");
+    PyModule_AddStringConstant(dapModule, "__version__", DAP_VERSION);
+    PyModule_AddObject(dapModule, "error", PyErr_NewException("DAP.error", NULL, NULL));
+    PyObject *moduleDict = PyImport_GetModuleDict();
+    Py_INCREF(coreModule);
+    PyModule_AddObject(dapModule, "Core", coreModule);
+    PyDict_SetItemString(moduleDict, "DAP.Core", coreModule);
+    Py_INCREF(cryptoModule);
+    PyModule_AddObject(dapModule, "Crypto", cryptoModule);
+    PyDict_SetItemString(moduleDict, "DAP.Crypto", cryptoModule);
+    Py_INCREF(netModule);
+    PyModule_AddObject(dapModule, "Network", netModule);
+    PyDict_SetItemString(moduleDict, "DAP.Network", netModule);
+    return dapModule;
+}
 
-    CellFrame_error = PyErr_NewException("CellFrame.error", NULL, NULL);
 
-    PyModule_AddObject(module, "error", CellFrame_error);
-
-    PyModule_AddObject(module, "logIt", (PyObject *)&DapLogitObjectType);
-
-    PyModule_AddObject(module, "Crypto", (PyObject*)&DapCryptoObjectType);
-    PyModule_AddObject(module, "Cert", (PyObject*)&DapCryptoCertObjectType);
-    PyModule_AddObject(module, "SignType", (PyObject*)&DapCryproSignTypeObjectType);
-    PyModule_AddObject(module, "Sign", (PyObject*)&DapCryptoSignObjectType);
-
-    PyModule_AddObject(module, "ServerCore", (PyObject*)&DapServerCoreObjectType);
-    PyModule_AddObject(module, "Events", (PyObject*)&DapEventsObjectType);
-    PyModule_AddObject(module, "EventsSocket", (PyObject*)&DapEventsSocketObjectType);
-
-    PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&DapCryptoKeyTypeObjectType);
-    PyModule_AddObject(module, "CryptoDataType", (PyObject*)&DapCryptoDataTypeObjectType);
-
-    // === Chain ===
-    PyModule_AddObject(module, "Chain", (PyObject*)&DapChainObjectType);
-    PyModule_AddObject(module, "ChainType", (PyObject*)&DapChainTypeObjectType);
-    PyModule_AddObject(module, "ChainAtomIter", (PyObject*)&DapChainAtomIterObjectType);
-    PyModule_AddObject(module, "ChainAtomPtr", (PyObject*)&DapChainAtomPtrObjectType);
-    PyModule_AddObject(module, "ChainCell", (PyObject*)&DapChainCellObjectType);
-//    PyModule_AddObject(module, "ChainCommon", (PyObject*)&ChainCommonObject_ChainCommonType);
-
-    PyModule_AddObject(module, "ChainID", (PyObject*)&DapChainIdObjectType);
-    PyModule_AddObject(module, "ChainCellID", (PyObject*)&DapChainCellIdObjectType);
-    PyModule_AddObject(module, "ChainNodeAddr", (PyObject*)&DapChainNodeAddrObjectType);
-    PyModule_AddObject(module, "ChainNetID", (PyObject*)&DapChainNetIdObjectType);
-    PyModule_AddObject(module, "ChainHashSlow", (PyObject*)&DapChainHashSlowObjectType);
-    PyModule_AddObject(module, "ChainHashFast", (PyObject*)&DapChainHashFastObjectType);
-//    PyModule_AddObject(module, "ChainHAshSlowKind", (PyObject*)&DapChainSlowKindObject_DapChainSlowKindType);
-    PyModule_AddObject(module, "ChainAddr", (PyObject*)&DapChainAddrObjectType);
-//
-    PyModule_AddObject(module, "ChainCS", (PyObject*)&DapChainCsObjectType);
-    PyModule_AddObject(module, "ChainDatumTypeID", (PyObject*)&DapChainDatumTypeIdObjectType);
-    PyModule_AddObject(module, "ChainDatum", (PyObject*)&DapChainDatumObjectType);
-    PyModule_AddObject(module, "ChainDatumIter", (PyObject*)&DapChainDatumIterObjectType);
-    PyModule_AddObject(module, "ChainDatumToken", (PyObject*)&DapChainDatumTokenObjectType);
-    PyModule_AddObject(module, "ChainDatumTokenExt", (PyObject*)&DapChainTxTokenExtType);
-    PyModule_AddObject(module, "ChainDatumTokenEmisson", (PyObject*)&DapChainDatumTokenEmissionObjectType);
-    PyModule_AddObject(module, "ChainTxItemType", (PyObject*)&DapChainTxItemTypeObjectType);
-    PyModule_AddObject(module, "ChainTxCondType", (PyObject*)&DapChainTxCondTypeObjectType);
-    PyModule_AddObject(module, "ChainDatumTx", (PyObject*)&DapChainDatumTxObjectType);
-    PyModule_AddObject(module, "ChainTxOutCond", (PyObject*)&DapChainTxOutCondObjectType);
-    PyModule_AddObject(module, "ChainTxOutCondSubtypeSrvPay", (PyObject*)&DapChainTxOutCondSubTypeSrvPayObjectType);
-    PyModule_AddObject(module, "ChainTxOutCondSubtypeSrvStake", (PyObject*)&DapChainTxOutCondSubTypeSrvStakeObjectType);
-    PyModule_AddObject(module, "ChainTxOutCondSubtypeSrvXchange", (PyObject*)&DapChainTxOutCondSubTypeSrvXchangeObjectType);
-    PyModule_AddObject(module, "ChainLedger", (PyObject*)&DapChainLedgerObjectType);
-    PyModule_AddObject(module, "ChainTxIn", (PyObject*)&DapChainTxInObjectType);
-    PyModule_AddObject(module, "ChainTxInCond", (PyObject*)&DapChainTxInCondObjectType);
-    PyModule_AddObject(module, "ChainTxOut", (PyObject*)&DapChainTxOutObjectType);
-    PyModule_AddObject(module, "ChainTxPkey", (PyObject*)&DapChainTxPkeyObjectType);
-    PyModule_AddObject(module, "ChainTxReceipt", (PyObject*)&DapChainTxReceiptObjectType);
-    PyModule_AddObject(module, "ChainTxOutExt", (PyObject*)&DapChainTxOutExtObjectType);
-    // =============
+PyMODINIT_FUNC PyInit_libCellFrame(void)
+{
+        /* === Cellframe === */
+    if (
+        // ==== Common ===
+        PyType_Ready( &DapAppCliObjectType ) < 0 ||
+        // === Chain ===
+        PyType_Ready( &DapChainObjectType ) < 0 ||
+        PyType_Ready( &DapChainIdObjectType ) < 0 ||
+        PyType_Ready( &DapChainTypeObjectType ) < 0 ||
+        PyType_Ready( &DapChainAtomIterObjectType ) < 0 ||
+        PyType_Ready( &DapChainAtomPtrObjectType ) < 0 ||
+        PyType_Ready( &DapChainCellObjectType ) < 0 ||
+        PyType_Ready( &DapChainGdbObjectType ) < 0 ||
+        PyType_Ready( &DapChainMempoolObjectType ) < 0 ||
+        PyType_Ready( &DapChainCellIdObjectType ) < 0 ||
+        PyType_Ready( &DapChainNodeAddrObjectType ) < 0 ||
+        PyType_Ready( &DapChainHashSlowKindObjectType ) < 0 ||
+        PyType_Ready( &DapChainHashSlowObjectType ) < 0 ||
+        PyType_Ready( &DapChainAddrObjectType ) < 0 ||
+        PyType_Ready( &DapChainCsObjectType ) < 0 ||
+        PyType_Ready( &DapChainLedgerObjectType ) < 0 ||
+        PyType_Ready( &DapChainWalletObjectType ) < 0 ||
+        // === Chain datum
+        /// Common
+        PyType_Ready( &DapChainDatumTypeIdObjectType ) < 0 ||
+        PyType_Ready( &DapChainDatumObjectType ) < 0 ||
+        PyType_Ready( &DapChainDatumIterObjectType ) < 0 ||
+        /// Token
+        PyType_Ready( &DapChainDatumTokenObjectType ) < 0 ||
+        PyType_Ready( &DapChainDatumTokenEmissionObjectType ) < 0 ||
+        /// Custom
+        PyType_Ready( &DapChainDatumCustomObjectType ) < 0 ||
+        /// Transaction
+        PyType_Ready( &DapChainDatumTxObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxItemTypeObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxTokenExtType ) < 0 ||
+        PyType_Ready( &DapChainTxCondTypeObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutCondObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutCondSubTypeSrvPayObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutCondSubTypeSrvStakeObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutCondSubTypeSrvXchangeObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxInObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxInCondObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxPkeyObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxReceiptObjectType ) < 0 ||
+        PyType_Ready( &DapChainTxOutExtObjectType ) < 0 ||
+        // === Chain net ===
+        /// Node
+        PyType_Ready( &DapChainNodeObjectType ) < 0 ||
+        PyType_Ready( &DapChainNodeCliObjectType ) < 0 ||
+        PyType_Ready( &DapChainNodeClientObjectType ) < 0 ||
+        PyType_Ready( &DapChainNodeInfoObjectType ) < 0 ||
+        /// Net
+        PyType_Ready( &DapChainNetObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetIdObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetStateObjectType ) < 0 ||
+        /// Srv
+        PyType_Ready( &DapChainNetSrvObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvClientObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvOrderDirectionObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvOrderObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvUidObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvPriceObjectType ) < 0 ||
+        PyType_Ready( &DapChainNetSrvPriceUnitUidObjectType ) < 0 ||
+        // === Chain consensuses
+        PyType_Ready( &DapChainCsDagPoaObjectType ) < 0
+        ) {
+        log_it(L_CRITICAL,"Not all python type objects are initialized for CellFrame module");
+        return NULL;
+    }
+
+    PyObject *chainModule = PyModule_Create(&CellframeChainPythonModule);
+    PyModule_AddObject(chainModule, "Chain", (PyObject*)&DapChainObjectType);
+    PyModule_AddObject(chainModule, "ChainType", (PyObject*)&DapChainTypeObjectType);
+    PyModule_AddObject(chainModule, "ChainAtomIter", (PyObject*)&DapChainAtomIterObjectType);
+    PyModule_AddObject(chainModule, "ChainAtomPtr", (PyObject*)&DapChainAtomPtrObjectType);
+    PyModule_AddObject(chainModule, "ChainCell", (PyObject*)&DapChainCellObjectType);
+    PyModule_AddObject(chainModule, "ChainID", (PyObject*)&DapChainIdObjectType);
+    PyModule_AddObject(chainModule, "ChainCellID", (PyObject*)&DapChainCellIdObjectType);
+    PyModule_AddObject(chainModule, "ChainHashSlow", (PyObject*)&DapChainHashSlowObjectType);
+    PyModule_AddObject(chainModule, "ChainHashSlowKind", (PyObject*)&DapChainHashSlowKindObjectType);
+    PyModule_AddObject(chainModule, "ChainAddr", (PyObject*)&DapChainAddrObjectType);
+    PyModule_AddObject(chainModule, "ChainCS", (PyObject*)&DapChainCsObjectType);
+    PyModule_AddObject(chainModule, "GDB", (PyObject*)&DapChainGdbObjectType);
+    PyModule_AddObject(chainModule, "Wallet", (PyObject*)&DapChainWalletObjectType);
+    PyModule_AddObject(chainModule, "Mempool", (PyObject*)&DapChainMempoolObjectType);
+    PyModule_AddObject(chainModule, "Ledger", (PyObject*)&DapChainLedgerObjectType);
+
+    PyObject *commonModule = PyModule_Create(&CellframeCommonPythonModule);
+    PyModule_AddObject(commonModule, "DatumTypeID", (PyObject*)&DapChainDatumTypeIdObjectType);
+    PyModule_AddObject(commonModule, "Datum", (PyObject*)&DapChainDatumObjectType);
+    PyModule_AddObject(commonModule, "DatumIter", (PyObject*)&DapChainDatumIterObjectType);
+    PyModule_AddObject(commonModule, "DatumToken", (PyObject*)&DapChainDatumTokenObjectType);
+    PyModule_AddObject(commonModule, "DatumTokenExt", (PyObject*)&DapChainTxTokenExtType);
+    PyModule_AddObject(commonModule, "DatumEmisson", (PyObject*)&DapChainDatumTokenEmissionObjectType);
+    PyModule_AddObject(commonModule, "TxItemType", (PyObject*)&DapChainTxItemTypeObjectType);
+    PyModule_AddObject(commonModule, "TxCondType", (PyObject*)&DapChainTxCondTypeObjectType);
+    PyModule_AddObject(commonModule, "DatumTx", (PyObject*)&DapChainDatumTxObjectType);
+    PyModule_AddObject(commonModule, "TxOutCond", (PyObject*)&DapChainTxOutCondObjectType);
+    PyModule_AddObject(commonModule, "TxOutCondSubtypeSrvPay", (PyObject*)&DapChainTxOutCondSubTypeSrvPayObjectType);
+    PyModule_AddObject(commonModule, "TxOutCondSubtypeSrvStake", (PyObject*)&DapChainTxOutCondSubTypeSrvStakeObjectType);
+    PyModule_AddObject(commonModule, "TxOutCondSubtypeSrvXchange", (PyObject*)&DapChainTxOutCondSubTypeSrvXchangeObjectType);
+    PyModule_AddObject(commonModule, "TxIn", (PyObject*)&DapChainTxInObjectType);
+    PyModule_AddObject(commonModule, "TxInCond", (PyObject*)&DapChainTxInCondObjectType);
+    PyModule_AddObject(commonModule, "TxOut", (PyObject*)&DapChainTxOutObjectType);
+    PyModule_AddObject(commonModule, "TxPkey", (PyObject*)&DapChainTxPkeyObjectType);
+    PyModule_AddObject(commonModule, "TxReceipt", (PyObject*)&DapChainTxReceiptObjectType);
+    PyModule_AddObject(commonModule, "TxOutExt", (PyObject*)&DapChainTxOutExtObjectType);
+    PyModule_AddObject(commonModule, "CustomDatum", (PyObject*)&DapChainDatumCustomObjectType);
+
+    PyObject *netModule = PyModule_Create(&CellframeNetworkPythonModule);
+    // === Chain node ===
+    PyModule_AddObject(netModule, "Node", (PyObject*)&DapChainNodeObjectType);
+    PyModule_AddObject(netModule, "NodeInfo", (PyObject*)&DapChainNodeInfoObjectType);
+    PyModule_AddObject(netModule, "NodeClient", (PyObject*)&DapChainNodeClientObjectType);
+    PyModule_AddObject(netModule, "NodeAddr", (PyObject*)&DapChainNodeAddrObjectType);
     // === Chain net ===
-    PyModule_AddObject(module, "ChainNet", (PyObject*)&DapChainNetObjectType);
-    PyModule_AddObject(module, "ChainNodeClient", (PyObject*)&DapChainNodeClientObjectType);
-    PyModule_AddObject(module, "ChainNodeInfo", (PyObject*)&DapChainNodeInfoObjectType);
-    PyModule_AddObject(module, "ChainNetNode", (PyObject*)&DapChainNodeObjectType);
-    PyModule_AddObject(module, "ChainNetState", (PyObject*)&DapChainNetStateObjectType);
-    // =============
+    PyModule_AddObject(netModule, "Net", (PyObject*)&DapChainNetObjectType);
+    PyModule_AddObject(netModule, "NetID", (PyObject*)&DapChainNetIdObjectType);
+    PyModule_AddObject(netModule, "NetState", (PyObject*)&DapChainNetStateObjectType);
     // === Chain net srv ===
-    PyModule_AddObject(module, "ChainNetSrv", (PyObject*)&DapChainNetSrvObjectType);
-    PyModule_AddObject(module, "ChainNetSrvClient", (PyObject*)&DapChainNetSrvClientObjectType);
-    PyModule_AddObject(module, "ChainNetSrvDatum", (PyObject*)&DapChainDatumCustomObjectType);
-    PyModule_AddObject(module , "ChainNetSrvPrice", (PyObject*)&DapChainNetSrvPriceObjectType);
-    PyModule_AddObject(module, "ChainNetSrvOrder", (PyObject*)&DapChainNetSrvOrderObjectType);
-    PyModule_AddObject(module, "ChainNetSrvOrderDirection", (PyObject*)&DapChainNetSrvOrderDirectionObjectType);
-    PyModule_AddObject(module, "ChainNetSrvUID", (PyObject*)&DapChainNetSrvUidObjectType);
-    PyModule_AddObject(module, "ChainNetSrvPriceUnitUID", (PyObject*)&DapChainNetSrvPriceUnitUidObjectType);
-    // =============
+    PyModule_AddObject(netModule, "Service", (PyObject*)&DapChainNetSrvObjectType);
+    PyModule_AddObject(netModule, "ServiceClient", (PyObject*)&DapChainNetSrvClientObjectType);
+    PyModule_AddObject(netModule, "ServicePrice", (PyObject*)&DapChainNetSrvPriceObjectType);
+    PyModule_AddObject(netModule, "ServiceOrder", (PyObject*)&DapChainNetSrvOrderObjectType);
+    PyModule_AddObject(netModule, "ServiceOrderDirection", (PyObject*)&DapChainNetSrvOrderDirectionObjectType);
+    PyModule_AddObject(netModule, "ServiceUID", (PyObject*)&DapChainNetSrvUidObjectType);
+    PyModule_AddObject(netModule, "ServicePriceUnitUID", (PyObject*)&DapChainNetSrvPriceUnitUidObjectType);
+    PyObject *csModule = PyModule_Create(&CellframeConsensusPythonModule);
     // === Chain cs dag poa
-    PyModule_AddObject(module, "ChainCsDagPoa", (PyObject*)&DapChainCsDagPoaObjectType);
-    // =============
-
-    PyModule_AddObject(module, "ChainGDB", (PyObject*)&DapChainGdbObjectType);
-    PyModule_AddObject(module, "ChainWallet", (PyObject*)&DapChainWalletObjectType);
-
-    PyModule_AddObject(module, "Http", (PyObject*)&DapHttpObjectType);
-    PyModule_AddObject(module, "HttpSimple", (PyObject*)&DapHTTPSimple_DapHTTPSimpleType);
-    PyModule_AddObject(module, "HttpCode", (PyObject*)&DapHttpCodeObjectType);
-    PyModule_AddObject(module, "EncHttp", (PyObject*)&DapEncServerObjectType);
-    PyModule_AddObject(module, "Stream", (PyObject*)&DapStreamObjectType);
-    PyModule_AddObject(module, "StreamCtl", (PyObject*)&DapStreamCtlObjectType);
-    PyModule_AddObject(module, "Mempool", (PyObject*)&DapChainMempoolObjectType);
-
-    // ==============
-    PyModule_AddObject(module, "AppCli", (PyObject*)&DapAppCliObjectType);
-    PyModule_AddObject(module, "AppCliServer", (PyObject*)&DapChainNodeCliObjectType);
-    #ifdef DAP_SUPPORT_PYTHON_PLUGINS
-        PyModule_AddObject(module, "AppContext", (PyObject*)&DapAppContextObjectType);
-    #endif
-    PyModule_AddObject(module, "JSONRPCRequest", (PyObject*)&DapJsonRpcRequestObjectType);
-    PyModule_AddObject(module, "JSONRPCResponse", (PyObject*)&DapJsonRpcResponseobjectType);
+    PyModule_AddObject(csModule, "DagPoa", (PyObject*)&DapChainCsDagPoaObjectType);
 
-    return module;
+    PyObject *cellframeModule = PyModule_Create(&CellFramePythonModule);
+    PyModule_AddStringConstant(cellframeModule, "__author__", "Alexey Stratulat <alexey.stratulat@demlabs.net>");
+    PyModule_AddStringConstant(cellframeModule, "__version__", DAP_VERSION);
+    CellFrame_error = PyErr_NewException("CellFrame.error", NULL, NULL);
+    PyModule_AddObject(cellframeModule, "error", CellFrame_error);
+    PyModule_AddObject(cellframeModule, "AppCli", (PyObject*)&DapAppCliObjectType);
+    PyModule_AddObject(cellframeModule, "AppCliServer", (PyObject*)&DapChainNodeCliObjectType);
+    PyObject *moduleDict = PyImport_GetModuleDict();
+    Py_INCREF(chainModule);
+    PyModule_AddObject(cellframeModule, "Chain", chainModule);
+    PyDict_SetItemString(moduleDict, "CellFrame.Chain", chainModule);
+    Py_INCREF(commonModule);
+    PyModule_AddObject(cellframeModule, "Common", commonModule);
+    PyDict_SetItemString(moduleDict, "CellFrame.Common", commonModule);
+    Py_INCREF(netModule);
+    PyModule_AddObject(cellframeModule, "Network", netModule);
+    PyDict_SetItemString(moduleDict, "CellFrame.Network", netModule);
+    Py_INCREF(csModule);
+    PyModule_AddObject(cellframeModule, "Consensus", csModule);
+    PyDict_SetItemString(moduleDict, "CellFrame.Consensus", csModule);
+    return cellframeModule;
 }
 
 void deinit_modules(void){
@@ -617,7 +767,7 @@ void deinit_modules(void){
     dap_common_deinit();
 }
 
-PyObject *python_cellframe_deinit(PyObject *self, PyObject *args){
+PyObject *python_dap_deinit(PyObject *self, PyObject *args){
     deinit_modules();
     return PyLong_FromLong(0);
 }
diff --git a/CellFrame/wrapping_dap_stream.c b/CellFrame/wrapping_dap_stream.c
index 230e60a7b3301f27f3a9f7b182fbd3b9057d46ee..b258ec94eea7bd29f262b5a3e3430f818f33d636 100644
--- a/CellFrame/wrapping_dap_stream.c
+++ b/CellFrame/wrapping_dap_stream.c
@@ -1,5 +1,53 @@
 #include "wrapping_dap_stream.h"
 
+static PyMethodDef DapStreamMethods[] = {
+    {"addProcHttp", dap_stream_add_proc_http_py, METH_VARARGS | METH_STATIC, ""},
+    {NULL, NULL, 0, NULL}
+};
+
+PyTypeObject DapStreamObjectType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "DAP.Net.Stream",             /* tp_name */
+    sizeof(PyDapStreamObject),                   /* 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 */
+    "Dap stream object",                         /* tp_doc */
+    0,		                                       /* tp_traverse */
+    0,                        		               /* tp_clear */
+    0,		                                       /* tp_richcompare */
+    0,                        		               /* tp_weaklistoffset */
+    0,		                                       /* tp_iter */
+    0,                        		               /* tp_iternext */
+    DapStreamMethods,                   /* 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 */
+};
+
+
 PyObject *dap_stream_add_proc_http_py(PyObject *self, PyObject *args){
     PyObject *obj_server;
     const char *STREAM_URL;
diff --git a/CellFrame/wrapping_dap_stream_ctl.c b/CellFrame/wrapping_dap_stream_ctl.c
index 2d3fdc1d0525ea1b9113fb7dd0c50693fa91884a..d825af90fca949b82e0dc62159f4cfe434f51c33 100644
--- a/CellFrame/wrapping_dap_stream_ctl.c
+++ b/CellFrame/wrapping_dap_stream_ctl.c
@@ -2,6 +2,53 @@
 
 #define LOG_TAG "wrapping_dap_stream_ctl"
 
+static PyMethodDef DapStreamCtlMethods[] = {
+    {"addProcHttp", dap_stream_ctl_add_proc_py, METH_VARARGS | METH_STATIC, ""},
+    {NULL, NULL, 0, NULL}
+};
+
+PyTypeObject DapStreamCtlObjectType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "DAP.Net.StreamCtl",             /* tp_name */
+    sizeof(PyDapStreamCtlObject),                   /* 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 */
+    "Dap stream ctl object",                         /* tp_doc */
+    0,		                                       /* tp_traverse */
+    0,                        		               /* tp_clear */
+    0,		                                       /* tp_richcompare */
+    0,                        		               /* tp_weaklistoffset */
+    0,		                                       /* tp_iter */
+    0,                        		               /* tp_iternext */
+    DapStreamCtlMethods,                   /* 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 */
+};
+
 
 PyObject *dap_stream_ctl_add_proc_py(PyObject *self, PyObject *args){
     PyObject *obj_server;
@@ -13,5 +60,6 @@ PyObject *dap_stream_ctl_add_proc_py(PyObject *self, PyObject *args){
 }
 
 int dap_stream_ctl_init_py(uint32_t size){
-    return dap_stream_ctl_init(size);
+    UNUSED(size);
+    return dap_stream_ctl_init();
 }
diff --git a/dists/examples/plugins/demoServiceClient/demoServiceClient.py b/dists/examples/plugins/demoServiceClient/demoServiceClient.py
index e46df06b2bbf54a6bf4c130baeb7a7c0b430d7a2..767861d9e8f2664ca70e4c7a2be55ca24549f8be 100644
--- a/dists/examples/plugins/demoServiceClient/demoServiceClient.py
+++ b/dists/examples/plugins/demoServiceClient/demoServiceClient.py
@@ -1,49 +1,52 @@
-from API_CellFrame import ChainNetSrvClient, logIt, NOTICE, WARNING, ChainNet, ChainNetSrvUID, Cert, ChainTxReceipt, ChainHashFast
+from DAP.Core import logIt
+from DAP.Crypto import Cert, HashFast
+from CellFrame.Common import TxReceipt
+from CellFrame.Network import Net, ServiceUID, ServiceClient
 
 def callback_connected(serviceClient, arg):
-    logIt(NOTICE, "Python client connected")
-    ch_uid = ChainNetSrvUID(123)
-    net = ChainNet.byName("private")
+    logIt.notice("Python client connected")
+    ch_uid = ServiceUID(123)
+    net = Net.byName("private")
     #serviceClient.write(ch_uid, "Greetings from test client".encode('utf-8'))
     #serviceClient.check(net, ch_uid, "Any data".encode('utf-8'))
-    condHash = ChainHashFast.fromString("0xAF14CB70DB383A4FB840F8BD531A7B58C300B65AD3B3F418DC0713B0F6648643");
+    condHash = HashFast.fromString("0xAF14CB70DB383A4FB840F8BD531A7B58C300B65AD3B3F418DC0713B0F6648643");
     serviceClient.request(net, ch_uid, condHash)
 
 def callback_disconnected(serviceClient, arg):
-    logIt(NOTICE, "Python client disconnected")
+    logIt.notice("Python client disconnected")
 
 def callback_deleted(serviceClient, arg):
-    logIt(NOTICE, "Python client deleted")
+    logIt.notice("Python client deleted")
 
 def callback_check(serviceClient, arg):
-    logIt(NOTICE, "Python client successfully checked the service")
+    logIt.notice("Python client successfully checked the service")
 
 def callback_sign(serviceClient, txCondRec, arg):
-    logIt(NOTICE, "Siging receipt by python client")
+    logIt.notice("Siging receipt by python client")
     signCert = Cert.load("svc_client")
     return txCondRec.sign(signCert)
 
 def callback_success(serviceClient, txCondHash, arg):
-    logIt(NOTICE, "Python client successfully requested the service")
+    logIt.notice("Python client successfully requested the service")
 
 def callback_error(serviceClient, errorNum, arg):
-    logIt(WARNING, f"Python client got error {errorNum:#x}")
+    logIt.warning(f"Python client got error {errorNum:#x}")
 
 def callback_data(serviceClient, data, arg):
-    logIt(NOTICE, f"Python client custom data read back \'{data.decode('utf-8')}\'")
+    logIt.notice(f"Python client custom data read back \'{data.decode('utf-8')}\'")
 
 def init():
-    logIt(NOTICE, "Init demoClient")
+    logIt.notice("Init demoClient")
 #    Command for working cmd client
 #    AppCliServer.cmdItemCreate("myClient", clientCMD, "Command for working cmd",
-    net = ChainNet.byName("private")
-    client = ChainNetSrvClient(net, "127.0.0.1", 8089, callback_connected,
-                                                       callback_disconnected,
-                                                       callback_deleted,
-                                                       callback_check,
-                                                       callback_sign,
-                                                       callback_success,
-                                                       callback_error,
-                                                       callback_data,
-                                                       0)
+    net = Net.byName("private")
+    client = ServiceClient(net, "127.0.0.1", 8089, callback_connected,
+                                                   callback_disconnected,
+                                                   callback_deleted,
+                                                   callback_check,
+                                                   callback_sign,
+                                                   callback_success,
+                                                   callback_error,
+                                                   callback_data,
+                                                   0)
     return 0
diff --git a/dists/examples/plugins/demoServiceServer/demoServiceServer.py b/dists/examples/plugins/demoServiceServer/demoServiceServer.py
index 67ba1f8786e78687b28072aa45b3b0c577ccbdd0..03f41a29c037dad6d9627e630eded3565ccf5411 100644
--- a/dists/examples/plugins/demoServiceServer/demoServiceServer.py
+++ b/dists/examples/plugins/demoServiceServer/demoServiceServer.py
@@ -1,29 +1,30 @@
-from API_CellFrame import logItInfo, logItNotice, logItWarning, ChainNet, ChainNetSrv, ChainNetSrvUID
+from DAP.Core import logIt
+from CellFrame.Network import Net, Service, ServiceUID
 
 def requested(srv, usage_id, client_remote, data):
-    logItInfo("[server] func requested")
+    logIt.info("[server] func requested")
     return 0
 
 def response_success(srv, usage_id, client_remote, data):
-    logItNotice("[server] func response success")
+    logIt.notice("[server] func response success")
     return 0
 
 def response_error(srv, usage_id, client_remote, data):
-    logItWarning("[server] func response error")
+    logIt.warning("[server] func response error")
 
 def next_success(srv, usage_id, client_remote, data):
-    logItNotice("[server] func next success")
+    logIt.notice("[server] func next success")
     return 0
 
 def custom_data(srv, usage_id, client_remote, data):
-    logItNotice("[server] Input data: " + data.decode("utf-8"))
+    logIt.notice("[server] Input data: " + data.decode("utf-8"))
     return data
 
 
 def init():
-    logItNotice("Init demoServer")
-    ch_uid = ChainNetSrvUID(123)
-    srv_object = ChainNetSrv(
+    logIt.notice("Init demoServer")
+    ch_uid = ServiceUID(123)
+    srv_object = Service(
         ch_uid,
         "py_service",
         requested,
diff --git a/include/python-cellframe.h b/include/python-cellframe.h
index 5d9d954cc2b9040f0707b31313b2161bac17d06a..37ee615a451addbba0359fc5a3297d6a26759d6f 100644
--- a/include/python-cellframe.h
+++ b/include/python-cellframe.h
@@ -102,45 +102,12 @@ BOOL WINAPI consoleHandler(DWORD);
 void sigfunc(int sig);
 #endif
 
+PyObject *python_dap_init(PyObject *self, PyObject *args);
 PyObject *python_cellframe_init(PyObject *self, PyObject *args);
 
 void deinit_modules(void);
 
-PyObject *python_cellframe_deinit(PyObject *self, PyObject *args);
-
-static PyMethodDef CellFramePythonMethods[] = {
-        {"init", python_cellframe_init, METH_VARARGS, "Initialization of the Python Cellframe library."},
-        {"deinit", python_cellframe_deinit, METH_VARARGS, "Deinitialization of the Python Cellframe library."},
-        {"setLogLevel", (PyCFunction)dap_set_log_level, METH_VARARGS, "Setting the logging level."},
-        {"logItDebug", (PyCFunction)dap_log_it_debug, METH_VARARGS, "Log a message with the DEBUG level."},
-        {"logItInfo", (PyCFunction)dap_log_it_info, METH_VARARGS, "Log a message with the INFO level."},
-        {"logItNotice", (PyCFunction)dap_log_it_notice, METH_VARARGS, "Log a message with the NOTICE level."},
-        {"logItMessage", (PyCFunction)dap_log_it_message, METH_VARARGS, "Log a message with the MESSAGE level."},
-        {"logItDap", (PyCFunction)dap_log_it_dap, METH_VARARGS, "Log a message with the DAP level."},
-        {"logItWarning", (PyCFunction)dap_log_it_warning, METH_VARARGS, "Log a message with the WARNING level WARNING."},
-        {"logItAtt", (PyCFunction)dap_log_it_att, METH_VARARGS, "Log a message with the ATT level."},
-        {"logItError", (PyCFunction)dap_log_it_error, METH_VARARGS, "Log a message with the ERROR level."},
-        {"logItCritical", (PyCFunction)dap_log_it_critical, METH_VARARGS, "Log a message with the CRITICAL level."},
-
-        {"configGetItem", (PyCFunction)py_m_dap_config_get_item, METH_VARARGS, "Get an item from a configuration."},
-        {"configGetItemDefault", (PyCFunction)py_m_dap_config_get_item_default, METH_VARARGS, "Get an item from a configuration with a default value."},
-        {NULL, NULL, 0, NULL}
-};
-
-static char CellFramePythonModuleDoc[]=
-"CellFrame SDK.Python v"DAP_VERSION" welcomes you!"
-"";
-static struct PyModuleDef CellFramePythonModule = {
-        PyModuleDef_HEAD_INIT,
-        "CellFrame",   /* name of module */
-        CellFramePythonModuleDoc, /* module documentation, may be NULL */
-        -1,       /* size of per-interpreter state of the module,
-                 or -1 if the module keeps state in global variables. */
-        CellFramePythonMethods,
-        NULL,
-        NULL,
-        NULL,
-        NULL
-};
+PyObject *python_dap_deinit(PyObject *self, PyObject *args);
 
+PyMODINIT_FUNC PyInit_libDAP();
 PyMODINIT_FUNC PyInit_libCellFrame(void);
diff --git a/include/wrapping_dap_stream.h b/include/wrapping_dap_stream.h
index f0726aa2586d1c16953ce10524fd7a2a9c8a4525..8e21a469431316d4f5947de83733be0a75443ba5 100644
--- a/include/wrapping_dap_stream.h
+++ b/include/wrapping_dap_stream.h
@@ -11,53 +11,8 @@ typedef struct PyDapStream{
     PyObject_HEAD
 }PyDapStreamObject;
 
-PyObject *dap_stream_add_proc_http_py(PyObject *self, PyObject *args);
-
-static PyMethodDef DapStreamMethods[] = {
-    {"addProcHttp", dap_stream_add_proc_http_py, METH_VARARGS | METH_STATIC, ""},
-    {NULL, NULL, 0, NULL}
-};
+extern PyTypeObject DapStreamObjectType;
 
-static PyTypeObject DapStreamObjectType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "CellFrame.DapStream",             /* tp_name */
-    sizeof(PyDapStreamObject),                   /* 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 */
-    "Dap stream object",                         /* tp_doc */
-    0,		                                       /* tp_traverse */
-    0,                        		               /* tp_clear */
-    0,		                                       /* tp_richcompare */
-    0,                        		               /* tp_weaklistoffset */
-    0,		                                       /* tp_iter */
-    0,                        		               /* tp_iternext */
-    DapStreamMethods,                   /* 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 */
-};
+PyObject *dap_stream_add_proc_http_py(PyObject *self, PyObject *args);
 
 #endif // _WRAPPING_DAP_STREAM_
diff --git a/include/wrapping_dap_stream_ctl.h b/include/wrapping_dap_stream_ctl.h
index d3ea475bfc9cd52aeb645e9f90e78440870df1a2..82a8d23a13e345cf07f1401aac3d28801b7ad5d3 100644
--- a/include/wrapping_dap_stream_ctl.h
+++ b/include/wrapping_dap_stream_ctl.h
@@ -12,53 +12,8 @@ typedef struct PyDapStreamCtl{
     PyObject_HEAD
 }PyDapStreamCtlObject;
 
+extern PyTypeObject DapStreamCtlObjectType;
+
 PyObject *dap_stream_ctl_add_proc_py(PyObject *self, PyObject *args);
 int dap_stream_ctl_init_py(uint32_t size);
 
-static PyMethodDef DapStreamCtlMethods[] = {
-    {"addProcHttp", dap_stream_ctl_add_proc_py, METH_VARARGS | METH_STATIC, ""},
-    {NULL, NULL, 0, NULL}
-};
-
-static PyTypeObject DapStreamCtlObjectType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "CellFrame.DapStreamCtl",             /* tp_name */
-    sizeof(PyDapStreamCtlObject),                   /* 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 */
-    "Dap stream ctl object",                         /* tp_doc */
-    0,		                                       /* tp_traverse */
-    0,                        		               /* tp_clear */
-    0,		                                       /* tp_richcompare */
-    0,                        		               /* tp_weaklistoffset */
-    0,		                                       /* tp_iter */
-    0,                        		               /* tp_iternext */
-    DapStreamCtlMethods,                   /* 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 */
-};
-
diff --git a/modules/cellframe-sdk/common/include/wrapping_dap_chain_common.h b/modules/cellframe-sdk/common/include/wrapping_dap_chain_common.h
index adfd99b2dbc699b2832f1b720d77d7a683555acc..8cc93c1f4c45d42de4569e5af4a1e353404e55b7 100644
--- a/modules/cellframe-sdk/common/include/wrapping_dap_chain_common.h
+++ b/modules/cellframe-sdk/common/include/wrapping_dap_chain_common.h
@@ -158,7 +158,7 @@ typedef struct PyDapChainHashSlowKind{
     dap_chain_hash_slow_kind_t *slow_kind;
 }PyDapChainHashSlowKindObject;
 
-extern PyTypeObject DapChainSlowKindObject_DapChainSlowKindType;
+extern PyTypeObject DapChainHashSlowKindObjectType;
 
 /*=================*/
 
diff --git a/modules/cellframe-sdk/common/src/wrapping_dap_chain_common.c b/modules/cellframe-sdk/common/src/wrapping_dap_chain_common.c
index d5ccb81a52f87d7d76d77865b16c4804ac87d646..2dc4d7cc4171d7aed9caf2eb993e4df1a1fd85ab 100644
--- a/modules/cellframe-sdk/common/src/wrapping_dap_chain_common.c
+++ b/modules/cellframe-sdk/common/src/wrapping_dap_chain_common.c
@@ -49,7 +49,7 @@ PyTypeObject DapChainHashSlowObjectType = {
 };
 
 /* Hash slow kind */
-PyTypeObject DapChainSlowKindObject_DapChainSlowKindType = {
+PyTypeObject DapChainHashSlowKindObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
         "CellFrame.ChainSlowKind"  ,       /* tp_name */
         sizeof(PyDapChainHashSlowKindObject),  /* tp_basicsize */
diff --git a/modules/cellframe-sdk/wallet/src/dap_chain_wallet_python.c b/modules/cellframe-sdk/wallet/src/dap_chain_wallet_python.c
index c9db20f65e628c5458732207ec99a5435f8fe74e..5290b5ceefff7c80d9cf0e01055ee54ace3ee303 100644
--- a/modules/cellframe-sdk/wallet/src/dap_chain_wallet_python.c
+++ b/modules/cellframe-sdk/wallet/src/dap_chain_wallet_python.c
@@ -201,7 +201,7 @@ PyObject *dap_chain_wallet_get_key_py(PyObject *self, PyObject *argv){
     uint32_t key_idx;
     if (!PyArg_ParseTuple(argv, "I", &key_idx))
             return NULL;
-    PyObject *obj_key = _PyObject_New(&PyCryptoKeyObject_PyCryptoKeyType);
+    PyObject *obj_key = _PyObject_New(&PyCryptoKeyObjectType);
     PyObject_Dir(obj_key);
     ((PyCryptoKeyObject*)obj_key)->key = dap_chain_wallet_get_key(
                 ((PyDapChainWalletObject*)self)->wallet,
diff --git a/modules/dap-sdk/core/src/libdap-python.c b/modules/dap-sdk/core/src/libdap-python.c
index dcf2ef5d299baeed6b0b36cbe7051be8f268f3ed..ae15428f48907ab5cbd3631a3459cf664ed754d4 100644
--- a/modules/dap-sdk/core/src/libdap-python.c
+++ b/modules/dap-sdk/core/src/libdap-python.c
@@ -8,7 +8,7 @@ PyMethodDef DapCoreMethods[] = {
 
 PyTypeObject DapCoreObjectType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "Dap",             /* tp_name */
+    "DAP.Core",             /* tp_name */
     sizeof(PyDapObject),             /* tp_basicsize */
     0,                         /* tp_itemsize */
     0,			       /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/include/libdap-crypto-python.h b/modules/dap-sdk/crypto/include/libdap-crypto-python.h
index 5dbea93c4fb51ebc35dd76e83fee19e6f86d1d15..a55ac423e5615510d034ac079903f11a63081e95 100644
--- a/modules/dap-sdk/crypto/include/libdap-crypto-python.h
+++ b/modules/dap-sdk/crypto/include/libdap-crypto-python.h
@@ -42,15 +42,15 @@ extern "C" {
 #endif
 
 
-typedef struct PyCrypto{
+typedef struct PyCryptoAlgo{
     PyObject_HEAD
-}PyCryptoObject;
+}PyCryptoAlgoObject;
 
 int dap_crypto_init(void);
 
 void dap_crypto_deinit(void);
 
-extern PyTypeObject DapCryptoObjectType;
+extern PyTypeObject DapCryptoAlgoObjectType;
 
 #ifdef  __cplusplus
 }
diff --git a/modules/dap-sdk/crypto/include/libdap_crypto_key_python.h b/modules/dap-sdk/crypto/include/libdap_crypto_key_python.h
index e96c5988f84600f4fa0ad618eb74d14b612be7fe..87e007153e546bf3fdaf4918db69ee64fcbf1d33 100644
--- a/modules/dap-sdk/crypto/include/libdap_crypto_key_python.h
+++ b/modules/dap-sdk/crypto/include/libdap_crypto_key_python.h
@@ -14,7 +14,7 @@ typedef struct PyCryptoKey{
 
 void PyCryptoKeyObject_dealloc(PyCryptoKeyObject *cryptoObject);
 
-extern PyTypeObject PyCryptoKeyObject_PyCryptoKeyType;
+extern PyTypeObject PyCryptoKeyObjectType;
 
 #ifdef __cplusplus
 }
diff --git a/modules/dap-sdk/crypto/src/libdap-crypto-python.c b/modules/dap-sdk/crypto/src/libdap-crypto-python.c
index 76e2f49f1c0ad0300582c9b2fcd42fad22dde341..9482aef723d0ac42db1c2cbcad5ea9665324e471 100644
--- a/modules/dap-sdk/crypto/src/libdap-crypto-python.c
+++ b/modules/dap-sdk/crypto/src/libdap-crypto-python.c
@@ -56,10 +56,10 @@ PyMethodDef g_crypto_methods_py[] = {
         {NULL, NULL, 0, NULL}
 };
 
-PyTypeObject DapCryptoObjectType = {
+PyTypeObject DapCryptoAlgoObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.Crypto",             /* tp_name */
-        sizeof(PyCryptoObject),         /* tp_basicsize */
+        "DAP.Crypto.Algo",             /* tp_name */
+        sizeof(PyCryptoAlgoObject),         /* tp_basicsize */
         0,                         /* tp_itemsize */
         0,                         /* tp_dealloc */
         0,                         /* tp_print */
@@ -78,7 +78,7 @@ PyTypeObject DapCryptoObjectType = {
         0,                         /* tp_as_buffer */
         Py_TPFLAGS_DEFAULT |
         Py_TPFLAGS_BASETYPE,   /* tp_flags */
-        "Crypto objects",           /* tp_doc */
+        "Crypto algorithms",           /* tp_doc */
         0,		               /* tp_traverse */
         0,		               /* tp_clear */
         0,		               /* tp_richcompare */
@@ -107,7 +107,7 @@ int dap_crypto_init(void){
         log_it(L_CRITICAL,"Can't init encryption key module");
         return -2;
     }
-    PyCryptoKeyObject_PyCryptoKeyType.tp_new = PyType_GenericNew;
+    PyCryptoKeyObjectType.tp_new = PyType_GenericNew;
     return 0;
 }
 
diff --git a/modules/dap-sdk/crypto/src/libdap_crypto_data_type.c b/modules/dap-sdk/crypto/src/libdap_crypto_data_type.c
index 52d6e84c9301875ce087a555b3497be37a724c19..6e903b118c8fd3a2cab0dfe9fc491a82cc62a755 100644
--- a/modules/dap-sdk/crypto/src/libdap_crypto_data_type.c
+++ b/modules/dap-sdk/crypto/src/libdap_crypto_data_type.c
@@ -20,7 +20,7 @@ PyMethodDef PyCryptoDataTypeObjectMethods[] = {
 
 PyTypeObject DapCryptoDataTypeObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.CryptoDataType",      /* tp_name */
+        "DAP.Crypto.DataType",      /* tp_name */
         sizeof(PyCryptoDataTypeObjecy),  /* tp_basicsize */
         0,                               /* tp_itemsize */
         0,                               /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/src/libdap_crypto_key_python.c b/modules/dap-sdk/crypto/src/libdap_crypto_key_python.c
index f96bd6e76cd7dd0d5e52860d5656e950140bfa2b..4656d1bdd4723dd87cb0c15db975365738bd70a9 100644
--- a/modules/dap-sdk/crypto/src/libdap_crypto_key_python.c
+++ b/modules/dap-sdk/crypto/src/libdap_crypto_key_python.c
@@ -1,8 +1,8 @@
 #include "libdap_crypto_key_python.h"
 
-PyTypeObject PyCryptoKeyObject_PyCryptoKeyType = {
+PyTypeObject PyCryptoKeyObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.Crypto.Key",                            /* tp_name */
+        "DAP.Crypto.Key",                            /* tp_name */
         sizeof(PyCryptoKeyObject),                         /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         (destructor)PyCryptoKeyObject_dealloc,             /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/src/libdap_crypto_key_type_python.c b/modules/dap-sdk/crypto/src/libdap_crypto_key_type_python.c
index 38cbca63debf5625c8f523edbfdef19ff76b2d52..21f8994834da04bd0480ce9c7ad166e3ffcea11e 100644
--- a/modules/dap-sdk/crypto/src/libdap_crypto_key_type_python.c
+++ b/modules/dap-sdk/crypto/src/libdap_crypto_key_type_python.c
@@ -26,7 +26,7 @@ PyMethodDef PyCryptoKeyTypeObjectMethods[] = {
 
 PyTypeObject DapCryptoKeyTypeObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.CryptoKeyType",           /* tp_name */
+        "DAP.Crypto.KeyType",           /* tp_name */
         sizeof(PyCryptoKeyTypeObject),       /* tp_basicsize */
         0,		                         /* tp_itemsize */
         0,		   			 /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/src/wrapping_cert.c b/modules/dap-sdk/crypto/src/wrapping_cert.c
index d01f3013c9c92dfc30c59e1a47f5791444d8999c..76de17ad9060cb844a45eda5afc3afad661c3b81 100644
--- a/modules/dap-sdk/crypto/src/wrapping_cert.c
+++ b/modules/dap-sdk/crypto/src/wrapping_cert.c
@@ -48,7 +48,7 @@ PyMethodDef g_crypto_cert_methods_py[] = {
 
 PyTypeObject DapCryptoCertObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.Cert",             /* tp_name */
+        "DAP.Crypto.Cert",             /* tp_name */
         sizeof(PyCryptoCertObject),         /* tp_basicsize */
         0,                         /* tp_itemsize */
         dap_cert_delete_py,                         /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/src/wrapping_dap_enc_key.c b/modules/dap-sdk/crypto/src/wrapping_dap_enc_key.c
index e754657e0d2e1a071bcda6f0df1498c3d86525d0..6ed032bcf8f4d64f5416e01061e4364857c2299f 100644
--- a/modules/dap-sdk/crypto/src/wrapping_dap_enc_key.c
+++ b/modules/dap-sdk/crypto/src/wrapping_dap_enc_key.c
@@ -66,7 +66,7 @@ PyObject* dap_enc_key_new_py(PyObject *self, PyObject *args){
         return PyLong_FromLong(-1);
     }
     dap_enc_key_t *new_key = dap_enc_key_new(type_key);
-    PyObject *obj = _PyObject_New(&PyCryptoKeyObject_PyCryptoKeyType);
+    PyObject *obj = _PyObject_New(&PyCryptoKeyObjectType);
     ((PyCryptoKeyObject*)obj)->key = new_key;
     return  Py_BuildValue("O", obj);
 }
@@ -117,7 +117,7 @@ PyObject *dap_enc_key_new_generate_py(PyObject *self, PyObject *args){
             }
         }
     }
-    PyCryptoKeyObject *obj_key = PyObject_New(PyCryptoKeyObject, &PyCryptoKeyObject_PyCryptoKeyType);
+    PyCryptoKeyObject *obj_key = PyObject_New(PyCryptoKeyObject, &PyCryptoKeyObjectType);
     PyObject_Dir((PyObject*)obj_key);
     obj_key->key = dap_enc_key_new_generate(in_type_key, l_kex_buf, l_kex_buf_size,
                                             l_seed, l_seed_size, in_key_size);
diff --git a/modules/dap-sdk/crypto/src/wrapping_dap_hash.c b/modules/dap-sdk/crypto/src/wrapping_dap_hash.c
index 56bf23a18afeff470b5db5b7259f1e6fb0cc129f..a9261f2547dd0afd1f22479edf2b43b6027b73e5 100644
--- a/modules/dap-sdk/crypto/src/wrapping_dap_hash.c
+++ b/modules/dap-sdk/crypto/src/wrapping_dap_hash.c
@@ -9,7 +9,7 @@ PyMethodDef DapHashTypeMethods[] = {
 
 PyTypeObject DapHashTypeObject_DapChainHashTypeObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.HashType",          /* tp_name */
+        "DAP.Crypto.HashType",          /* tp_name */
         sizeof(PyDapHashTypeObject),   /* tp_basicsize */
         0,                               /* tp_itemsize */
         0,                               /* tp_dealloc */
@@ -74,7 +74,7 @@ PyMethodDef DapHashFastMethods[] = {
 
 PyTypeObject DapChainHashFastObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.HashFast",          /* tp_name */
+        "DAP.Crypto.HashFast",          /* tp_name */
         sizeof(PyDapHashFastObject),   /* tp_basicsize */
         0,                               /* tp_itemsize */
         0,                               /* tp_dealloc */
diff --git a/modules/dap-sdk/crypto/src/wrapping_dap_sign.c b/modules/dap-sdk/crypto/src/wrapping_dap_sign.c
index c9d9a3165f09470b5b3020a61e8e0b88294b3d3a..eb08103eceb46d3e02b05e6095adde369d300e38 100644
--- a/modules/dap-sdk/crypto/src/wrapping_dap_sign.c
+++ b/modules/dap-sdk/crypto/src/wrapping_dap_sign.c
@@ -3,7 +3,7 @@
 /* Sign type*/
 PyTypeObject DapCryproSignTypeObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.SignType",       /* tp_name */
+        "DAP.Crypto.SignType",       /* tp_name */
         sizeof(PyDapSignTypeObject),/* tp_basicsize */
         0,                               /* tp_itemsize */
         0,                               /* tp_dealloc */
@@ -58,7 +58,7 @@ PyGetSetDef DapSignObjectGetsSetsDef[] = {
 
 PyTypeObject DapCryptoSignObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "DAP.Sign",       /* tp_name */
+        "DAP.Crypto.Sign",       /* tp_name */
         sizeof(PyDapSignObject),/* tp_basicsize */
         0,                               /* tp_itemsize */
         0,                               /* tp_dealloc */
@@ -125,4 +125,4 @@ PyObject *wrapping_dap_sign_get_pkey_hash(PyObject *self, void *closure){
 PyObject *wrapping_dap_sign_get_size(PyObject *self, void *closure){
     (void)closure;
     return Py_BuildValue("I", ((PyDapSignObject*)self)->sign->header.sign_size);
-}
\ No newline at end of file
+}
diff --git a/modules/dap-sdk/net/core/src/dap_events_python.c b/modules/dap-sdk/net/core/src/dap_events_python.c
index 8630a94338efb11fbc5bdcf34e08576168469de6..f88ce82d6feadcb5cb845e44ce247a93a5b17067 100644
--- a/modules/dap-sdk/net/core/src/dap_events_python.c
+++ b/modules/dap-sdk/net/core/src/dap_events_python.c
@@ -10,7 +10,7 @@ PyMethodDef PyDapEventsObject_methods[] = {
 
 PyTypeObject DapEventsObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.ServerCore.DapEvents",           /* tp_name */
+        "DAP.Net.Events",           /* tp_name */
         sizeof(PyDapEventsObject),		        /* tp_basicsize */
         0,			                        /* tp_itemsize */
         (destructor)PyDapEventsObject_dealloc,	/* tp_dealloc */
diff --git a/modules/dap-sdk/net/core/src/dap_events_socket_python.c b/modules/dap-sdk/net/core/src/dap_events_socket_python.c
index 6e951e7eca102add8edce96f14a396f9a5effe81..8a5b7a34c6d3f13d7ccedd8e64dac50fe760509b 100644
--- a/modules/dap-sdk/net/core/src/dap_events_socket_python.c
+++ b/modules/dap-sdk/net/core/src/dap_events_socket_python.c
@@ -16,7 +16,7 @@ PyMethodDef PyDapEventsObjectSocket_methods[] = {
 
 PyTypeObject DapEventsSocketObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.ServerCore.DapEventsSocket",             /* tp_name */
+        "DAP.Net.EventsSocket",             /* tp_name */
         sizeof(PyDapEventsSocketObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
diff --git a/modules/dap-sdk/net/core/src/libdap-server-core-python.c b/modules/dap-sdk/net/core/src/libdap-server-core-python.c
index 197d789256cbbbbfd30aa8200fb131b42074ecb7..69fb2387fdc099691574f2e000638275244743f0 100644
--- a/modules/dap-sdk/net/core/src/libdap-server-core-python.c
+++ b/modules/dap-sdk/net/core/src/libdap-server-core-python.c
@@ -10,7 +10,7 @@ PyMethodDef ServerCorePythonMethods[] = {
 
 PyTypeObject DapServerCoreObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.ServerCore",             /* tp_name */
+        "DAP.Net.ServerCore",             /* tp_name */
         sizeof(PyServerCoreObject),         /* tp_basicsize */
         0,                                  /* tp_itemsize */
         0,                                  /* tp_dealloc */
diff --git a/modules/dap-sdk/net/server/enc/src/wrapping_dap_enc_http.c b/modules/dap-sdk/net/server/enc/src/wrapping_dap_enc_http.c
index a0283257730ec070ab225f47dbc139121c46fc95..565b55d22b945e70835a61555a9a998d683fbc60 100644
--- a/modules/dap-sdk/net/server/enc/src/wrapping_dap_enc_http.c
+++ b/modules/dap-sdk/net/server/enc/src/wrapping_dap_enc_http.c
@@ -19,7 +19,7 @@ PyGetSetDef PyDapEncServerGetSet[] = {
 
 PyTypeObject DapEncServerObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.EncHttp",             /* tp_name */
+        "DAP.Net.EncHttp",             /* tp_name */
         sizeof(PyDapEncServerObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         (destructor)enc_http_delegate_delete_py,           /* tp_dealloc */
diff --git a/modules/dap-sdk/net/server/http/include/wrapping_dap_http_simple.h b/modules/dap-sdk/net/server/http/include/wrapping_dap_http_simple.h
index db731e13ae401b68d56e11a22509ce26cd14a852..32244b28794506af3d5586151af5c847bf67be8d 100644
--- a/modules/dap-sdk/net/server/http/include/wrapping_dap_http_simple.h
+++ b/modules/dap-sdk/net/server/http/include/wrapping_dap_http_simple.h
@@ -31,7 +31,7 @@ PyObject *dap_http_simple_request_py(PyDapHttpSimpleObject *self, void *clouser)
 PyObject *dap_http_simple_url_path_py(PyDapHttpSimpleObject *self, void *clouser);
 PyObject *dap_http_simple_query_py(PyDapHttpSimpleObject *self, void *clouser);
 
-extern PyTypeObject DapHTTPSimple_DapHTTPSimpleType;
+extern PyTypeObject DapHttpSimpleObjectType;
 
 #ifdef __cplusplus
 }
diff --git a/modules/dap-sdk/net/server/http/src/wrapping_dap_http_simple.c b/modules/dap-sdk/net/server/http/src/wrapping_dap_http_simple.c
index b37b3ce205b74d571f08c0b4a6dd82e11d188382..8ec552820f90a131acb7d8b1324075a39256197e 100644
--- a/modules/dap-sdk/net/server/http/src/wrapping_dap_http_simple.c
+++ b/modules/dap-sdk/net/server/http/src/wrapping_dap_http_simple.c
@@ -20,9 +20,9 @@ PyGetSetDef PyDapHttpSimpleGetSetDef[] = {
         {NULL}
 };
 
-PyTypeObject DapHTTPSimple_DapHTTPSimpleType = {
+PyTypeObject DapHttpSimpleObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.HttpSimple",             /* tp_name */
+        "DAP.Met.HttpSimple",             /* tp_name */
         sizeof(PyDapHttpSimpleObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
@@ -88,7 +88,7 @@ void wrapping_dap_http_simple_callback(dap_http_simple_t *sh, void *obj){
     PyGILState_STATE gstate;
     gstate = PyGILState_Ensure();
     PyObject *obj_func = _w_simple_proc_find(sh->http_client->url_path);
-    PyDapHttpSimpleObject *obj_http_simple = PyObject_NEW(PyDapHttpSimpleObject, &DapHTTPSimple_DapHTTPSimpleType);
+    PyDapHttpSimpleObject *obj_http_simple = PyObject_NEW(PyDapHttpSimpleObject, &DapHttpSimpleObjectType);
     PyObject *obj_http_status_code = _PyObject_New(&DapHttpCodeObjectType);
     ((PyDapHttpSimpleObject*)obj_http_simple)->sh = sh;
     PyObject_Dir((PyObject*)obj_http_simple);
diff --git a/modules/dap-sdk/net/server/http/src/wrapping_http.c b/modules/dap-sdk/net/server/http/src/wrapping_http.c
index 7210ba78f65022fbf540ea98d9abadbac636d43c..e47e579b4ed33dbadc9c107913790a039566c4ec 100644
--- a/modules/dap-sdk/net/server/http/src/wrapping_http.c
+++ b/modules/dap-sdk/net/server/http/src/wrapping_http.c
@@ -7,7 +7,7 @@ PyMethodDef DapHttpMethods[] = {
 
 PyTypeObject DapHttpObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.DapHttp",             /* tp_name */
+        "DAP.Net.Http",             /* tp_name */
         sizeof(PyDapHttpObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
diff --git a/modules/dap-sdk/net/server/http/src/wrapping_http_status_code.c b/modules/dap-sdk/net/server/http/src/wrapping_http_status_code.c
index 456a28b63c653d78e19e46dd3530eecc2834dd7c..01482d462623cb560dd7ac541c114cadcacba788 100644
--- a/modules/dap-sdk/net/server/http/src/wrapping_http_status_code.c
+++ b/modules/dap-sdk/net/server/http/src/wrapping_http_status_code.c
@@ -11,7 +11,7 @@ PyMethodDef PyDapHttpCodeMethods[] = {
 
 PyTypeObject DapHttpCodeObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.HTTPCode",             /* tp_name */
+        "DAP.Net.HttpCode",             /* tp_name */
         sizeof(PyHttpStatusCodeObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
diff --git a/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_request.c b/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_request.c
index c2deb5c51ee42ae259ad406d608eea32faf31ceb..3f278f1e8d5f3cc176a5e24d5540c2b026da1082 100644
--- a/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_request.c
+++ b/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_request.c
@@ -9,7 +9,7 @@ PyMethodDef PyDapJSONRPCRequestMethods[] = {
 
 PyTypeObject DapJsonRpcRequestObjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.JSONRPCRequest",             /* tp_name */
+        "DAP.Net.JSONRPCRequest",             /* tp_name */
         sizeof(PyDAPJsonRPCRequestObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
diff --git a/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_response.c b/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_response.c
index f3084f82cc269f849591f5bc2d15d1bb941f4797..527bf4c1b30e82b03344ea9b3474ec227f8d3c83 100644
--- a/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_response.c
+++ b/modules/dap-sdk/net/server/json_rpc/src/wrapping_json_rpc_response.c
@@ -15,7 +15,7 @@ PyGetSetDef PyDapJSONRPCResponseGetsSets[] = {
 
 PyTypeObject DapJsonRpcResponseobjectType = {
         PyVarObject_HEAD_INIT(NULL, 0)
-        "CellFrame.JSONRPCResponse",             /* tp_name */
+        "DAP.Net.JSONRPCResponse",             /* tp_name */
         sizeof(PyDapJSONRPCResponseObject),                   /* tp_basicsize */
         0,                                                 /* tp_itemsize */
         0,                                                 /* tp_dealloc */
diff --git a/modules/plugins/CMakeLists.txt b/modules/plugins/CMakeLists.txt
index ff988cc8512076bb30409cb71236f2c8fffc069f..b39a6fd8498b513e2483c5aaf431761dc52669ad 100644
--- a/modules/plugins/CMakeLists.txt
+++ b/modules/plugins/CMakeLists.txt
@@ -24,7 +24,7 @@ add_library(${PROJECT_NAME} STATIC ${DAP_PLUGINS_PYTHON_SRCS} ${DAP_PLUGINS_PYTH
 
 target_link_libraries(${PROJECT_NAME})
 
-target_link_libraries(${PROJECT_NAME} dap_core  API_CellFrame)
+target_link_libraries(${PROJECT_NAME} dap_core CellFrame)
 
 target_include_directories(${PROJECT_NAME} PUBLIC include/ )
 
diff --git a/modules/plugins/include/dap_plugins_python_app_context.h b/modules/plugins/include/dap_plugins_python_app_context.h
index 6c0c29226fbbd9abefae4b557a9adc686e10f0fb..d7a4c79116cb56de0d0cf3205f72e4b80603ea99 100644
--- a/modules/plugins/include/dap_plugins_python_app_context.h
+++ b/modules/plugins/include/dap_plugins_python_app_context.h
@@ -23,54 +23,7 @@ typedef  struct PyDapAppContext{
 PyObject *dap_plugins_python_app_context_get_server(PyObject *self, PyObject *args);
 PyObject *dap_plugins_python_app_context_get_http(PyObject *self, PyObject *args);
 
-static PyMethodDef DapAppContextMethods[] = {
-    {"getServer", (PyCFunction)dap_plugins_python_app_context_get_server, METH_VARARGS | METH_STATIC, "Get main server from node"},
-    {"getHttp", (PyCFunction)dap_plugins_python_app_context_get_http, METH_NOARGS | METH_STATIC, "Get main server from node"},
-    {NULL, NULL, 0, NULL}
-};
-
-
-static PyTypeObject DapAppContextObjectType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "CellFrame.AppContext",             /* tp_name */
-    sizeof(PyDapAppContextObject),                   /* 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 */
-    "Dap App Context object",                         /* tp_doc */
-    0,		                                       /* tp_traverse */
-    0,                        		               /* tp_clear */
-    0,		                                       /* tp_richcompare */
-    0,                        		               /* tp_weaklistoffset */
-    0,		                                       /* tp_iter */
-    0,                        		               /* tp_iternext */
-    DapAppContextMethods,                   /* 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 */
-};
+extern PyTypeObject DapAppContextObjectType;
 
 #ifdef __cplusplus
 }
diff --git a/modules/plugins/src/dap_chain_plugins.c b/modules/plugins/src/dap_chain_plugins.c
index a8250dfe29c04809a64cbb346821605587fd0ab3..cda0ab5156985b92ff1a9988d5e8ae18e872939c 100644
--- a/modules/plugins/src/dap_chain_plugins.c
+++ b/modules/plugins/src/dap_chain_plugins.c
@@ -33,7 +33,8 @@ int dap_chain_plugins_init(dap_config_t *a_config){
             log_it(L_ERROR, "Can't find \"%s\" directory", s_plugins_root_path);
             return -1;
         }
-        PyImport_AppendInittab("API_CellFrame", PyInit_libCellFrame);
+        PyImport_AppendInittab("DAP", PyInit_libDAP);
+        PyImport_AppendInittab("CellFrame", PyInit_libCellFrame);
         Py_Initialize();
         PyEval_InitThreads();
         PyObject *l_sys_module = PyImport_ImportModule("sys");
diff --git a/modules/plugins/src/dap_plugins_python_app_context.c b/modules/plugins/src/dap_plugins_python_app_context.c
index 6e1a6ec108a10e7ba4ad0fd9ef405598de619b36..dcec1ca4a545a44d8467a91346257a77d19e225e 100644
--- a/modules/plugins/src/dap_plugins_python_app_context.c
+++ b/modules/plugins/src/dap_plugins_python_app_context.c
@@ -2,6 +2,55 @@
 
 dap_plugins_python_app_context_t *s_app_context = NULL;
 
+static PyMethodDef DapAppContextMethods[] = {
+    {"getServer", (PyCFunction)dap_plugins_python_app_context_get_server, METH_VARARGS | METH_STATIC, "Get main server from node"},
+    {"getHttp", (PyCFunction)dap_plugins_python_app_context_get_http, METH_NOARGS | METH_STATIC, "Get main server from node"},
+    {NULL, NULL, 0, NULL}
+};
+
+
+PyTypeObject DapAppContextObjectType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "DAP.AppContext",             /* tp_name */
+    sizeof(PyDapAppContextObject),                   /* 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 */
+    "Dap App Context object",                         /* tp_doc */
+    0,		                                       /* tp_traverse */
+    0,                        		               /* tp_clear */
+    0,		                                       /* tp_richcompare */
+    0,                        		               /* tp_weaklistoffset */
+    0,		                                       /* tp_iter */
+    0,                        		               /* tp_iternext */
+    DapAppContextMethods,                   /* 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 */
+};
+
 int dap_plugins_python_app_content_init(dap_server_t *a_server){
     s_app_context = DAP_NEW(dap_plugins_python_app_context_t);
     s_app_context->server = a_server;
diff --git a/setup.py b/setup.py
index 22c4345897c5dd81e967861aa35da21076b7d210..2b560b06b5b6b26b9953421c353df4979c9cc61f 100755
--- a/setup.py
+++ b/setup.py
@@ -75,6 +75,7 @@ setup(
     author='Demlabs (2007-2021)',
     license="GNU GPLv3",
     packages=['CellFrame'],
+    ext_package='CellFrame'
     ext_modules=[CMakeExtension('CellFrame/libCellFrame')],
     # add custom build_ext command
     cmdclass={