--- a/libupnpp/device/device.hxx
+++ b/libupnpp/device/device.hxx
@@ -56,15 +56,20 @@
      *   eventloop() call when everything is set up).
      *
      * @param deviceId uuid for device: "uuid:UUIDvalue"
-     * @param files list of path/content pairs to be added to the
-     *   virtual directory root. The file paths must match the SCDPURL
-     *   values for the services in the description.xml document.
-     *   The file paths should include a sub-directory component.
-     *   The list must include the description document, but this will not
-     *   be directly served out. Instead a version modified by libupnp
-     *  (with URLBase added) will be served from '/'. Of course, the
-     *  paths in description.xml must be consistent with the list.
-     *
+     * @param files for a root device, list of path/content pairs to
+     *  be added to the virtual directory.
+     *  The file paths should include a sub-directory component.
+     *  The list must include the description document, but this will not
+     *  be directly served out. Instead a version modified by libupnp
+     *  (with URLBase possibly added/edited) will be served from '/'. 
+     *  Of course, the list and the paths in description.xml must be
+     *  consistent, e.g. the paths for the services SCDPURL documents.
+     *
+     *  The files parameter must be empty for embedded devices: all served 
+     *  files must be set with the root device, *including* embedded service
+     *  description files. files.empty() is also how we decide if we
+     *  are building a root or an embedded device. root should be built
+     *  first.
      */
     UpnpDevice(const std::string& deviceId,
                const std::unordered_map<std::string, VDirContent>& files);
@@ -82,7 +87,8 @@
                           const std::string& actName, soapfun);
 
     /**
-     * Main routine. To be called by main() when done with initialization.
+     * Main routine. To be called by main() on the root device when done 
+     * with initialization.
      *
      * This loop mostly polls getEventData and generates an UPnP event if
      * there is anything to broadcast. The UPnP action calls happen in