add more unit test
delete loop