no semicolons; use proper window.location fallback methods for push and replace