Modified hash table code to deal with smart pointers. So it will be transparent to the programmer the memory management