Index: src/ControlStruct/ChooseMutator.cc
===================================================================
--- src/ControlStruct/ChooseMutator.cc	(revision 27de95521e8ffa312b8ff4c8a3684e27f7360ea3)
+++ src/ControlStruct/ChooseMutator.cc	(revision 4162aea970265c10df9b12f66ffeb5cbbec83b74)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:31:39 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 15:30:20 2015
+// Update Count     : 5
 //
 
@@ -44,4 +44,9 @@
 		std::list< Statement * > &stmts = caseStmt->get_statements();
 
+		// the difference between switch and choose is that switch has an implicit fallthrough
+		// to the next case, whereas choose has an implicit break at the end of the current case.
+		// thus to transform a choose statement into a switch, we only need to insert breaks at the
+		// end of any case that doesn't already end in a break and that doesn't end in a fallthru
+
 		if ( insideChoose ) {
 			BranchStmt *posBrk;
Index: src/ControlStruct/Mutate.cc
===================================================================
--- src/ControlStruct/Mutate.cc	(revision 27de95521e8ffa312b8ff4c8a3684e27f7360ea3)
+++ src/ControlStruct/Mutate.cc	(revision 4162aea970265c10df9b12f66ffeb5cbbec83b74)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 15:32:52 2015
-// Update Count     : 2
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Jun 03 23:08:43 2015
+// Update Count     : 5
 //
 
@@ -37,7 +37,15 @@
 	void mutate( std::list< Declaration * > translationUnit ) {
 		// ForExprMutator formut;
+
+		// normalizes label definitions and generates multi-level
+		// exit labels
 		LabelFixer lfix;
+
+		// transform choose statements into switch statements
 		ChooseMutator chmut;
+
+		// expand case ranges and turn fallthru into a null statement
 		CaseRangeMutator ranges;  // has to run after ChooseMutator
+
 		//ExceptMutator exc;
 		// LabelTypeChecker lbl;
Index: src/examples/control_structures.c
===================================================================
--- src/examples/control_structures.c	(revision 27de95521e8ffa312b8ff4c8a3684e27f7360ea3)
+++ src/examples/control_structures.c	(revision 4162aea970265c10df9b12f66ffeb5cbbec83b74)
@@ -18,4 +18,5 @@
 		L2: switch ( 3_333_333 ) {						// underscores in constant
 			case 1,2,3:									// 4~8, 4...8 not working
+			case 4~8:
 				L3: for ( ;; ) {
 					L4: for ( ;; ) {
