A detailed walkthrough of the plugin writing process