move open_reading to a new header
add file_descriptor::release()