feat: add support for custom plugins

closes #15