diff --git a/dmnverifierapi/pom.xml b/dmnverifierapi/pom.xml
index 97c22ebe29513cab5cfe7bf1984edb624b342df1..3f546c4010b2fc0f59397774c72b3c4498ed8b0a 100644
--- a/dmnverifierapi/pom.xml
+++ b/dmnverifierapi/pom.xml
@@ -57,7 +57,6 @@
       <artifactId>rest-assured</artifactId>
       <scope>test</scope>
     </dependency>
-
     <!-- wordnet -->
     <dependency>
       <groupId>edu.mit</groupId>
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java
new file mode 100644
index 0000000000000000000000000000000000000000..61de90e701ee200c0f8693f84788f46576f93cd5
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java
@@ -0,0 +1,47 @@
+package de.unikoblenz.fgbks.base.utils.boundary.checker;
+
+import static de.unikoblenz.fgbks.base.utils.boundary.BoundType.INCLUSIVE;
+
+import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary;
+
+public class CheckInContact extends AbstractBoundaryCheck<AbstractGrowingBoundary> {
+
+  private static final CheckInContact instance = new CheckInContact();
+
+  private CheckInContact() {
+    super();
+  }
+
+  public static CheckInContact getInstance() {
+    return instance;
+  }
+
+  @Override
+  public BoundaryCheckType getType() {
+    return BoundaryCheckType.IS_IN_CONTACT;
+  }
+
+  @Override
+  public boolean check(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) {
+    return checkBounds(b1, b2);
+  }
+
+  public static boolean checkBounds(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) {
+    // TODO: check raw types
+    if (b1.getLowerBound().compareTo(b2.getLowerBound()) <= 0) {
+      return checkOrdered(b1, b2);
+    } else {
+      return checkOrdered(b2, b1);
+    }
+  }
+
+  private static boolean checkOrdered(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) {
+    if (b1.getUpperBound().compareTo(b2.getLowerBound()) > 0) {
+      return true;
+    }
+    if (b1.getUpperBound().compareTo(b2.getLowerBound()) == 0) {
+      return b1.getUpperBoundType() == INCLUSIVE && b2.getLowerBoundType() == INCLUSIVE;
+    }
+    return false;
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java
new file mode 100644
index 0000000000000000000000000000000000000000..a29476f1ad5bed118a487765dc81fb8f49784f2f
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java
@@ -0,0 +1,26 @@
+package de.unikoblenz.fgbks.base.utils.boundary.checker;
+
+import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary;
+
+public class CheckNotInContact extends AbstractBoundaryCheck<AbstractGrowingBoundary> {
+
+  private static final CheckNotInContact instance = new CheckNotInContact();
+
+  private CheckNotInContact() {
+    super();
+  }
+
+  public static CheckNotInContact getInstance() {
+    return instance;
+  }
+
+  @Override
+  public BoundaryCheckType getType() {
+    return BoundaryCheckType.IS_NOT_IN_CONTACT;
+  }
+
+  @Override
+  public boolean check(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) {
+    return !CheckInContact.checkBounds(b1, b2);
+  }
+}
diff --git a/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/AbstractCheckerTest.java b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/AbstractCheckerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb1ece2f70632896283d2991bef2d91e101aa0dc
--- /dev/null
+++ b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/AbstractCheckerTest.java
@@ -0,0 +1,36 @@
+package de.unikoblenz.fgbks.base.utils.boundary.checker;
+
+import static de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef.DOUBLE;
+import static de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef.INTEGER;
+import static de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef.LONG;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import de.unikoblenz.fgbks.base.utils.boundary.Boundary;
+import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef;
+
+public class AbstractCheckerTest {
+
+  protected BoundaryCheck checker;
+
+  protected void doNumCheck(String b1, String b2, boolean expected) {
+    doCheck(INTEGER, b1, b2, expected);
+    doCheck(INTEGER, b2, b1, expected);
+    doCheck(LONG, b1, b2, expected);
+    doCheck(LONG, b2, b1, expected);
+    doCheck(DOUBLE, b1, b2, expected);
+    doCheck(DOUBLE, b2, b1, expected);
+  }
+
+  private void doCheck(VTypeRef type, String b1, String b2, boolean expected) {
+    doCheck(type.getBoundaryFromText(b1).get(), type.getBoundaryFromText(b2).get(), expected);
+  }
+
+  private void doCheck(Boundary b1, Boundary b2, boolean expected) {
+    if (expected) {
+      assertTrue(checker.check(b1, b2), b1.getText() + " / " + b2.getText());
+    } else {
+      assertFalse(checker.check(b1, b2), b1.getText() + " / " + b2.getText());
+    }
+  }
+}
diff --git a/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContactTest.java b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContactTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e3b660641f88f7785ca8955dda4a2037a9390f94
--- /dev/null
+++ b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContactTest.java
@@ -0,0 +1,32 @@
+package de.unikoblenz.fgbks.base.utils.boundary.checker;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CheckInContactTest extends AbstractCheckerTest {
+
+  @Test
+  void check() {
+    super.checker = CheckInContact.getInstance();
+    doNumCheck("<1", "<5", true);
+    doNumCheck(">1", "<5", true);
+    doNumCheck("<1", ">5", false);
+    doNumCheck("[1..2]", ">5", false);
+    doNumCheck("[1..2]", ">2", false);
+    doNumCheck("[1..2]", "<2", true);
+    doNumCheck("[1..2]", "<1", false);
+    doNumCheck("[1..2]", "<=1", true);
+    doNumCheck("]1..2]", "<=1", false);
+    doNumCheck("]1..2]", "<1", false);
+    doNumCheck("[1..2]", "<1", false);
+    doNumCheck("[1..2]", "[1..2]", true);
+    doNumCheck("=1", "=1", true);
+    doNumCheck("[1..3]", "=1", true);
+    doNumCheck("[1..3]", "=2", true);
+    doNumCheck("[1..3]", "=3", true);
+    doNumCheck("[1..3]", "=0", false);
+    doNumCheck("[1..3]", "=4", false);
+    doNumCheck("[1..3]", "<=4", true);
+  }
+}
diff --git a/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContactTest.java b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContactTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a54a6bffced11046710ae2b7fb7186345a2a638
--- /dev/null
+++ b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContactTest.java
@@ -0,0 +1,32 @@
+package de.unikoblenz.fgbks.base.utils.boundary.checker;
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class CheckNotInContactTest extends AbstractCheckerTest {
+
+  @Test
+  void check() {
+    super.checker = CheckNotInContact.getInstance();
+    doNumCheck("<1", "<5", false);
+    doNumCheck(">1", "<5", false);
+    doNumCheck("<1", ">5", true);
+    doNumCheck("[1..2]", ">5", true);
+    doNumCheck("[1..2]", ">2", true);
+    doNumCheck("[1..2]", "<2", false);
+    doNumCheck("[1..2]", "<1", true);
+    doNumCheck("[1..2]", "<=1", false);
+    doNumCheck("]1..2]", "<=1", true);
+    doNumCheck("]1..2]", "<1", true);
+    doNumCheck("[1..2]", "<1", true);
+    doNumCheck("[1..2]", "[1..2]", false);
+    doNumCheck("=1", "=1", false);
+    doNumCheck("[1..3]", "=1", false);
+    doNumCheck("[1..3]", "=2", false);
+    doNumCheck("[1..3]", "=3", false);
+    doNumCheck("[1..3]", "=0", true);
+    doNumCheck("[1..3]", "=4", true);
+    doNumCheck("[1..3]", "<=4", false);
+  }
+}