define with-interface macro