moved io through the main controller