added async publish methods