added BufferedLineReader