add hamc function