diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
index a3229fe4c09ddbdb4499dea611c6de01e79bc0c8..1be5993c72d5000f56c7c73d6ef534b99a1ef0be 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
@@ -89,7 +89,8 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD
     if (request.getMetadataPrefix() != null
         && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)
         && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX)
-        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) {
       result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR,
           "The value of the metadataPrefix " + request.getMetadataPrefix()
               + " is not supported by the item identified by the value of: "
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java
index f4241cd52f204fb679a6b7fb5ed3f647b31a8101..779543b22710bc2b26f45244df25bccce974015f 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHConstants.java
@@ -19,6 +19,7 @@ public final class OAIPMHConstants {
   // Metadata Prefixes
   public static final String METADATA_IDIOM_PREFIX = "oai_idiom_mets";
   public static final String METADATA_OPENAIRE_PREFIX = "oai_datacite";
+  public static final String METADATA_IDIOM_IMAGE_PREFIX = "oai_idiom_image_mets";
 
   // Error String Constants
   public static final String OAI_BAD_ARGUMENT = "BadArgument";
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
index f0abb804f790e406fa53f72ff9d035f422529337..341a0b8cb83ff1da7e4875612077a0bd23e00207 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
@@ -13,6 +13,8 @@ import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.XMLGregorianCalendar;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.json.JSONException;
+
 import info.textgrid.middleware.oaipmh.GetRecordType;
 import info.textgrid.middleware.oaipmh.IdentifyType;
 import info.textgrid.middleware.oaipmh.ListIdentifiersType;
@@ -81,6 +83,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
   private MetadataFormatListDelivererInterface metadataFormatList;
   private SetListDeliverer setList;
 
+  private IDIOMImages imageList = new IDIOMImages();
   // **
   // PUBLIC
   // **
@@ -114,8 +117,10 @@ public class OAIPMHImpl implements OAIPMHProducer {
       SetListDeliverer setList, // 8
       IdentifierListDelivererDC identifierList, // 9
       IdentifierListDelivererIDIOM identifierListIDIOM, // 10
-      IdentifierListDelivererDATACITE identifierListDATACITE // 11
+      IdentifierListDelivererDATACITE identifierListDATACITE, // 11
+      IDIOMImages imageList
   ) {
+
     this.rep = rep;
 
     this.recordDC = recordDC;
@@ -136,6 +141,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
         .debug("MetadataFormatList implementing class: " + metadataFormatList.getClass().getName());
 
     this.setList = setList;
+    this.imageList = imageList;
   }
 
   /*
@@ -281,7 +287,8 @@ public class OAIPMHImpl implements OAIPMHProducer {
 
     // Check request. In GetRecord: allowed parameters: identifier, metadataPrefix, verb forbidden:
     // resumptionToken, from, till, set optional: no one.
-
+	  
+	
     ErrorHandler requestErrors = RecordDelivererAbstract.requestChecker(request);
 
     if (requestErrors.getError().getCode() != null) {
@@ -301,6 +308,9 @@ public class OAIPMHImpl implements OAIPMHProducer {
       if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
         recDeliv = this.recordDATACITE;
       }
+      if(request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)){  
+        recDeliv = new IDIOMImages();
+      }
 
       // Finally start the QUERY!
       GetRecordType getRecord = new GetRecordType();
@@ -338,7 +348,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
    */
   public OAIPMHtype listIdentifiersRequest(OAIPMHtype oaipmhRoot, RequestType request)
       throws ParseException {
-
+    IDIOMImages imm = new IDIOMImages();
     // Check request first.
     ErrorHandler requestErrors = IdentifierListDelivererAbstract.requestChecker(request);
     if (requestErrors.getError().getValue() != null) {
@@ -356,13 +366,17 @@ public class OAIPMHImpl implements OAIPMHProducer {
           idListDeliv = this.identifierListIDIOM;
         } else if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
           idListDeliv = this.identifierListDATACITE;
+        } else if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) {          
+          imm.setKindID("1");
+          imm.setPageNumber("1");
+          imm.setPerPage("100");
+          idListDeliv = imm;
         }
       }
 
       // If metadata prefix is NOT set, check resumption token hash maps to decide which metadata
       // format we shall use.
       else {
-
         // Token is from DC request.
         if (IdentifierListDelivererDC.cursorCollector != null
             && IdentifierListDelivererDC.cursorCollector
@@ -387,6 +401,14 @@ public class OAIPMHImpl implements OAIPMHProducer {
 
           this.log.debug("DATACITE collector: " + IdentifierListDelivererDATACITE.cursorCollector);
         }
+         // Token is from IDIOMImages request.
+       /* else if (IDIOMImages.cursorCollector != null
+          && IDIOMImages.cursorCollector
+                 .containsKey(request.getResumptionToken())) {
+              idListDeliv = imm;
+    
+              this.log.debug("IDIOMImage collector: " + IDIOMImages.cursorCollector);
+            }*/
         // We have got an invalid resumptionToken here!
         else {
           ErrorHandler e = new ErrorHandler();
@@ -555,6 +577,13 @@ public class OAIPMHImpl implements OAIPMHProducer {
         if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
           recListDeliv = this.recordListDATACITE;
         }
+        if (request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) {
+          IDIOMImages imm = new IDIOMImages();
+          imm.setKindID("1");
+          imm.setPageNumber("1");
+          imm.setPerPage("100");
+          recListDeliv = imm;
+        }
       }
 
       // If metadata prefix is NOT set, check resumption token hash maps to decide which metadata
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java
index 6a553f50384d68229f17f49550e20ac935197a0b..25b02c58288a684a7e49c91aaddde743478addc6 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererAbstract.java
@@ -71,7 +71,8 @@ public abstract class RecordDelivererAbstract implements RecordDelivererInterfac
     if (request.getMetadataPrefix() != null
         && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)
         && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX)
-        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) {
       result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR,
           "The value of the metadataPrefix: " + request.getMetadataPrefix()
               + " is not supported by the item identified by the value of: "
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
index 9cab5bfc3e0473cc8bafba0e6f374f0a64ba2956..3df92b323d6a4927d62e857e737661cf45e4fdd8 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererIDIOM.java
@@ -171,7 +171,7 @@ public class RecordDelivererIDIOM extends RecordDelivererAbstract {
     } catch (Exception e) {
       e.printStackTrace();
     }
-
+    
     return metadataMets;
   }
 
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
index ed10a0150af72439dedc592d1224e76f32d30538..21a9f0c5b8b6356ba61033b20634dbe1759141f6 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
@@ -67,7 +67,8 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
     if (request.getMetadataPrefix() != null
         && !request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)
         && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_PREFIX)
-        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)) {
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_OPENAIRE_PREFIX)
+        && !request.getMetadataPrefix().equals(OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX)) {
       result.setError(OAIPMHConstants.OAI_METADATA_FORMAT_ERROR,
           "The value of the metadataPrefix " + request.getMetadataPrefix()
               + " is not supported by the item identified by the value of: "
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
index 02c4532da06b860652dc8f7fba635387cf8eb0f5..d9196afc553db808c26203f4af19e001928df0d8 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestDH.java
@@ -29,7 +29,7 @@ public class OaiPmhTestDH {
   private static RecordListDelivererDATACITE recordListDATACITE;
   // private static OpenAireIdentifierList openAireIdentifierList;
   private static IdentifierListDelivererDATACITE identifierListDATACITE;
-
+  private static IDIOMImages idiomImages;
   private DeletedRecordType deletedRecordType = DeletedRecordType.NO;
   private GranularityType granularityType = GranularityType.YYYY_MM_DD_THH_MM_SS_Z;
   private RepIdentification rep = new RepIdentification("DARIAH-DE Repository",
@@ -57,7 +57,8 @@ public class OaiPmhTestDH {
           OaiPmhTestDH.identifierList,
           OaiPmhTestDH.identifierListIDIOM,
           // OaiPmhTestDH.openAireIdentifierList);
-          OaiPmhTestDH.identifierListDATACITE);
+          OaiPmhTestDH.identifierListDATACITE,
+          OaiPmhTestDH.idiomImages);
 
   OAIPMHUtilities settings = new OAIPMHUtilities();
 
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java
index bd04384489b75da9a83a5047183b835e401b3603..1b376cb773d17581fad9a8433344625f0991095d 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTestTG.java
@@ -43,6 +43,7 @@ public class OaiPmhTestTG {
   private static IdentifierListDelivererIDIOM identifierListIDIOM =
       new IdentifierListDelivererIDIOM(true, false);
   private static SetListDeliverer setListTextGrid;
+  private static IDIOMImages idiomImages;
 
   // **
   // CLASS
@@ -66,7 +67,8 @@ public class OaiPmhTestTG {
       OaiPmhTestTG.identifierList,
       OaiPmhTestTG.identifierListIDIOM,
       // OaiPmhTestTG.openAireIdentifierList);
-      OaiPmhTestTG.identifierListDATACITE);
+      OaiPmhTestTG.identifierListDATACITE,
+      OaiPmhTestTG.idiomImages);
 
   OAIPMHUtilities settings = new OAIPMHUtilities();
 
@@ -330,6 +332,39 @@ public class OaiPmhTestTG {
     System.out.println("-----------------------------------\n");
   }
 
+  /**
+   * @throws ParseException
+   */
+  @Test
+  public void testGetRequestGetRecordIDIOM_IMAGES() throws ParseException {
+    System.out.println("Test for the verb \"GetRecord\" with succesfull response");
+    String p = this.request.getRequest("GetRecord", "11480",
+        OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", "");
+    System.out.println(p);
+    System.out.println("-----------------------------------\n");
+  }
+
+  /**
+   * @throws ParseException
+   */
+  @Test
+  public void testGetRequestListRecordsIDIOM_IMAGES() throws ParseException {
+    System.out.println("Test for the verb \"ListRecords\" with succesfull response");
+    String p = this.request.getRequest("ListRecords", "",
+        OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", "");
+    System.out.println(p);
+    System.out.println("-----------------------------------\n");
+  }  
+  
+  @Test
+  public void testGetRequestListIdentifiersIDIOM_IMAGES() throws ParseException {
+    System.out.println("Test for the verb \"ListIdentifiers\" with succesfull response");
+    String p = this.request.getRequest("ListIdentifiers", "",
+        OAIPMHConstants.METADATA_IDIOM_IMAGE_PREFIX, "", "", "", "");
+    System.out.println(p);
+    System.out.println("-----------------------------------\n");
+  }  
+
   /**
    * @throws ParseException
    */
diff --git a/pom.xml b/pom.xml
index 9ad02889b77bbc343ba1660fa60a29704aba9df9..f81183d64058452315fe58a25044a8fea60675d3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
 		<common.version>4.0.1</common.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<cxf.version>3.3.11</cxf.version>
-		<mets-mods-mapping.version>1.1.17</mets-mods-mapping.version>
+		<mets-mods-mapping.version>1.1.18</mets-mods-mapping.version>
 		<spring.version>4.0.2.RELEASE</spring.version>
 		<elasticsearch.version>6.5.4</elasticsearch.version>
 		<antlr-runtime.version>3.2</antlr-runtime.version>