Lots of work on part b impl in file.c