diff --git a/eraser-base/src/main/jastadd/Navigation.jrag b/eraser-base/src/main/jastadd/Navigation.jrag
index bb57ce614c40c68bf1afc4bc53680d3c9a3a8884..e75f39c8fa19496dc362f2f38625024691e01e76 100644
--- a/eraser-base/src/main/jastadd/Navigation.jrag
+++ b/eraser-base/src/main/jastadd/Navigation.jrag
@@ -116,10 +116,6 @@ aspect Navigation {
     return java.util.Optional.empty();
   }
 
-  //--- containingChannel ---
-  inh Channel Link.containingChannel();
-  eq Channel.getLink().containingChannel() = this;
-
   //--- containingThing ---
   inh Thing Channel.containingThing();
   eq Thing.getChannel().containingThing() = this;
diff --git a/eraser-base/src/main/jastadd/Printing.jrag b/eraser-base/src/main/jastadd/Printing.jrag
index 3c463ac7c2a1964aa835cdb0404e87b2f61c1a9d..3bfa5280da744f15b42f0371ac3323aaac1b9623 100644
--- a/eraser-base/src/main/jastadd/Printing.jrag
+++ b/eraser-base/src/main/jastadd/Printing.jrag
@@ -160,7 +160,7 @@ aspect Printing {
     return new MemberPrinter("Channel")
         .addRequired("id", getID())
         .addRequired("type", getType(), ChannelType::getID)
-        .addIds("links", getNumLink(), getLinkList(), Link::getItem)
+        .addIds("links", getLinkedItems())
         .build();
   }
 
diff --git a/eraser-base/src/main/jastadd/openhab.relast b/eraser-base/src/main/jastadd/openhab.relast
index e26d7b00b6cac0a01627cab3eb2f4ecbde9767ff..6f5b378edb8a57a61d07208e682440f8dcd5847c 100644
--- a/eraser-base/src/main/jastadd/openhab.relast
+++ b/eraser-base/src/main/jastadd/openhab.relast
@@ -16,10 +16,9 @@ abstract ChannelCategory ;
 DefaultChannelCategory : ChannelCategory ::= <Value:DefaultChannelCategoryValue> ;
 SimpleChannelCategory : ChannelCategory ::= <Value:String> ;
 
-Channel : ModelElement ::= Link* ;
+Channel : ModelElement ::= ;
 rel Channel.Type -> ChannelType ;
-
-Link ::= <Item:Item> ;
+rel Channel.LinkedItem* <-> Item.Channel? ;
 
 Parameter : DescribableModelElement ::= <Type:ParameterValueType> [DefaultValue:ParameterDefaultValue] <Context:String> <Required:boolean> ;
 ParameterDefaultValue ::= <Value:String> ;
diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java
index 627167f83a7773e2923dc31508904405042bc25b..19f0dff885570597ecf0f05cf155d58f44d0d67c 100644
--- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java
+++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/openhab2/OpenHab2Importer.java
@@ -311,10 +311,8 @@ public class OpenHab2Importer {
 
   private void update(Root model, LinkData[] linkList) {
     for (LinkData linkData : linkList) {
-      Link link = new Link();
       ifPresent(model.resolveChannel(linkData.channelUID), "Channel", linkData,
-          channel -> channel.addLink(link));
-      ifPresent(model.resolveItem(linkData.itemName), "Item", linkData, link::setItem);
+          channel -> ifPresent(model.resolveItem(linkData.itemName), "Item", linkData, channel::addLinkedItem));
     }
   }
 
diff --git a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java
index 2aa34c770542a34292550b1e046ba34d3c3cd7c0..ea392f2a9cd747b9f06a355e9648bc7d2a5b642d 100644
--- a/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java
+++ b/eraser-base/src/main/java/de/tudresden/inf/st/eraser/parser/EraserParserHelper.java
@@ -73,7 +73,7 @@ public class EraserParserHelper {
     this.root.getMqttRoot().ensureCorrectPrefixes();
 
     resolveList(channelMap, missingChannelListMap, Thing::addChannel);
-    resolveList(itemMap, missingItemLinkListMap, (channel, item) -> channel.addLink(new Link(item)));
+    resolveList(itemMap, missingItemLinkListMap, Channel::addLinkedItem);
     resolveList(groupMap, missingSubGroupListMap, Group::addGroup);
     resolveList(itemMap, missingItemListMap, this::addItemToGroup);
     resolveList(channelTypeMap, missingChannelTypeListMap, ThingType::addChannelType);
diff --git a/eraser-base/src/test/resources/openhabtest/oh2/links.json b/eraser-base/src/test/resources/openhabtest/oh2/links.json
index 79e79442806b87513d8581eb877453873069ddbe..f881db063fd53906ab14e3fda79dbf4a5fac0d4b 100644
--- a/eraser-base/src/test/resources/openhabtest/oh2/links.json
+++ b/eraser-base/src/test/resources/openhabtest/oh2/links.json
@@ -142,7 +142,7 @@
   {
     "channelUID": "openlicht:polar-m600:342dfc32:rotation-y",
     "configuration": {},
-    "itemName": "watch_acceleration_y"
+    "itemName": "watch_rotation_y"
   },
   {
     "channelUID": "openlicht:polar-m600:342dfc32:rotation-z",
diff --git a/eraser-base/src/test/resources/openhabtest/oh2/output.eraser b/eraser-base/src/test/resources/openhabtest/oh2/output.eraser
index c5e139935809383792596f6183ffe31514c8dbd0..45f5a63949ad5615ae7ae2bc11b8a7db3e384b1c 100644
--- a/eraser-base/src/test/resources/openhabtest/oh2/output.eraser
+++ b/eraser-base/src/test/resources/openhabtest/oh2/output.eraser
@@ -77,7 +77,7 @@ Channel: id="openlicht:polar-m600:342dfc32:activity" type="openlicht:activity-ty
 Channel: id="openlicht:polar-m600:342dfc32:brightness" type="openlicht:brightness-type" links=["polar_brightness"] ;
 Channel: id="openlicht:polar-m600:342dfc32:heart-rate" type="openlicht:heart-rate-type" ;
 Channel: id="openlicht:polar-m600:342dfc32:rotation-x" type="openlicht:rotation-type" links=["watch_rotation_x"] ;
-Channel: id="openlicht:polar-m600:342dfc32:rotation-y" type="openlicht:rotation-type" links=["watch_acceleration_y"] ;
+Channel: id="openlicht:polar-m600:342dfc32:rotation-y" type="openlicht:rotation-type" links=["watch_rotation_y"] ;
 Channel: id="openlicht:polar-m600:342dfc32:rotation-z" type="openlicht:rotation-type" links=["watch_rotation_z"] ;
 Channel: id="openlicht:polar-m600:342dfc32:steps" type="openlicht:steps-type" ;
 Channel: id="openlicht:samsung-s6:2ca84896:brightness" type="openlicht:brightness-type" links=["samsung_brightness"] ;