One thing I wasn't sure about is whether this should use pushState() or replaceState(). Thoughts?