sync recursively