diff --git a/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java b/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
index 622ed76..ba12856 100644
--- a/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
+++ b/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
@@ -1,26 +1,91 @@
 package de.ids_mannheim.korap.dao;
 
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.antlr.v4.parse.ANTLRParser.id_return;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import de.ids_mannheim.korap.entity.Annotation;
+import de.ids_mannheim.korap.entity.AnnotationPair;
 
 
 /**
- * AnnotationDao manages SQL queries regarding information about
- * annotations, e.g foundries and layers.
+ * AnnotationDao manages SQL queries regarding annotations including
+ * foundry and layer pairs.
  * 
  * @author margaretha
  *
  */
+@Component
 public class AnnotationDao {
 
     private static Logger jlog = LoggerFactory.getLogger(AnnotationDao.class);
     private NamedParameterJdbcTemplate jdbcTemplate;
 
+    @PersistenceContext
+    private EntityManager entityManager;
 
-    public AnnotationDao () {
-        // TODO Auto-generated constructor stub
+
+    /**
+     * Select all foundry and layer pairs.
+     * 
+     * @return a list of all foundry and layer pairs.
+     */
+    public List<AnnotationPair> getAllFoundryLayerPairs () {
+        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+        CriteriaQuery<AnnotationPair> query = criteriaBuilder
+                .createQuery(AnnotationPair.class);
+        Root<AnnotationPair> annotationPair = query.from(AnnotationPair.class);
+        annotationPair.fetch("annotation1");
+        annotationPair.fetch("annotation2");
+        query.select(annotationPair);
+        Query q = entityManager.createQuery(query);
+        return q.getResultList();
     }
     
-    
+    public List<AnnotationPair> getAllAnnotationDescriptions () {
+        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+        CriteriaQuery<AnnotationPair> query = criteriaBuilder
+                .createQuery(AnnotationPair.class);
+        Root<AnnotationPair> annotationPair = query.from(AnnotationPair.class);
+        annotationPair.fetch("annotation1");
+        annotationPair.fetch("annotation2");
+        annotationPair.fetch("values");
+        query.select(annotationPair);
+        Query q = entityManager.createQuery(query);
+        return q.getResultList();
+    }
+
+
+    /**
+     * Select foundry and layer pairs' information of the given foundries.
+     * 
+     * @return a list of foundry and layer pairs.
+     */
+    public List<AnnotationPair> getFoundryLayerPairs (List<String> foundries) {
+        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+
+        CriteriaQuery<Object> query = criteriaBuilder.createQuery();
+        Root<Annotation> annotation = query.from(Annotation.class);
+        Root<AnnotationPair> annotationPair = query.from(AnnotationPair.class);
+        Predicate foundryPredicate = criteriaBuilder.equal(annotation.get("symbol"),
+                foundries);
+        Predicate valuePredicate =  criteriaBuilder.equal(annotationPair.get("value").get("id"),
+                annotation.get("id"));
+        Predicate wherePredicate = criteriaBuilder.and(foundryPredicate,valuePredicate);
+        query.multiselect(annotation, annotationPair).where(wherePredicate);
+        Query q = entityManager.createQuery(query);
+        return q.getResultList();
+    }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
index 564ec4e..46c6432 100644
--- a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
+++ b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
@@ -28,12 +28,18 @@
 
     @PersistenceContext
     private EntityManager entityManager;
-
+    
+    /** Select all from the resource table  
+     *  
+     * @return a list of resources
+     */
     public List<Resource> getAllResources () {
         CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
         CriteriaQuery<Resource> query = criteriaBuilder.createQuery(Resource.class);
-        Root<Resource> r = query.from(Resource.class);
-        Query q = entityManager.createQuery(query.select(r));
+        Root<Resource> resource = query.from(Resource.class);
+        resource.fetch("layers");
+        query.select(resource);
+        Query q = entityManager.createQuery(query);
         return q.getResultList();
     }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/entity/Annotation.java b/src/main/java/de/ids_mannheim/korap/entity/Annotation.java
index 8943e9c..0dd4546 100644
--- a/src/main/java/de/ids_mannheim/korap/entity/Annotation.java
+++ b/src/main/java/de/ids_mannheim/korap/entity/Annotation.java
@@ -9,15 +9,22 @@
 import lombok.Getter;
 import lombok.Setter;
 
-@Getter
 @Setter
+@Getter
 @Entity
 @Table(name = "annotation")
 public class Annotation {
+
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private int id;
     private String symbol;
     private String type;
     private String description;
+
+    @Override
+    public String toString () {
+        return "id=" + id + ", symbol= " + symbol + ", type= " + type
+                + ", description=" + description;
+    }
 }
diff --git a/src/main/java/de/ids_mannheim/korap/entity/AnnotationPair.java b/src/main/java/de/ids_mannheim/korap/entity/AnnotationPair.java
index 1b9ca7a..3e15d78 100644
--- a/src/main/java/de/ids_mannheim/korap/entity/AnnotationPair.java
+++ b/src/main/java/de/ids_mannheim/korap/entity/AnnotationPair.java
@@ -1,17 +1,25 @@
 package de.ids_mannheim.korap.entity;
 
+import java.util.Set;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 
 import lombok.Getter;
 import lombok.Setter;
 
-@Getter
 @Setter
+@Getter
 @Entity
 @Table(name = "annotation_pair")
 public class AnnotationPair {
@@ -24,6 +32,33 @@
     private int annotationId2;
     @Column(name = "de_description")
     private String germanDescription;
-    // english description
-    private String description;
+    @Column(name = "description")
+    private String englishDescription;
+
+    @OneToOne(fetch=FetchType.LAZY)
+    @JoinColumn(name = "annotation1", insertable = false, updatable = false)
+    private Annotation annotation1;
+
+    @OneToOne(fetch=FetchType.LAZY)
+    @JoinColumn(name = "annotation2", insertable = false, updatable = false)
+    private Annotation annotation2;
+
+    @ManyToMany(fetch=FetchType.LAZY)
+    @JoinTable(
+            name="annotation_pair_value",
+            joinColumns=@JoinColumn(name="pair_id", referencedColumnName="id"),
+            inverseJoinColumns=@JoinColumn(name="value_id", referencedColumnName="id")
+    )
+    private Set<Annotation> values;
+
+    @Override
+    public String toString () {
+        return "id=" + id + ", annotation1=" + annotationId1 + ", annotation2="
+                + annotationId1 + ", description=" + englishDescription
+                + ", germanDescription= " + germanDescription 
+                + "annotation1= "+ annotation1
+                + "annotation2= "+ annotation2;
+                
+    }
+
 }
diff --git a/src/main/java/de/ids_mannheim/korap/entity/Resource.java b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
index b71cf88..18cec9e 100644
--- a/src/main/java/de/ids_mannheim/korap/entity/Resource.java
+++ b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
@@ -1,10 +1,14 @@
 package de.ids_mannheim.korap.entity;
 
+import java.util.Set;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
+import javax.persistence.JoinTable;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToMany;
 import javax.persistence.Table;
 
 import lombok.Getter;
@@ -19,18 +23,27 @@
     @Id
     private String id;
 
-    // german title
-    private String title;
+    @Column(name = "de_title")
+    private String germanTitle;
 
     @Column(name = "en_title")
     private String englishTitle;
-    private String description;
+    
+    @Column(name = "en_description")
+    private String englishDescription;
 
-
+    @ManyToMany(fetch=FetchType.LAZY)
+    @JoinTable(
+            name="resource_layer",
+            joinColumns=@JoinColumn(name="resource_id", referencedColumnName="id"),
+            inverseJoinColumns=@JoinColumn(name="layer_id", referencedColumnName="id")
+    )
+    private Set<AnnotationPair> layers;
+    
     @Override
     public String toString () {
-        return "id=" + id + ", title=" + title + ", english title="
-                + englishTitle + ", description="+description;
+        return "id=" + id + ", germanTitle=" + germanTitle + ", englishTitle="
+                + englishTitle + ", description="+englishDescription+ ", layers= "+layers;
     }
 
 }
diff --git a/src/main/java/de/ids_mannheim/korap/utils/JsonUtils.java b/src/main/java/de/ids_mannheim/korap/utils/JsonUtils.java
index 84537a5..835106b 100644
--- a/src/main/java/de/ids_mannheim/korap/utils/JsonUtils.java
+++ b/src/main/java/de/ids_mannheim/korap/utils/JsonUtils.java
@@ -29,7 +29,7 @@
             return mapper.writeValueAsString(values);
         }
         catch (JsonProcessingException e) {
-            return "";
+            return e.getMessage();
         }
     }
 
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java
index e519a10..06b4299 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java
@@ -12,10 +12,16 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
 
 import com.sun.jersey.spi.container.ResourceFilters;
 
+import de.ids_mannheim.korap.dao.AnnotationDao;
+import de.ids_mannheim.korap.entity.Annotation;
+import de.ids_mannheim.korap.entity.AnnotationPair;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.web.KustvaktServer;
 import de.ids_mannheim.korap.web.filter.AuthFilter;
 import de.ids_mannheim.korap.web.filter.DemoUserFilter;
@@ -28,7 +34,8 @@
  * @author margaretha
  *
  */
-@Path(KustvaktServer.API_VERSION + "/annotation/")
+@Controller
+@Path("annotation/")
 @ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
 @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
 public class AnnotationService {
@@ -36,12 +43,20 @@
     private static Logger jlog = LoggerFactory
             .getLogger(AnnotationService.class);
 
-
+    @Autowired
+    private AnnotationDao annotationDao;
+    
+    /** Returns information about all supported layers
+     * 
+     * @return a json serialization of all supported layers 
+     */
     @GET
     @Path("layers")
     public Response getLayers () {
-        // TODO Auto-generated method stub
-        return Response.status(200).build();
+        List<AnnotationPair> layers = annotationDao.getAllFoundryLayerPairs();
+        String result = JsonUtils.toJSON(layers);
+        jlog.debug("/layers "+layers.toString());
+        return Response.ok(result).build();
     }
 
 
@@ -49,6 +64,7 @@
     @Path("description")
     public Response getAnnotations (@QueryParam("symbol") List<String> symbols,
             String language) {
+        List<AnnotationPair> annotationPairs = null;
         if (language == null || language.isEmpty()) {
             language = "en";
         }
@@ -56,24 +72,31 @@
             throw KustvaktResponseHandler.throwit(StatusCodes.MISSING_ARGUMENT);
         }
         if (symbols.isEmpty() || symbols.contains("*")){
-            // select all 
+            annotationPairs = annotationDao.getAllAnnotationDescriptions(); 
         }
         else {
-            String[] annotationPair;
+            String[] annotationSymbols;
             String foundry, layer;
             
             for (String s : symbols){
-                annotationPair = s.split("/");
-                if (annotationPair.length != 2){
+                annotationSymbols = s.split("/");
+                if (annotationSymbols.length != 2){
                     throw KustvaktResponseHandler.throwit(StatusCodes.PARAMETER_VALIDATION_ERROR);
                 }
-                foundry = annotationPair[0];
-                layer = annotationPair[1];
+                foundry = annotationSymbols[0];
+                layer = annotationSymbols[1];
                 // select
             }
         }
         
-        return Response.status(200).build();
+        if (annotationPairs != null && !annotationPairs.isEmpty()){
+            String result = JsonUtils.toJSON(annotationPairs);
+            jlog.debug("/layers "+annotationPairs.toString());
+            return Response.ok(result).build();
+        }
+        else{
+            return Response.ok().build();
+        }
     }
 
 }
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
index 9e669b4..5407c35 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
@@ -1,5 +1,6 @@
 package de.ids_mannheim.korap.web.service.full;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.ws.rs.GET;
@@ -13,11 +14,13 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Service;
 
 import com.sun.jersey.spi.container.ResourceFilters;
 
 import de.ids_mannheim.korap.dao.ResourceDao;
+import de.ids_mannheim.korap.dto.ResourceDto;
 import de.ids_mannheim.korap.entity.Resource;
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.web.filter.AuthFilter;
@@ -30,32 +33,24 @@
  * @author margaretha
  *
  */
-@Service
+@Controller
 @Path("resource/")
 @ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
 @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
 public class ResourceService {
 
     private static Logger jlog = LoggerFactory.getLogger(ResourceService.class);
-    
+
     @Autowired
-    private ResourceDao resourceDao; 
-    
+    private ResourceDao resourceDao;
+
     @GET
     @Path("info")
     public Response getAllResourceInfo () {
         List<Resource> resources = resourceDao.getAllResources();
         String result = JsonUtils.toJSON(resources);
-//        System.out.println(result);
+        jlog.debug("/info " + resources.toString());
         return Response.ok(result).build();
     }
 
-
-    @POST
-    @Path("layers")
-    public Response getResourceLayers (
-            @QueryParam("resourceId") List<String> resourceIds) {
-        // TODO Auto-generated method stub
-        return Response.status(200).build();
-    }
 }
diff --git a/src/main/resources/db/new-mysql/V1__create_tables.sql b/src/main/resources/db/new-mysql/V1__create_tables.sql
index 9c73af8..926db2a 100644
--- a/src/main/resources/db/new-mysql/V1__create_tables.sql
+++ b/src/main/resources/db/new-mysql/V1__create_tables.sql
@@ -1,13 +1,8 @@
 
---type
---0	value
---1	foundry
---2	layer
---3	key
 CREATE TABLE IF NOT EXISTS annotation(
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
 	symbol VARCHAR(20) NOT NULL,
-	type INTEGER DEFAULT 0,	
+	type VARCHAR(20) NOT NULL,	
 	description VARCHAR(100) NOT NULL,
 	UNIQUE INDEX unique_index (symbol, type)
 );
@@ -31,21 +26,21 @@
 CREATE TABLE IF NOT EXISTS annotation_pair_value(
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
 	pair_id INTEGER NOT NULL,
-	value INTEGER NOT NULL,
-	UNIQUE INDEX unique_index (pair_id, value),
+	value_id INTEGER NOT NULL,
+	UNIQUE INDEX unique_index (pair_id, value_id),
 	FOREIGN KEY (pair_id)
 		REFERENCES annotation_pair (id)
 		ON DELETE CASCADE,
-	FOREIGN KEY (value)
+	FOREIGN KEY (value_id)
 		REFERENCES annotation (id)
 		ON DELETE CASCADE
 );
 
 CREATE TABLE resource(
 	id VARCHAR(100) PRIMARY KEY UNIQUE NOT NULL,
-	title VARCHAR(100) NOT NULL,
+	de_title VARCHAR(100) NOT NULL,
 	en_title VARCHAR(100) NOT NULL,
-	description VARCHAR(100)	
+	en_description VARCHAR(100)	
 );
 
 CREATE TABLE resource_layer(
diff --git a/src/main/resources/db/new-mysql/V2.0__insert_annotations.sql b/src/main/resources/db/new-mysql/V2.0__insert_annotations.sql
index 12501a8..4131cc4 100644
--- a/src/main/resources/db/new-mysql/V2.0__insert_annotations.sql
+++ b/src/main/resources/db/new-mysql/V2.0__insert_annotations.sql
@@ -1,32 +1,32 @@
 --foundries
-INSERT INTO annotation (symbol, type, description) VALUES("base",1,"Base");
-INSERT INTO annotation (symbol, type, description) VALUES("dereko",1,"DeReKo");
-INSERT INTO annotation (symbol, type, description) VALUES("corenlp",1,"CoreNLP");
-INSERT INTO annotation (symbol, type, description) VALUES("cnx",1,"Connexor");
-INSERT INTO annotation (symbol, type, description) VALUES("drukola",1,"DruKoLa");
-INSERT INTO annotation (symbol, type, description) VALUES("glemm",1,"Glemm");
-INSERT INTO annotation (symbol, type, description) VALUES("malt",1,"Malt");
-INSERT INTO annotation (symbol, type, description) VALUES("marmot",1,"MarMot");
-INSERT INTO annotation (symbol, type, description) VALUES("mate",1,"Mate");
-INSERT INTO annotation (symbol, type, description) VALUES("mdp",1,"MD parser");
-INSERT INTO annotation (symbol, type, description) VALUES("opennlp",1,"OpenNLP");
-INSERT INTO annotation (symbol, type, description) VALUES("sgbr",1,"Schreibgebrauch");
-INSERT INTO annotation (symbol, type, description) VALUES("tt",1,"Tree Tagger");
-INSERT INTO annotation (symbol, type, description) VALUES("xip",1,"Xerox Incremental Parser");
+INSERT INTO annotation (symbol, type, description) VALUES("base","foundry","Base");
+INSERT INTO annotation (symbol, type, description) VALUES("dereko","foundry","DeReKo");
+INSERT INTO annotation (symbol, type, description) VALUES("corenlp","foundry","CoreNLP");
+INSERT INTO annotation (symbol, type, description) VALUES("cnx","foundry","Connexor");
+INSERT INTO annotation (symbol, type, description) VALUES("drukola","foundry","DruKoLa");
+INSERT INTO annotation (symbol, type, description) VALUES("glemm","foundry","Glemm");
+INSERT INTO annotation (symbol, type, description) VALUES("malt","foundry","Malt");
+INSERT INTO annotation (symbol, type, description) VALUES("marmot","foundry","MarMot");
+INSERT INTO annotation (symbol, type, description) VALUES("mate","foundry","Mate");
+INSERT INTO annotation (symbol, type, description) VALUES("mdp","foundry","MD parser");
+INSERT INTO annotation (symbol, type, description) VALUES("opennlp","foundry","OpenNLP");
+INSERT INTO annotation (symbol, type, description) VALUES("sgbr","foundry","Schreibgebrauch");
+INSERT INTO annotation (symbol, type, description) VALUES("tt","foundry","Tree Tagger");
+INSERT INTO annotation (symbol, type, description) VALUES("xip","foundry","Xerox Incremental Parser");
 
 --layers
-INSERT INTO annotation (symbol, type, description) VALUES("c",2,"Constituency");
-INSERT INTO annotation (symbol, type, description) VALUES("d",2,"Dependency");
-INSERT INTO annotation (symbol, type, description) VALUES("p",2,"Part of speech");
-INSERT INTO annotation (symbol, type, description) VALUES("l",2,"Lemma");
-INSERT INTO annotation (symbol, type, description) VALUES("lv",2,"Lemma variant");
-INSERT INTO annotation (symbol, type, description) VALUES("m",2,"Morphology");
-INSERT INTO annotation (symbol, type, description) VALUES("ne",2,"Named entity");
-INSERT INTO annotation (symbol, type, description) VALUES("s",2,"Structure");
-INSERT INTO annotation (symbol, type, description) VALUES("syn",2,"Syntax");
+INSERT INTO annotation (symbol, type, description) VALUES("c","layer","Constituency");
+INSERT INTO annotation (symbol, type, description) VALUES("d","layer","Dependency");
+INSERT INTO annotation (symbol, type, description) VALUES("p","layer","Part of speech");
+INSERT INTO annotation (symbol, type, description) VALUES("l","layer","Lemma");
+INSERT INTO annotation (symbol, type, description) VALUES("lv","layer","Lemma variant");
+INSERT INTO annotation (symbol, type, description) VALUES("m","layer","Morphology");
+INSERT INTO annotation (symbol, type, description) VALUES("ne","layer","Named entity");
+INSERT INTO annotation (symbol, type, description) VALUES("s","layer","Structure");
+INSERT INTO annotation (symbol, type, description) VALUES("syn","layer","Syntax");
 
 --values
-INSERT INTO annotation (symbol, type, description) VALUES("s",0,"Sentence");
-INSERT INTO annotation (symbol, type, description) VALUES("p",0,"Paragraph");
-INSERT INTO annotation (symbol, type, description) VALUES("t",0,"Text");
+INSERT INTO annotation (symbol, type, description) VALUES("s","value","Sentence");
+INSERT INTO annotation (symbol, type, description) VALUES("p","value","Paragraph");
+INSERT INTO annotation (symbol, type, description) VALUES("t","value","Text");
 
diff --git a/src/main/resources/db/new-mysql/V2.2__insert_annotation_pair_values.sql b/src/main/resources/db/new-mysql/V2.2__insert_annotation_pair_values.sql
index e2ad49c..9d8963d 100644
--- a/src/main/resources/db/new-mysql/V2.2__insert_annotation_pair_values.sql
+++ b/src/main/resources/db/new-mysql/V2.2__insert_annotation_pair_values.sql
@@ -1,11 +1,11 @@
-INSERT INTO annotation_pair_value (pair_id, value) 
+INSERT INTO annotation_pair_value (pair_id, value_id) 
 	SELECT 
 		(SELECT ap.id FROM annotation_pair as ap WHERE 
 			ap.annotation1 = (SELECT a.id FROM annotation as a WHERE a.symbol="base") AND 
 			ap.annotation2 = (SELECT a.id FROM annotation as a WHERE a.description="Structure")), 
 		(SELECT a.id FROM annotation as a WHERE a.description="Sentence");
 		
-INSERT INTO annotation_pair_value (pair_id, value) 
+INSERT INTO annotation_pair_value (pair_id, value_id) 
 	SELECT 
 		(SELECT ap.id FROM annotation_pair as ap WHERE 
 			ap.annotation1 = (SELECT a.id FROM annotation as a WHERE a.symbol="dereko") AND 
diff --git a/src/main/resources/db/new-mysql/V2.3__insert_resources.sql b/src/main/resources/db/new-mysql/V2.3__insert_resources.sql
index 14918c6..0afba04 100644
--- a/src/main/resources/db/new-mysql/V2.3__insert_resources.sql
+++ b/src/main/resources/db/new-mysql/V2.3__insert_resources.sql
@@ -1 +1 @@
-INSERT INTO resource (id, title, en_title) VALUES("WPD15","Deutsche Wikipedia Artikel 2015","English Wikipedia Articles 2015");
+INSERT INTO resource (id, de_title, en_title) VALUES("WPD15","Deutsche Wikipedia Artikel 2015","English Wikipedia Articles 2015");
diff --git a/src/main/resources/hibernate.properties b/src/main/resources/hibernate.properties
index fa35ac7..76c9add 100644
--- a/src/main/resources/hibernate.properties
+++ b/src/main/resources/hibernate.properties
@@ -1,5 +1,5 @@
 hibernate.dialect=org.hibernate.dialect.MySQLDialect
-hibernate.hbm2ddl.auto=create-drop
+hibernate.hbm2ddl.auto=none
 hibernate.show_sql=true
 hibernate.cache.use_query_cache=false
 hibernate.cache.use_second_level_cache=false
