private static List<Point> readCoordinates(String filename) throws IOException{
		BufferedReader br = new BufferedReader(new FileReader(filename));
		String line;
		//Line numbering starts from 1 (not 0)
		int lineNr = 1;
		
		List<Point> points = new ArrayList<Point>();
		int coordCount = 0;
		DecimalFormat format = new DecimalFormat(FORMAT_PATTERN);
		format.setRoundingMode(RoundingMode.DOWN);

		HashSet<String> pointSet = new HashSet<String>();

		while((line = br.readLine()) != null){
			StringTokenizer st = new StringTokenizer(line, TAB);
			List<Float> coords = new ArrayList<Float>();
			boolean readableNumbers = true;
			while(st.hasMoreTokens() && readableNumbers){	
				String s = st.nextToken();
				try{
					coords.add(Float.parseFloat(format.format(Float.parseFloat(s))));
				} catch (NumberFormatException nfe){
					readableNumbers = false;
				}
			}
			if(!coords.isEmpty()){
				if(coordCount == 0){
					coordCount = coords.size();
				}

				//add points only if they have the sufficient number of coordinates, and if it isn't already there
				if(coordCount == coords.size()){
					StringBuffer keyForPointSet = new StringBuffer();
					for(Float f : coords){
						keyForPointSet.append(f);
						keyForPointSet.append(SPACE);
					}
					if(!pointSet.contains(keyForPointSet.toString())){
						points.add(new Point(lineNr, coords));
						lineNr ++;
						pointSet.add(keyForPointSet.toString());
					}
				}

			}
		}
		br.close();
		return points;
	}