work on plugin architecture and tests