added AHTreeMap, using HashMap instead of array