better pushstate management