prototype of plugin system