diff --git a/Res/phonegap/contact.js b/Res/phonegap/contact.js
index cfe072a..8ecd5cb 100644
--- a/Res/phonegap/contact.js
+++ b/Res/phonegap/contact.js
@@ -99,7 +99,7 @@
         errorCB(errorObj);
     }
     else {
-        PhoneGap.exec(successCB, errorCB, "Contacts", "remove", [{ "contact": this}]);
+        PhoneGap.exec(successCB, errorCB, "com.phonegap.Contacts", "remove", [{"contact": this}]);
     }
 };
 /**
@@ -115,7 +115,7 @@
         errorCB(errorObj);
     }
     else {
-        PhoneGap.exec(successCB, errorCB, "Contacts","displayContact", [this.id, options]);
+        PhoneGap.exec(successCB, errorCB, "com.phonegap.Contacts","displayContact", [this.id, options]);
     }
 };
 
diff --git a/Res/phonegap/phonegap.base.js b/Res/phonegap/phonegap.base.js
index 4411438..b89153d 100644
--- a/Res/phonegap/phonegap.base.js
+++ b/Res/phonegap/phonegap.base.js
@@ -515,23 +515,24 @@
  			start = 1;
  		}
         
-        var uri = [];
-    	var dict = null;
-    
+      var uri = [];
+      var query = [];
     	for (var i = start; i < args.length; i++) {
         	var arg = args[i];
         	if (arg == undefined || arg == null)
             	continue;
         	if (typeof(arg) == 'object')
-            	dict = arg;
+              for(i in arg) {
+                query.push(i + '=' + encodeURIComponent(arg[i]));
+              }
         	else
             	uri.push(encodeURIComponent(arg));
     	}
     	var next = callbackId != null  ?  ("/" + callbackId + "/") : "/";
     	var url = "gap://" + service + next + uri.join("/");
 
-    	if (dict != null) {
-        	url += "?" + encodeURIComponent(JSON.stringify(dict));
+    	if (query.length > 0) {
+        	url += "?" + encodeURIComponent(query.join("&"));
     	}
 		document.location = url;
    
