add interface and misc