diff --git a/dap_chain_net.c b/dap_chain_net.c
index 16d80222db4f1c8a73b75532d61479e8aa8f5366..5d855126c4cf8d8b8ccb746b9c46165c2b6a6666 100755
--- a/dap_chain_net.c
+++ b/dap_chain_net.c
@@ -171,7 +171,7 @@ static void s_gbd_history_callback_notify (void * a_arg,const char a_op_code, co
                                                      const size_t a_value_len);
 static void s_chain_callback_notify(void * a_arg, dap_chain_t *a_chain, dap_chain_cell_id_t a_id);
 
-static int s_cli_net(int argc, char ** argv, char **str_reply);
+static int s_cli_net(int argc, char ** argv, void *arg_func, char **str_reply);
 
 static bool s_seed_mode = false;
 
@@ -990,7 +990,7 @@ void dap_chain_net_delete( dap_chain_net_t * a_net )
  */
 int dap_chain_net_init()
 {
-    dap_chain_node_cli_cmd_item_create ("net", s_cli_net, "Network commands",
+    dap_chain_node_cli_cmd_item_create ("net", s_cli_net, NULL, "Network commands",
         "net -net <chain net name> go < online | offline >\n"
             "\tFind and establish links and stay online\n"
         "net -net <chain net name> get status\n"
@@ -1055,10 +1055,11 @@ void dap_chain_net_load_all()
  * @brief s_cli_net
  * @param argc
  * @param argv
+ * @param arg_func
  * @param str_reply
  * @return
  */
-static int s_cli_net( int argc, char **argv, char **a_str_reply)
+static int s_cli_net( int argc, char **argv, void *arg_func, char **a_str_reply)
 {
     int arg_index = 1;
     dap_chain_net_t * l_net = NULL;
diff --git a/dap_chain_node_cli.c b/dap_chain_node_cli.c
index 80cb89dea17f5f6ea4ed95409728b82b3d72ac95..c8d8947d09e44b01fc6f64eae97f9532d015698e 100755
--- a/dap_chain_node_cli.c
+++ b/dap_chain_node_cli.c
@@ -314,7 +314,7 @@ static void* thread_one_client_func(void *args)
                     char **l_argv = dap_strsplit(str_cmd, ";", -1);
                     // Call the command function
                     if(l_cmd &&  l_argv && l_cmd->func)
-                        res = (*(l_cmd->func))(argc, l_argv, &str_reply);
+                        res = (*(l_cmd->func))(argc, l_argv, l_cmd->arg_func, &str_reply);
                     else if (l_cmd){
                         log_it(L_WARNING,"NULL arguments for input for command \"%s\"", str_cmd);
                     }else {
@@ -712,17 +712,19 @@ int dap_chain_node_cli_find_option_val( char** argv, int arg_start, int arg_end,
  * @brief s_cmd_item_create
  * @param a_name
  * @param func
+ * @param a_arg_func
  * @param doc
  * @param doc_ex
  * @return
  */
-void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func, const char *a_doc, const char *a_doc_ex)
+void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func, void *a_arg_func, const char *a_doc, const char *a_doc_ex)
 {
     dap_chain_node_cmd_item_t *l_cmd_item = DAP_NEW_Z(dap_chain_node_cmd_item_t);
     dap_snprintf(l_cmd_item->name,sizeof (l_cmd_item->name),"%s",a_name);
     l_cmd_item->doc = strdup( a_doc);
     l_cmd_item->doc_ex = strdup( a_doc_ex);
     l_cmd_item->func = a_func;
+    l_cmd_item->arg_func = a_arg_func;
     HASH_ADD_STR(s_commands,name,l_cmd_item);
     log_it(L_DEBUG,"Added command %s",l_cmd_item->name);
 }
@@ -785,13 +787,13 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
     }
 #endif
 
-    dap_chain_node_cli_cmd_item_create("global_db", com_global_db, "Work with global database",
+    dap_chain_node_cli_cmd_item_create("global_db", com_global_db, NULL, "Work with global database",
             "global_db cells add -cell <cell id> \n"
             "global_db flush \n\n"
 //                    "global_db wallet_info set -addr <wallet address> -cell <cell id> \n\n"
             );
 
-    dap_chain_node_cli_cmd_item_create("node", com_node, "Work with node",
+    dap_chain_node_cli_cmd_item_create("node", com_node, NULL, "Work with node",
             "node add  -net <net name> -addr {<node address> | -alias <node alias>} {-port <port>} -cell <cell id>  {-ipv4 <ipv4 external address> | -ipv6 <ipv6 external address>}\n\n"
                     "node del  -net <net name> -addr <node address> | -alias <node alias>\n\n"
                     "node link {add|del}  -net <net name> {-addr <node address> | -alias <node alias>} -link <node address>\n\n"
@@ -800,76 +802,76 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
                     "node handshake {<node address> | -alias <node alias>}\n"
                     "node dump -net <net name> [ -addr <node address> | -alias <node alias>] [-full]\n\n"
                                         );
-    dap_chain_node_cli_cmd_item_create ("ping", com_ping, "Send ICMP ECHO_REQUEST to network hosts",
+    dap_chain_node_cli_cmd_item_create ("ping", com_ping, NULL, "Send ICMP ECHO_REQUEST to network hosts",
             "ping [-c <count>] host\n");
-    dap_chain_node_cli_cmd_item_create ("traceroute", com_traceroute, "Print the hops and time of packets trace to network host",
+    dap_chain_node_cli_cmd_item_create ("traceroute", com_traceroute, NULL, "Print the hops and time of packets trace to network host",
             "traceroute host\n");
-    dap_chain_node_cli_cmd_item_create ("tracepath", com_tracepath, "Traces path to a network host along this path",
+    dap_chain_node_cli_cmd_item_create ("tracepath", com_tracepath, NULL, "Traces path to a network host along this path",
             "tracepath host\n");
-    dap_chain_node_cli_cmd_item_create ("help", com_help, "Description of command parameters",
+    dap_chain_node_cli_cmd_item_create ("help", com_help, NULL, "Description of command parameters",
                                         "help [<command>]\n"
                                         "\tObtain help for <command> or get the total list of the commands\n"
                                         );
-    dap_chain_node_cli_cmd_item_create ("?", com_help, "Synonym for \"help\"",
+    dap_chain_node_cli_cmd_item_create ("?", com_help, NULL, "Synonym for \"help\"",
                                         "? [<command>]\n"
                                         "\tObtain help for <command> or get the total list of the commands\n"
                                         );
-    dap_chain_node_cli_cmd_item_create("wallet", com_tx_wallet, "Wallet operations",
+    dap_chain_node_cli_cmd_item_create("wallet", com_tx_wallet, NULL, "Wallet operations",
             "wallet [new -w <wallet_name> [-sign <sign_type>] [-restore <hex value>] [-net <net_name>] [-force]| list | info -addr <addr> -w <wallet_name> -net <net_name>]\n");
 
     // Token commands
-    dap_chain_node_cli_cmd_item_create ("token_decl", com_token_decl, "Token declaration",
+    dap_chain_node_cli_cmd_item_create ("token_decl", com_token_decl, NULL, "Token declaration",
             "token_decl -net <net name> -chain <chain name> -token <token ticker> -total_supply <total supply> -signs_total <sign total> -signs_emission <signs for emission> -certs <certs list>\n"
             "\t Declare new token for <netname>:<chain name> with ticker <token ticker>, maximum emission <total supply> and <signs for emission> from <signs total> signatures on valid emission\n"
             "token_decl_sign -net <net name> -chain <chain name> -datum <datum_hash> -certs <certs list>\n"
             "\t Sign existent <datum hash> in mempool with <certs list>\n"
             );
 
-    dap_chain_node_cli_cmd_item_create ("token_decl_sign", com_token_decl_sign, "Token declaration add sign",
+    dap_chain_node_cli_cmd_item_create ("token_decl_sign", com_token_decl_sign, NULL, "Token declaration add sign",
             "token_decl_sign -net <net name> -chain <chain name> -datum <datum_hash> -certs <certs list>\n"
             "\t Sign existent <datum hash> in mempool with <certs list>\n"
             );
 
-    dap_chain_node_cli_cmd_item_create ("token_emit", com_token_emit, "Token emission",
+    dap_chain_node_cli_cmd_item_create ("token_emit", com_token_emit, NULL, "Token emission",
             "token_emit -net <net name> -chain_emission <chain for emission> -chain_base_tx <chain for base tx> -addr <addr> -token <token ticker> -certs <cert> -emission_value <val>\n");
 
-    dap_chain_node_cli_cmd_item_create ("mempool_list", com_mempool_list, "List mempool entries for selected chain network and chain id",
+    dap_chain_node_cli_cmd_item_create ("mempool_list", com_mempool_list, NULL, "List mempool entries for selected chain network and chain id",
             "mempool_list -net <net name> -chain <chain name>\n");
 
-    dap_chain_node_cli_cmd_item_create ("mempool_proc", com_mempool_proc, "Proc mempool entries for selected chain network and chain id",
+    dap_chain_node_cli_cmd_item_create ("mempool_proc", com_mempool_proc, NULL, "Proc mempool entries for selected chain network and chain id",
             "mempool_proc -net <net name> -chain <chain name>\n");
 
-    dap_chain_node_cli_cmd_item_create ("mempool_delete", com_mempool_delete, "Delete datum with hash <datum hash>",
+    dap_chain_node_cli_cmd_item_create ("mempool_delete", com_mempool_delete, NULL, "Delete datum with hash <datum hash>",
             "mempool_delete -net <net name> -chain <chain name> -datum <datum hash>\n");
 
 
     // Transaction commands
-    dap_chain_node_cli_cmd_item_create ("tx_create", com_tx_create, "Make transaction",
+    dap_chain_node_cli_cmd_item_create ("tx_create", com_tx_create, NULL, "Make transaction",
             "tx_create -net <net name> -chain <chain name> -from_wallet <name> -to_addr <addr> -token <token ticker> -value <value> [-fee <addr> -value_fee <val>]\n" );
-    dap_chain_node_cli_cmd_item_create ("tx_cond_create", com_tx_cond_create, "Make cond transaction",
+    dap_chain_node_cli_cmd_item_create ("tx_cond_create", com_tx_cond_create, NULL, "Make cond transaction",
             "tx_cond_create todo\n" );
-    dap_chain_node_cli_cmd_item_create ("tx_verify", com_tx_verify, "Verifing transaction",
+    dap_chain_node_cli_cmd_item_create ("tx_verify", com_tx_verify, NULL, "Verifing transaction",
             "tx_verify  -wallet <wallet name> \n" );
 
     // Transaction history
-    dap_chain_node_cli_cmd_item_create("tx_history", com_tx_history, "Transaction history (for address or by hash)",
+    dap_chain_node_cli_cmd_item_create("tx_history", com_tx_history, NULL, "Transaction history (for address or by hash)",
             "tx_history  [-addr <addr> | -w <wallet name> | -tx <tx_hash>] -net <net name> -chain <chain name>\n");
 
     // vpn client
-    dap_chain_node_cli_cmd_item_create ("vpn_client", com_vpn_client, "VPN client control",
+    dap_chain_node_cli_cmd_item_create ("vpn_client", com_vpn_client, NULL, "VPN client control",
     "vpn_client [start -addr <server address> -port <server port>| stop | status]\n");
 
 
     // Log
-    dap_chain_node_cli_cmd_item_create ("print_log", com_print_log, "Print log info",
+    dap_chain_node_cli_cmd_item_create ("print_log", com_print_log, NULL, "Print log info",
                 "print_log [ts_after <timestamp >] [limit <line numbers>]\n" );
 
     // Statisticss
-    dap_chain_node_cli_cmd_item_create("stats", com_stats, "Print statistics",
+    dap_chain_node_cli_cmd_item_create("stats", com_stats, NULL, "Print statistics",
                 "stats cpu");
 
     // Exit
-    dap_chain_node_cli_cmd_item_create ("exit", com_exit, "Stop application and exit",
+    dap_chain_node_cli_cmd_item_create ("exit", com_exit, NULL, "Stop application and exit",
                 "exit\n" );
 
     // create thread for waiting of clients
diff --git a/dap_chain_node_cli.h b/dap_chain_node_cli.h
index ea9393d8677a57f40f9c47584e76bcd6857603ee..e9df748e7ebb56c7c81a2436e018ef33c4c14a18 100644
--- a/dap_chain_node_cli.h
+++ b/dap_chain_node_cli.h
@@ -38,11 +38,12 @@ typedef int SOCKET;
 #endif
 
 
-typedef int cmdfunc_t(int argc, char ** argv, char **str_reply);
+typedef int cmdfunc_t(int argc, char ** argv, void *arg_func, char **str_reply);
 
 typedef struct dap_chain_node_cmd_item{
     char name[32]; /* User printable name of the function. */
     cmdfunc_t *func; /* Function to call to do the job. */
+    void *arg_func; /* additional argument of function*/
     char *doc; /* Documentation for this function.  */
     char *doc_ex; /* Full documentation for this function.  */
     UT_hash_handle hh;
@@ -58,7 +59,7 @@ long s_recv(SOCKET sock, unsigned char *buf, size_t bufsize, int timeout);
  */
 dap_chain_node_cmd_item_t* dap_chain_node_cli_cmd_get_first();
 dap_chain_node_cmd_item_t* dap_chain_node_cli_cmd_find(const char *a_name);
-void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func, const char *a_doc, const char *a_doc_ex);
+void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func, void *a_arg_func, const char *a_doc, const char *a_doc_ex);
 
 void dap_chain_node_cli_set_reply_text(char **str_reply, const char *str, ...);
 
diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c
index 85e81c79894a8f680d3bf79fb3b2afddfbc042c2..83c95aaecf52725f277341e7897c4a0455861a89 100644
--- a/dap_chain_node_cli_cmd.c
+++ b/dap_chain_node_cli_cmd.c
@@ -662,7 +662,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
  * return 0 OK, -1 Err
  */
 
-int com_global_db(int a_argc, char ** a_argv, char **a_str_reply)
+int com_global_db(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 {
     enum {
         CMD_NONE, CMD_NAME_CELL, CMD_ADD, CMD_FLUSH
@@ -776,7 +776,7 @@ int com_global_db(int a_argc, char ** a_argv, char **a_str_reply)
 /**
  * Node command
  */
-int com_node(int a_argc, char ** a_argv, char **a_str_reply)
+int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 {
     enum {
         CMD_NONE, CMD_ADD, CMD_DEL, CMD_LINK, CMD_ALIAS, CMD_HANDSHAKE, CMD_CONNECT, CMD_DUMP
@@ -1256,7 +1256,7 @@ int com_node(int a_argc, char ** a_argv, char **a_str_reply)
  *
  * return 0 OK, -1 Err
  */
-int com_traceroute(int argc, char** argv, char **str_reply)
+int com_traceroute(int argc, char** argv, void *arg_func, char **str_reply)
 {
 #ifndef _WIN32
     const char *addr = NULL;
@@ -1335,7 +1335,7 @@ int com_traceroute(int argc, char** argv, char **str_reply)
  *
  * return 0 OK, -1 Err
  */
-int com_tracepath(int argc, char** argv, char **str_reply)
+int com_tracepath(int argc, char** argv, void *arg_func, char **str_reply)
 {
 #ifndef _WIN32
     const char *addr = NULL;
@@ -1409,7 +1409,7 @@ int com_tracepath(int argc, char** argv, char **str_reply)
  *
  * return 0 OK, -1 Err
  */
-int com_ping(int argc, char** argv, char **str_reply)
+int com_ping(int argc, char** argv, void *arg_func, char **str_reply)
 {
 #ifndef _WIN32
 
@@ -1471,7 +1471,7 @@ int com_ping(int argc, char** argv, char **str_reply)
 /**
  * Help command
  */
-int com_help(int argc, char ** argv, char **str_reply)
+int com_help(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     if(argc > 1) {
         log_it(L_DEBUG, "Help for command %s", argv[1]);
@@ -1506,7 +1506,7 @@ int com_help(int argc, char ** argv, char **str_reply)
  *
  * Wallet info
  */
-int com_tx_wallet(int argc, char ** argv, char **str_reply)
+int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
     // Get address of wallet
@@ -1763,10 +1763,11 @@ int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index, int argc, ch
  * @brief com_token_decl_sign
  * @param argc
  * @param argv
+ * @param arg_func
  * @param str_reply
  * @return
  */
-int com_token_decl_sign(int argc, char ** argv, char ** a_str_reply)
+int com_token_decl_sign(int argc, char ** argv, void *arg_func, char ** a_str_reply)
 {
     int arg_index = 1;
 
@@ -1964,10 +1965,11 @@ int com_token_decl_sign(int argc, char ** argv, char ** a_str_reply)
  * @brief com_token_decl_list
  * @param argc
  * @param argv
+ * @param arg_func
  * @param str_reply
  * @return
  */
-int com_mempool_list(int argc, char ** argv, char ** a_str_reply)
+int com_mempool_list(int argc, char ** argv, void *arg_func, char ** a_str_reply)
 {
     int arg_index = 1;
     dap_chain_t * l_chain = NULL;
@@ -2043,10 +2045,11 @@ int com_mempool_list(int argc, char ** argv, char ** a_str_reply)
  * @brief com_mempool_delete
  * @param argc
  * @param argv
+ * @param arg_func
  * @param a_str_reply
  * @return
  */
-int com_mempool_delete(int argc, char ** argv, char ** a_str_reply)
+int com_mempool_delete(int argc, char ** argv, void *arg_func, char ** a_str_reply)
 {
     int arg_index = 1;
     dap_chain_t * l_chain = NULL;
@@ -2088,10 +2091,11 @@ int com_mempool_delete(int argc, char ** argv, char ** a_str_reply)
  * @brief com_mempool_proc
  * @param argc
  * @param argv
+ * @param arg_func
  * @param a_str_reply
  * @return
  */
-int com_mempool_proc(int argc, char ** argv, char ** a_str_reply)
+int com_mempool_proc(int argc, char ** argv, void *arg_func, char ** a_str_reply)
 {
     int arg_index = 1;
     dap_chain_t * l_chain = NULL;
@@ -2188,10 +2192,11 @@ int com_mempool_proc(int argc, char ** argv, char ** a_str_reply)
  * @brief com_token_decl
  * @param argc
  * @param argv
+ * @param arg_func
  * @param str_reply
  * @return
  */
-int com_token_decl(int argc, char ** argv, char ** a_str_reply)
+int com_token_decl(int argc, char ** argv, void *arg_func, char ** a_str_reply)
 {
     int arg_index = 1;
 
@@ -2371,10 +2376,11 @@ int com_token_decl(int argc, char ** argv, char ** a_str_reply)
  * @brief com_token_emit
  * @param argc
  * @param argv
+ * @param arg_func
  * @param str_reply
  * @return
  */
-int com_token_emit(int argc, char ** argv, char ** str_reply)
+int com_token_emit(int argc, char ** argv, void *arg_func, char ** str_reply)
 {
     int arg_index = 1;
     const char *str_tmp = NULL;
@@ -2639,7 +2645,7 @@ int com_token_emit(int argc, char ** argv, char ** str_reply)
  *
  * Create transaction
  */
-int com_tx_cond_create(int argc, char ** argv, char **str_reply)
+int com_tx_cond_create(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     (void) argc;
     int arg_index = 1;
@@ -2799,7 +2805,7 @@ int com_tx_cond_create(int argc, char ** argv, char **str_reply)
  *
  * Create transaction
  */
-int com_tx_create(int argc, char ** argv, char **str_reply)
+int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     int arg_index = 1;
 //    int cmd_num = 1;
@@ -2931,7 +2937,7 @@ int com_tx_create(int argc, char ** argv, char **str_reply)
  *
  * Verifing transaction
  */
-int com_tx_verify(int argc, char ** argv, char **str_reply)
+int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     if(argc > 1) {
         if(str_reply)
@@ -2947,7 +2953,7 @@ int com_tx_verify(int argc, char ** argv, char **str_reply)
  *
  * Transaction history for an address
  */
-int com_tx_history(int argc, char ** argv, char **str_reply)
+int com_tx_history(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     int arg_index = 1;
     const char *l_addr_base58 = NULL;
@@ -3053,7 +3059,7 @@ int com_tx_history(int argc, char ** argv, char **str_reply)
 /**
  * stats command
  */
-int com_stats(int argc, char ** argv, char **str_reply)
+int com_stats(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     enum {
         CMD_NONE, CMD_STATS_CPU
@@ -3102,7 +3108,7 @@ int com_stats(int argc, char ** argv, char **str_reply)
     return 0;
 }
 
-int com_exit(int argc, char ** argv, char **str_reply)
+int com_exit(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     exit(0);
 }
@@ -3114,7 +3120,7 @@ int com_exit(int argc, char ** argv, char **str_reply)
  * Print log info
  * print_log [ts_after <timestamp >] [limit <line numbers>]
  */
-int com_print_log(int argc, char ** argv, char **str_reply)
+int com_print_log(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     int arg_index = 1;
     const char * l_str_ts_after = NULL;
@@ -3152,7 +3158,7 @@ int com_print_log(int argc, char ** argv, char **str_reply)
  *
  * VPN client control
  */
-int com_vpn_client(int a_argc, char ** a_argv, char **a_str_reply)
+int com_vpn_client(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 {
 #ifndef _WIN32
     enum {
diff --git a/dap_chain_node_cli_cmd.h b/dap_chain_node_cli_cmd.h
index 8f8aa35ffa962cf325b318a8d5b37044d7733bec..67f40810dcc902c652946b03117bb27afc125275 100644
--- a/dap_chain_node_cli_cmd.h
+++ b/dap_chain_node_cli_cmd.h
@@ -44,54 +44,54 @@ int dap_chain_node_cli_cmd_values_parse_net_chain(int *a_arg_index,int argc, cha
 /**
  * global_db command
  */
-int com_global_db(int argc,  char ** argv, char **str_reply);
+int com_global_db(int argc,  char ** argv, void *arg_func, char **str_reply);
 
 /**
  * Node command
  */
-int com_node(int argc,  char ** argv, char **str_reply);
+int com_node(int argc,  char ** argv, void *arg_func, char **str_reply);
 
 /**
  * Traceroute command
  *
  * return 0 OK, -1 Err
  */
-int com_traceroute(int argc,  char** argv, char **str_reply);
+int com_traceroute(int argc,  char** argv, void *arg_func, char **str_reply);
 
 /**
  * Tracepath command
  *
  * return 0 OK, -1 Err
  */
-int com_tracepath(int argc,  char** argv, char **str_reply);
+int com_tracepath(int argc,  char** argv, void *arg_func, char **str_reply);
 
 /**
  * Ping command
  *
  * return 0 OK, -1 Err
  */
-int com_ping(int argc,  char** argv, char **str_reply);
+int com_ping(int argc,  char** argv, void *arg_func, char **str_reply);
 
 /**
  * Help command
  */
-int com_help(int argc,  char ** argv, char **str_reply);
+int com_help(int argc,  char ** argv, void *arg_func, char **str_reply);
 
 
 /**
  * Token declaration
  */
-int com_token_decl ( int argc,  char ** argv, char ** str_reply);
+int com_token_decl ( int argc,  char ** argv, void *arg_func, char ** str_reply);
 
 /**
  * Token declaration add sign
  */
-int com_token_decl_sign ( int argc,  char ** argv, char ** str_reply);
+int com_token_decl_sign ( int argc,  char ** argv, void *arg_func, char ** str_reply);
 
 /**
  * Token emission
  */
-int com_token_emit (int argc,  char ** argv, char ** str_reply);
+int com_token_emit (int argc,  char ** argv, void *arg_func, char ** str_reply);
 
 
 /**
@@ -99,42 +99,42 @@ int com_token_emit (int argc,  char ** argv, char ** str_reply);
  *
  * Wallet info
  */
-int com_tx_wallet(int argc, char ** argv, char **str_reply);
+int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply);
 
 /**
  * com_tx_create command
  *
  * Create transaction
  */
-int com_tx_create(int argc, char ** argv, char **str_reply);
-int com_tx_cond_create(int argc, char ** argv, char **str_reply);
+int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply);
+int com_tx_cond_create(int argc, char ** argv, void *arg_func, char **str_reply);
 
 /**
  * tx_verify command
  *
  * Verifing transaction
  */
-int com_tx_verify(int argc, char ** argv, char **str_reply);
+int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply);
 
 /**
  * tx_history command
  *
  * Transaction history for an address
  */
-int com_tx_history(int argc, char ** argv, char **str_reply);
+int com_tx_history(int argc, char ** argv, void *arg_func, char **str_reply);
 
 // Print log info
-int com_print_log(int argc, char ** argv, char **str_reply);
+int com_print_log(int argc, char ** argv, void *arg_func, char **str_reply);
 
 // Print statistics
-int com_stats(int argc, char ** argv, char **str_reply);
+int com_stats(int argc, char ** argv, void *arg_func, char **str_reply);
 
-int com_exit(int argc, char ** argv, char **str_reply);
+int com_exit(int argc, char ** argv, void *arg_func, char **str_reply);
 
 // vpn_client command
-int com_vpn_client(int a_argc, char ** a_argv, char **a_str_reply);
+int com_vpn_client(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply);
 
-int com_mempool_delete(int argc, char ** argv, char ** a_str_reply);
-int com_mempool_list(int argc, char ** argv, char ** a_str_reply);
-int com_mempool_proc(int argc, char ** argv, char ** a_str_reply);
+int com_mempool_delete(int argc, char ** argv, void *arg_func, char ** a_str_reply);
+int com_mempool_list(int argc, char ** argv, void *arg_func, char ** a_str_reply);
+int com_mempool_proc(int argc, char ** argv, void *arg_func, char ** a_str_reply);