Is the only difference fp.read() vs. fp? Can we define the variable in the if/else and only specify the other args to the big nasty constructor once?