several improvement
update test case