add new interface
revise interfaces