diff --git a/pydtn/node.py b/pydtn/node.py
index 39148971de52bc58a24193b27d7cfd7d89592441..1d8b3be812c73859f854635779aaec2d8fd3a8d0 100644
--- a/pydtn/node.py
+++ b/pydtn/node.py
@@ -143,15 +143,13 @@ class Node(TickProcess):
         return self.network[self][other]['state']
 
     @property
-    def links(self):
+    def neighbours(self):
         '''
-        Returns a list of connected links.
+        Returns the set of nodes that are within transmission range.
         '''
-        return {
-            met: data
-            for met, data in self.network[self].items()
-            if self.connected_to(met)
-        }
+        return frozenset([
+            met for met in self.network[self] if self.connected_to(met)
+        ])
 
     def __repr__(self):
         return 'Node(id={})'.format(self.id)
diff --git a/pydtn/routers/bubble.py b/pydtn/routers/bubble.py
index 66d573cfa709c9f0a5080f45ac9797cf015d3ecb..2d6422e56d6caa65e72d4ce44e6f94a03f363022 100644
--- a/pydtn/routers/bubble.py
+++ b/pydtn/routers/bubble.py
@@ -2,7 +2,7 @@ from .community import CommunityRouter
 
 class BubbleRouter(CommunityRouter):
     def __call__(self, packet):
-        if packet.destination in self.node.links:
+        if packet.destination in self.node.neighbours:
             return packet.destination, 'direct', True
 
         if self.local_community:
diff --git a/pydtn/routers/community.py b/pydtn/routers/community.py
index 2431ac4f2908adfdb0e78c3c8a558689dd2d0b4e..3ec5d9feb949de8bce6f753fc81110b3f238dfae 100644
--- a/pydtn/routers/community.py
+++ b/pydtn/routers/community.py
@@ -8,15 +8,15 @@ class CommunityRouter(Router):
 
     @property
     def local_community(self):
-        links = self.node.links
+        neighbours = self.node.neighbours
         community = self.node.community
-        return [met for met in links if met in community]
+        return [met for met in neighbours if met in community]
 
     @property
     def not_local_community(self):
-        links = self.node.links
+        neighbours = self.node.neighbours
         community = self.node.community
-        return [met for met in links if met not in community]
+        return [met for met in neighbours if met not in community]
 
     @staticmethod
     def best(nodes, key):
diff --git a/pydtn/routers/direct.py b/pydtn/routers/direct.py
index 6d7e9ef771cd9f63c19e809703261c598a7c6e1e..6b4ed89bc7a081ec2a114d4db46a022409eb5107 100644
--- a/pydtn/routers/direct.py
+++ b/pydtn/routers/direct.py
@@ -2,7 +2,7 @@ from .base import Router
 
 class DirectRouter(Router):
     def __call__(self, packet):
-        if packet.destination in self.node.links:
+        if packet.destination in self.node.neighbours:
             return packet.destination, 'direct', True
         return None, None, False
 
diff --git a/pydtn/routers/epidemic.py b/pydtn/routers/epidemic.py
index bf913a7960acb97079ae0533e386a54a22e41896..89855c0c7a9377c57d2075b4d52c27907c6af9e0 100644
--- a/pydtn/routers/epidemic.py
+++ b/pydtn/routers/epidemic.py
@@ -13,7 +13,7 @@ class EpidemicRouter(Router):
         # get list of currently encountered nodes that do not have the packet
         targets = [
             met
-            for met in self.node.links
+            for met in self.node.neighbours
             if met not in self.sent[packet]
         ]
 
diff --git a/pydtn/routers/flooding.py b/pydtn/routers/flooding.py
index 5ddf6ce56a80d27b0622fe9a75425a6a7ecb46c1..7191247ce637407be609963d8ca4abc7addedfea 100644
--- a/pydtn/routers/flooding.py
+++ b/pydtn/routers/flooding.py
@@ -2,5 +2,5 @@ from .base import Router
 
 class FloodingRouter(Router):
     def __call__(self, packet):
-        return self.node.links, 'flood', False
+        return self.node.neighbours, 'flood', False
 
diff --git a/pydtn/routers/hcbf.py b/pydtn/routers/hcbf.py
index 23971e2dbfe5e4b5e7aa5838c7e626b2af8804bd..2d08cad939abf6b332b3b1b6d438b0679f68862c 100644
--- a/pydtn/routers/hcbf.py
+++ b/pydtn/routers/hcbf.py
@@ -5,7 +5,7 @@ class HCBFRouter(CommunityRouter):
         me = self.node
         dest = packet.destination
 
-        if dest in me.links:
+        if dest in me.neighbours:
             return dest, 'direct', True
 
         if me.community is not dest.community and self.not_local_community: