change interface into func-style