diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java
similarity index 93%
rename from diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java
rename to diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java
index 342eabed..bce97c35 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentType.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/ComponentType.java
@@ -1,4 +1,4 @@
-package org.diylc.presenter;
+package org.diylc.common;
import javax.swing.Icon;
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java
index 768cb742..63be45bc 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/EventType.java
@@ -3,7 +3,6 @@ package org.diylc.common;
import java.awt.Rectangle;
import org.diylc.core.Project;
-import org.diylc.presenter.ComponentType;
/**
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java
index 3de130dc..3dfd7f90 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/common/IPlugInPort.java
@@ -17,7 +17,6 @@ import javax.swing.JPopupMenu.Separator;
import org.diylc.core.ComponentLayer;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Project;
-import org.diylc.presenter.ComponentType;
import com.diyfever.gui.simplemq.IMessageListener;
import com.diyfever.gui.simplemq.MessageDispatcher;
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
index 6933cff3..343323b5 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java
@@ -3,18 +3,31 @@ package org.diylc.core;
import java.awt.Graphics2D;
import java.io.Serializable;
-import org.diylc.presenter.ComponentType;
+import org.diylc.core.annotations.ComponentDescriptor;
+import org.diylc.core.annotations.ComponentName;
+import org.diylc.core.annotations.ComponentValue;
+import org.diylc.core.annotations.ControlPoint;
+import org.diylc.core.annotations.EditableProperty;
/**
* Interface for component instance. Implementation classes of this interface
* will be instantiated by the application when component is added to the
* canvas.
*
- * Note: Implementing classes must have an empty constructor.
+ * Implementing classes should meet the following:
+ *
+ * - Must have an empty constructor.
+ * - Class should be annotated with {@link ComponentDescriptor}.
+ * - Exactly one getter should be annotated with {@link ComponentName}.
+ * - Exactly one getter should be annotated with {@link ComponentValue}.
+ * - Control point getters need to be annotated with {@link ControlPoint}.
+ * - Getters for properties editable by users should be annotated with
+ * {@link EditableProperty}.
+ * - Component configuration should be declared using
+ *
public static fields so they can be set through config file.
+ *
*
* @author Branislav Stojkovic
- *
- * @see ComponentType
*/
public interface IDIYComponent extends Serializable {
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ControlPoint.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ControlPoint.java
index 52408243..3289b8a6 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ControlPoint.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ControlPoint.java
@@ -6,11 +6,10 @@ import java.lang.annotation.RetentionPolicy;
import org.diylc.core.VisibilityPolicy;
-
/**
* Annotation for control points. This annotation may be added fields of type
* {@link Point} only when both getters and setters exist. Annotation is added
- * always on the getter.
+ * always on the getter and it must return {@link Point} values.
*
* @author Branislav Stojkovic
*/
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java
index 03eff028..eb75e671 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java
@@ -17,13 +17,13 @@ import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.diylc.common.BadPositionException;
+import org.diylc.common.ComponentType;
import org.diylc.common.ControlPointWrapper;
import org.diylc.common.EventType;
import org.diylc.common.IPlugIn;
import org.diylc.common.IPlugInPort;
import org.diylc.core.IDIYComponent;
import org.diylc.presenter.ComponentProcessor;
-import org.diylc.presenter.ComponentType;
import com.diyfever.gui.MemoryBar;
import com.diyfever.gui.miscutils.PercentageListCellRenderer;
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java
index bf03a2b6..025f1829 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentButton.java
@@ -7,8 +7,8 @@ import java.awt.event.ActionListener;
import javax.swing.JButton;
+import org.diylc.common.ComponentType;
import org.diylc.common.IPlugInPort;
-import org.diylc.presenter.ComponentType;
/**
* {@link JButton} that displays component type icon and instantiates the
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
index ab1ac7d2..d53b8cb7 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/toolbox/ComponentTabbedPane.java
@@ -8,8 +8,8 @@ import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JTabbedPane;
+import org.diylc.common.ComponentType;
import org.diylc.common.IPlugInPort;
-import org.diylc.presenter.ComponentType;
class ComponentTabbedPane extends JTabbedPane {
diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java
index 881b0813..48e61f38 100644
--- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java
+++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java
@@ -32,6 +32,7 @@ import javax.swing.JComponent;
import org.apache.log4j.Logger;
import org.diylc.common.BadPositionException;
import org.diylc.common.ComponentSelection;
+import org.diylc.common.ComponentType;
import org.diylc.common.ControlPointWrapper;
import org.diylc.common.DrawOption;
import org.diylc.common.EventType;