added hash change callback