diff --git a/libmobile_hilink.c b/libmobile_hilink.c
index b2a9a7eebe7568ac1b684c60c1530a8af018813a..2ed6efcb8ab3bb4c1507ad2af016812f61cf2fb7 100644
--- a/libmobile_hilink.c
+++ b/libmobile_hilink.c
@@ -284,72 +284,243 @@ leave:
 struct json_object *mobile_get_device_info_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/device/information";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return get_request(home_url, api_url);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_monitoring_status_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/monitoring/status";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
 
-	return get_request(home_url, api_url);
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_trafficstatistics_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/monitoring/traffic-statistics";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
 
-	return get_request(home_url, api_url);
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_provider_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/net/current-plmn";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return get_request(home_url, api_url);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_pin_status_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/pin/status";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return get_request(home_url, api_url);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_connection_status_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/dialup/connection";
+	struct write_result *result;
+	struct json_object *result_json;
 
-	return get_request(home_url, api_url);
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_apn_profiles_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/dialup/profiles";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
 
-	return get_request(home_url, api_url);
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_notification_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/monitoring/check-notifications";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return get_request(home_url, api_url);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
 struct json_object *mobile_get_sms_count_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/sms/sms-count";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
 
-	return get_request(home_url, api_url);
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -357,12 +528,26 @@ struct json_object *mobile_get_language_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/language/current-language";
 	struct write_result *result;
+	struct json_object *result_json;
 
 	result = get_request(home_url, api_url);
+	if (!result)
+		goto fail_result;
 
 	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
-	return xml_to_json_converter(result);
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
 
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
        /*     post calls */
@@ -370,10 +555,28 @@ struct json_object *mobile_create_apn_profile_hilink(char *name, char *apn_name,
 {
 	char *api_url = "http://192.168.8.1/api/dialup/profiles";
 	char post_query[1024];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	snprintf(post_query, 1023, "<request><Delete>0</Delete><SetDefault>0</SetDefault><Modify>1</Modify><Profile><Index></Index><IsValid>1</IsValid><Name>%s</Name><ApnIsStatic>1</ApnIsStatic><ApnName>%s</ApnName><DialupNum>*99#</DialupNum><Username>%s</Username><Password>%s</Password><AuthMode>0</AuthMode><IpIsStatic></IpIsStatic><IpAddress></IpAddress><DnsIsStatic></DnsIsStatic><PrimaryDns></PrimaryDns><SecondaryDns></SecondaryDns><ReadOnly>0</ReadOnly><iptype>2</iptype></Profile></request>", name, apn_name, username, password);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -381,10 +584,28 @@ struct json_object *mobile_set_apn_profile_default_hilink(char *name, char *apn_
 {
 	char *api_url = "http://192.168.8.1/api/dialup/profiles";
 	char post_query[1024];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	snprintf(post_query, 1023, "<request><Delete>0</Delete><SetDefault>3</SetDefault><Modify>2</Modify><Profile><Index>3</Index><IsValid>1</IsValid><Name>%s</Name><ApnIsStatic>1</ApnIsStatic><ApnName>%s</ApnName><DialupNum>*99#</DialupNum><Username>%s</Username><Password>%s</Password><AuthMode>0</AuthMode><IpIsStatic>0</IpIsStatic><IpAddress></IpAddress><DnsIsStatic>0</DnsIsStatic><PrimaryDns></PrimaryDns><SecondaryDns></SecondaryDns><ReadOnly>0</ReadOnly><iptype>0</iptype></Profile></request>", name, apn_name, username, password);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -392,10 +613,28 @@ struct json_object *mobile_delete_apn_profile_hilink(int profile_name_location)
 {
 	char *api_url = "http://192.168.8.1/api/dialup/profiles";
 	char post_query[512];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><Delete>%d</Delete><SetDefault>1</SetDefault><Modify>0</Modify></request>", profile_name_location);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -403,10 +642,28 @@ struct json_object *mobile_sms_read_hilink(int sms_location)
 {
 	char *api_url = "http://192.168.8.1/api/sms/set-read";
 	char post_query[256];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><Index>%d</Index></request>", sms_location);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -414,10 +671,28 @@ struct json_object *mobile_sms_delete_hilink(int sms_location)
 {
 	char *api_url = "http://192.168.8.1/api/sms/delete-sms";
 	char post_query[256];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><Index>%d</Index></request>", sms_location);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -425,8 +700,26 @@ struct json_object *mobile_reset_traffic_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/monitoring/clear-traffic";
 	char *post_query = "<request><ClearTraffic>1</ClearTraffic></request>";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
 
-	return post_request(sess_tok_url, api_url, post_query);
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
   /*   mobile_LTE_register has to be called to enbale or disable LTE   */
@@ -434,8 +727,26 @@ struct json_object *mobile_LTE_register_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/net/register";
 	char *post_query = "<request><Mode>0</Mode><Plmn></Plmn><Rat></Rat></request>";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
 
-	return post_request(sess_tok_url, api_url, post_query);
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -443,8 +754,26 @@ struct json_object *mobile_LTE_enable_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/net/net-mode";
 	char *post_query = "<request><NetworkMode>00</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -452,8 +781,26 @@ struct json_object *mobile_LTE_disable_hilink()
 {
 	char *api_url = "http://192.168.8.1/api/net/net-mode";
 	char *post_query = "<NetworkMode>0201</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>";
+	struct write_result *result;
+	struct json_object *result_json;
+
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -462,10 +809,28 @@ struct json_object *mobile_set_connection_type_hilink(int connection_type)
 {
 	char *api_url = "http://192.168.8.1/api/dialup/connection";
 	char post_query[256];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><NetworkMode>%d</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>7FFFFFFFFFFFFFFF</LTEBand></request>", connection_type);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -473,10 +838,28 @@ struct json_object *data_roaming(int action)
 {
 	char *api_url = "http://192.168.8.1/api/dialup/connection";
 	char post_query[256];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><RoamAutoConnectEnable>%d</RoamAutoConnectEnable><MaxIdelTime>600</MaxIdelTime><ConnectMode>0</ConnectMode><MTU>1500</MTU><auto_dial_switch>1</auto_dial_switch><pdp_always_on>0</pdp_always_on></request>", action);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -496,10 +879,28 @@ struct json_object *pin_action(char *type, char *current_pin, char *new_pin, cha
 {
 	char *api_url = "http://192.168.8.1/api/pin/operate";
 	char post_query[256];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	sprintf(post_query, "<request><OperateType>%s</OperateType><CurrentPin>%s</CurrentPin><NewPin>%s</NewPin><PukCode>%s</PukCode></request>", type, current_pin, new_pin, puk);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }
 
 
@@ -525,8 +926,27 @@ struct json_object *mobile_set_language_hilink(char *language_name)
 {
 	char *api_url = "http://192.168.8.1/api/language/current-language";
 	char post_query[128];
+	struct write_result *result;
+	struct json_object *result_json;
 
 	snprintf(post_query, 128, "<request><CurrentLanguage>%s</CurrentLanguage></request>", language_name);
 
-	return post_request(sess_tok_url, api_url, post_query);
+	result = post_request(sess_tok_url, api_url, post_query);
+	if (!result)
+		goto fail_result;
+
+	debug_print("Json object inside library: %s\n", json_object_to_json_string(xml_to_json_converter(result)));
+	result_json = xml_to_json_converter(result);
+	if(!result_json)
+		goto fail_converter;
+
+	if (result)
+		free(result);
+
+	return result_json;
+
+fail_converter:
+	free(result);
+fail_result:
+	return NULL;
 }