add plugin support. closes #89