adds initial file reading capability to problem #23