hm initial. hm_prot working version