--- a/libupnpp/device.hxx
+++ b/libupnpp/device.hxx
@@ -78,7 +78,11 @@
             
     LibUPnP *m_lib;
     std::string m_deviceId;
-    std::unordered_map<std::string, UpnpService*> m_services;
+    // We keep the services in a map for easy access from id and in a
+    // vector for ordered walking while fetching status. Order is
+    // determine by addService() call sequence.
+    std::unordered_map<std::string, UpnpService*> m_servicemap;
+    std::vector<std::string> m_serviceids;
     std::unordered_map<std::string, soapfun> m_calls;
 
     static unordered_map<std::string, UpnpDevice *> o_devices;