move file_descriptor to a public header