Updating publishing services.
Merge remote-tracking branch 'origin/master'
Updating API. Class -> Interface for a cleaner separation.
Attaching a draft of implementation in standalone mode, just for
validating API.