Issue 2: Extract BufferedReader to factory, Add unit-test, better
naming, refactoring