diff --git a/ipojo/core/doc/changelog.txt b/ipojo/core/doc/changelog.txt
index 7a02735..bb0f693 100644
--- a/ipojo/core/doc/changelog.txt
+++ b/ipojo/core/doc/changelog.txt
@@ -5,6 +5,7 @@
     * [FELIX-2716] - [iPOJO] Failure when creating proxies for classes in java.* packages
 
 ** Improvement
+    * [FELIX-2781] - Expose the implementation class as service when no interfaces are found in the hierarchy
     * [FELIX-1424] - Constructor Injection
     * [FELIX-1428] - Constructor injection of Configuration properties
     * [FELIX-2461] - Allow specifying the targeted service interface in the @ServiceController
diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
index e91beab..9a40430 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
@@ -596,7 +596,8 @@
             }
 
             if (all.isEmpty()) {
-                throw new ConfigurationException("Service Providing: Cannot instantiate a provided service : no specifications found (no interfaces implemented by the pojo)");
+            	warn("No service interface found in the class hierarchy, use the implementation class");
+                all.add(desc.getFactory().getClassName());
             }
 
             StringBuffer specs = null;
diff --git a/ipojo/tests/core/service-providing/src/main/ipojo/concrete-abstract.xml b/ipojo/tests/core/service-providing/src/main/ipojo/concrete-abstract.xml
index 25366c8..843e17a 100644
--- a/ipojo/tests/core/service-providing/src/main/ipojo/concrete-abstract.xml
+++ b/ipojo/tests/core/service-providing/src/main/ipojo/concrete-abstract.xml
@@ -25,4 +25,9 @@
         <provides specifications="[org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation, org.apache.felix.ipojo.test.scenarios.ps.service.FooService]"/>
     </component>
 
+	<component
+	classname="org.apache.felix.ipojo.test.scenarios.component.SimpleClass">
+		<provides/>
+	</component>
+
 </ipojo>
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleClass.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleClass.java
new file mode 100644
index 0000000..5761947
--- /dev/null
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleClass.java
@@ -0,0 +1,11 @@
+package org.apache.felix.ipojo.test.scenarios.component;
+
+public class SimpleClass {
+
+	// This class do not implement any interface, it will be exposed as SimpleClass
+
+	public String hello() {
+		return "Hello";
+	}
+
+}
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
index 24ba6af..044fc38 100644
--- a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/SimplePS.java
@@ -1,4 +1,4 @@
-/* 
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -18,50 +18,62 @@
  */
 package org.apache.felix.ipojo.test.scenarios.ps;
 
+import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.junit4osgi.helpers.IPOJOHelper;
+import org.apache.felix.ipojo.test.scenarios.component.SimpleClass;
 import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
 import org.osgi.framework.ServiceReference;
 
 public class SimplePS extends OSGiTestCase {
-	
+
 	public void testPS() {
 	    IPOJOHelper helper = new IPOJOHelper(this);
-	    
+
 		String factName = "PS-FooProviderType-1";
 		String compName = "FooProvider-1";
 		ServiceReference ref = null;
-		
+
 		// Check that no Foo Service are available
 		ref = getServiceReference(FooService.class.getName());
-		
+
 		assertNull("FS already available", ref);
-	
+
 		// Get the factory to create a component instance
 		Factory fact = helper.getFactory(factName);
 		assertNotNull("Cannot find the factory FooProvider-1", fact);
-		
+
 		helper.createComponentInstance(factName, compName);
-		
+
 		// Get a FooService provider
 		ref = getServiceReference(FooService.class.getName(), "(" + "instance.name" + "=" + compName + ")");
 
 		assertNotNull("FS not available", ref);
-		
+
 		// Test foo invocation
 		FooService fs = (FooService) getServiceObject(ref);
 		assertTrue("FooService invocation failed", fs.foo());
-		
+
 		helper.dispose();
 
-		
+
 		// Check that there is no more FooService
 		ref = getServiceReference(FooService.class.getName(), null);
-		
-		
+
+
 		assertNull("FS available, but component instance stopped", ref);
-		
+
+	}
+
+	public void testWhenNoInterface() {
+		IPOJOHelper helper = new IPOJOHelper(this);
+		String factoryName = "org.apache.felix.ipojo.test.scenarios.component.SimpleClass";
+		ComponentInstance ci = helper.createComponentInstance(factoryName);
+		waitForService(SimpleClass.class.getName(), null, 5000);
+		SimpleClass simple = (SimpleClass) getServiceObject(SimpleClass.class.getName(), null);
+		assertEquals("Hello", simple.hello());
+		ci.dispose();
 	}
 
 }
