Initial commit with the implementation of all methods apart from the publish and consume methods