diff --git a/include/wrapping_dap_chain_datum_tx.h b/include/wrapping_dap_chain_datum_tx.h
index 595e5cb2014460a339ecefa96e99f0c7cf22da87..87aec6a55afeedbd8a3cbaf91fc35800cd2f8582 100644
--- a/include/wrapping_dap_chain_datum_tx.h
+++ b/include/wrapping_dap_chain_datum_tx.h
@@ -6,6 +6,7 @@
 #include "libdap_crypto_key_python.h"
 #include "dap_chain_datum_tx_out_cond.h"
 #include "wrapping_dap_hash.h"
+#include "dap_chain_datum_tx_items.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -158,22 +159,34 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args
 PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args);
 PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args);
 
-static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj);
-static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs);
-
+//static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj);
+//static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs);
 
 static PyMethodDef PyDapChainDatumTxObjectMethods[] ={
     {"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""},
-    {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS | METH_STATIC, ""},
-    {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS | METH_STATIC, ""},
-    {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS | METH_STATIC, ""},
-    {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS | METH_STATIC, ""},
-    {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS | METH_STATIC, ""},
-    {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS | METH_STATIC, ""},
+    {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS, ""},
+    {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS, ""},
+    {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS, ""},
+    {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS, ""},
+    {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS, ""},
+    {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS, ""},
     {"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""},
     {NULL, NULL, 0, NULL}
 };
 
+
+//static PyMethodDef PyDapChainDatumTxObjectMethods[] ={
+//    {"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""},
+//    {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS | METH_STATIC, ""},
+//    {"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""},
+//    {NULL, NULL, 0, NULL}
+//};
+
 static PyTypeObject DapChainDatumTx_DapChainDatumTxObjectType = {
     PyVarObject_HEAD_INIT(NULL, 0)
     "CellFrame.Chain.DatumTx",                      /* tp_name */
@@ -265,8 +278,8 @@ static PyTypeObject DapChainTxOutCond_DapChainTxOutCondObjectType = {
     PyType_GenericNew,                              /* tp_new */
 };
 
-dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list);
-PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond);
+//dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list);
+//PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond);
 
 /* -------------------------------------- */
 
diff --git a/src/wrapping_dap_chain_datum_tx.c b/src/wrapping_dap_chain_datum_tx.c
index 5ed4299e3194fea347357304ff3daa429931d828..699cfc4cf98cbee349da35cccc232ddb257a57e7 100644
--- a/src/wrapping_dap_chain_datum_tx.c
+++ b/src/wrapping_dap_chain_datum_tx.c
@@ -54,69 +54,63 @@ void PyDapChainDatumTxObject_delete(PyDapChainDatumTxObject* datumTx){
 }
 
 PyObject *dap_chain_datum_tx_get_size_py(PyObject *self, PyObject *args){
+    (void)args;
     size_t size = dap_chain_datum_tx_get_size(((PyDapChainDatumTxObject*)self)->datum_tx);
     return PyLong_FromSize_t(size);
 }
 PyObject *dap_chain_datum_tx_add_item_py(PyObject *self, PyObject *args){
-    PyObject *in_obj;
-    u_int8_t *a_item;
-    if (!PyArg_ParseTuple(args, "O|b", &in_obj, &a_item))
+    uint8_t *a_item;
+    if (!PyArg_ParseTuple(args, "b", &a_item))
         return NULL;
-    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj);
-    int res = dap_chain_datum_tx_add_item(txs, a_item);
-    if (res == -1){
-        return NULL;
-    } else {
-        PyObject *out = DapChainDatumTxArrayToPyList(txs);
-        return Py_BuildValue("O", out);
-    }
+    int res = dap_chain_datum_tx_add_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), a_item);
+    return PyLong_FromLong(res);
+//    if (res == -1){
+//        return NULL;
+//    } else {
+//        PyObject *out = DapChainDatumTxArrayToPyList(txs);
+//        return Py_BuildValue("O", out);
+//    }
 }
 PyObject *dap_chain_datum_tx_add_in_item_py(PyObject *self, PyObject *args){
-    PyObject *in_obj_datum_txs;
     PyObject *in_obj_hash_fast;
     uint32_t in_tx_out_pref_idx;
-    if (!PyArg_ParseTuple(args, "O|O|I", &in_obj_datum_txs, &in_obj_hash_fast, &in_tx_out_pref_idx))
+    if (!PyArg_ParseTuple(args, "O|I", &in_obj_hash_fast, &in_tx_out_pref_idx))
         return NULL;
-    dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
-    int res = dap_chain_datum_tx_add_in_item(a_txs, ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast,
+    int res = dap_chain_datum_tx_add_in_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
+                                             ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast,
                                              in_tx_out_pref_idx);
-    if (res == -1){
-        return NULL;
-    } else {
-        PyObject *out = DapChainDatumTxArrayToPyList(a_txs);
-        return Py_BuildValue("O", out);
-    }
+    return PyLong_FromLong(res);
 }
 
 PyObject *dap_chain_datum_tx_add_in_cond_item_py(PyObject *self, PyObject *args){
-    PyObject *in_obj_datum_txs;
+//    PyObject *in_obj_datum_txs;
     PyObject *in_chain_hash_fast;
     unsigned int in_tx_out_prev_idx;
     unsigned int in_receipt_idx;
-    if (!PyArg_ParseTuple(args, "O|O|I|I", &in_obj_datum_txs, &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx))
+    if (!PyArg_ParseTuple(args, "O|I|I", &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx))
         return NULL;
-    dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
-    int res = dap_chain_datum_tx_add_in_cond_item(a_txs, ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast, in_tx_out_prev_idx, in_receipt_idx);
+//    dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
+    int res = dap_chain_datum_tx_add_in_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
+                                                  ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast,
+                                                  in_tx_out_prev_idx,
+                                                  in_receipt_idx);
     return PyLong_FromLong(res);
 }
 
 PyObject *dap_chain_datum_tx_add_out_item_py(PyObject *self, PyObject *args){
-    PyObject *in_obj_datum_txs;
+//    PyObject *in_obj_datum_txs;
     PyObject *in_addr;
     uint64_t value;
-    if (!PyArg_ParseTuple(args, "O|O|k", &in_obj_datum_txs, &in_addr, value))
+    if (!PyArg_ParseTuple(args, "O|k", &in_addr, &value))
         return NULL;
-    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
-    int res = dap_chain_datum_tx_add_out_item(txs, ((PyDapChainAddrObject*)in_addr)->addr, value);
-    if (res == -1){
-        return NULL;
-    } else {
-        PyObject *out = DapChainDatumTxArrayToPyList(txs);
-        return Py_BuildValue("O", out);
-    }
+//    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj_datum_txs);
+    int res = dap_chain_datum_tx_add_out_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
+                                              ((PyDapChainAddrObject*)in_addr)->addr,
+                                              value);
+    return PyLong_FromLong(res);
 }
 PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args){
-    PyObject *obj_txs;
+//    PyObject *obj_txs;
     PyObject *obj_key;
     PyObject *obj_srv_uid;
     uint64_t value;
@@ -124,78 +118,74 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args
     PyObject *obj_srv_price_unit_uid;
     PyObject *obj_cond_bytes;
     Py_ssize_t cond_size;
-    if (!PyArg_ParseTuple(args, "O|O|O|k|k|O|O|n", &obj_txs, &obj_key, &obj_srv_uid, &value, &value_max_per_unit,
+    if (!PyArg_ParseTuple(args, "O|O|k|k|O|O|n", &obj_key, &obj_srv_uid, &value, &value_max_per_unit,
                           &obj_srv_price_unit_uid, &obj_cond_bytes, &cond_size))
         return NULL;
-    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs);
+//    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs);
     void *cond = (void*)PyBytes_AsString(obj_cond_bytes);
-    int res = dap_chain_datum_tx_add_out_cond_item(txs, ((PyCryptoKeyObject*)obj_key)->key, ((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid,
-                                                   value, value_max_per_unit, ((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid,
+    int res = dap_chain_datum_tx_add_out_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
+                                                   ((PyCryptoKeyObject*)obj_key)->key,
+                                                   ((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid,
+                                                   value, value_max_per_unit,
+                                                   ((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid,
                                                    cond, (size_t)cond_size);
-    if (res == -1){
-        return NULL;
-    } else {
-        PyObject *out = DapChainDatumTxArrayToPyList(txs);
-        return Py_BuildValue("O", out);
-    }
+    return PyLong_FromLong(res);
 }
 PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args){
-    PyObject *obj_txs;
+//    PyObject *obj_txs;
     PyObject *obj_key;
-    if (!PyArg_ParseTuple(args, "O|O", &obj_txs, &obj_key))
-        return NULL;
-    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs);
-    int res = dap_chain_datum_tx_add_sign_item(txs, ((PyCryptoKeyObject*)obj_key)->key);
-    if (res == -1){
+    if (!PyArg_ParseTuple(args, "O", &obj_key))
         return NULL;
-    } else {
-        PyObject *out = DapChainDatumTxArrayToPyList(txs);
-        return Py_BuildValue("O", out);
-    }
+//    dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs);
+    int res = dap_chain_datum_tx_add_sign_item(&(((PyDapChainDatumTxObject*)self)->datum_tx),
+                                               ((PyCryptoKeyObject*)obj_key)->key);
+    return PyLong_FromLong(res);
 }
 PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args){
+    (void)args;
     int res = dap_chain_datum_tx_verify_sign(((PyDapChainDatumTxObject*)self)->datum_tx);
     return PyLong_FromLong(res);
 }
 
-static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj){
-    Py_ssize_t size = PyList_Size(a_in_obj);
-    dap_chain_datum_tx_t **txs = calloc(sizeof(dap_chain_datum_tx_t), (size_t)size);
-    for (Py_ssize_t i = 0; i < size;i++){
-        txs[i] = ((PyDapChainDatumTxObject*)PyList_GetItem(a_in_obj, i))->datum_tx;
-    }
-    return txs;
-}
+//static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj){
+//    Py_ssize_t size = PyList_Size(a_in_obj);
+//    dap_chain_datum_tx_t **txs = calloc(sizeof(dap_chain_datum_tx_t), (size_t)size);
+//    for (Py_ssize_t i = 0; i < size;i++){
+//        txs[i] = ((PyDapChainDatumTxObject*)PyList_GetItem(a_in_obj, i))->datum_tx;
+//    }
+//    return txs;
+//}
 
-static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs){
-    size_t len = sizeof(datum_txs) / sizeof(*datum_txs);
-    PyObject* list = PyList_New((Py_ssize_t)len);
-    for (size_t i=0; i < len; i++){
-        PyObject *obj = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType);
-        ((PyDapChainDatumTxObject*)obj)->datum_tx = datum_txs[i];
-        PyList_Append(list, obj);
-    }
-    return list;
-}
+//static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs){
+////    size_t len = sizeof(datum_txs) / sizeof(*datum_txs);
+////    size_t len = dap_chain_datum_item_tx_get_size(datum_txs);
+//    PyObject* list = PyList_New((Py_ssize_t)len);
+//    for (size_t i=0; i < len; i++){
+//        PyObject *obj = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType);
+//        ((PyDapChainDatumTxObject*)obj)->datum_tx = datum_txs[i];
+//        PyList_Append(list, obj);
+//    }
+//    return list;
+//}
 
-dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list){
-    Py_ssize_t size = PyList_Size(list);
-    dap_chain_tx_out_cond_t **out_conds = calloc(sizeof(dap_chain_tx_out_cond_t), (size_t)size);
-    for (Py_ssize_t i=0; i < size; i++){
-        out_conds[i] = ((PyDapChainTxOutCondObject*)PyList_GetItem(list, i))->out_cond;
-    }
-    return out_conds;
-}
+//dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list){
+//    Py_ssize_t size = PyList_Size(list);
+//    dap_chain_tx_out_cond_t **out_conds = calloc(sizeof(dap_chain_tx_out_cond_t), (size_t)size);
+//    for (Py_ssize_t i=0; i < size; i++){
+//        out_conds[i] = ((PyDapChainTxOutCondObject*)PyList_GetItem(list, i))->out_cond;
+//    }
+//    return out_conds;
+//}
 
-PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond){
-    size_t len = sizeof(out_cond) / sizeof(*out_cond);
-    PyObject *list = PyList_New((Py_ssize_t)len);
-    for (size_t i=0; i< len;i++ ){
-        PyObject *obj = _PyObject_New(&DapChainTxOutCond_DapChainTxOutCondObjectType);
-        ((PyDapChainTxOutCondObject*)obj)->out_cond = out_cond[i];
-        PyList_Append(list, obj);
-    }
-    return list;
-}
+//PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond){
+//    size_t len = sizeof(out_cond) / sizeof(*out_cond);
+//    PyObject *list = PyList_New((Py_ssize_t)len);
+//    for (size_t i=0; i< len;i++ ){
+//        PyObject *obj = _PyObject_New(&DapChainTxOutCond_DapChainTxOutCondObjectType);
+//        ((PyDapChainTxOutCondObject*)obj)->out_cond = out_cond[i];
+//        PyList_Append(list, obj);
+//    }
+//    return list;
+//}
 
 /* -------------------------------------- */