better GUI and more robust program