diff --git a/client/src/main/java/org/apache/nemo/client/ClientUtils.java b/client/src/main/java/org/apache/nemo/client/ClientUtils.java
index a200a2e..afe9097 100644
--- a/client/src/main/java/org/apache/nemo/client/ClientUtils.java
+++ b/client/src/main/java/org/apache/nemo/client/ClientUtils.java
@@ -47,20 +47,16 @@
    */
   static void handleOptimizationType(final ControlMessage.DriverToClientMessage message,
                                      final DriverRPCServer driverRPCServer) {
-    switch (message.getOptimizationType()) {
-      case XGBoost:
-        new Thread(() ->
-          driverRPCServer.send(ControlMessage.ClientToDriverMessage.newBuilder()
-            .setType(ControlMessage.ClientToDriverMessageType.Notification)
-            .setMessage(ControlMessage.NotificationMessage.newBuilder()
-              .setOptimizationType(ControlMessage.OptimizationType.XGBoost)
-              .setData(ClientUtils.launchXGBoostScript(message.getDataCollected().getData()))
-              .build())
-            .build()))
-          .start();
-        break;
-      default:
-        break;
+    if (message.getOptimizationType().equals(ControlMessage.OptimizationType.XGBoost)) {
+      new Thread(() ->
+        driverRPCServer.send(ControlMessage.ClientToDriverMessage.newBuilder()
+          .setType(ControlMessage.ClientToDriverMessageType.Notification)
+          .setMessage(ControlMessage.NotificationMessage.newBuilder()
+            .setOptimizationType(ControlMessage.OptimizationType.XGBoost)
+            .setData(ClientUtils.launchXGBoostScript(message.getDataCollected().getData()))
+            .build())
+          .build()))
+        .start();
     }
   }
 
diff --git a/examples/beam/src/main/java/org/apache/nemo/examples/beam/MultinomialLogisticRegression.java b/examples/beam/src/main/java/org/apache/nemo/examples/beam/MultinomialLogisticRegression.java
index 79f2bba..3efbd72 100644
--- a/examples/beam/src/main/java/org/apache/nemo/examples/beam/MultinomialLogisticRegression.java
+++ b/examples/beam/src/main/java/org/apache/nemo/examples/beam/MultinomialLogisticRegression.java
@@ -58,7 +58,7 @@
     private Map<Integer, List<Double>> model;
 
     // TODO #274: Use bundles properly in Beam MultinomialLogisticRegression
-    private ProcessContext savedContextHack;
+    private transient ProcessContext savedContextHack;
 
     /**
      * Constructor for CalculateGradient DoFn class.
