diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml
index 1eee5520842cdf8475c270d94fbed596a3bc23f7..55763339730524c82c2e4eb2f47ab23096f11361 100644
--- a/oaipmh-core/pom.xml
+++ b/oaipmh-core/pom.xml
@@ -4,11 +4,11 @@
 	<parent>
 		<artifactId>oaipmh</artifactId>
 		<groupId>info.textgrid.middleware</groupId>
-		<version>1.3.9-SNAPSHOT</version>
+		<version>1.3.10-SNAPSHOT</version>
 	</parent>
 	<groupId>info.textgrid.middleware</groupId>
 	<artifactId>oaipmh-core</artifactId>
-	<version>1.3.9-SNAPSHOT</version>
+	<version>1.3.10-SNAPSHOT</version>
 	<packaging>jar</packaging>
 	<name>TextGrid :: TG-OAI-PMH :: Core</name>
 	<url>http://maven.apache.org</url>
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
index 6ff296a6a8d26ba47c96f7cb8010edb254530275..10b4a85ab5aa16aa05d47bf4f94b89bf21a61e73 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
@@ -349,13 +349,14 @@ public class DublinCoreFieldLoader {
 	
 		public static List<String> setType(GetResponse responseWorkValues, String[] values){
 		
-		for(String field : values){
-			if (responseWorkValues.getField(field) != null) {
-				types.add(responseWorkValues.getField(field)
-					.getValue().toString());
+		if(values != null){
+			for(String field : values){
+				if (responseWorkValues.getField(field) != null) {
+					types.add(responseWorkValues.getField(field)
+							.getValue().toString());
+				}
 			}
 		}
-		
 		return types;
 	}
 }
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java
index cf7de915c6250a8166f28b8c1f185d141cd3b686..ee7677ac2032ff25c805ba8d6c67aafb73ed951f 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDeliverer.java
@@ -30,6 +30,9 @@ public class IdentifierListDeliverer {
 	private	ListIdentifiersType lit = new ListIdentifiersType();
 	private boolean idExist = true;
 	private OAI_ESClient oaiEsClient;
+	
+	private String[] identifierListFields;
+	private String rangeField;
 
 	
 	/**
@@ -48,14 +51,11 @@ public class IdentifierListDeliverer {
 	private ListIdentifiersType setListIdentifierHeader(String datestamp, String identifier){
 		
 		HeaderType header = new HeaderType();
-		
 		header.setDatestamp(datestamp);
 		header.setIdentifier(identifier);
 				
 		lit.getHeader().add(header);
 		
-		
-		
 		return lit;
 	}
 	
@@ -91,12 +91,12 @@ public class IdentifierListDeliverer {
 	public ListIdentifiersType getIdentifierList(String from, String to) throws ParseException{
 		
 		String identifier;
-		QueryBuilder queryBuilder = QueryBuilders.rangeQuery("created").from(from).to(to);
+		QueryBuilder queryBuilder = QueryBuilders.rangeQuery(rangeField).from(from).to(to);
 		
 		SearchRequestBuilder getListIdentifiersValuesBuilder = oaiEsClient.getOaiESClient()
 				.prepareSearch(oaiEsClient.getEsIndex())
 				.setTypes(oaiEsClient.getEsType())
-				.addFields("textgridUri", "created")
+				.addFields(identifierListFields)
 				.setQuery(queryBuilder)
 				.setSize(10);
 		
@@ -140,9 +140,7 @@ public class IdentifierListDeliverer {
 
 		String[] setParts = set.split(":");
 		
-		System.out.println(setParts[0] + " " +  setParts[1]);
-		
-		QueryBuilder rangeQuery = QueryBuilders.rangeQuery("created").from(from).to(to);
+		QueryBuilder rangeQuery = QueryBuilders.rangeQuery(rangeField).from(from).to(to);
 		
 		QueryBuilder fieldQuer = QueryBuilders.matchPhraseQuery(setParts[0], setParts[1]);
 		
@@ -151,7 +149,7 @@ public class IdentifierListDeliverer {
 		SearchRequestBuilder getListIdentifiersValuesBuilder = oaiEsClient.getOaiESClient()
 				.prepareSearch(oaiEsClient.getEsIndex())
 				.setTypes(oaiEsClient.getEsType())
-				.addFields("textgridUri", "created")
+				.addFields(identifierListFields)
 				.setQuery(boolQuery)
 				.setSize(10);
 		
@@ -217,4 +215,20 @@ public class IdentifierListDeliverer {
 	public boolean getIdExist(){
 		return idExist;
 	}
+
+	public String[] getIdentifierListFields() {
+		return identifierListFields;
+	}
+
+	public void setIdentifierListFields(String[] identifierListFields) {
+		this.identifierListFields = identifierListFields;
+	}
+
+	public String getFieldForRange() {
+		return rangeField;
+	}
+
+	public void setFieldForRange(String fieldForRange) {
+		this.rangeField = fieldForRange;
+	}
 }
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDeliverer.java
index 94875f4baf11e20b13ab04bf008510465ae06364..e09a1e76c2568bca860ef3e7045706425e08e04d 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDeliverer.java
@@ -20,10 +20,6 @@ public class MetadataFormatListDeliverer {
 		
 	public ListMetadataFormatsType setMetadataFormatList(String id){
 		
-		/*OAI_ESClient esClient = new OAI_ESClient("10.160.254.106", TGConstants.ES_PORT, "tg-search-es-ws4");
-		esClient.setEsIndex("textgrid-public-ws4");
-		esClient.setEsType("metadata");*/
-		
 			GetRequestBuilder recordById = oaiEsClient.getOaiESClient().prepareGet()
 				.setIndex(oaiEsClient.getEsIndex())
 				.setType(oaiEsClient.getEsType())
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 4e77725ccacf14251c8a33b26809867de82d77a0..f0e99b99655294ac548a5ae83c36d418846c4f26 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
@@ -47,19 +47,27 @@ public class OAIPMHImpl implements OAIPMHProducer{
 	private			RepIdentification rep;
 	private			RecordListDeliverer recordList;
 	private 		RecordDeliverer recDeliv;
+	private			MetadataFormatListDeliverer metadataFormatList;
+	private			SetDeliverer setList;
+	private			IdentifierListDeliverer identifierList;
 
 	
 	
 	public OAIPMHImpl(OAI_ESClient oaiEsClient, 
 					  RepIdentification rep, 
 					  RecordDeliverer recDeliv, 
-					  RecordListDeliverer recordList){
-		
+					  RecordListDeliverer recordList,
+					  MetadataFormatListDeliverer metadataFormatList,
+					  SetDeliverer setList,
+					  IdentifierListDeliverer identifierList){
 		
 		this.oaiEsClient=oaiEsClient;
 		this.rep = rep;
 		this.recDeliv = recDeliv;
 		this.recordList = recordList;
+		this.metadataFormatList = metadataFormatList;
+		this.setList = setList;
+		this.identifierList = identifierList;
 	}
 	
 	public OAIPMHImpl(OAI_ESClient oaiEsClient, RepIdentification rep){
@@ -264,10 +272,10 @@ public class OAIPMHImpl implements OAIPMHProducer{
 	public JAXBElement<OAIPMHType> listIdentifiersRequest(ObjectFactory obf, OAIPMHType oai, RequestType request) throws ParseException{
 		
 		List<String> errorValues = new ArrayList<String>();
-		IdentifierListDeliverer listIdDeliv = new IdentifierListDeliverer(oaiEsClient);
+		//IdentifierListDeliverer listIdDeliv = new IdentifierListDeliverer(oaiEsClient);
 		JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
 		
-		if(listIdDeliv.requestChecker(request)){
+		if(identifierList.requestChecker(request)){
 			
 			if(!request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)){
 				try {
@@ -286,8 +294,8 @@ public class OAIPMHImpl implements OAIPMHProducer{
 				try {
 				
 					if(request.getSet()==null){
-						if(listIdDeliv.getIdentifierList(request.getFrom(), request.getUntil())!=null){
-							listIDs = listIdDeliv.getIdentifierList(request.getFrom(), request.getUntil());
+						if(identifierList.getIdentifierList(request.getFrom(), request.getUntil())!=null){
+							listIDs = identifierList.getIdentifierList(request.getFrom(), request.getUntil());
 							oai.setListIdentifiers(listIDs);
 						}else{
 							error.setError(TGConstants.OAI_NO_RECORD_MATCH).setValue("The combination of the values " + request.getFrom() + " and " +
@@ -295,8 +303,8 @@ public class OAIPMHImpl implements OAIPMHProducer{
 							oai.getError().add(error.setError(TGConstants.OAI_NO_RECORD_MATCH));
 						}
 					}else{
-						if(request.getSet()!=null && listIdDeliv.getIdentifierListWithSet(request.getFrom(), request.getUntil(), request.getSet())!=null){
-							listIDs = listIdDeliv.getIdentifierListWithSet(request.getFrom(), request.getUntil(), request.getSet());
+						if(request.getSet()!=null && identifierList.getIdentifierListWithSet(request.getFrom(), request.getUntil(), request.getSet())!=null){
+							listIDs = identifierList.getIdentifierListWithSet(request.getFrom(), request.getUntil(), request.getSet());
 							oai.setListIdentifiers(listIDs);
 						}else{
 							error.setError(TGConstants.OAI_NO_RECORD_MATCH).setValue("The combination of the values " + request.getFrom() + " and " +
@@ -332,10 +340,10 @@ public class OAIPMHImpl implements OAIPMHProducer{
 	public JAXBElement<OAIPMHType> listSetsRequest(ObjectFactory obf, OAIPMHType oai, RequestType request){
 		
 		ListSetsType setList = new ListSetsType();
-		SetDeliverer sets = new SetDeliverer(oaiEsClient);
+		//SetDeliverer sets = new SetDeliverer(oaiEsClient);
 		JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
 		
-		setList = sets.setListBuilder();
+		setList = this.setList.setListBuilder();
 		
 		oai.setListSets(setList);
 		
@@ -348,15 +356,14 @@ public class OAIPMHImpl implements OAIPMHProducer{
 	public JAXBElement<OAIPMHType> listMetadataFormatsRequest(String id, ObjectFactory obf, OAIPMHType oai, RequestType request){
 		List<String> errorValues = new ArrayList<String>();
 		ListMetadataFormatsType listMF = new ListMetadataFormatsType();
-		MetadataFormatListDeliverer mfld = new MetadataFormatListDeliverer(oaiEsClient);
 		JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
 		
-		if(mfld.requestChecker(request)){
+		if(metadataFormatList.requestChecker(request)){
 			
 			if(id.isEmpty()){
-				listMF = mfld.setMetadataFormatListWithoutId();
+				listMF = metadataFormatList.setMetadataFormatListWithoutId();
 			}else {
-				listMF = mfld.setMetadataFormatList(request.getIdentifier());
+				listMF = metadataFormatList.setMetadataFormatList(request.getIdentifier());
 			}
 			
 			if(listMF!=null){
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java
index 80030e77ee274cde4b45a3de8b4899a39a3c0a47..dbfdae6cd7d34fe78a857d3105d80f8e247d54a3 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDeliverer.java
@@ -54,6 +54,23 @@ public class RecordDeliverer {
 	private List<String> titles = new ArrayList<String>();
 	private List<String> types = new ArrayList<String>();
 	
+	private String[]							contributorList;
+	private String[]							coverageList;
+	private String[]							creatorList;
+	private String[]							dateList;
+	private String[]							descriptionList;
+	private String[]							formatList;
+	private String[]							identifierList;
+	private String[]							languageList;
+	private String[]							publisherList;
+	private String[]							relationList;
+	private String[]							relationForWorkList;
+	private String[]							rightList;
+	private String[]							sourceList;
+	private String[]							subjectList;
+	private String[]							titleList;
+	private String[]							typeList;
+	
 	private static org.apache.commons.logging.Log log = LogFactory.getLog(RecordDeliverer.class);
 	
 	private RecordType record = new RecordType();
@@ -159,24 +176,24 @@ public class RecordDeliverer {
 	}
 	
 	
-	public void putContentIntoDCFieldLists(GetResponse responseWorkValues, GetResponse responseWorkValues2){
+	public void putContentIntoDCFieldLists(GetResponse responseWorkValues, GetResponse relatedWorkObject){
 		
-		contributors = DublinCoreFieldLoader.setContributor(responseWorkValues, TGConstants.CONTRIBUTOR_LIST);
-		formats 	 = DublinCoreFieldLoader.setFormat(responseWorkValues, TGConstants.FORMAT_LIST);
-		identifiers  = DublinCoreFieldLoader.setIdentifier(responseWorkValues, TGConstants.IDENTIFIER_LIST);
-		languages 	 = DublinCoreFieldLoader.setLanguage(responseWorkValues, TGConstants.LANGUAGE_LIST);
-		publishers 	 = DublinCoreFieldLoader.setPublisher(responseWorkValues, TGConstants.PUBLISHER_LIST);
-		relations 	 = DublinCoreFieldLoader.setRelationForWork(responseWorkValues, TGConstants.RELATIONS_LIST);
-		rights 		 = DublinCoreFieldLoader.setRights(responseWorkValues, TGConstants.RIGHTS_LIST);
-		sources 	 = DublinCoreFieldLoader.setSources(responseWorkValues, TGConstants.SOURCE_LIST);
-		titles 		 = DublinCoreFieldLoader.setTitle(responseWorkValues, TGConstants.TITLE_LIST);
-		coverages 	 = DublinCoreFieldLoader.setCoverage(responseWorkValues, TGConstants.COVERAGE_LIST);
-		creators 	 = DublinCoreFieldLoader.setCreator(responseWorkValues2, TGConstants.CREATOR_LIST);
-		dates 		 = DublinCoreFieldLoader.setDate(responseWorkValues2, TGConstants.DATE_LIST);
-		descriptions = DublinCoreFieldLoader.setDescription(responseWorkValues2, TGConstants.DESCRIPTION_LIST);
-		relations    = DublinCoreFieldLoader.setRelationForWork(responseWorkValues2, TGConstants.RELATIONS_FOR_WORK_LIST);
-		subjects 	 = DublinCoreFieldLoader.setSubject(responseWorkValues2, TGConstants.SUBJECT_LIST);
-		types 		 = DublinCoreFieldLoader.setType(responseWorkValues2, TGConstants.TYPE_LIST);
+		contributors = DublinCoreFieldLoader.setContributor(responseWorkValues, contributorList);
+		formats 	 = DublinCoreFieldLoader.setFormat(responseWorkValues, formatList);
+		identifiers  = DublinCoreFieldLoader.setIdentifier(responseWorkValues, identifierList);
+		languages 	 = DublinCoreFieldLoader.setLanguage(responseWorkValues, languageList);
+		publishers 	 = DublinCoreFieldLoader.setPublisher(responseWorkValues, publisherList);
+		relations 	 = DublinCoreFieldLoader.setRelationForWork(responseWorkValues, relationList);
+		rights 		 = DublinCoreFieldLoader.setRights(responseWorkValues, rightList);
+		sources 	 = DublinCoreFieldLoader.setSources(responseWorkValues, sourceList);
+		titles 		 = DublinCoreFieldLoader.setTitle(responseWorkValues, titleList);
+		coverages 	 = DublinCoreFieldLoader.setCoverage(responseWorkValues, coverageList);
+		creators 	 = DublinCoreFieldLoader.setCreator(relatedWorkObject, creatorList);
+		dates 		 = DublinCoreFieldLoader.setDate(relatedWorkObject, dateList);
+		descriptions = DublinCoreFieldLoader.setDescription(relatedWorkObject, descriptionList);
+		relations    = DublinCoreFieldLoader.setRelationForWork(relatedWorkObject, relationForWorkList);
+		subjects 	 = DublinCoreFieldLoader.setSubject(relatedWorkObject, subjectList);
+		types 		 = DublinCoreFieldLoader.setType(relatedWorkObject, typeList);
 		
 	}
 	
@@ -205,7 +222,71 @@ public class RecordDeliverer {
 		dbc.setType(types);
 		
 	}
-
+	
+	public void setContributor(String[] contributorList){
+		this.contributorList = contributorList;
+	}
+	
+	public void setCoverage(String[] coveragesList){
+		this.coverageList = coveragesList;
+	}
+	
+	public void setCreators(String[] creatorsList){
+		this.creatorList = creatorsList;
+	}
+	
+	public void setDates(String[] datesList){
+		this.dateList = datesList;
+	}
+	
+	public void setDescriptions(String[]descriptionsList){
+		this.descriptionList = descriptionsList;
+	}
+	
+	public void setFormats(String[] formatsList){
+		this.formatList = formatsList;
+	}
+	
+	public void setIdentifiers(String[] identifiersList){
+		this.identifierList = identifiersList;
+	}
+	
+	public void setLanguages(String[] languagesList){
+		this.languageList = languagesList;
+	}
+	
+	public void setPublishers(String[] publishersList){
+		this.publisherList = publishersList;
+	}
+	
+	public void setRelations(String[] relationsList){
+		this.relationList = relationsList;
+	}
+	
+	
+	public void setRelationsForWork(String[] relationsList){
+		this.relationForWorkList = relationsList;
+	}
+	
+	public void setRights(String[] rightsList){
+		this.rightList = rightsList;
+	}
+	public void setSources(String[] sourcesList){
+		this.sourceList = sourcesList;
+	}
+	
+	public void setSubjects(String[] subjectsList){
+		this.subjectList = subjectsList;
+	}
+	
+	public void setTitles(String[] titlesList){
+		this.titleList = titlesList;
+	}
+	
+	public void setTypes(String[] typesList){
+		this.typeList = typesList;
+	}
+	
 	/**
 	 * Checking if necessary values are set and not allowed values are not set
 	 * @param request the request from the client
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
index 12a6e5ccb3d8a8d4f7988a0e625fdb3a25008188..f2b3e5bf901920ecae58a9394997cf9419e528c6 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDeliverer.java
@@ -75,7 +75,25 @@ public class RecordListDeliverer {
 	private List<String>							subjects			= new ArrayList<String>();
 	private List<String>							titles				= new ArrayList<String>();
 	private List<String>							types				= new ArrayList<String>();
-
+	
+	
+	private String[]							contributorList;
+	private String[]							coverageList;
+	private String[]							creatorList;
+	private String[]							dateList;
+	private String[]							descriptionList;
+	private String[]							formatList;
+	private String[]							identifierList;
+	private String[]							languageList;
+	private String[]							publisherList;
+	private String[]							relationList;
+	private String[]							relationForWorkList;
+	private String[]							rightList;
+	private String[]							sourceList;
+	private String[]							subjectList;
+	private String[]							titleList;
+	private String[]							typeList;
+	
 	// TODO Make configurable!
 	//private String									aggregatorURL		= "http://textgrid-esx2.gwdg.de/1.0/aggregator/teicorpus/";
 
@@ -111,9 +129,12 @@ public class RecordListDeliverer {
 				.setType(esClient.getEsType())
 				.setId(id)
 				.setFields(workFields);
-
+		System.out.println("halejulja");
 		GetResponse responseWorkValues = getWorkValues.execute().actionGet();
 		
+		System.out.println(responseWorkValues.getField("work.genre")
+							.getValue().toString());
+		
 		return responseWorkValues;
 	}
 	
@@ -169,11 +190,12 @@ public class RecordListDeliverer {
 						}
 						
 						if(textgrid == true){
+							System.out.println("work found");
 							String workUri = hit.getFields()
 								.get(TGConstants.EDITION_ISEDITIONOF).values().get(0)
 								.toString().substring(TGConstants.TG_ITEM_IDENTIFIER_PREFIX
 										.length());
-											
+							System.out.println(workUri);
 							putContentIntoDCFieldLists(hit, furtherDCElements(workUri, oaiEsClient));
 						}
 						
@@ -185,24 +207,26 @@ public class RecordListDeliverer {
 		}				
 	}
 	
+
+	
 	public void putContentIntoDCFieldLists(SearchHit hit, GetResponse responseWorkValues){
 		
-		contributors = DublinCoreFieldLoader.setContributor(hit, TGConstants.CONTRIBUTOR_LIST);
-		formats 	 = DublinCoreFieldLoader.setFormat(hit, TGConstants.FORMAT_LIST);
-		identifiers  = DublinCoreFieldLoader.setIdentifier(hit, TGConstants.IDENTIFIER_LIST);
-		languages 	 = DublinCoreFieldLoader.setLanguage(hit, TGConstants.LANGUAGE_LIST);
-		publishers 	 = DublinCoreFieldLoader.setPublisher(hit, TGConstants.PUBLISHER_LIST);
-		relations 	 = DublinCoreFieldLoader.setRelation(hit, TGConstants.RELATIONS_LIST);
-		rights 		 = DublinCoreFieldLoader.setRights(hit, TGConstants.RIGHTS_LIST);
-		sources 	 = DublinCoreFieldLoader.setSources(hit, TGConstants.SOURCE_LIST);
-		titles 		 = DublinCoreFieldLoader.setTitle(hit, TGConstants.TITLE_LIST);
-		coverages 	 = DublinCoreFieldLoader.setCoverage(responseWorkValues, TGConstants.COVERAGE_LIST);
-		creators 	 = DublinCoreFieldLoader.setCreator(responseWorkValues, TGConstants.CREATOR_LIST);
-		dates 		 = DublinCoreFieldLoader.setDate(responseWorkValues, TGConstants.DATE_LIST);
-		descriptions = DublinCoreFieldLoader.setDescription(responseWorkValues, TGConstants.DESCRIPTION_LIST);
-		relations    = DublinCoreFieldLoader.setRelationForWork(responseWorkValues, TGConstants.RELATIONS_FOR_WORK_LIST);
-		subjects 	 = DublinCoreFieldLoader.setSubject(responseWorkValues, TGConstants.SUBJECT_LIST);
-		types 		 = DublinCoreFieldLoader.setType(responseWorkValues, TGConstants.TYPE_LIST);
+		contributors = DublinCoreFieldLoader.setContributor(hit, contributorList);
+		coverages 	 = DublinCoreFieldLoader.setCoverage(responseWorkValues, coverageList);
+		creators 	 = DublinCoreFieldLoader.setCreator(responseWorkValues, creatorList);
+		dates 		 = DublinCoreFieldLoader.setDate(responseWorkValues, dateList);
+		descriptions = DublinCoreFieldLoader.setDescription(responseWorkValues, descriptionList);
+		formats 	 = DublinCoreFieldLoader.setFormat(hit, formatList);
+		identifiers  = DublinCoreFieldLoader.setIdentifier(hit, identifierList);
+		languages 	 = DublinCoreFieldLoader.setLanguage(hit, languageList);
+		publishers 	 = DublinCoreFieldLoader.setPublisher(hit, publisherList);
+		relations 	 = DublinCoreFieldLoader.setRelation(hit, relationList);
+		relations    = DublinCoreFieldLoader.setRelationForWork(responseWorkValues, relationForWorkList);
+		rights 		 = DublinCoreFieldLoader.setRights(hit, rightList);
+		sources 	 = DublinCoreFieldLoader.setSources(hit, sourceList);
+		subjects 	 = DublinCoreFieldLoader.setSources(hit, subjectList);
+		titles 		 = DublinCoreFieldLoader.setTitle(hit, titleList);
+		types 		 = DublinCoreFieldLoader.setType(responseWorkValues, typeList);
 		
 	}
 	
@@ -320,6 +344,70 @@ public class RecordListDeliverer {
 		this.types.clear();
 	}
 
+	public void setContributor(String[] contributorList){
+		this.contributorList = contributorList;
+	}
+	
+	public void setCoverage(String[] coveragesList){
+		this.coverageList = coveragesList;
+	}
+	
+	public void setCreators(String[] creatorsList){
+		this.creatorList = creatorsList;
+	}
+	
+	public void setDates(String[] datesList){
+		this.dateList = datesList;
+	}
+	
+	public void setDescriptions(String[]descriptionsList){
+		this.descriptionList = descriptionsList;
+	}
+	
+	public void setFormats(String[] formatsList){
+		this.formatList = formatsList;
+	}
+	
+	public void setIdentifiers(String[] identifiersList){
+		this.identifierList = identifiersList;
+	}
+	
+	public void setLanguages(String[] languagesList){
+		this.languageList = languagesList;
+	}
+	
+	public void setPublishers(String[] publishersList){
+		this.publisherList = publishersList;
+	}
+	
+	public void setRelations(String[] relationsList){
+		this.relationList = relationsList;
+	}
+	
+	
+	public void setRelationsForWork(String[] relationsList){
+		this.relationForWorkList = relationsList;
+	}
+	
+	public void setRights(String[] rightsList){
+		this.rightList = rightsList;
+	}
+	public void setSources(String[] sourcesList){
+		this.sourceList = sourcesList;
+	}
+	
+	public void setSubjects(String[] subjectsList){
+		this.subjectList = subjectsList;
+	}
+	
+	public void setTitles(String[] titlesList){
+		this.titleList = titlesList;
+	}
+	
+	public void setTypes(String[] typesList){
+		this.typeList = typesList;
+	}
+		
 	/**
 	 * @param request
 	 * @return
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
index 7bdd71880f7080c43a377188ed2e168a8c45fd97..e9947c44a8aff88cae7fe7da2aca02b007ec8cdb 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
@@ -111,13 +111,8 @@ public final class TGConstants {
 	public static final String[] SUBJECT_LIST		= {WORK_ID};
 	public static final String[] TITLE_LIST 		= {TITLE};
 	
-	
-	
-	
-	
-	
-	
-	
 	public static final String[] TYPE_LIST			= {WORK_GENRE, WORK_TYPE};
 	
+	public static final String[] IDENTIFIER_LIST_FIELDS = {URI, CREATED};
+	public static final String RANGE_FIELD = CREATED;
 }
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
index b8667bbe8614c15056b53fc0fcb578ada39ef12d..33dadfd14707acc3c2b9891108c4c95587af728f 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
@@ -24,18 +24,25 @@ public class OaiPmhTest {
 	private RepIdentification   rep = new RepIdentification("TextGrid-Repository", "www.textgridrep.de", bla, "2011-06-11T02:32:40Z", bla2, "2.0", "textgrid-support@gwdg.de");
 	private RecordDeliverer 	record = new RecordDeliverer(oaiEsClient, TGConstants.TGFields, TGConstants.TGWorkFields, true, false);
 	private RecordListDeliverer recordList = new RecordListDeliverer(oaiEsClient, TGConstants.TGFields, TGConstants.TGWorkFields, true, false);
+	private MetadataFormatListDeliverer metadataFormatList = new MetadataFormatListDeliverer(oaiEsClient);
+	private SetDeliverer				setList = new SetDeliverer(oaiEsClient);
+	private IdentifierListDeliverer identifierList = new IdentifierListDeliverer(oaiEsClient);
 	
-	//private OAIPMHImpl			testRequest						= new OAIPMHImpl(oaiEsClient, record);
-	//private OAIPMHImpl			repIdentificationTestRequest	= new OAIPMHImpl(oaiEsClient, rep);
-	//private OAIPMHImpl			recordListRequest				= new OAIPMHImpl(oaiEsClient, recordList);
 	
-	private OAIPMHImpl			request				= new OAIPMHImpl(oaiEsClient, rep, record, recordList);
+	private OAIPMHImpl request = new OAIPMHImpl(
+							oaiEsClient, 
+							rep, 
+							record, 
+							recordList, 
+							metadataFormatList,
+							setList,
+							identifierList);
 
 	
 	@BeforeClass
 	public static void setUp() throws Exception {
 
-		oaiEsClient = new OAI_ESClient("localhost", 9302, "esx-1-test-instance");
+		oaiEsClient = new OAI_ESClient("localhost", 9302, "tg-dev1-test-instance");
 		oaiEsClient.setEsIndex("textgrid-public");
 		oaiEsClient.setEsType("metadata");
 
@@ -108,7 +115,6 @@ public class OaiPmhTest {
 		JAXB.marshal(z, System.out);
 		System.out.println("-----------------------------------\n");
 	}
-
 	
 	 @Test 
 	 @Ignore 
@@ -124,10 +130,27 @@ public class OaiPmhTest {
 	@Test
 	@Ignore
 	public void testGetRequestGetRecordError2() throws ParseException {
-		System.out
-				.println("Test for the verb \"GetRecord\" with succesfull response");
+		
+		record.setContributor(TGConstants.CONTRIBUTOR_LIST);
+		record.setCoverage(TGConstants.COVERAGE_LIST);
+		record.setCreators(TGConstants.CREATOR_LIST);
+		record.setDates(TGConstants.DATE_LIST);
+		record.setDescriptions(TGConstants.DESCRIPTION_LIST);
+		record.setFormats(TGConstants.FORMAT_LIST);
+		record.setIdentifiers(TGConstants.IDENTIFIER_LIST);
+		record.setLanguages(TGConstants.LANGUAGE_LIST);
+		record.setPublishers(TGConstants.PUBLISHER_LIST);
+		record.setRelations(TGConstants.RELATIONS_LIST);
+		record.setRelationsForWork(TGConstants.RELATIONS_FOR_WORK_LIST);
+		record.setRights(TGConstants.RIGHTS_LIST);
+		record.setSources(TGConstants.SOURCE_LIST);
+		record.setSubjects(TGConstants.SUBJECT_LIST);
+		record.setTitles(TGConstants.TITLE_LIST);
+		record.setTypes(TGConstants.TYPE_LIST);
+		
+		System.out.println("Test for the verb \"GetRecord\" with succesfull response");
 		JAXBElement<OAIPMHType> p = request.getRequest("GetRecord",
-				"wr71.0", "oai_dc", "", "", "", "");
+				"7t.0", "oai_dc", "", "", "", "");
 		JAXB.marshal(p, System.out);
 		System.out.println("-----------------------------------\n");
 	}
@@ -174,11 +197,37 @@ public class OaiPmhTest {
 		System.out); System.out.println("-----------------------------------\n");
 	}
 	
+	@Test
+	@Ignore 
+	public void testListRecords2() throws ParseException{
+		recordList.setContributor(TGConstants.CONTRIBUTOR_LIST);
+		recordList.setCoverage(TGConstants.COVERAGE_LIST);
+		recordList.setCreators(TGConstants.CREATOR_LIST);
+		recordList.setDates(TGConstants.DATE_LIST);
+		recordList.setDescriptions(TGConstants.DESCRIPTION_LIST);
+		recordList.setFormats(TGConstants.FORMAT_LIST);
+		recordList.setIdentifiers(TGConstants.IDENTIFIER_LIST);
+		recordList.setLanguages(TGConstants.LANGUAGE_LIST);
+		recordList.setPublishers(TGConstants.PUBLISHER_LIST);
+		recordList.setRelations(TGConstants.RELATIONS_LIST);
+		recordList.setRelationsForWork(TGConstants.RELATIONS_FOR_WORK_LIST);
+		recordList.setRights(TGConstants.RIGHTS_LIST);
+		recordList.setSources(TGConstants.SOURCE_LIST);
+		recordList.setSubjects(TGConstants.SUBJECT_LIST);
+		recordList.setTitles(TGConstants.TITLE_LIST);
+		recordList.setTypes(TGConstants.TYPE_LIST);
+		
+		
+		JAXBElement<OAIPMHType> r = request.getRequest("ListRecords", "",
+				"oai_dc", "", "", "", ""); JAXB.marshal(r,
+		System.out); System.out.println("-----------------------------------\n");
+	}
+	
 	@Test
 	@Ignore 
 	public void testListMetadataFormats() throws ParseException{
 		JAXBElement<OAIPMHType> r = request.getRequest("ListMetadataFormats",
-				"wr67.0", "", "", "", "", ""); JAXB.marshal(r, System.out);
+				"7t.0", "", "", "", "", ""); JAXB.marshal(r, System.out);
 		System.out.println("-----------------------------------\n"); 
 	}
 	
@@ -195,7 +244,9 @@ public class OaiPmhTest {
 	@Test
 	@Ignore 
 	public void testListIdentifiers() throws ParseException{
-	 
+		identifierList.setFieldForRange(TGConstants.RANGE_FIELD);
+		identifierList.setIdentifierListFields(TGConstants.IDENTIFIER_LIST_FIELDS);
+		
 		JAXBElement<OAIPMHType> r = request.getRequest("ListIdentifiers", "",
 				"oai_dc", "", "", "", ""); JAXB.marshal(r, System.out);
 				System.out.println("-----------------------------------\n"); 
diff --git a/oaipmh-webapp/pom.xml b/oaipmh-webapp/pom.xml
index 32e139608d867026c630ec5a216da220267f515d..ae01b7aa7707bab11baf57d66c9cc11688facbe2 100644
--- a/oaipmh-webapp/pom.xml
+++ b/oaipmh-webapp/pom.xml
@@ -4,12 +4,12 @@
 	<parent>
 		<artifactId>oaipmh</artifactId>
 		<groupId>info.textgrid.middleware</groupId>
-		<version>1.3.9-SNAPSHOT</version>
+		<version>1.3.10-SNAPSHOT</version>
 	</parent>
 	<groupId>info.textgrid.middleware</groupId>
 	<artifactId>oaipmh-webapp</artifactId>
 	<packaging>war</packaging>
-	<version>1.3.9-SNAPSHOT</version>
+	<version>1.3.10-SNAPSHOT</version>
 	<name>TextGrid :: OAI-PMH :: Webapp</name>
 	<url>http://maven.apache.org</url>
 	<profiles>
diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
index 9cd691dc3f0a9a4396ac04eaee10dfedff1c5bfe..be8b69dc50087ddd92528ca3c989202eeffb7e8b 100644
--- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
+++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
@@ -74,6 +74,7 @@ http://www.springframework.org/schema/util/spring-util-3.1.xsd
 	</bean>	
 	
 	<bean id="RecordList" class="info.textgrid.middleware.RecordListDeliverer">
+		<constructor-arg ref="ElasticSearchClient" />
 		<constructor-arg index="1">
 			<value>${fields}</value>
 		</constructor-arg>
@@ -86,9 +87,28 @@ http://www.springframework.org/schema/util/spring-util-3.1.xsd
 		<constructor-arg index="4">
 			<value>${dariah}</value>
 		</constructor-arg>
+		<property name="contributorList" value="${contributorList}" />
+		<property name="coverageList" value="${coverageList}" />
+		<property name="creatorList" value="${creatorList}" />
+		<property name="datesList" value="${datesList}" />
+		<property name="descriptionsList" value="${descriptionsList}" />
+		<property name="formatList" value="${formatList}" />
+		<property name="identifersList" value="${identifersList}" />
+		<property name="languageList" value="${languageList}" />
+		<property name="publisherList" value="${publisherList}" />
+		<property name="relationList" value="${relationList}" />
+		<property name="relationForWorkList" value="${relationForWorkList}" />
+		<property name="rightList" value="${rightList}" />
+		<property name="sourceList" value="${sourceList}" />
+		<property name="subjectList" value="${subjectList}" />
+		<property name="titleList" value="${titleList}" />
+		<property name="typeList" value="${typeList}" />
 	</bean>
 	
+	
+	
 	<bean id="Record" class="info.textgrid.middleware.RecordDeliverer">
+		<constructor-arg ref="ElasticSearchClient" />
 		<constructor-arg index="1">
 			<value>${fields}</value>
 		</constructor-arg>
@@ -101,8 +121,31 @@ http://www.springframework.org/schema/util/spring-util-3.1.xsd
 		<constructor-arg index="4">
 			<value>${dariah}</value>
 		</constructor-arg>
+		<property name="contributorList" value="${contributorList}" />
+		<property name="coverageList" value="${coverageList}" />
+		<property name="creatorList" value="${creatorList}" />
+		<property name="datesList" value="${datesList}" />
+		<property name="descriptionsList" value="${descriptionsList}" />
+		<property name="formatList" value="${formatList}" />
+		<property name="identifersList" value="${identifersList}" />
+		<property name="languageList" value="${languageList}" />
+		<property name="publisherList" value="${publisherList}" />
+		<property name="relationList" value="${relationList}" />
+		<property name="relationForWorkList" value="${relationForWorkList}" />
+		<property name="rightList" value="${rightList}" />
+		<property name="sourceList" value="${sourceList}" />
+		<property name="subjectList" value="${subjectList}" />
+		<property name="titleList" value="${titleList}" />
+		<property name="typeList" value="${typeList}" />
 	</bean>
 	
+	
+	<bean id="ListIdentifier" class="info.textgrid.middleware.ListIdentifierDeliverer">
+		<property name="rangeField" value="${rangeField}"/>
+		<property name="identifierListFields" value="created"></property>		
+	</bean>
+	
+	
 	<!-- REST Interface -->
 	<bean id="rest" class="info.textgrid.middleware.Rest" />
 
@@ -115,7 +158,9 @@ http://www.springframework.org/schema/util/spring-util-3.1.xsd
 
 	<bean id="oai" class="info.textgrid.middleware.OAIPMHImpl">
 		<constructor-arg ref="ElasticSearchClient" />
-		<constructor-arg ref="RepIdentification"/>	
+		<constructor-arg ref="RepIdentification"/>
+		<constructor-arg ref="RecordList"/>
+		<constructor-arg ref="record"/>
 	</bean>
 	
 
diff --git a/pom.xml b/pom.xml
index 3792c0ab0ddd56e4030292af09c1674c9437e278..f29078f8d74852aefae94a1a120e44d292047415 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>info.textgrid.middleware</groupId>
   <artifactId>oaipmh</artifactId>
-  <version>1.3.9-SNAPSHOT</version>
+  <version>1.3.10-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TextGrid :: TG-OAI-PMH :: Parent</name>
   <properties>