hmm 程式碼比想像中的長, 可能需要做些修改