updated plugin architecture