add publisher singleton protocol