diff --git a/dmnverifierapi/pom.xml b/dmnverifierapi/pom.xml
index 769aebc41deb5641e8deac9e30269048bc88d919..a484ccd6d77d4289dd18a10c5acdf6945544de6a 100644
--- a/dmnverifierapi/pom.xml
+++ b/dmnverifierapi/pom.xml
@@ -43,6 +43,12 @@
       <artifactId>commons-lang3</artifactId>
       <version>3.7</version>
     </dependency>
+
+    <dependency>
+      <groupId>org.reflections</groupId>
+      <artifactId>reflections</artifactId>
+      <version>0.9.11</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java
index 1a16a2bb69d418313a1648ea608fa74afc5d4ad7..543c2012ed73e64617777cda8663adcf4e059c1e 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/GreetingResource.java
@@ -1,6 +1,6 @@
 package de.unikoblenz.fgbks.api.test;
 
-import de.unikoblenz.fgbks.core.test.Name;
+import de.unikoblenz.fgbks.core.dmn.domain.Name;
 import de.unikoblenz.fgbks.core.test.Person;
 import de.unikoblenz.fgbks.core.test.Synonyms;
 import javax.inject.Inject;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java
index da063f0eda0b5b3a2b184e9a63e6b5be949ab3b1..046edef6008145717e686dd23f7d99d4031ab66e 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/api/test/TestApi.java
@@ -1,6 +1,6 @@
 package de.unikoblenz.fgbks.api.test;
 
-import de.unikoblenz.fgbks.core.dmn.verfication.VerificationGenerator;
+import de.unikoblenz.fgbks.core.dmn.verification.VerificationGenerator;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java
new file mode 100644
index 0000000000000000000000000000000000000000..db6a82fede848f80c84303e7cb9e472183dcffdf
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Description.java
@@ -0,0 +1,19 @@
+package de.unikoblenz.fgbks.core.dmn.domain;
+
+import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
+
+public class Description extends AbstractStringValueObject {
+
+  public Description(Description initialValue) {
+    this(initialValue.getValue());
+  }
+
+  public Description(String initialValue) {
+    super(initialValue);
+  }
+
+  @Override
+  protected Integer getMaxLength() {
+    return 1000;
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java
index b7ed52c9fc0085cc1682894b1a6cff98c4ada6a8..c61a0d2a72b92b098f59c97a50deb92cddd1afdb 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Message.java
@@ -4,6 +4,10 @@ import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
 public class Message extends AbstractStringValueObject {
 
+  public Message(Message initialValue) {
+    this(initialValue.getValue());
+  }
+
   public Message(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java
similarity index 51%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java
index c29555f102664f6cd920f036ed755d7aa5b50549..b862df3cabaea19c019d7ac07aeffa37f0dcd7f6 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Name.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/Name.java
@@ -1,11 +1,15 @@
-package de.unikoblenz.fgbks.core.test;
+package de.unikoblenz.fgbks.core.dmn.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
 public class Name extends AbstractStringValueObject {
 
-  public Name(String name) {
-    super(name);
+  public Name(Name initialValue) {
+    this(initialValue.getValue());
+  }
+
+  public Name(String initialValue) {
+    super(initialValue);
   }
 
   @Override
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java
index e57aadf9ea84703e6441b91d3c383d19146ce7d1..7653de66af9d6c3c0dcbfadf44836605abaf16a3 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/AbstractId.java
@@ -4,6 +4,10 @@ import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
 public abstract class AbstractId extends AbstractStringValueObject {
 
+  public AbstractId(AbstractId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public AbstractId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java
index 6a95016fab9e9331ad5d6331892fe58e1b5244f0..5bd6e82f6112e161ff0d5e0d39f68d6a595703a6 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionId.java
@@ -2,6 +2,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 
 public class DecisionId extends AbstractId {
 
+  public DecisionId(DecisionId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public DecisionId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java
index 87292a9374afa23c839fc73b0460c62bb26d7348..99260d606b864f410647f37d49c4c2f46f4444a4 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/DecisionTableId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("decisionTableId")
 public class DecisionTableId extends AbstractId {
 
+  public DecisionTableId(DecisionTableId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public DecisionTableId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java
index 9c1d594c07c4f2f34e2588a001aef3cbc76b2172..eaea5c1ae338fc3305b8a52fc40f8e1da77b078b 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputEntryId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("inputEntryId")
 public class InputEntryId extends AbstractId {
 
+  public InputEntryId(InputEntryId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public InputEntryId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java
index b39666065143b330673240eb3c50e957ff97930d..a42b31e463fa75173209986cb1fb1ae0d69739d6 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputExpressionId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("inputExpressionId")
 public class InputExpressionId extends AbstractId {
 
+  public InputExpressionId(InputExpressionId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public InputExpressionId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java
index 91f6586817943019d626b527d8ba7de6fee0b1e0..15b248d4f56a2c644a869747cd059521d3dddb88 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/InputId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("inputId")
 public class InputId extends AbstractId {
 
+  public InputId(InputId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public InputId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java
index 853d5ce2f3e3d700587e9b61c71b6ecd2742a1c1..dc078793e1cf1c16dd33da54e13ccd0c1f6d7d0c 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputEntryId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("outputEntryId")
 public class OutputEntryId extends AbstractId {
 
+  public OutputEntryId(OutputEntryId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public OutputEntryId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java
index 201b43b25cab989165bb191878a7b0ddcbcf6cd8..5a7da454f96cc5b8f609555251402b8c2ad6e9a9 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/OutputId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("OutputId")
 public class OutputId extends AbstractId {
 
+  public OutputId(OutputId initialValue) {
+    super(initialValue.getValue());
+  }
+
   public OutputId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java
index b38220e9788a8e9720d4879d1e4aa7d8bb349842..e95876ac1f0645e467fcfc259b48e1d48a95224a 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/domain/id/RuleId.java
@@ -3,6 +3,10 @@ package de.unikoblenz.fgbks.core.dmn.domain.id;
 @JsonIdentifier("ruleId")
 public class RuleId extends AbstractId {
 
+  public RuleId(RuleId initialValue) {
+    this(initialValue.getValue());
+  }
+
   public RuleId(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java
deleted file mode 100644
index e85edb31f27bed93eba1a476a092ad4460ed0d27..0000000000000000000000000000000000000000
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationGenerator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.unikoblenz.fgbks.core.dmn.verfication;
-
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResultSet;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
-
-public class VerificationGenerator {
-
-  public static final String CONF_VERIFIER_THREADS = "verifier.threads";
-
-  public static VerifierResultSet generate() {
-
-    Config config = ConfigProvider.getConfig();
-    Integer maxThreads = config.getOptionalValue(CONF_VERIFIER_THREADS, Integer.class).orElse(1);
-
-    ExecutorService executor = Executors.newFixedThreadPool(maxThreads);
-
-    VerifierResultSet.Builder resultBuilder = VerifierResultSet.getBuilder();
-
-    List<Future<VerifierResult>> results = new ArrayList<>(VerificationType.values().length);
-    System.out.println("Starting calculation with " + maxThreads + " threads.");
-    for (VerificationType vType : VerificationType.values()) {
-      results.add(vType.createNewInstance().verify(executor));
-    }
-
-    results.forEach(
-        r -> {
-          try {
-            resultBuilder.addVerifierResult(r.get());
-          } catch (InterruptedException e) {
-            e.printStackTrace();
-          } catch (ExecutionException e) {
-            e.printStackTrace();
-          }
-        });
-
-    return resultBuilder.build();
-  }
-}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java
deleted file mode 100644
index f65aa5bdd5266bc37ac41df4abe2145adfd70693..0000000000000000000000000000000000000000
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationType.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package de.unikoblenz.fgbks.core.dmn.verfication;
-
-import static de.unikoblenz.fgbks.core.dmn.verfication.VerificationTypeClassification.DECISION_LOGIC_LEVEL_VERIFICATION;
-
-import de.unikoblenz.fgbks.core.dmn.verfication.verifier.AbstractVerifier;
-import de.unikoblenz.fgbks.core.dmn.verfication.verifier.SampleVerifier;
-import java.io.Serializable;
-import javax.json.bind.annotation.JsonbProperty;
-import org.apache.commons.lang3.Validate;
-
-public enum VerificationType implements Serializable {
-  IDENTICAL_BUSINESS_RULE_VERIFICATION(
-      DECISION_LOGIC_LEVEL_VERIFICATION, "Identical Business Rules");
-
-  private VerificationTypeClassification classification;
-  private String name;
-  private String description;
-  private Class<? extends AbstractVerifier> verifierClass;
-
-  @JsonbProperty("classification")
-  public VerificationTypeClassification getClassification() {
-    return classification;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-
-  public AbstractVerifier createNewInstance() {
-    return new SampleVerifier();
-  }
-
-  VerificationType(VerificationTypeClassification classification, String name) {
-    this.classification = Validate.notNull(classification);
-    this.name = Validate.notBlank(name);
-  }
-}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java
deleted file mode 100644
index 7eaf523f4720dbcd6977e779a6e692491c39f5dc..0000000000000000000000000000000000000000
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/VerificationTypeClassification.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.unikoblenz.fgbks.core.dmn.verfication;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-public enum VerificationTypeClassification implements Serializable {
-  DECISION_LOGIC_LEVEL_VERIFICATION(
-      "Decision Logic Verification",
-      "",
-      new HashSet<>(Arrays.asList(VerificationType.IDENTICAL_BUSINESS_RULE_VERIFICATION)));
-
-  private String name;
-  private String description;
-  private Set<VerificationType> verificationTypes;
-
-  public String getName() {
-    return name;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-
-  public Set<VerificationType> getVerificationTypes() {
-    return new HashSet<>(verificationTypes);
-  }
-
-  VerificationTypeClassification(
-      String name, String description, Set<VerificationType> verificationTypes) {
-    this.name = name;
-    this.description = description;
-    this.verificationTypes = verificationTypes;
-  }
-}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d1a66f8418281e202585c1ad8ed7f634827a0f2
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/VerificationGenerator.java
@@ -0,0 +1,80 @@
+package de.unikoblenz.fgbks.core.dmn.verification;
+
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResultSet.Builder;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import org.eclipse.microprofile.config.Config;
+import org.eclipse.microprofile.config.ConfigProvider;
+import org.reflections.Reflections;
+
+public class VerificationGenerator {
+
+  public static final String CONF_VERIFIER_THREADS = "verifier.threads";
+  public static final String DEFAULT_PACKAGE = "de.unikoblenz.fgbks.core.dmn.verification.verifier";
+  public static final Integer DEFAULT_MAX_THREADS = 1;
+
+  public static VerifierResultSet generate() {
+    return generate(DEFAULT_PACKAGE, DEFAULT_MAX_THREADS);
+  }
+
+  public static VerifierResultSet generate(String packagePath, Integer maxThreads) {
+
+    Config config = ConfigProvider.getConfig();
+    maxThreads = config.getOptionalValue(CONF_VERIFIER_THREADS, Integer.class).orElse(maxThreads);
+
+    ExecutorService executor = Executors.newFixedThreadPool(maxThreads);
+
+    Builder resultBuilder = VerifierResultSet.getBuilder();
+
+    List<Future<VerifierResult>> results = new ArrayList<>(10);
+    System.out.println("Starting calculation with " + maxThreads + " threads.");
+
+    Reflections reflections = new Reflections(packagePath);
+    Set<Class<?>> verifierClasses = reflections.getTypesAnnotatedWith(DmnVerifier.class);
+
+    for (Class<?> verifierClass : verifierClasses) {
+      AbstractVerifier av = null;
+      try {
+        av = (AbstractVerifier) verifierClass.newInstance();
+      } catch (InstantiationException | IllegalAccessException e) {
+        e.printStackTrace();
+      }
+      if (av != null) {
+        // Create Configuration
+        AbstractVerificationConfig vConfig = null;
+        try {
+          vConfig =
+              av.getClass()
+                  .getAnnotation(DmnVerifier.class)
+                  .verifierVerificationConfigClass()
+                  .newInstance();
+        } catch (InstantiationException | IllegalAccessException ignored) {
+        }
+        results.add(av.withConfiguration(vConfig).verify(executor));
+      }
+    }
+
+    results.forEach(
+        r -> {
+          try {
+            resultBuilder.addVerifierResult(r.get());
+          } catch (InterruptedException e) {
+            e.printStackTrace();
+          } catch (ExecutionException e) {
+            e.printStackTrace();
+          }
+        });
+
+    return resultBuilder.build();
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java
similarity index 92%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java
index 755889a6fa135426cfdb0e0b366fa4aec24a04c3..9a1955613a5a2dd0c054d57c7e5d4c2662aeaad1 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/AbstractResultObject.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/AbstractResultObject.java
@@ -1,4 +1,4 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.base.utils.UniqueIdGenerator;
 import java.io.Serializable;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java
similarity index 93%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java
index 029dd51e77d943c7cd167e60e97073899d22795f..6662f4d34aa4dbbb3e91152cce2e19b4215f78f2 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntry.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntry.java
@@ -1,4 +1,4 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.base.builder.DefaultBuilder;
 import de.unikoblenz.fgbks.core.dmn.domain.Message;
@@ -42,7 +42,7 @@ public class VerificationResultEntry extends AbstractResultObject {
 
   @JsonbProperty("message")
   public Message getMessage() {
-    return new Message(message.getValue());
+    return new Message(message);
   }
 
   private void addVerificationResultEntry(
@@ -63,7 +63,7 @@ public class VerificationResultEntry extends AbstractResultObject {
     }
 
     public Builder withMessage(Message message) {
-      value.message = new Message(message.getValue());
+      value.message = new Message(message);
       return this;
     }
 
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java
similarity index 93%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java
index 032ce6df64a51f1ec523b8c611c65cdd0b1669dc..f55b115c76a0e6e45e70dc01120596b80ce03565 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryElement.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryElement.java
@@ -1,4 +1,4 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.core.dmn.domain.id.AbstractId;
 import de.unikoblenz.fgbks.core.dmn.domain.id.JsonIdentifier;
@@ -13,7 +13,7 @@ public class VerificationResultEntryElement extends AbstractResultObject {
   private final Map<String, AbstractId> identifier;
 
   @JsonbProperty("identifier")
-  public Map<String, Object> getIdentifier() {
+  public Map<String, AbstractId> getIdentifier() {
     return new HashMap<>(identifier);
   }
 
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java
similarity index 86%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java
index bc651b989e577f9ae940d62f2f89cb467a763961..5bba3ac68c89fd3a34fb7a0733727f51c847a7b0 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerificationResultEntryFactory.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerificationResultEntryFactory.java
@@ -1,8 +1,8 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.core.dmn.domain.Message;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntry.VerificationClassification;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult.Builder;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult.Builder;
 import org.apache.commons.lang3.Validate;
 
 public class VerificationResultEntryFactory {
@@ -46,7 +46,7 @@ public class VerificationResultEntryFactory {
         verificationResultEntryBuilder,
         "First call \"addElement\" in VerificationResultEntryFactory before calling \"addToEntry\"");
     verificationResultEntryBuilder.withClassification(verificationClassification);
-    verificationResultEntryBuilder.withMessage(message);
+    verificationResultEntryBuilder.withMessage(new Message(message));
     verifierResultBuilder.addVerificationResultEntry(verificationResultEntryBuilder.build());
     verificationResultEntryBuilder = null;
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java
similarity index 73%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java
index 61fc946dd4d5127066390f65e95f36db3f9717f0..14c336d258babfe515d1814b0850d35526cbd15e 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResult.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResult.java
@@ -1,8 +1,8 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.base.builder.DefaultBuilder;
-import de.unikoblenz.fgbks.core.dmn.verfication.VerificationType;
-import de.unikoblenz.fgbks.core.dmn.verfication.verifier.AbstractVerifier;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -23,21 +23,6 @@ public class VerifierResult extends AbstractResultObject {
     return verificationType;
   }
 
-  @JsonbProperty("type_name")
-  public String getVerificationTypeName() {
-    return verificationType.getName();
-  }
-
-  @JsonbProperty("type_description")
-  public String getVerificationTypeDescription() {
-    return verificationType.getDescription();
-  }
-
-  @JsonbProperty("type_classification")
-  public String getVerificationTypeClassification() {
-    return verificationType.getClassification().getName();
-  }
-
   @JsonbProperty("entries")
   public Set<VerificationResultEntry> getVerificationResultEntries() {
     return new HashSet<>(verificationResultEntries);
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java
similarity index 95%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java
index 7d949525de30df3b66684a06ae043b982d3e4e30..52ccf5d589501af118e3c5f70bf072245551f31a 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/result/VerifierResultSet.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/VerifierResultSet.java
@@ -1,4 +1,4 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.result;
+package de.unikoblenz.fgbks.core.dmn.verification.result;
 
 import de.unikoblenz.fgbks.base.builder.DefaultBuilder;
 import java.util.HashSet;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java
similarity index 52%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java
index f88b1d2e817335bb6a839ff24c11e0246ce151db..365401bb674d63105580e5b55e6523ac34fdb510 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/AbstractVerifier.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/AbstractVerifier.java
@@ -1,16 +1,19 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.verifier;
+package de.unikoblenz.fgbks.core.dmn.verification.verifier;
 
-import de.unikoblenz.fgbks.core.dmn.verfication.VerificationType;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntryFactory;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryFactory;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType;
 import java.util.Objects;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
+import org.apache.commons.lang3.Validate;
 
 public abstract class AbstractVerifier implements Verifier {
 
   protected VerificationType verificationType;
+  protected AbstractVerificationConfig verificationConfig;
   private VerifierResult.Builder resultBuilder;
   protected VerificationResultEntryFactory vref;
 
@@ -18,17 +21,29 @@ public abstract class AbstractVerifier implements Verifier {
     return verificationType;
   }
 
-  public AbstractVerifier(VerificationType verificationType) {
-    this.verificationType = verificationType;
+  public final AbstractVerifier withConfiguration(AbstractVerificationConfig configuration) {
+    this.verificationConfig = Validate.notNull(configuration);
+    return this;
+  }
+
+  protected AbstractVerifier() {
+    try {
+      this.verificationType =
+          this.getClass().getAnnotation(DmnVerifier.class).verifierTypeClass().newInstance();
+    } catch (InstantiationException | IllegalAccessException e) {
+      e.printStackTrace();
+    }
     resultBuilder = VerifierResult.getBuilder().fromVerifier(this);
     vref = VerificationResultEntryFactory.create(resultBuilder);
   }
 
   public final Future<VerifierResult> verify(ExecutorService executor) {
+    Validate.notNull(verificationConfig, "Validation config has to been set.");
+    Validate.notNull(executor);
     return executor.submit((Callable<VerifierResult>) this::verify);
   }
 
-  public final VerifierResult verify() {
+  private VerifierResult verify() {
     doVerification();
     return resultBuilder.build();
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0a901fde8d65886cb986f79315c77cd1f6092cc
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/DmnVerifier.java
@@ -0,0 +1,19 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier;
+
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.AbstractVerificationConfig;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.DefaultConfiguration;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DmnVerifier {
+
+  Class<? extends VerificationType> verifierTypeClass();
+
+  Class<? extends AbstractVerificationConfig> verifierVerificationConfigClass() default
+      DefaultConfiguration.class;
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java
similarity index 58%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java
index 0edc2e936d8b563368d0435d8b1e625f2275f9ea..c6104e2d4a429a8ecf3a62f6b1238446e0ae8fc0 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/SampleVerifier.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/SampleVerifier.java
@@ -1,19 +1,19 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.verifier;
+package de.unikoblenz.fgbks.core.dmn.verification.verifier;
 
-import static de.unikoblenz.fgbks.core.dmn.verfication.VerificationType.IDENTICAL_BUSINESS_RULE_VERIFICATION;
-import static de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntry.VerificationClassification.*;
+import static de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification.*;
 
 import de.unikoblenz.fgbks.core.dmn.domain.id.InputEntryId;
 import de.unikoblenz.fgbks.core.dmn.domain.id.OutputEntryId;
 import de.unikoblenz.fgbks.core.dmn.domain.id.RuleId;
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerificationResultEntryElement;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryElement;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.config.DefaultConfiguration;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.IdenticalBusinessRuleVerification;
 
+@DmnVerifier(
+    verifierTypeClass = IdenticalBusinessRuleVerification.class,
+    verifierVerificationConfigClass = DefaultConfiguration.class)
 public class SampleVerifier extends AbstractVerifier {
 
-  public SampleVerifier() {
-    super(IDENTICAL_BUSINESS_RULE_VERIFICATION);
-  }
-
   @Override
   protected void doVerification() {
     vref.addElement(
@@ -28,7 +28,7 @@ public class SampleVerifier extends AbstractVerifier {
             .withIdentifier(new RuleId("asdasd")));
     vref.addToEntry(ERROR, "My sample message");
     try {
-      Thread.sleep(1500);
+      Thread.sleep(1);
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java
similarity index 56%
rename from dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java
rename to dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java
index dbc438c8bf9937a9b5bf759fe5752e611eec5560..695ab043fa08cbcd3c16e6fe6736b2f6256d4268 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verfication/verifier/Verifier.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/Verifier.java
@@ -1,6 +1,6 @@
-package de.unikoblenz.fgbks.core.dmn.verfication.verifier;
+package de.unikoblenz.fgbks.core.dmn.verification.verifier;
 
-import de.unikoblenz.fgbks.core.dmn.verfication.result.VerifierResult;
+import de.unikoblenz.fgbks.core.dmn.verification.result.VerifierResult;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb1eb0c8b0330436119a97d1a2bc3fe157870ce9
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/AbstractVerificationConfig.java
@@ -0,0 +1,22 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.config;
+
+import java.util.HashMap;
+import org.apache.commons.lang3.Validate;
+
+public abstract class AbstractVerificationConfig {
+
+  private HashMap<String, Object> configurationProperties;
+
+  public Object getConfiguration(String key) {
+    return configurationProperties.get(key);
+  }
+
+  protected AbstractVerificationConfig withConfigurationProperty(String key, Object value) {
+    configurationProperties.put(Validate.notNull(key), Validate.notNull(value));
+    return this;
+  }
+
+  protected AbstractVerificationConfig() {
+    configurationProperties = new HashMap<>();
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..6468f862edb6e1cf28cf16807a8c64339c6ffafd
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DefaultConfiguration.java
@@ -0,0 +1,24 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.config;
+
+import de.unikoblenz.fgbks.base.builder.DefaultBuilder;
+
+public class DefaultConfiguration extends AbstractVerificationConfig {
+
+  public static final String DMN_DECISION_TABLE = "DmnDecisionTable";
+
+  public DefaultConfiguration() {
+    super();
+  }
+
+  public static Builder getBuilder() {
+    return new DefaultConfiguration().new Builder();
+  }
+
+  public class Builder extends DefaultBuilder<DefaultConfiguration> {
+
+    public Builder withDmnDecisionTable(String x) {
+      value.withConfigurationProperty(DMN_DECISION_TABLE, x);
+      return this;
+    }
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java
new file mode 100644
index 0000000000000000000000000000000000000000..f3f711cffe9aad75b293c0588355f7f8008c05e4
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/config/DmnVerifierConfigProperty.java
@@ -0,0 +1,6 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.config;
+
+public @interface DmnVerifierConfigProperty {
+
+  String key();
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b57fae4baf95d0cd20382edfa587534a42257c3
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/AbstractVerificationType.java
@@ -0,0 +1,3 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.types;
+
+public abstract class AbstractVerificationType implements VerificationType {}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java
new file mode 100644
index 0000000000000000000000000000000000000000..d51273ecc3a05e1c030ce51a4fe9e657f5db654b
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/IdenticalBusinessRuleVerification.java
@@ -0,0 +1,24 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.types;
+
+import static de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationTypeClassification.*;
+
+import de.unikoblenz.fgbks.core.dmn.domain.Description;
+import de.unikoblenz.fgbks.core.dmn.domain.Name;
+
+public class IdenticalBusinessRuleVerification extends AbstractVerificationType {
+
+  @Override
+  public VerificationTypeClassification getClassification() {
+    return DECISION_LOGIC_LEVEL_VERIFICATION;
+  }
+
+  @Override
+  public Name getName() {
+    return new Name(this.getClass().getSimpleName());
+  }
+
+  @Override
+  public Description getDescription() {
+    return new Description("test");
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java
new file mode 100644
index 0000000000000000000000000000000000000000..bfe0101062a6b3e9d9d1971608521915ba7a7c3b
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationType.java
@@ -0,0 +1,22 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.types;
+
+import de.unikoblenz.fgbks.base.value.ValueObject;
+import de.unikoblenz.fgbks.core.dmn.domain.Description;
+import de.unikoblenz.fgbks.core.dmn.domain.Name;
+import javax.json.bind.annotation.JsonbProperty;
+import javax.validation.constraints.NotNull;
+
+public interface VerificationType extends ValueObject {
+
+  @NotNull
+  @JsonbProperty("classification")
+  VerificationTypeClassification getClassification();
+
+  @NotNull
+  @JsonbProperty("name")
+  Name getName();
+
+  @NotNull
+  @JsonbProperty("description")
+  Description getDescription();
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6b1a0035d339619ebabebc63d60849ef5cefa36
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/VerificationTypeClassification.java
@@ -0,0 +1,25 @@
+package de.unikoblenz.fgbks.core.dmn.verification.verifier.types;
+
+import de.unikoblenz.fgbks.base.value.ValueObject;
+import de.unikoblenz.fgbks.core.dmn.domain.Description;
+import de.unikoblenz.fgbks.core.dmn.domain.Name;
+
+public enum VerificationTypeClassification implements ValueObject {
+  DECISION_LOGIC_LEVEL_VERIFICATION("Decision Logic Verification", "description of classification");
+
+  private Name name;
+  private Description description;
+
+  public Name getName() {
+    return name;
+  }
+
+  public Description getDescription() {
+    return description;
+  }
+
+  VerificationTypeClassification(String name, String description) {
+    this.name = new Name(name);
+    this.description = new Description(description);
+  }
+}
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java
index 2da218fdf5a357a96bb950cc205cb6f424445068..140a92d5ed1db079696c06234285b7f4c61fd061 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/test/Person.java
@@ -1,5 +1,6 @@
 package de.unikoblenz.fgbks.core.test;
 
+import de.unikoblenz.fgbks.core.dmn.domain.Name;
 import java.io.Serializable;
 import java.util.Objects;