diff --git a/bindings/modulegen__gcc_ILP32.py b/bindings/modulegen__gcc_ILP32.py
index f8538fa..aaafcea 100644
--- a/bindings/modulegen__gcc_ILP32.py
+++ b/bindings/modulegen__gcc_ILP32.py
@@ -3419,8 +3419,8 @@
     cls.add_method('ApplyOspfMetric', 
                    'void', 
                    [])
-    ## annotated-topology-reader.h (module 'ndnSIM'): void ns3::AnnotatedTopologyReader::SavePositions(std::string const & file) const [member function]
-    cls.add_method('SavePositions', 
+    ## annotated-topology-reader.h (module 'ndnSIM'): void ns3::AnnotatedTopologyReader::SaveTopology(std::string const & file) const [member function]
+    cls.add_method('SaveTopology', 
                    'void', 
                    [param('std::string const &', 'file')], 
                    is_const=True)
diff --git a/bindings/modulegen__gcc_LP64.py b/bindings/modulegen__gcc_LP64.py
index f8538fa..aaafcea 100644
--- a/bindings/modulegen__gcc_LP64.py
+++ b/bindings/modulegen__gcc_LP64.py
@@ -3419,8 +3419,8 @@
     cls.add_method('ApplyOspfMetric', 
                    'void', 
                    [])
-    ## annotated-topology-reader.h (module 'ndnSIM'): void ns3::AnnotatedTopologyReader::SavePositions(std::string const & file) const [member function]
-    cls.add_method('SavePositions', 
+    ## annotated-topology-reader.h (module 'ndnSIM'): void ns3::AnnotatedTopologyReader::SaveTopology(std::string const & file) const [member function]
+    cls.add_method('SaveTopology', 
                    'void', 
                    [param('std::string const &', 'file')], 
                    is_const=True)
diff --git a/plugins/topology/annotated-topology-reader.cc b/plugins/topology/annotated-topology-reader.cc
index ecb4512..08d3d73 100644
--- a/plugins/topology/annotated-topology-reader.cc
+++ b/plugins/topology/annotated-topology-reader.cc
@@ -39,6 +39,7 @@
 #include "ns3/ipv4-address.h"
 #include "ns3/ndn-l3-protocol.h"
 #include "ns3/ndn-face.h"
+#include "ns3/random-variable.h"
 
 #include "ns3/constant-position-mobility-model.h"
 
@@ -180,7 +181,11 @@
       if (abs(latitude) > 0.001 && abs(latitude) > 0.001)
         node = CreateNode (name, m_scale*longitude, -m_scale*latitude, systemId);
       else
-        node = CreateNode (name, systemId);
+        {
+          UniformVariable var (0,200);
+          node = CreateNode (name, var.GetValue (), var.GetValue (), systemId);
+          // node = CreateNode (name, systemId);
+        }
     }
 
   map<string, set<string> > processedLinks; // to eliminate duplications
@@ -359,10 +364,18 @@
 }
 
 void
-AnnotatedTopologyReader::SavePositions (const std::string &file) const
+AnnotatedTopologyReader::SaveTopology (const std::string &file) const
 {
   ofstream os (file.c_str (), ios::trunc);
-  os << "router\n";
+  os << "# any empty lines and lines starting with '#' symbol is ignored\n"
+     << "\n"
+     << "# The file should contain exactly two sections: router and link, each starting with the corresponding keyword\n"
+     << "\n" 
+     << "# router section defines topology nodes and their relative positions (e.g., to use in visualizer)\n"
+     << "router\n"
+     << "\n"
+     << "# each line in this section represents one router and should have the following data\n"
+     << "# node  comment     yPos    xPos\n";
   
   for (NodeContainer::Iterator node = m_nodes.Begin ();
        node != m_nodes.End ();
@@ -374,6 +387,47 @@
 
       os << name << "\t" << "NA" << "\t" << -position.y << "\t" << position.x << "\n";
     }
+
+  os << "# link section defines point-to-point links between nodes and characteristics of these links\n"
+     << "\n"
+     << "link\n"
+     << "\n"
+     << "# Each line should be in the following format (only first two are required, the rest can be omitted)\n"
+     << "# srcNode   dstNode     bandwidth   metric  delay   queue\n"
+     << "# bandwidth: link bandwidth\n"
+     << "# metric: routing metric\n"
+     << "# delay:  link delay\n"
+     << "# queue:  MaxPackets for transmission queue on the link (both directions)\n";
+
+  for (std::list<Link>::const_iterator link = m_linksList.begin ();
+       link != m_linksList.end ();
+       link ++)
+    {
+      os << Names::FindName (link->GetFromNode ()) << "\t";
+      os << Names::FindName (link->GetToNode ()) << "\t";
+
+      string tmp;
+      if (link->GetAttributeFailSafe ("DataRate", tmp))
+        os << link->GetAttribute("DataRate") << "\t";
+      else
+        NS_FATAL_ERROR ("DataRate must be specified for the link");
+
+      if (link->GetAttributeFailSafe ("OSPF", tmp))
+        os << link->GetAttribute("OSPF") << "\t";
+      else
+        os << "1\t";
+
+      if (link->GetAttributeFailSafe ("Delay", tmp))
+        {
+          os << link->GetAttribute("Delay") << "\t";
+
+          if (link->GetAttributeFailSafe ("MaxPackets", tmp))
+            {
+              os << link->GetAttribute("MaxPackets") << "\t";
+            }
+        }
+      os << "\n";
+    }  
 }
 
 }
diff --git a/plugins/topology/annotated-topology-reader.h b/plugins/topology/annotated-topology-reader.h
index 8ac9286..a840919 100644
--- a/plugins/topology/annotated-topology-reader.h
+++ b/plugins/topology/annotated-topology-reader.h
@@ -106,7 +106,7 @@
    * \brief Save positions (e.g., after manual modification using visualizer)
    */
   void
-  SavePositions (const std::string &file) const;
+  SaveTopology (const std::string &file) const;
 
 protected:
   Ptr<Node>
