added hash navigation support and app.error