Integrate current GUI into master.

Just to get the newest gui features into master. Now you can branch from master without relinquish the gui.