use HTML5 push state instead of page refresh