private void init(String dataFilePath){
		suspects= new HashMap<String, Suspect>();
		categories= new HashMap<String, Category>();

		try {
			CSVReader reader= new CSVReader(new FileReader(dataFilePath));
			String[] nextLine;
			Suspect tmp;

			//read categories
			nextLine=reader.readNext();

			//we assume the first position in this line holds no relevant relevant information due to the data-file-layout
			int i=1; 
			String s="";
			Category currentCat=null;
			
			dataSetLength=nextLine.length - 1;
			
			//System.out.println("setLenght: "+dataSetLength);
			
			while(i<nextLine.length){
				s= nextLine[i];
			
				if(s.length()>0){
					//create new Category and set this one as the currently interesting one
					if(currentCat!=null){
						if(!s.equals(currentCat.getDescription())){
							categories.put(currentCat.getDescription(), currentCat);
							currentCat= new Category(s);
							currentCat.addCategoryItems(i);
						}else{
							currentCat.addCategoryItems(i);
						}
					}else{
						currentCat= new Category(s);
						currentCat.addCategoryItems(i);
					}

				}else{
					//add lineIndex to current Category
					currentCat.addCategoryItems(i);
					
				}
				
				i++;
			}
			if(currentCat!=null)
				categories.put(currentCat.getDescription(), currentCat);
			
			


			// skip line holding the column-headers
			reader.readNext();



			// read the csv-data-set
			while((nextLine = reader.readNext()) != null) {
				//System.out.println(nextLine[0]);
				tmp= new Suspect(nextLine);

				//dump data in map
				suspects.put(nextLine[0], tmp);
			}


		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}