add state sync client architecture