refactoring
add tests
add icon