adjusted logic to update hash when bound components change