framework for File IO