Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 76934fbc18afbcbc97f690da75e4e77dd42659af)
+++ src/ControlStruct/MLEMutator.cc	(revision b2152e7a0addfb2f4eff511598c305a9bbc85368)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 27 16:19:32 2015
-// Update Count     : 44
+// Last Modified On : Tue Jun 02 13:35:49 2015
+// Update Count     : 91
 //
 
@@ -154,8 +154,20 @@
 		Label brkLabel = generator->newLabel();
 		enclosingSwitches.push_back( Entry(switchStmt, "", brkLabel) );
-		mutateAll( switchStmt->get_branches(), mutator ); {
+		mutateAll( switchStmt->get_branches(), mutator ); 
+		{
 			// check if this is necessary (if there is a break to this point, otherwise do not generate
-			std::list<Label> temp; temp.push_back( brkLabel );
-			switchStmt->get_branches().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
+
+			// for the purposes of keeping switch statements uniform (i.e. all statements that are 
+			// direct children of a switch should be CastStmts), append the exit label + break to the 
+			// last case statement; create a default case if there are no cases
+			std::list< Statement * > &branches = switchStmt->get_branches();
+			if ( branches.empty() ) {
+				branches.push_back( CaseStmt::makeDefault() );
+			}
+
+			if ( CaseStmt * c = dynamic_cast< CaseStmt * >( branches.back() ) ) {
+				std::list<Label> temp; temp.push_back( brkLabel );
+				c->get_statements().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
+			} else assert(0);
 		}
 		assert ( enclosingSwitches.back() == switchStmt );
