fixed bug and add test, make coverage to 95.3%, amazing