1) // ReadFileInterface f = new ReadFileThread();// why do we have ReadFileInterface instead of ReadFileThread? ReadFileThread f = new ReadFileThread();//this makes more sense to me to use the reference datatype as ReadFileTRead instead of the interface. 2) This gives the same output as the suggested solution so why do I fail he test? @Override public void run() { Scanner scanner = new Scanner((filename)); while (scanner.hasNextLine()) { content += scanner.nextLine() + " "; } scanner.close(); } 3) I use a bufferedreader to read the names of the files. from the console. Why does the scanner read them again and add them to the content of the file? How to prevent his? static { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { firstFileName = reader.readLine(); secondFileName = reader.readLine(); reader.close(); } catch (IOException e) { e.printStackTrace(); }