file reading abstractions