diff --git a/framework/cordova-1.6.0.js b/framework/cordova-1.6.0.js
index 23215f2..66b6848 100644
--- a/framework/cordova-1.6.0.js
+++ b/framework/cordova-1.6.0.js
@@ -1369,11 +1369,18 @@
 	    method: 'getstatus',
 	    parameters: {},
 	    onSuccess: function(result) { 
+		
 			var status = NetworkStatus.NOT_REACHABLE;
-			if (result.isInternetConnectionAvailable == true)
-			{
-				// don't know whether its via wifi or carrier ... so return the worst case
-				status = NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK;
+			if (result.isInternetConnectionAvailable == true) {
+
+				if (result.wan.state == "connected") {
+					status = NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK;
+				}
+				
+				if (result.wifi.state == "connected") {
+					status = NetworkStatus.REACHABLE_VIA_WIFI_NETWORK;
+				}
+							
 			}
 			successCallback(status); 
 		},
@@ -1382,6 +1389,17 @@
 
 };
 
+Network.prototype.connection = function(hostName, successCallback, options) {
+	this.request = navigator.service.Request('palm://com.palm.connectionmanager', {
+	    method: 'getstatus',
+	    parameters: {},
+	    onSuccess: function(result) { 
+			successCallback(result); 
+		},
+	    onFailure: function() {}
+	});	
+};
+
 /*
  * This class contains information about any NetworkStatus.
  * @constructor
diff --git a/framework/index.html b/framework/index.html
index fb62362..8d0f103 100644
--- a/framework/index.html
+++ b/framework/index.html
@@ -31,7 +31,7 @@
 	<a onclick="page('screen');">Adjust Screen Settings</a>
 	<a onclick="page('notifications');">Notification Examples</a>
 	<a onclick="info();">Show Device Info</a>
-	<a onclick="net();">Show Network Info</a>		
+	<a onclick="page('net');">Show Network Info</a>		
 	<a onclick="window.debug.log('trace this');">Console Logging</a>
 	<a onclick="launchmap()">Launch Map App</a>
 	<a onclick="navigator.window.newCard('dashboard.html'); menu(false);">Launch New Card</a>
@@ -74,7 +74,14 @@
 
 <div id="info" style="display: none;"></div>
 
-<div id="net" style="display: none;"></div>
+<div id="net" style="display: none;">
+    <p>navigator.network.isReachable</p>
+    <button id="isReachable" onclick="isReachable();">isReachable</button>
+    <p>navigator.network.connection</p>
+    <button id="isReachable" onclick="networkConnection();">connection</button>
+    <div id="networkResult"></div>
+    
+</div>
 
 <div id="camera" style="display: none;"></div>
 
@@ -223,9 +230,8 @@
 	page('storage');
 }
 
-function net() {
-	page('net');
-	var netpage = lastpage;
+function isReachable() {
+	var netpage = document.getElementById("networkResult");
 	netpage.innerHTML = "Requesting network info...";
 	
 	function successful(response) {
@@ -244,6 +250,18 @@
 	var request = navigator.network.isReachable('palm://com.palm.connectionmanager', successful, {});
 }
 
+function networkConnection() {
+    
+    var netpage = document.getElementById("networkResult");
+	netpage.innerHTML = "Requesting connection info...";
+	
+    function successful(response) {
+        netpage.innerHTML = JSON.stringify(response);
+    }
+    
+    var request = navigator.network.connection('palm://com.palm.connectionmanager', successful, {});
+}
+
 function displayCurrentOrientation() {
 	navigator.notification.showBanner(navigator.orientation.getCurrentOrientation(), 'current orientaiton'); 
 }	
diff --git a/js/network.js b/js/network.js
index 8737baf..d5d6bbf 100755
--- a/js/network.js
+++ b/js/network.js
@@ -10,11 +10,18 @@
 	    method: 'getstatus',
 	    parameters: {},
 	    onSuccess: function(result) { 
+		
 			var status = NetworkStatus.NOT_REACHABLE;
-			if (result.isInternetConnectionAvailable == true)
-			{
-				// don't know whether its via wifi or carrier ... so return the worst case
-				status = NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK;
+			if (result.isInternetConnectionAvailable == true) {
+
+				if (result.wan.state == "connected") {
+					status = NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK;
+				}
+				
+				if (result.wifi.state == "connected") {
+					status = NetworkStatus.REACHABLE_VIA_WIFI_NETWORK;
+				}
+							
 			}
 			successCallback(status); 
 		},
@@ -23,6 +30,17 @@
 
 };
 
+Network.prototype.connection = function(hostName, successCallback, options) {
+	this.request = navigator.service.Request('palm://com.palm.connectionmanager', {
+	    method: 'getstatus',
+	    parameters: {},
+	    onSuccess: function(result) { 
+			successCallback(result); 
+		},
+	    onFailure: function() {}
+	});	
+};
+
 /*
  * This class contains information about any NetworkStatus.
  * @constructor
