re-write to mhook