diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..66197df89f4d9af306d6fb454d6dfe400428f097
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,24 @@
+[submodule "libdap"]
+	path = libdap
+	url = https://gitlab.demlabs.net/cellframe/libdap.git
+[submodule "libdap-crypto"]
+	path = libdap-crypto
+	url = https://gitlab.demlabs.net/cellframe/libdap-crypto.git
+[submodule "libdap-server"]
+	path = libdap-server
+	url = https://gitlab.demlabs.net/cellframe/libdap-server.git
+[submodule "libdap-server-core"]
+	path = libdap-server-core
+	url = https://gitlab.demlabs.net/cellframe/libdap-server-core.git
+[submodule "libdap-server-udp"]
+	path = libdap-server-udp
+	url = https://gitlab.demlabs.net/cellframe/libdap-server-udp.git
+[submodule "libdap-stream"]
+	path = libdap-stream
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream.git
+[submodule "libdap-stream-ch"]
+	path = libdap-stream-ch
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream-ch.git
+[submodule "libdap-client"]
+	path = libdap-client
+	url = https://gitlab.demlabs.net/cellframe/libdap-client.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e79e3e916006d7cd664a44955cf29b59a6187fbf
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,90 @@
+project(dap_client_python_module C)
+cmake_minimum_required(VERSION 2.8)
+
+set(CMAKE_VERBOSE_MAKEFILE ON)
+set(CMAKE_COLOR_MAKEFILE   ON)
+set(CMAKE_C_STANDARD 11)
+add_definitions("-fpic")
+add_definitions("-DDAP_LOG_MT")
+
+add_definitions ("-DNODE_NETNAME=\"cellframe\"")
+if(UNIX)
+    add_definitions("-DDAP_OS_UNIX")
+endif()
+
+if (NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
+    set (SUBMODULES_NO_BUILD ON)
+    if (NOT (TARGET dap_core))
+        add_subdirectory(libdap)
+        target_compile_options(
+            dap_core PRIVATE 
+            "-fpic"
+        )
+    endif()
+    if (NOT (TARGET dap_crypto))
+        add_subdirectory(libdap-crypto)
+        target_compile_options(
+            dap_crypto PRIVATE
+            "-fpic"
+       )
+   endif()
+   if (NOT (TARGET dap_server_core))
+       add_subdirectory(libdap-server-core)
+       target_compile_options(
+            dap_server_core PRIVATE
+            "-fpic"  
+       )
+   endif()
+   if (NOT (TARGET libdap-server))
+       add_subdirectory(libdap-server)
+#       target_compile_options(
+#            libdap-server PRIVATE
+#            "-fpic"  
+#       )
+   endif()
+   if (NOT (TARGET dap_stream))
+       add_subdirectory(libdap-stream)
+       target_compile_options(
+            dap_stream PRIVATE
+            "-fpic"  
+       )
+   endif()
+   if (NOT (TARGET dap_stream_ch))
+       add_subdirectory(libdap-stream-ch)
+       target_compile_options(
+            dap_stream_ch PRIVATE
+             "-fpic"   
+       )
+   endif()
+   if (NOT (TARGET dap_udp_server))
+       add_subdirectory(libdap-server-udp)
+       target_compile_options(
+            dap_udp_server PRIVATE
+            "-fpic"   
+       ) 
+   endif()
+   if (NOT (TARGET dap_client))
+       add_subdirectory(libdap-client)
+       target_compile_options(
+            dap_client PRIVATE
+            "-fpic"
+       )
+   endif()
+endif()
+#add_definitions("-DDAP_APP_NAME=\"TestPRJ\" -DSYSTEM_CONFIGS_DIR=\"${CMAKE_CURRENT_BINARY_DIR}\"")
+
+file(GLOB CLIENT_PYTHON_SRCS src/*.c)
+file(GLOB CLIENT_PYTHON_HEADERS include/*.h)
+
+set(Python_ADDITIONAL_VERSIONS 3.7)
+find_package (PythonLibs REQUIRED)
+include_directories(${PYTHON_INCLUDE_DIR} include/)
+
+add_library(${PROJECT_NAME} STATIC ${CLIENT_PYTHON_SRCS} ${CLIENT_PYTHON_HEADERS})
+
+target_link_libraries(${PROJECT_NAME})
+
+target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_client )
+
+target_include_directories(${PROJECT_NAME} PUBLIC include/ )
+
diff --git a/include/libdap_client_python.h b/include/libdap_client_python.h
new file mode 100644
index 0000000000000000000000000000000000000000..9a95fbf75234b16249550749214b3156fddb9325
--- /dev/null
+++ b/include/libdap_client_python.h
@@ -0,0 +1,98 @@
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+#include "dap_client.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct PyDapClient{
+    PyObject_HEAD
+    dap_client_t *client;
+}PyDapClientObject;
+
+int dap_client_init_py();
+void dap_client_deinit_py();
+
+//PyObject *dap_client_new_py(PyObject *)
+PyObject *dap_client_delete_py(PyObject *self, PyObject *args);
+
+PyObject *dao_client_set_uplink_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_uplink_addr_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_uplink_port_py(PyObject *self, PyObject *args);
+
+PyObject *dap_client_get_key_stream_py(PyObject *self, PyObject *args);
+PyObject *dap_client_go_stage_py(PyObject *self, PyObject *args);
+PyObject *dap_client_reset_py(PyObject *self, PyObject *args);
+PyObject *dap_client_request_enc_py(PyObject *self, PyObject *args);
+PyObject *dap_client_request_py(PyObject *self, PyObject *args);
+PyObject *dap_client_disconnect_py(PyObject *self, PyObject *args);
+
+PyObject *dap_client_get_stage_str_py(PyObject *self, PyObject *args);
+PyObject *dap_client_stage_str_py(PyObject *self, PyObject *args);
+
+PyObject *dap_client_get_stage_status_str_py(PyObject *self, PyObject *args);
+PyObject *dap_client_stage_status_str_py(PyObject *self, PyObject *args);
+PyObject *dap_client_error_str_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_error_str_py(PyObject *self, PyObject *args);
+
+PyObject *dap_client_get_auth_cookie_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_stream_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_stream_ch_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_stream_id_py(PyObject *self, PyObject *args);
+PyObject *dap_client_set_active_channels_py(PyObject *self, PyObject *args);
+
+PyObject *dap_client_get_stage_py(PyObject *self, PyObject *args);
+PyObject *dap_client_get_stage_status_py(PyObject *self, PyObject *args);
+
+static PyMethodDef DapClientMethods[] = {
+        {NULL, NULL, 0, NULL}
+};
+
+static PyTypeObject dapClientObject_dapClientType = {
+        PyVarObject_HEAD_INIT(NULL, 0)
+        "CellFrame.Client",                                      /* tp_name */
+        sizeof(PyDapClientObject),                               /* 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 */
+        "Client objects",                                              /* tp_doc */
+        0,		                                                      /* tp_traverse */
+        0,		                                                      /* tp_clear */
+        0,		                                                      /* tp_richcompare */
+        0,		                                                      /* tp_weaklistoffset */
+        0,		                                                      /* tp_iter */
+        0,		                                                      /* tp_iternext */
+        DapClientMethods,                                              /* tp_methods */
+        0,                                                            /* tp_members */
+        0,                                                            /* tp_getset */
+        0,                                                            /* tp_base */
+        0,                                                            /* tp_dict */
+        0,                                                            /* tp_descr_get */
+        0,                                                            /* tp_descr_set */
+        0,                                                            /* tp_dictoffset */
+        0,                                                            /* tp_init */
+        0,                                                            /* tp_alloc */
+        PyType_GenericNew,                                            /* tp_new */
+
+};
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/include/wrapping_dap_client_stage.h b/include/wrapping_dap_client_stage.h
new file mode 100644
index 0000000000000000000000000000000000000000..bb3a9fe88d21ab26d2ad4b53a439d0e9e0cc278a
--- /dev/null
+++ b/include/wrapping_dap_client_stage.h
@@ -0,0 +1,84 @@
+#ifndef _WRAPPING_DAP_CLIENT_STAGE_
+#define _WRAPPING_DAP_CLIENT_STAGE_
+#include <Python.h>
+#include "dap_client.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+typedef struct PyDapClientStage{
+    PyObject_HEAD
+    dap_client_stage_t stage;
+}PyDapClientStageObject;
+
+PyObject *STAGE_BEGIN_PY();
+PyObject *STAGE_ENC_INIT_PY();
+PyObject *STAGE_STREAM_CTL_PY();
+PyObject *STAGE_STREAM_SESSION_PY();
+PyObject *STAGE_STREAM_CONNECTED_PY();
+PyObject *STAGE_STREAM_STREAMING_PY();
+PyObject *STAGE_STREAM_ABORT_PY();
+
+static PyMethodDef DapClientStageMethods[] = {
+        {"STAGE_BEGIN", (PyCFunction)STAGE_BEGIN_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_ENC_INIT", (PyCFunction)STAGE_ENC_INIT_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STREAM_CTL", (PyCFunction)STAGE_STREAM_CTL_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STREAM_SESSION", (PyCFunction)STAGE_STREAM_SESSION_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STREAM_CONNECTED", (PyCFunction)STAGE_STREAM_CONNECTED_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STREAM_STREAMING", (PyCFunction)STAGE_STREAM_STREAMING_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STREAM_ABORT",(PyCFunction) STAGE_STREAM_ABORT_PY, METH_NOARGS | METH_STATIC, ""},
+        {NULL, NULL, 0, NULL}
+};
+
+static PyTypeObject dapClientStageObject_dapClientStageType = {
+        PyVarObject_HEAD_INIT(NULL, 0)
+        "CellFrame.ClientStage",                                      /* tp_name */
+        sizeof(PyDapClientStageObject),                               /* 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 */
+        "Client stage objects",                                              /* tp_doc */
+        0,		                                                      /* tp_traverse */
+        0,		                                                      /* tp_clear */
+        0,		                                                      /* tp_richcompare */
+        0,		                                                      /* tp_weaklistoffset */
+        0,		                                                      /* tp_iter */
+        0,		                                                      /* tp_iternext */
+        DapClientStageMethods,                                              /* tp_methods */
+        0,                                                            /* tp_members */
+        0,                                                            /* tp_getset */
+        0,                                                            /* tp_base */
+        0,                                                            /* tp_dict */
+        0,                                                            /* tp_descr_get */
+        0,                                                            /* tp_descr_set */
+        0,                                                            /* tp_dictoffset */
+        0,                                                            /* tp_init */
+        0,                                                            /* tp_alloc */
+        PyType_GenericNew,                                            /* tp_new */
+
+};
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WRAPPING_DAP_CLIENT_STAGE_
\ No newline at end of file
diff --git a/include/wrapping_dap_client_stage_status.h b/include/wrapping_dap_client_stage_status.h
new file mode 100644
index 0000000000000000000000000000000000000000..8b33546fbec58bcf03add34be043c4c8b5035551
--- /dev/null
+++ b/include/wrapping_dap_client_stage_status.h
@@ -0,0 +1,83 @@
+#ifndef _WRAPPING_DAP_CLIENT_STAGE_STATUS_
+#define _WRAPPING_DAP_CLIENT_STAGE_STATUS_
+
+#include <Python.h>
+#include "dap_client.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+typedef struct PyDapClientStageStatus{
+    PyObject_HEAD
+    dap_client_stage_status_t stage_status;
+}PyDapClientStageStatusObject;
+
+PyObject *STAGE_STATUS_NONE_PY();
+// Enc init stage
+PyObject *STAGE_STATUS_IN_PROGRESS_PY();
+PyObject *STAGE_STATUS_ABORTING_PY();
+PyObject *STAGE_STATUS_ERROR_PY();
+PyObject *STAGE_STATUS_DONE_PY();
+
+
+PyMethodDef DapClientStageStatusMethods[] = {
+        {"STAGE_STATUS_NONE", STAGE_STATUS_NONE_PY, METH_NOARGS, ""},
+        // Enc init stage
+        {"STAGE_STATUS_IN_PROGRESS", STAGE_STATUS_IN_PROGRESS_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STATUS_ABORTING", STAGE_STATUS_ABORTING_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STATUS_ERROR", STAGE_STATUS_ERROR_PY, METH_NOARGS | METH_STATIC, ""},
+        {"STAGE_STATUS_DONE", STAGE_STATUS_DONE_PY, METH_NOARGS | METH_STATIC, ""},
+
+        {NULL, NULL, 0, NULL}
+};
+
+static PyTypeObject dapClientStageStatusObject_dapClientStageStatusType = {
+        PyVarObject_HEAD_INIT(NULL, 0)
+        "CellFrame.ClientStageStatus",                                      /* tp_name */
+        sizeof(PyDapClientStageStatusObject),                               /* 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 */
+        "Client stage status objects",                                              /* tp_doc */
+        0,		                                                      /* tp_traverse */
+        0,		                                                      /* tp_clear */
+        0,		                                                      /* tp_richcompare */
+        0,		                                                      /* tp_weaklistoffset */
+        0,		                                                      /* tp_iter */
+        0,		                                                      /* tp_iternext */
+        DapClientStageStatusMethods,                                              /* tp_methods */
+        0,                                                            /* tp_members */
+        0,                                                            /* tp_getset */
+        0,                                                            /* tp_base */
+        0,                                                            /* tp_dict */
+        0,                                                            /* tp_descr_get */
+        0,                                                            /* tp_descr_set */
+        0,                                                            /* tp_dictoffset */
+        0,                                                            /* tp_init */
+        0,                                                            /* tp_alloc */
+        PyType_GenericNew,                                            /* tp_new */
+
+};
+
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif //_WRAPPING_DAP_CLIENT_STAGE_STATUS_
\ No newline at end of file
diff --git a/libdap b/libdap
new file mode 160000
index 0000000000000000000000000000000000000000..1c0614797a3a2a2f4c179630025600e177637a65
--- /dev/null
+++ b/libdap
@@ -0,0 +1 @@
+Subproject commit 1c0614797a3a2a2f4c179630025600e177637a65
diff --git a/libdap-client b/libdap-client
new file mode 160000
index 0000000000000000000000000000000000000000..d3f5458f352294547b1ac68404d5ccdc8dea28ba
--- /dev/null
+++ b/libdap-client
@@ -0,0 +1 @@
+Subproject commit d3f5458f352294547b1ac68404d5ccdc8dea28ba
diff --git a/libdap-crypto b/libdap-crypto
new file mode 160000
index 0000000000000000000000000000000000000000..c81202ba5d48e5d77afcc8aea9962a10560527f3
--- /dev/null
+++ b/libdap-crypto
@@ -0,0 +1 @@
+Subproject commit c81202ba5d48e5d77afcc8aea9962a10560527f3
diff --git a/libdap-server b/libdap-server
new file mode 160000
index 0000000000000000000000000000000000000000..e3f07ae78aaecfada9f44abdd48a4ebbce9e2184
--- /dev/null
+++ b/libdap-server
@@ -0,0 +1 @@
+Subproject commit e3f07ae78aaecfada9f44abdd48a4ebbce9e2184
diff --git a/libdap-server-core b/libdap-server-core
new file mode 160000
index 0000000000000000000000000000000000000000..73a86ef8202ee67a05098d186aac2deacb207f63
--- /dev/null
+++ b/libdap-server-core
@@ -0,0 +1 @@
+Subproject commit 73a86ef8202ee67a05098d186aac2deacb207f63
diff --git a/libdap-server-udp b/libdap-server-udp
new file mode 160000
index 0000000000000000000000000000000000000000..a14daa6c39aed9bba32684872d03afc7778db61e
--- /dev/null
+++ b/libdap-server-udp
@@ -0,0 +1 @@
+Subproject commit a14daa6c39aed9bba32684872d03afc7778db61e
diff --git a/libdap-stream b/libdap-stream
new file mode 160000
index 0000000000000000000000000000000000000000..eb3f6b659c2ad25e1b9906eb9820e46de7443103
--- /dev/null
+++ b/libdap-stream
@@ -0,0 +1 @@
+Subproject commit eb3f6b659c2ad25e1b9906eb9820e46de7443103
diff --git a/libdap-stream-ch b/libdap-stream-ch
new file mode 160000
index 0000000000000000000000000000000000000000..daeb35e4680f659d41ade4da7514138e56278685
--- /dev/null
+++ b/libdap-stream-ch
@@ -0,0 +1 @@
+Subproject commit daeb35e4680f659d41ade4da7514138e56278685
diff --git a/src/libdap_client_python.c b/src/libdap_client_python.c
new file mode 100644
index 0000000000000000000000000000000000000000..101eee85b90ef8a52779871afac1123d6d24a685
--- /dev/null
+++ b/src/libdap_client_python.c
@@ -0,0 +1,80 @@
+#include "libdap_client_python.h"
+
+int dap_client_init_py(){
+    return dap_client_init();
+}
+void dap_client_deinit_py(){
+    dap_client_deinit();
+}
+
+PyObject *dao_client_set_uplink_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_uplink_addr_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_uplink_port_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_client_get_key_stream_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_go_stage_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_reset_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_request_enc_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_request_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_disconnect_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_client_get_stage_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_stage_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_client_get_stage_status_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_stage_status_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_error_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_error_str_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_client_get_auth_cookie_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_stream_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_stream_ch_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_stream_id_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_set_active_channels_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+
+PyObject *dap_client_get_stage_py(PyObject *self, PyObject *args){
+    return NULL;
+}
+PyObject *dap_client_get_stage_status_py(PyObject *self, PyObject *args){
+    return NULL;
+}
\ No newline at end of file
diff --git a/src/wrapping_dap_client_stage.c b/src/wrapping_dap_client_stage.c
new file mode 100644
index 0000000000000000000000000000000000000000..25cc196673915741813f4ff7b2e78e5393ee4e09
--- /dev/null
+++ b/src/wrapping_dap_client_stage.c
@@ -0,0 +1,37 @@
+#include "wrapping_dap_client_stage.h"
+
+PyObject *STAGE_BEGIN_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_BEGIN;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_ENC_INIT_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_ENC_INIT;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_STREAM_CTL_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_STREAM_CTL;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_STREAM_SESSION_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_STREAM_SESSION;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_STREAM_CONNECTED_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_STREAM_CONNECTED;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_STREAM_STREAMING_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_STREAM_STREAMING;
+    return (PyObject *)obj_stage;
+}
+PyObject *STAGE_STREAM_ABORT_PY(){
+    PyDapClientStageObject *obj_stage = (PyDapClientStageObject*)_PyObject_New(&dapClientStageObject_dapClientStageType);
+    obj_stage->stage = STAGE_STREAM_ABORT;
+    return (PyObject *)obj_stage;
+}
\ No newline at end of file
diff --git a/src/wrapping_dap_client_stage_status.c b/src/wrapping_dap_client_stage_status.c
new file mode 100644
index 0000000000000000000000000000000000000000..ff1603ab0c656b38cb381eebadd580dc0b14c866
--- /dev/null
+++ b/src/wrapping_dap_client_stage_status.c
@@ -0,0 +1,33 @@
+#include "wrapping_dap_client_stage_status.h"
+
+PyObject *STAGE_STATUS_NONE_PY(){
+    PyDapClientStageStatusObject *obj_stage_status = (PyDapClientStageStatusObject*)_PyObject_New(
+            &dapClientStageStatusObject_dapClientStageStatusType);
+    obj_stage_status->stage_status = STAGE_STATUS_NONE;
+    return (PyObject *)obj_stage_status;
+}
+// Enc init stage
+PyObject *STAGE_STATUS_IN_PROGRESS_PY(){
+    PyDapClientStageStatusObject *obj_stage_status = (PyDapClientStageStatusObject*)_PyObject_New(
+            &dapClientStageStatusObject_dapClientStageStatusType);
+    obj_stage_status->stage_status = STAGE_STATUS_IN_PROGRESS;
+    return (PyObject *)obj_stage_status;
+}
+PyObject *STAGE_STATUS_ABORTING_PY(){
+    PyDapClientStageStatusObject *obj_stage_status = (PyDapClientStageStatusObject*)_PyObject_New(
+            &dapClientStageStatusObject_dapClientStageStatusType);
+    obj_stage_status->stage_status = STAGE_STATUS_ABORTING;
+    return (PyObject *)obj_stage_status;
+}
+PyObject *STAGE_STATUS_ERROR_PY(){
+    PyDapClientStageStatusObject *obj_stage_status = (PyDapClientStageStatusObject*)_PyObject_New(
+            &dapClientStageStatusObject_dapClientStageStatusType);
+    obj_stage_status->stage_status = STAGE_STATUS_ERROR;
+    return (PyObject *)obj_stage_status;
+}
+PyObject *STAGE_STATUS_DONE_PY(){
+    PyDapClientStageStatusObject *obj_stage_status = (PyDapClientStageStatusObject*)_PyObject_New(
+            &dapClientStageStatusObject_dapClientStageStatusType);
+    obj_stage_status->stage_status = STAGE_STATUS_DONE;
+    return (PyObject *)obj_stage_status;
+}
\ No newline at end of file