First commit: GUI and basic operation