diff --git a/src/Umbraco.Core/Components/IComponent.cs b/src/Umbraco.Core/Components/IComponent.cs
new file mode 100644
index 0000000000..5ce9c02060
--- /dev/null
+++ b/src/Umbraco.Core/Components/IComponent.cs
@@ -0,0 +1,14 @@
+namespace Umbraco.Core.Components
+{
+ ///
+ /// Represents a component.
+ ///
+ ///
+ /// All components which are also disposable, will be disposed in reverse
+ /// order, when Umbraco terminates.
+ /// The Dispose method may be invoked more than once, and components
+ /// should ensure they support this.
+ ///
+ public interface IComponent
+ { }
+}
diff --git a/src/Umbraco.Core/Components/IComposer.cs b/src/Umbraco.Core/Components/IComposer.cs
new file mode 100644
index 0000000000..ce02aa4f13
--- /dev/null
+++ b/src/Umbraco.Core/Components/IComposer.cs
@@ -0,0 +1,16 @@
+using Umbraco.Core.Composing;
+
+namespace Umbraco.Core.Components
+{
+ ///
+ /// Represents a composer.
+ ///
+ public interface IComposer : IDiscoverable
+ {
+ ///
+ /// Compose.
+ ///
+ ///
+ void Compose(Composition composition);
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Components/ICoreComposer.cs b/src/Umbraco.Core/Components/ICoreComposer.cs
new file mode 100644
index 0000000000..810d9641be
--- /dev/null
+++ b/src/Umbraco.Core/Components/ICoreComposer.cs
@@ -0,0 +1,13 @@
+namespace Umbraco.Core.Components
+{
+ ///
+ /// Represents a core .
+ ///
+ ///
+ /// All core composers are required by (compose before) all user composers,
+ /// and require (compose after) all runtime composers.
+ ///
+ [Require(typeof(IRuntimeComposer))]
+ public interface ICoreComposer : IComposer
+ { }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Components/IRuntimeComposer.cs b/src/Umbraco.Core/Components/IRuntimeComposer.cs
new file mode 100644
index 0000000000..4b8253ee6c
--- /dev/null
+++ b/src/Umbraco.Core/Components/IRuntimeComposer.cs
@@ -0,0 +1,11 @@
+namespace Umbraco.Core.Components
+{
+ ///
+ /// Represents a runtime .
+ ///
+ ///
+ /// All runtime composers are required by (compose before) all core composers
+ ///
+ public interface IRuntimeComposer : IComposer
+ { }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Components/IUmbracoComponent.cs b/src/Umbraco.Core/Components/IUmbracoComponent.cs
deleted file mode 100644
index 149f41df83..0000000000
--- a/src/Umbraco.Core/Components/IUmbracoComponent.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Umbraco.Core.Composing;
-
-namespace Umbraco.Core.Components
-{
- // FIXME BREAK THIS!
-
- public interface IComposer : IDiscoverable
- {
- void Compose(Composition composition);
- }
-
- public interface IRuntimeComposer : IComposer
- { }
-
- [Require(typeof(IRuntimeComposer))]
- public interface ICoreComposer : IComposer
- { }
-
- [Require(typeof(ICoreComposer))]
- public interface IUserComposer : IComposer
- { }
-
- // will be disposed if disposable, CANT be disposed multiple times, beware!
- public interface IComponent
- { }
-}
diff --git a/src/Umbraco.Core/Components/IUserComposer.cs b/src/Umbraco.Core/Components/IUserComposer.cs
new file mode 100644
index 0000000000..ca8cfcaefb
--- /dev/null
+++ b/src/Umbraco.Core/Components/IUserComposer.cs
@@ -0,0 +1,12 @@
+namespace Umbraco.Core.Components
+{
+ ///
+ /// Represents a user .
+ ///
+ ///
+ /// All user composers require (compose after) all core composers.
+ ///
+ [Require(typeof(ICoreComposer))]
+ public interface IUserComposer : IComposer
+ { }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index a5a57df80e..425adc0b44 100755
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -160,7 +160,11 @@
-
+
+
+
+
+