reduce dependency
add GUI
add icon