refactoring
add some smoke tests