core: better interface support using setInterface