change FileInput to Input::File
extract exceptions in their own files
change FileOutput to Output::File