first cut of plugin api