decouple shell IO from file system IO library