add IO function