unit test
clean code
merge