follow new app plugin interface