moved io out of library and into its own