In general I like immutability :D. Is there a particular reason why we can't make the printwriter file in the constructor based on the dataFile? Same goes for the reader. This way we don't need explicit null checks and initializations in the code