refactoring
add unittest
change the path
add e2e test