refactored ioshaders