Further abstract objects, separate API and implementation, and provide a proper sample plugin.
Change naming convention, and include build number when built by CI applications.