rewrite the interfaces