Added plugin architecture