add publish func