--- a/libupnpp/device/device.hxx
+++ b/libupnpp/device/device.hxx
@@ -35,13 +35,30 @@
 
 typedef std::function<int (const UPnPP::SoapArgs&, UPnPP::SoapData&)> soapfun;
 
+// Definition of a virtual directory entry: data and mime type
+struct VDirContent {
+    VDirContent(const std::string& ct, const std::string& mt)
+        : content(ct), mimetype(mt) {}
+    std::string content;
+    std::string mimetype;
+};
+
 /** Define a virtual interface to link libupnp operations to a device 
  * implementation 
  */
 class UpnpDevice {
 public:
+    /** Construct device object
+     * @param deviceId uuid for device: "uuid:UUIDvalue"
+     * @param files list of name/content pairs to be added to the
+     *   virtual directory root. The file names must match the SCDPURL
+     *   values for the services in the description.xml document. Note that 
+     *   this will have to be changed if we ever want to really
+     *   support multiple devices (will need to use subdirectories or
+     *   find another way to avoid name conflicts).
+     */
     UpnpDevice(const std::string& deviceId, 
-               const std::unordered_map<std::string, std::string>& xmlfiles);
+               const std::unordered_map<std::string, VDirContent>& files);
     ~UpnpDevice();
 
     void addService(UpnpService *, const std::string& serviceId);