add basic plugin framework