implement basic publishing functionality