observe for client