seperate file io