tidy up things
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index fc59787..d9dba00 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -15,6 +15,7 @@
 New Features
 --------------------
 EDGENT-377  Add IotGateway and IotpGateway
+            This feature is incubating.  See the classes Javadoc.
 EDGENT-376  Support an edge device using both the Edgent API and WIoTP "Managed Device" APIs
 EDGENT-375  Support publishing WIoTP device events using HTTP
 EDGENT-370  Add static IotProvider.getPreferences()
@@ -26,7 +27,7 @@
     
 Known Issues
 --------
-None yet
+Open JIRAs may be found at https://issues.apache.org/jira/browse/EDGENT
 
 Bug Fixes
 ---------
diff --git a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpAppClient.java b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpAppClient.java
index 959f218..adc7a8f 100644
--- a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpAppClient.java
+++ b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpAppClient.java
@@ -126,7 +126,7 @@
     jo.addProperty("num", 12345);
     JsonObject data = jo;
     
-    System.out.println("Sending "+iotpDevType+"/"+iotpDevId+" command: "+command+" data("+data.getClass().getName()+")="+data);
+    System.out.println("Sending "+iotpDevType+"/"+iotpDevId+" command: "+command+" data: "+data);
     
     boolean ok = client.publishCommand(iotpDevType, iotpDevId, command, data);
     
diff --git a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpDeviceSample.java b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpDeviceSample.java
index a88dfe1..755890f 100644
--- a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpDeviceSample.java
+++ b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpDeviceSample.java
@@ -39,11 +39,10 @@
 
 /**
  * Similar to IotpQuickstart2 but for a real/non-quickstart WIoTP account
- * for a registered device
- * AND it subscribes to/prints device cmds.
+ * for a registered device AND it subscribes to/prints device cmds.
  * <P>
- * Use IotpAppClient or any other technique to generate cmds. 
- * e.g., mosquitto_{pub,sub} cmds are printed below.
+ * Use IotpAppClient to print published events and generate a command
+ * (start this app before running IotpAppClient). 
  * <P>
  * This sample demonstrates:
  * <UL>
@@ -85,12 +84,8 @@
         System.out.println("DeviceType: " + iotpDevType);
         System.out.println("DeviceId:   " + iotpDevId);
         
-        System.out.println("device clientId:  " + "d:"+iotpOrg+":"+iotpDevType+":"+iotpDevId);
-        System.out.println("WIoTP host: " + iotpOrg+".messaging.internetofthings.ibmcloud.com");
-        System.out.println("evt topic: " + "iot-2/type/"+iotpDevType+"/id/"+iotpDevId+"/evt/+/fmt/json");
-        System.out.println("cmd topic: " + "iot-2/type/"+iotpDevType+"/id/"+iotpDevId+"/cmd/+/fmt/json");
-        System.out.println("mosquitto_pub -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpDevType+"/id/"+iotpDevId+"/cmd/cmd-1/fmt/json -m '{}'");
-        System.out.println("mosquitto_sub -d -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId2 -t iot-2/type/+/id/+/evt/+/fmt/+");
+        // System.out.println("mosquitto_pub -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpDevType+"/id/"+iotpDevId+"/cmd/cmd-1/fmt/json -m '{}'");
+        // System.out.println("mosquitto_sub -d -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId2 -t iot-2/type/+/id/+/evt/+/fmt/+");
         
         IotpDevice device;
         if (useInternalDeviceClient) {
@@ -136,6 +131,7 @@
           device.httpEvents(json, "sensors");
         }
         
+        // subscribe to / report device cmds 
         device.commands().sink(jo -> System.out.println("Received cmd: " + jo));
 
         tp.submit(topology);
diff --git a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpGWDeviceSample.java b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpGWDeviceSample.java
index da665a8..c03ed25 100644
--- a/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpGWDeviceSample.java
+++ b/samples/connectors/src/main/java/org/apache/edgent/samples/connectors/iotp/IotpGWDeviceSample.java
@@ -44,10 +44,10 @@
 /**
  * Similar to IotpQuickstart2 but for a real/non-quickstart WIoTP account
  * and a registered IoT Gateway device with connected devices
- * AND it subscribes to/prints device cmds.
+ * AND it subscribes to and prints received device cmds.
  * <P>
- * Use IotpAppClient or any other technique to generate cmds. 
- * e.g., mosquitto_{pub,sub} cmds are printed below.
+ * Use IotpAppClient to print published events and generate a command
+ * (start this app before running IotpAppClient with the "useGW" option). 
  * <P>
  * This sample demonstrates:
  * <UL>
@@ -87,23 +87,18 @@
         String iotpOrg = getProperty(cfgProps, "Organization-ID", "org");
         String iotpGWDevType = getProperty(cfgProps, "Gateway-Type", "Device-Type", "type");
         String iotpGWDevId = getProperty(cfgProps, "Gateway-ID", "Device-ID", "id");
+        String iotpCnDev1Type = cfgProps.getProperty("cn-dev1-type");
+        String iotpCnDev1Id = cfgProps.getProperty("cn-dev1-id");
+        
         System.out.println("orgId:  " + iotpOrg);
         System.out.println("GWDeviceType: " + iotpGWDevType);
         System.out.println("GWDeviceId:   " + iotpGWDevId);
+        System.out.println("cn-dev1 DeviceType: " + iotpCnDev1Type);
+        System.out.println("cn-dev1 DeviceId:   " + iotpCnDev1Id);
         
-        System.out.println("GW device clientId:  " + "g:"+iotpOrg+":"+iotpGWDevType+":"+iotpGWDevId);
-        System.out.println("WIoTP host: " + iotpOrg+".messaging.internetofthings.ibmcloud.com");
-        System.out.println("GW evt topic: " + "iot-2/type/"+iotpGWDevType+"/id/"+iotpGWDevId+"/evt/+/fmt/json");
-        System.out.println("GW cmd topic: " + "iot-2/type/"+iotpGWDevType+"/id/"+iotpGWDevId+"/cmd/+/fmt/json");
-        System.out.println("GW mosquitto_pub -u <api-auth-key> -P <api-auth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpGWDevType+"/id/"+iotpGWDevId+"/cmd/cmd-1/fmt/json -m '{}'");
-        System.out.println("GW mosquitto_sub -d -u <api-auth-key> -P <api-auth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId2 -t iot-2/type/+/id/+/evt/+/fmt/+");
-
-        String iotpCnDev1Type = cfgProps.getProperty("cn-dev1-type");
-        String iotpCnDev1Id = cfgProps.getProperty("cn-dev1-id");
-        System.out.println("cn-dev1 clientId:  " + "d:"+iotpOrg+":"+iotpCnDev1Type+":"+iotpCnDev1Id);
-        System.out.println("cn-dev1 evt topic: " + "iot-2/type/"+iotpCnDev1Type+"/id/"+iotpCnDev1Id+"/evt/+/fmt/json");
-        System.out.println("cn-dev1 cmd topic: " + "iot-2/type/"+iotpCnDev1Type+"/id/"+iotpCnDev1Id+"/cmd/+/fmt/json");
-        System.out.println("cn-dev1 mosquitto_pub -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpCnDev1Type+"/id/"+iotpCnDev1Id+"/cmd/cmd-1/fmt/json -m '{}'");
+        // System.out.println("GW mosquitto_pub -u <api-auth-key> -P <api-auth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpGWDevType+"/id/"+iotpGWDevId+"/cmd/cmd-1/fmt/json -m '{}'");
+        // System.out.println("GW mosquitto_sub -d -u <api-auth-key> -P <api-auth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId2 -t iot-2/type/+/id/+/evt/+/fmt/+");
+        // System.out.println("cn-dev1 mosquitto_pub -u <api-auth-key> -P <api-quth-token> -h "+iotpOrg+".messaging.internetofthings.ibmcloud.com -p 1883 -i a:"+iotpOrg+":appId1 -t iot-2/type/"+iotpCnDev1Type+"/id/"+iotpCnDev1Id+"/cmd/cmd-1/fmt/json -m '{}'");
 
         IotpGateway gwDevice;
         if (useInternalGatewayClient) {
@@ -121,16 +116,17 @@
         }
         else
           throw new IllegalStateException("woops");
-        
-        
-        System.out.println("GW fqDeviceId: " + gwDevice.getDeviceId());
 
         Map<String,String> devAttrMap = new HashMap<>();
         devAttrMap.put(IotpGateway.ATTR_DEVICE_TYPE, iotpCnDev1Type);
         devAttrMap.put(IotpGateway.ATTR_DEVICE_ID, iotpCnDev1Id);
+        
         String cnDev1FqDeviceId = gwDevice.getIotDeviceId(devAttrMap);
         IotDevice cnDev1Device = gwDevice.getIotDevice(cnDev1FqDeviceId);
+        
+        System.out.println("GW fqDeviceId: " + gwDevice.getDeviceId());
         System.out.println("cn-dev1 fqDeviceId:  " + cnDev1FqDeviceId);
+        System.out.println("IotDevice cn-dev1 fqDeviceId:  " + cnDev1Device.getDeviceId());
              
         Random r = new Random();
         TStream<double[]> raw = topology.poll(() -> {
@@ -167,20 +163,21 @@
         else {
           System.out.println("Publishing events using HTTP");
           throw new IllegalStateException("GW httpEvents is NYI");
-          // device.httpEvents(json, "sensors");
+          // gwDevice.httpEvents(json, "sensors");
+          // gwDevice.httpEventsForDevice(cnDev1FqDeviceId, cnDev1Json, "gw-events-for-cnDev1");
         }
 
-        // should report cmds for ALL devices - gw+dev
+        // subscribe to / report cmds for the GW and all its connected devices
         gwDevice.commandsForDevice(Collections.emptySet()).sink(jo -> System.out.println("Received all-cmds cmd: " + jo));
         
-        // just GW device cmds
+        // subscribe to / report just GW device cmds
         gwDevice.commands().sink(jo -> System.out.println("Received gwDevice cmd: " + jo));
         
-        // just cnDev1 device cmds
+        // subscribe to / report just cnDev1 device cmds
         gwDevice.commandsForDevice(cnDev1FqDeviceId).sink(jo -> System.out.println("Received gwDevice-for-cnDev1 cmd: " + jo));
         cnDev1Device.commands().sink(jo -> System.out.println("Received cnDev1 cmd: " + jo));
         
-        // just cmds for a specific device type
+        // subscribe to / report just cmds for a specific device type
         gwDevice.commandsForType(iotpGWDevType).sink(jo -> System.out.println("Received for-type-gwDeviceType cmd: " + jo));
         gwDevice.commandsForType(iotpCnDev1Type).sink(jo -> System.out.println("Received for-type-cnDev1DeviceType cmd: " + jo));
 
diff --git a/scripts/connectors/iotp/README b/scripts/connectors/iotp/README
new file mode 100644
index 0000000..0eaee83
--- /dev/null
+++ b/scripts/connectors/iotp/README
@@ -0,0 +1,36 @@
+
+# ##########
+# The "Quickstart" samples connect to the IBM Watson IoT Platform
+# using the Quickstart feature that does not require device registration.
+# When the samples are run they print out a URL which allows a browser
+# to see the data being sent from this sample.
+#
+# IotpQuickstart2 demonstrates using the WIoTP API to initialize the IotpDevice
+# connector as well as the ability to publish events using the WIoTP HTTP protocol.
+
+IotpQuickstart  - ./runquickstart.sh
+IotpQuickstart2 - ./runquickstart2.sh [useHttp]
+
+# ##########
+# IotpSensors connects to your IBM Watson IoT Platform service
+# as the device defined in your device config file.
+#
+# A sample config file for your WIoTP registered device information 
+# is provided in device.cfg.
+
+IotpSensors     - ./runiotsensors.sh device-cfg-path
+
+# ##########
+# IotpDeviceSample and IotpGatewaySample
+# connect to your IBM Watson IoT Platform service.
+# They publish device events and print out received device commands.
+# Use IotpAppClient to print out the generated device events and
+# to generate the device commands.
+#
+# Sample config files for your WIoTP registered device, gateway,
+# and application client information are provided in
+# iotp-device-sample.cfg, iotp-gwdevice-sample.cfg and iotp-app-client.cfg
+
+IotpDeviceSample  - ./run-iotp-device-sample.sh [useDeviceClient|useManagedDevice] [useHttp] <device-cfg-path>
+IotpGatewaySample - ./run-iotp-gwdevice-sample.sh [useGatewayClient|useManagedGateway] [useHttp] <device-cfg-path>
+IotpAppClient     - ./run-iotp-client-app.sh [useGW] <app-cfg-path>
\ No newline at end of file