revise the interface