have read_file produce dictionary, then only merge at end of read, when no errors have been thrown then wouldn't have to use self.__init_file_keys