re-organize
make test passed