more generalized io
naming