ENH: how to design new plugin