revise I/F