port the base plugin to its own module and repo