add IO wrapper