split up io stuff