to remove duplicates
simple hash tab
the non abridged version