diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
index 417e713fef57c97660585f47a951225b93588ce1..321b5f50b64f84266ed85d93efae4d8ce5987cab 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/CsvToCanonicalFeatureVector.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import ch.systemsx.cisd.common.utilities.Counters;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLines;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Geometry;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.dto.PlateFeatureValues;
@@ -132,7 +132,7 @@ public class CsvToCanonicalFeatureVector
             FeatureColumn column, Counters<String> counters)
     {
         CanonicalFeatureVector featureVector = new CanonicalFeatureVector();
-        CodeAndTitle codeAndTitle = new CodeAndTitle(column.name);
+        CodeAndLabel codeAndTitle = new CodeAndLabel(column.name);
         ImgFeatureDefDTO featureDef = new ImgFeatureDefDTO();
         featureDef.setLabel(codeAndTitle.getTitle());
         featureDef.setDescription(codeAndTitle.getTitle());
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
index cb311c96f62d7abd7977b1ff90cb91a859f7a342..3badf24bd05cf7c7f2fc1f2df4925f2f1bacff85 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/GenedataFormatToCanonicalFeatureVector.java
@@ -27,7 +27,7 @@ import org.apache.commons.lang.StringUtils;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.utilities.Counters;
 import ch.systemsx.cisd.openbis.dss.etl.featurevector.CanonicalFeatureVector;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Geometry;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.dto.PlateFeatureValues;
@@ -82,7 +82,7 @@ public class GenedataFormatToCanonicalFeatureVector
 
         CanonicalFeatureVector featureVector = new CanonicalFeatureVector();
         String name = feature.name;
-        String code = CodeAndTitle.normalize(name);
+        String code = CodeAndLabel.normalize(name);
         int count = counters.count(code);
         ImgFeatureDefDTO featureDef = new ImgFeatureDefDTO();
         featureDef.setCode(count == 1 ? code : code + count);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilder.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilder.java
index bdc5d700342fdeb7d5a40eea5872aa65119f0289..4ed16beba83164054e70e085738ff32f26c2c225 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilder.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilder.java
@@ -29,7 +29,7 @@ import java.util.Map.Entry;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.FeatureVectorDatasetWellReference;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.WellPosition;
@@ -64,7 +64,7 @@ public class FeatureTableBuilder
 
     private final List<Bundle> bundles;
 
-    private final Map<CodeAndTitle, Integer> featureCodeLabelToIndexMap;
+    private final Map<CodeAndLabel, Integer> featureCodeLabelToIndexMap;
 
     private final Set<String> featureCodes;
     
@@ -89,7 +89,7 @@ public class FeatureTableBuilder
         this.dao = dao;
         this.service = service;
         bundles = new ArrayList<Bundle>();
-        featureCodeLabelToIndexMap = new LinkedHashMap<CodeAndTitle, Integer>();
+        featureCodeLabelToIndexMap = new LinkedHashMap<CodeAndLabel, Integer>();
         this.featureCodes = new LinkedHashSet<String>(featureCodes);
         this.useAllFeatures = featureCodes.isEmpty();
     }
@@ -135,7 +135,7 @@ public class FeatureTableBuilder
             final ImgFeatureDefDTO featureDefinition = featureCodeToDefMap.get(featureCode);
             if (featureDefinition != null)
             {
-                CodeAndTitle codeAndLabel = getCodeAndLabel(featureDefinition);
+                CodeAndLabel codeAndLabel = getCodeAndLabel(featureDefinition);
                 if (featureCodeLabelToIndexMap.containsKey(codeAndLabel) == false)
                 {
                     featureCodeLabelToIndexMap.put(codeAndLabel,
@@ -158,9 +158,9 @@ public class FeatureTableBuilder
      * Returns all feature codes/labels found. If the feature code list in the constructor is not empty the
      * result will a list where the codes are a subset of this list.
      */
-    public List<CodeAndTitle> getCodesAndLabels()
+    public List<CodeAndLabel> getCodesAndLabels()
     {
-        return new ArrayList<CodeAndTitle>(featureCodeLabelToIndexMap.keySet());
+        return new ArrayList<CodeAndLabel>(featureCodeLabelToIndexMap.keySet());
     }
 
     /**
@@ -234,9 +234,9 @@ public class FeatureTableBuilder
         return row;
     }
     
-    private CodeAndTitle getCodeAndLabel(final ImgFeatureDefDTO featureDefinition)
+    private CodeAndLabel getCodeAndLabel(final ImgFeatureDefDTO featureDefinition)
     {
-        return new CodeAndTitle(featureDefinition.getCode(), featureDefinition.getLabel());
+        return new CodeAndLabel(featureDefinition.getCode(), featureDefinition.getLabel());
     }
 
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/TabularDataGraphServlet.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/TabularDataGraphServlet.java
index 338890fae790a4e0d13bc4650f863a87f8e0896d..5cc2e6a3d31e82fb304cf7bde1b4fe8dc11d42ab 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/TabularDataGraphServlet.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/TabularDataGraphServlet.java
@@ -23,7 +23,7 @@ import java.util.List;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.ITabularData;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.dss.shared.DssScreeningUtils;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.WellPosition;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.PlateUtils;
@@ -86,19 +86,19 @@ public class TabularDataGraphServlet extends AbstractTabularDataGraphServlet
             final FeatureTableBuilder tableBuilder = new FeatureTableBuilder(dao, service);
             tableBuilder.addFeatureVectorsOfDataSet(dataSetCode);
 
-            List<CodeAndTitle> featureCodeAndLabels = tableBuilder.getCodesAndLabels();
+            List<CodeAndLabel> featureCodeAndLabels = tableBuilder.getCodesAndLabels();
             int headerTokensLength = featureCodeAndLabels.size() + 3;
             headerLabels = new String[headerTokensLength];
             headerLabels[0] = WELL_NAME_COLUMN;
             headerLabels[1] = WELL_ROW_COLUMN;
             headerLabels[2] = WELL_COLUMN_COLUMN;
             headerCodes = new String[headerTokensLength];
-            headerCodes[0] = CodeAndTitle.normalize(WELL_NAME_COLUMN);
-            headerCodes[1] = CodeAndTitle.normalize(WELL_NAME_COLUMN);
-            headerCodes[2] = CodeAndTitle.normalize(WELL_NAME_COLUMN);
+            headerCodes[0] = CodeAndLabel.normalize(WELL_NAME_COLUMN);
+            headerCodes[1] = CodeAndLabel.normalize(WELL_NAME_COLUMN);
+            headerCodes[2] = CodeAndLabel.normalize(WELL_NAME_COLUMN);
 
             int i = 1;
-            for (CodeAndTitle featureCodeAndLabel : featureCodeAndLabels)
+            for (CodeAndLabel featureCodeAndLabel : featureCodeAndLabels)
             {
                 headerCodes[i] = featureCodeAndLabel.getCode();
                 headerLabels[i++] = featureCodeAndLabel.getTitle();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/graph/AbstractTabularDataGraph.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/graph/AbstractTabularDataGraph.java
index dc3955f1de5bc0e9e828acd26399fd9b769cc2f6..399ee259a15d683122e6213568632b22a27ddef8 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/graph/AbstractTabularDataGraph.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/graph/AbstractTabularDataGraph.java
@@ -33,6 +33,7 @@ import org.jfree.data.general.Dataset;
 import org.jfree.data.xy.DefaultXYDataset;
 
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.ITabularData;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 
 /**
  * Abstract superclass for the different kinds of graphs.
@@ -139,15 +140,17 @@ abstract class AbstractTabularDataGraph<T extends TabularDataGraphConfiguration>
     }
 
     /**
-     * Return the column number for the column header or -1 if none was found
+     * Return the column number for the column header or -1 if none was found. Argument will
+     * be first normalized.
      */
     protected int tryColumnNumberForHeader(String columnHeaderCode)
     {
+        String normalizedCode = CodeAndLabel.normalize(columnHeaderCode);
         String[] headers = fileLines.getHeaderCodes();
         int i = 0;
         for (String header : headers)
         {
-            if (columnHeaderCode.equals(header))
+            if (normalizedCode.equals(header))
             {
                 return i;
             }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPlugin.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPlugin.java
index 2129aa7eaadec67530dd3977982580de802ebfb1..0b80cfc9e95b546f0ec3aa0f9353ea5a9cc4fb8e 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPlugin.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPlugin.java
@@ -28,7 +28,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPlugi
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.SimpleTableModelBuilder;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.dss.shared.DssScreeningUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
@@ -85,14 +85,14 @@ public class ImageAnalysisMergedRowsReportingPlugin extends AbstractDatastorePlu
             String dataSetCode = datasetDescription.getDatasetCode();
             featureTableBuilder.addFeatureVectorsOfDataSet(dataSetCode);
         }
-        List<CodeAndTitle> codeAndLabels = featureTableBuilder.getCodesAndLabels();
+        List<CodeAndLabel> codeAndLabels = featureTableBuilder.getCodesAndLabels();
         List<FeatureTableRow> rows = featureTableBuilder.createFeatureTableRows();
         SimpleTableModelBuilder builder = new SimpleTableModelBuilder(true);
         builder.addHeader(DATA_SET_CODE_TITLE);
         builder.addHeader(PLATE_IDENTIFIER_TITLE);
         builder.addHeader(ROW_TITLE);
         builder.addHeader(COLUMN_TITLE);
-        for (CodeAndTitle codeAndLabel : codeAndLabels)
+        for (CodeAndLabel codeAndLabel : codeAndLabels)
         {
             builder.addHeader(codeAndLabel.getTitle(), codeAndLabel.getCode());
         }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index 5168ceb069eecef77139957ffb14b6c93b5776f7..13c55a8815b060627207462e364c7d43b15e6221 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -44,7 +44,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.images.ImageChannelStackRefer
 import ch.systemsx.cisd.openbis.dss.generic.server.images.ImageChannelsUtils;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
 import ch.systemsx.cisd.openbis.dss.screening.shared.api.v1.IDssServiceRpcScreening;
 import ch.systemsx.cisd.openbis.dss.shared.DssScreeningUtils;
@@ -250,9 +250,9 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
     
     private List<String> getCodes(FeatureTableBuilder builder)
     {
-        List<CodeAndTitle> featureCodesAndLabels = builder.getCodesAndLabels();
+        List<CodeAndLabel> featureCodesAndLabels = builder.getCodesAndLabels();
         List<String> codes = new ArrayList<String>();
-        for (CodeAndTitle codeAndTitle : featureCodesAndLabels)
+        for (CodeAndLabel codeAndTitle : featureCodesAndLabels)
         {
             codes.add(codeAndTitle.getCode());
         }
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilderTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilderTest.java
index 6f742a637c058541d5f0908a3503fa30820feb89..1388de771fb0dead8e5afb8e0ec1e78a9a2b7c8f 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilderTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/FeatureTableBuilderTest.java
@@ -28,7 +28,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Geometry;
@@ -85,7 +85,7 @@ public class FeatureTableBuilderTest extends AssertJUnit
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE1);
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE2);
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE3);
-        List<CodeAndTitle> codesAndLabels = builder.getCodesAndLabels();
+        List<CodeAndLabel> codesAndLabels = builder.getCodesAndLabels();
         List<FeatureTableRow> rows = builder.createFeatureTableRows();
         
         assertEquals("[<A> a, <B> b, <B> beta, <C> c]", codesAndLabels.toString());
@@ -110,7 +110,7 @@ public class FeatureTableBuilderTest extends AssertJUnit
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE1);
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE2);
         builder.addFeatureVectorsOfDataSet(DATA_SET_CODE3);
-        List<CodeAndTitle> codesAndLabels = builder.getCodesAndLabels();
+        List<CodeAndLabel> codesAndLabels = builder.getCodesAndLabels();
         List<FeatureTableRow> rows = builder.createFeatureTableRows();
         
         assertEquals("[<B> b, <B> beta]", codesAndLabels.toString());
@@ -142,7 +142,7 @@ public class FeatureTableBuilderTest extends AssertJUnit
                     for (int i = 0; i < featureCodesAndLabels.length; i++)
                     {
                         String codeAndLabels = featureCodesAndLabels[i];
-                        CodeAndTitle codeAndTitle = new CodeAndTitle(codeAndLabels);
+                        CodeAndLabel codeAndTitle = new CodeAndLabel(codeAndLabels);
                         String title = codeAndTitle.getTitle();
                         String code = codeAndTitle.getCode();
                         if (filteredCodeOrNull == null || filteredCodeOrNull.equals(code))
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
index 6fd54fcb3479605b352558d3f71400e87edcf652..023d94d8efceefa92ed47f5dfa71c14cca50314d 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/FeatureVectorDAOTest.java
@@ -26,7 +26,7 @@ import net.lemnik.eodsql.QueryTool;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndTitle;
+import ch.systemsx.cisd.openbis.dss.generic.shared.utils.CodeAndLabel;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Geometry;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.dto.PlateFeatureValues;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingQueryDAO;
@@ -106,7 +106,7 @@ public class FeatureVectorDAOTest extends AbstractDBTest
 
         ImgFeatureDefDTO featureDef = featureDefs.get(0);
         assertEquals(TEST_FEATURE_LABEL, featureDef.getLabel());
-        assertEquals(CodeAndTitle.normalize(TEST_FEATURE_LABEL), featureDef.getCode());
+        assertEquals(CodeAndLabel.normalize(TEST_FEATURE_LABEL), featureDef.getCode());
 
         createFeatureValues(featureDef);
         List<ImgFeatureValuesDTO> featureValuesList = dao.getFeatureValues(featureDef);
@@ -150,7 +150,7 @@ public class FeatureVectorDAOTest extends AbstractDBTest
         // Attach a feature def to it
         ImgFeatureDefDTO featureDef =
                 new ImgFeatureDefDTO(TEST_FEATURE_LABEL,
-                        CodeAndTitle.normalize(TEST_FEATURE_LABEL), "Test", dataSet.getId());
+                        CodeAndLabel.normalize(TEST_FEATURE_LABEL), "Test", dataSet.getId());
         return dao.addFeatureDef(featureDef);
     }
 }