implement basic publish flow