added hashmap, todo: handle collision