basic plugin system and tests