initial work to save scroll pos and prevent reloading on replaceState