hash set implementation