public static ICSVProvider loadCSV(InputStream in, String sep) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(in)));
		try {
			String[] header = reader.readLine().split(sep);
			List<Map<String, Object>> rows = new LinkedList<Map<String, Object>>();
			boolean done = false;
			while (!done) {
				String line = reader.readLine();
				if (line == null) {
					done = true;
				} else {
					String[] parts = line.split(sep);
					Map<String, Object> row = new HashMap<String, Object>();
					for (int i = 0; i < header.length; i++) {
						row.put(header[i], parts[i]);
					}
					rows.add(row);
				}
			}
			return new WrapperCSV(rows);
		} finally {
			reader.close();
		}
	}