diff --git a/include/libdap_chain_type_python.h b/include/libdap_chain_type_python.h
index 8cb8ae63884e67932d445b99136f5f5c9be7e45f..289866c69fd21263df6ef408127a417d3ebcd298 100644
--- a/include/libdap_chain_type_python.h
+++ b/include/libdap_chain_type_python.h
@@ -5,6 +5,7 @@
 
 typedef struct PyChainType{
     PyObject_HEAD
+    dap_chain_type_t chain_type;
 } PyChainTypeObject;
 
 PyObject* CHAIN_TYPE_FIRST_PY();
diff --git a/src/libdap_chain_type_python.c b/src/libdap_chain_type_python.c
index 7ba65602d0f11cee60556e805b723e319cfe758d..2ce46a8ecd38485dbe4c82820c771641d0ff382a 100644
--- a/src/libdap_chain_type_python.c
+++ b/src/libdap_chain_type_python.c
@@ -1,17 +1,27 @@
 #include "libdap_chain_type_python.h"
 
 PyObject* CHAIN_TYPE_FIRST_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_FIRST);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_FIRST;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_TOKEN_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_TOKEN);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_TOKEN;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_EMISSION_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_EMISSION);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_EMISSION;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_TX_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_TX);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_TX;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_LAST_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_LAST);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_LAST;
+    return Py_BuildValue("O", &dap_chain_obj);
 }