refactor and test
still no result