diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..88a058b
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,11 @@
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+charset = utf-8
+indent_style = space
+indent_size = 4
+tab_width = 4
+trim_trailing_whitespace = true
+max_line_length = 120
diff --git a/pom.xml b/pom.xml
index e27e8c8..88fa5b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
de.joshavg
@@ -23,10 +23,28 @@
+
+ org.slf4j
+ slf4j-api
+ 1.7.21
+ provided
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.21
+
junit
junit
4.12
+ test
+
+
+ org.hamcrest
+ hamcrest-core
+ 1.3
+ test
com.google.collections
@@ -36,4 +54,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/de/joshavg/simpledic/Instantiator.java b/src/main/java/de/joshavg/simpledic/Instantiator.java
new file mode 100644
index 0000000..610d285
--- /dev/null
+++ b/src/main/java/de/joshavg/simpledic/Instantiator.java
@@ -0,0 +1,31 @@
+package de.joshavg.simpledic;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+class Instantiator {
+
+ private final Class clz;
+
+ Instantiator(Class clz) {
+ this.clz = clz;
+ }
+
+ T createInstance()
+ throws IllegalAccessException, InvocationTargetException, InstantiationException {
+ @SuppressWarnings("unchecked")
+ Constructor constructor = (Constructor) clz.getDeclaredConstructors()[0];
+
+ Class>[] parameterTypes = constructor.getParameterTypes();
+ Object[] parameters = new Object[parameterTypes.length];
+
+ for (int i = 0; i < parameterTypes.length; ++i) {
+ @SuppressWarnings("unchecked")
+ Class