add gen_puzzle()