Add plugin framework