reimplement gui will comment soon