done: gen-interface