diff --git a/plugins/topology/annotated-topology-reader.cc b/plugins/topology/annotated-topology-reader.cc
index f3cfc53..50a5ae4 100644
--- a/plugins/topology/annotated-topology-reader.cc
+++ b/plugins/topology/annotated-topology-reader.cc
@@ -87,16 +87,16 @@
 }
 
 Ptr<Node>
-AnnotatedTopologyReader::CreateNode (const std::string name)
+AnnotatedTopologyReader::CreateNode (const std::string name, uint32_t systemId)
 {
-  return CreateNode (name, m_randX.GetValue (), m_randY.GetValue ());
+  return CreateNode (name, m_randX.GetValue (), m_randY.GetValue (), systemId);
 }
 
 Ptr<Node>
-AnnotatedTopologyReader::CreateNode (const std::string name, double posX, double posY)
+AnnotatedTopologyReader::CreateNode (const std::string name, double posX, double posY, uint32_t systemId)
 {
   NS_LOG_FUNCTION (this << name << posX << posY);
-  Ptr<Node> node = CreateObject<Node> ();
+  Ptr<Node> node = CreateObject<Node> (systemId);
   Ptr<MobilityModel> loc = DynamicCast<MobilityModel> (m_mobilityFactory.Create ());
   node->AggregateObject (loc);
 
@@ -150,11 +150,12 @@
       istringstream lineBuffer (line);
       string name, city;
       double latitude, longitude;
+      uint32_t systemId = 0;
 
-      lineBuffer >> name >> city >> latitude >> longitude;
+      lineBuffer >> name >> city >> latitude >> longitude >> systemId;
       if (name.empty ()) continue;
 
-      Ptr<Node> node = CreateNode (name, m_scale*longitude, -m_scale*latitude);
+      Ptr<Node> node = CreateNode (name, m_scale*longitude, -m_scale*latitude, systemId);
     }
 
   map<string, set<string> > processedLinks; // to eliminate duplications
diff --git a/plugins/topology/annotated-topology-reader.h b/plugins/topology/annotated-topology-reader.h
index 95ce123..48c164b 100644
--- a/plugins/topology/annotated-topology-reader.h
+++ b/plugins/topology/annotated-topology-reader.h
@@ -110,10 +110,10 @@
 
 protected:
   Ptr<Node>
-  CreateNode (const std::string name);
+  CreateNode (const std::string name, uint32_t systemId);
 
   Ptr<Node>
-  CreateNode (const std::string name, double posX, double posY);
+  CreateNode (const std::string name, double posX, double posY, uint32_t systemId);
   
 protected:
   /**
diff --git a/plugins/topology/rocketfuel-weights-reader.cc b/plugins/topology/rocketfuel-weights-reader.cc
index 4b4fb32..e5fb035 100644
--- a/plugins/topology/rocketfuel-weights-reader.cc
+++ b/plugins/topology/rocketfuel-weights-reader.cc
@@ -122,13 +122,13 @@
       Ptr<Node> fromNode = Names::Find<Node> (m_path, from);
       if (fromNode == 0)
         {
-          fromNode = CreateNode (from);
+          fromNode = CreateNode (from, 0);
         }
 
       Ptr<Node> toNode   = Names::Find<Node> (m_path, to);
       if (toNode == 0)
         {
-          toNode = CreateNode (to);
+          toNode = CreateNode (to, 0);
         }
 
       Link *link;
