Fixed some bugs, moved to HTML5 pushState instead of hash