improve gen_magic logic