class CSVLatLonStrategy extends CSVStrategy {

    @Override
    protected SimpleFeatureType buildFeatureType() {
    	String[] headers;
        Map<String, Class<?>> typesFromData;
        CsvReader csvReader = null;
        try {
            csvReader = csvFileState.openCSVReader();
            headers = csvReader.getHeaders();
            typesFromData = CSVStrategy.findMostSpecificTypesFromData(csvReader, headers);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (csvReader != null) {
                csvReader.close();
            }
        }
        SimpleFeatureTypeBuilder builder = CSVStrategy.createBuilder(csvFileState, headers,
                typesFromData);
        boolean validLat = false;
        boolean validLon = false;
        String latSpelling = null;
        String lonSpelling = null;
        for (String col : headers) {
            Class<?> type = typesFromData.get(col);
            if (isLatitude(col)) {
                latSpelling = col;
                if (CSVStrategy.isNumeric(type)) {
                    validLat = true;
                }
            } else if (isLongitude(col)) {
                lonSpelling = col;
                if (CSVStrategy.isNumeric(type)) {
                    validLon = true;
                }
            }
        }
        if (validLat && validLon) {
        	List<String> csvHeaders = Arrays.asList(headers);
        	int index = csvHeaders.indexOf(latSpelling);
        	AttributeTypeBuilder builder2 = new AttributeTypeBuilder();
        	builder2.setCRS(DefaultGeographicCRS.WGS84);
        	builder2.binding(Point.class);       	
        	AttributeDescriptor descriptor = builder2.buildDescriptor(GEOMETRY_COLUMN);
        	builder.add(index, descriptor);
			
            builder.remove(latSpelling);
            builder.remove(lonSpelling);
        }
        return builder.buildFeatureType();
    }

    public  CSVLatLonStrategy(CSVFileState csvFileState);

}