diff --git a/dragon.gif b/dragon.gif
deleted file mode 100644
index c59d4f7..0000000
Binary files a/dragon.gif and /dev/null differ
diff --git a/fr/istic/nplouzeau/cartaylor/api/Category.java b/fr/istic/nplouzeau/cartaylor/api/Category.java
new file mode 100644
index 0000000..cd3e284
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/Category.java
@@ -0,0 +1,9 @@
+package fr.istic.nplouzeau.cartaylor.api;
+/**
+ * @author plouzeau
+ *
+ * A public type to organize part types in categories
+ */
+public interface Category {
+ String getName();
+}
\ No newline at end of file
diff --git a/fr/istic/nplouzeau/cartaylor/api/CompatibilityChecker.java b/fr/istic/nplouzeau/cartaylor/api/CompatibilityChecker.java
new file mode 100644
index 0000000..0542ee7
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/CompatibilityChecker.java
@@ -0,0 +1,6 @@
+package fr.istic.nplouzeau.cartaylor.api;
+import java.util.Set;
+public interface CompatibilityChecker {
+ Set getIncompatibilities(PartType reference);
+ Set getRequirements(PartType reference);
+}
\ No newline at end of file
diff --git a/fr/istic/nplouzeau/cartaylor/api/CompatibilityManager.java b/fr/istic/nplouzeau/cartaylor/api/CompatibilityManager.java
new file mode 100644
index 0000000..c5a753a
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/CompatibilityManager.java
@@ -0,0 +1,12 @@
+package fr.istic.nplouzeau.cartaylor.api;
+import java.util.Set;
+public interface CompatibilityManager extends CompatibilityChecker {
+ void addIncompatibilities(PartType reference,
+ Set target);
+ void removeIncompatibility(PartType reference, PartType
+ target);
+ void addRequirements(PartType reference, Set
+ target);
+ void removeRequirement(PartType reference, PartType
+ target);
+}
\ No newline at end of file
diff --git a/fr/istic/nplouzeau/cartaylor/api/Configuration.java b/fr/istic/nplouzeau/cartaylor/api/Configuration.java
new file mode 100644
index 0000000..00623af
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/Configuration.java
@@ -0,0 +1,11 @@
+package fr.istic.nplouzeau.cartaylor.api;
+import java.util.Set;
+public interface Configuration {
+ boolean isValid();
+ boolean isComplete();
+ Set getSelectedParts();
+ void selectPart(PartType chosenPart);
+ PartType getSelectionForCategory(Category category);
+ void unselectPartType(Category categoryToClear);
+ void clear();
+}
\ No newline at end of file
diff --git a/fr/istic/nplouzeau/cartaylor/api/Configurator.java b/fr/istic/nplouzeau/cartaylor/api/Configurator.java
new file mode 100644
index 0000000..191eed7
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/Configurator.java
@@ -0,0 +1,8 @@
+package fr.istic.nplouzeau.cartaylor.api;
+import java.util.Set;
+public interface Configurator {
+ Set getCategories();
+ Set getVariants(Category category);
+ Configuration getConfiguration();
+ CompatibilityChecker getCompatibilityChecker();
+}
\ No newline at end of file
diff --git a/fr/istic/nplouzeau/cartaylor/api/PartType.java b/fr/istic/nplouzeau/cartaylor/api/PartType.java
new file mode 100644
index 0000000..35101af
--- /dev/null
+++ b/fr/istic/nplouzeau/cartaylor/api/PartType.java
@@ -0,0 +1,5 @@
+package fr.istic.nplouzeau.cartaylor.api;
+public interface PartType {
+ String getName();
+ Category getCategory();
+}
\ No newline at end of file