add io read support