some rewrite for interface