Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 2b6c1e0966e6ac366e8bc25cc8135f61d8946b0e)
+++ 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 );
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision 2b6c1e0966e6ac366e8bc25cc8135f61d8946b0e)
+++ src/SynTree/Statement.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 15:41:13 2015
-// Update Count     : 8
+// Last Modified On : Tue Jun 02 13:07:09 2015
+// Update Count     : 14
 //
 
@@ -124,4 +124,8 @@
 CaseStmt::~CaseStmt() {
 	delete condition;
+}
+
+CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> branches ) {
+	return new CaseStmt( labels, 0, branches, true );
 }
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision 2b6c1e0966e6ac366e8bc25cc8135f61d8946b0e)
+++ src/SynTree/Statement.h	(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 15:40:43 2015
-// Update Count     : 5
+// Last Modified On : Tue Jun 02 13:07:25 2015
+// Update Count     : 13
 //
 
@@ -149,4 +149,7 @@
 	      std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
 	virtual ~CaseStmt();
+
+	static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(),
+		std::list<Statement *> stmts = std::list<Statement *>() );
 
 	bool isDefault() { return _isDefault; }
