watch replaceState calls too