use IO exceptions instead of generic ones in IO classes