Split plugin system off into separate module