bug fixed & add testcase