diff --git a/org.apache.lenya.core.metadata.api/pom.xml b/org.apache.lenya.core.metadata.api/pom.xml
new file mode 100644
index 0000000..e20ccde
--- /dev/null
+++ b/org.apache.lenya.core.metadata.api/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.lenya</groupId>
+    <artifactId>lenya-parent</artifactId>
+    <version>2.2.0-SNAPSHOT</version>
+    <relativePath>../org.apache.lenya.parent/pom.xml</relativePath>
+  </parent>
+  
+  <groupId>org.apache.lenya</groupId>
+  <artifactId>lenya-core-metadata-api</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Lenya Metadata API</name>
+  <description>API for Lenya Metadata</description>
+  
+  <dependencies>
+  
+  <!-- TODO : see if all theses dependencies are required -->
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-servlet-service-components</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-template-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-flowscript-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.4</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/org.apache.lenya.core.metadata.api/rcl.properties b/org.apache.lenya.core.metadata.api/rcl.properties
new file mode 100644
index 0000000..b2c6253
--- /dev/null
+++ b/org.apache.lenya.core.metadata.api/rcl.properties
@@ -0,0 +1,17 @@
+#
+# 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 regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+org.apache.lenya.lenya-CHANGE-ME.service%classes-dir=./target/classes
\ No newline at end of file
diff --git a/org.apache.lenya.core.metadata/pom.xml b/org.apache.lenya.core.metadata.impl/pom.xml
similarity index 77%
rename from org.apache.lenya.core.metadata/pom.xml
rename to org.apache.lenya.core.metadata.impl/pom.xml
index c8d5f43..f83a0ed 100644
--- a/org.apache.lenya.core.metadata/pom.xml
+++ b/org.apache.lenya.core.metadata.impl/pom.xml
@@ -11,9 +11,9 @@
     <relativePath>../org.apache.lenya.parent/pom.xml</relativePath>
   </parent>
   <groupId>org.apache.lenya</groupId>
-  <artifactId>lenya-core-metadata</artifactId>
+  <artifactId>lenya-core-metadata-impl</artifactId>
   <packaging>jar</packaging>
-  <name>Apache Lenya Core Metadata</name>
+  <name>Apache Lenya Core Metadata Implementation</name>
   <dependencies>
     <dependency>
       <groupId>javax.servlet</groupId>
@@ -23,6 +23,9 @@
       <groupId>org.apache.avalon.framework</groupId>
       <artifactId>avalon-framework-api</artifactId>
     </dependency>
+    
+    <!-- Lenya -->
+    
     <dependency>
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-api</artifactId>
@@ -31,17 +34,13 @@
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-usecase</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.lenya</groupId>
-      <artifactId>lenya-core-workflow</artifactId>
-    </dependency>
+<!--    <dependency>-->
+<!--      <groupId>org.apache.lenya</groupId>-->
+<!--      <artifactId>lenya-core-workflow</artifactId>-->
+<!--    </dependency>-->
         <dependency>
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-cocoon</artifactId>
     </dependency>
-        <dependency>
-      <groupId>org.apache.lenya</groupId>
-      <artifactId>lenya-core-publication</artifactId>
-    </dependency>
   </dependencies>
 </project>
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/Element.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/Element.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/Element.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/Element.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
diff --git a/org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf b/org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
rename to org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
diff --git a/org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml b/org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
rename to org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
diff --git a/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java b/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
deleted file mode 100644
index 01da550..0000000
--- a/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * 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 regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-package org.apache.lenya.cms.metadata;
-
-import java.util.Map;
-
-import org.apache.lenya.cms.AbstractAccessControlTest;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.metadata.Element;
-
-/**
- * Meta data test.
- */
-public class MetaDataTest extends AbstractAccessControlTest {
-
-    /**
-     * Tests the meta data.
-     * @throws Exception
-     */
-    public void testMetaData() throws Exception {
-
-        Publication publication = getSession().getPublication("test");
-        Document doc = publication.getArea("authoring").getSite().getNode("/index").getLink("en")
-                .getDocument();
-
-        String namespaceUri = "foobar";
-        Exception e = null;
-        try {
-            doc.getMetaData(namespaceUri);
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-
-        namespaceUri = DublinCore.DC_NAMESPACE;
-        MetaData dc = doc.getMetaData(namespaceUri);
-
-        doc.lock();
-
-        checkSetTitle(dc);
-        checkRemoveAllValues(dc);
-
-    }
-
-    protected void checkSetTitle(MetaData dc) throws MetaDataException {
-        Exception e = null;
-        try {
-            dc.setValue("foo", "bar");
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-        dc.setValue("title", "This is the title");
-
-        e = null;
-        // addValue() should throw an exception because a value is already set
-        try {
-            dc.addValue("title", "bar");
-        } catch (Exception e1) {
-            e = e1;
-        }
-        assertNotNull(e);
-
-    }
-
-    String NAMESPACE = "http://apache.org/lenya/test/metadata";
-
-    protected void checkOnCopy(Publication pub) throws Exception {
-        MetaDataRegistryWrapper registry = null;
-        try {
-            registry = (MetaDataRegistryWrapper) getManager().lookup(MetaDataRegistry.ROLE);
-            org.apache.lenya.cms.repository.metadata.ElementSet set = new TestElementSet();
-            registry.getRepositoryMetaDataRegistry().register(NAMESPACE, set);
-        } finally {
-            getManager().release(registry);
-        }
-
-        Document source = pub.getArea(Publication.AUTHORING_AREA).getDocument("/index", "en");
-        Document target = pub.getArea(Publication.AUTHORING_AREA).getDocument("/index", "en");
-
-        MetaData sourceMeta = source.getMetaData(NAMESPACE);
-        sourceMeta.setValue("copy", "sourceCopy");
-        sourceMeta.setValue("ignore", "sourceIgnore");
-        sourceMeta.setValue("delete", "sourceDelete");
-
-        MetaData targetMeta = target.getMetaData(NAMESPACE);
-        targetMeta.setValue("ignore", "targetIgnore");
-        targetMeta.setValue("delete", "targetDelete");
-
-        targetMeta.replaceBy(sourceMeta);
-
-        assertTrue(targetMeta.getValues("copy").length == 1);
-        assertEquals(sourceMeta.getValues("copy"), targetMeta.getValues("copy"));
-
-        assertTrue(targetMeta.getValues("ignore").length == 1);
-        assertEquals(targetMeta.getFirstValue("ignore"), "targetIgnore");
-
-        assertTrue(targetMeta.getValues("delete").length == 0);
-    }
-
-    protected void checkRemoveAllValues(MetaData dc) throws MetaDataException {
-        dc.removeAllValues("title");
-        assertTrue(dc.getValues("title").length == 0);
-    }
-
-    protected class TestElement implements org.apache.lenya.cms.repository.metadata.Element {
-
-        private String name;
-        private int actionOnCopy;
-
-        protected TestElement(String name, int actionOnCopy) {
-            this.name = name;
-            this.actionOnCopy = actionOnCopy;
-        }
-
-        public int getActionOnCopy() {
-            return actionOnCopy;
-        }
-
-        public String getDescription() {
-            return "";
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public boolean isEditable() {
-            return false;
-        }
-
-        public boolean isMultiple() {
-            return false;
-        }
-
-        public boolean isSearchable() {
-            return false;
-        }
-
-    }
-
-    protected class TestElementSet implements org.apache.lenya.cms.repository.metadata.ElementSet {
-
-        private org.apache.lenya.cms.repository.metadata.Element[] elements = {
-                new TestElement("copy", Element.ONCOPY_COPY),
-                new TestElement("ignore", Element.ONCOPY_IGNORE),
-                new TestElement("delete", Element.ONCOPY_DELETE) };
-
-        private Map<String, org.apache.lenya.cms.repository.metadata.Element> name2element;
-
-        protected TestElementSet() {
-            for (int i = 0; i < elements.length; i++) {
-                this.name2element.put(elements[i].getName(), elements[i]);
-            }
-        }
-
-        public boolean containsElement(String name) {
-            return true;
-        }
-
-        public org.apache.lenya.cms.repository.metadata.Element getElement(String name)
-                throws org.apache.lenya.cms.repository.metadata.MetaDataException {
-            return (org.apache.lenya.cms.repository.metadata.Element) this.name2element.get(name);
-        }
-
-        public org.apache.lenya.cms.repository.metadata.Element[] getElements() {
-            return elements;
-        }
-
-        public String getNamespaceUri() {
-            return NAMESPACE;
-        }
-
-    }
-
-}
