Initial commit

Initial sample code for a plugin using separate interface plus factory
pattern