updated plugin API, now using annotations