ENH: how to design own plugin