add util.debounce
simplify Hash code