Merge pull request #30 from apache/WAYANG-34

[WAYANG-34] Addition of terasort, 
diff --git a/.travis.yml b/.travis.yml
index bf473fe..84dcf1a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -86,13 +86,14 @@
 #  - chmod +x ./docs/script/cibuild
 script:
   #- jdk_switcher use openjdk8
-  - bin/change-scala-version.sh 2.11.12 && mvn clean install -Pdistro,scala-11 "${mvn_opts[@]}" &> result.log
-  - bin/change-scala-version.sh 2.12.12 && mvn clean install -Pdistro,scala-12 "${mvn_opts[@]}" &>> result.log
+  - mvn clean install -Pdistro,scala-11 "${mvn_opts[@]}" &> result.log
+  - mvn clean install -Pdistro,scala-12 "${mvn_opts[@]}" &>> result.log
+  #- mvn clean install -Pdistro,scala-13 "${mvn_opts[@]}" &>> result.log # This is not working for now because of Spark and Flink not supporting Scala 2.13
   - cat /home/travis/build/apache/incubator-wayang/target/rat.txt || echo "file doesn't exist"
   - tail -n 2000 result.log
 
 after_success:
-  # generate the documentation and create a update of the documentation if something change there
+  # generate the documentation and create an update of the documentation if something changes there
   - if [ "${GENERATE_DOCS}" = "true" ] ; then mvn clean gem:exec@bundle-install gem:exec@generate-documentation gem:exec@generate-documentation-as-latest site -pl wayang-docs -Pweb-documentation ; fi
 
 env:
diff --git a/NOTICE.TXT b/NOTICE.TXT
index bdcd080..d407ab1 100644
--- a/NOTICE.TXT
+++ b/NOTICE.TXT
@@ -4,4 +4,33 @@
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
-============================================================================
\ No newline at end of file
+----------------------------------------------
+
+This product includes software developed at
+The Apache Spark (https://spark.apache.org/).
+
+----------------------------------------------
+----------------------------------------------
+
+This product includes software developed at
+The Apache Flink (https://flink.apache.org/).
+
+----------------------------------------------
+----------------------------------------------
+
+This product includes software developed at
+The Apache Giraph (https://giraph.apache.org/).
+
+----------------------------------------------
+----------------------------------------------
+
+This product includes software developed at
+The Apache Hadoop (https://hadoop.apache.org/).
+
+----------------------------------------------
+----------------------------------------------
+
+This product includes software developed at
+The GraphChi-java (https://github.com/GraphChi/graphchi-java).
+
+----------------------------------------------
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
new file mode 100644
index 0000000..d1b92c8
--- /dev/null
+++ b/RELEASE_NOTES
@@ -0,0 +1,47 @@
+==============================================================
+Apache Wayang (incubating) 0.6.0
+==============================================================
+
+This is the first official release of Apache Wayang.
+
+On this release is possible to found the the implementation of
+the following platforms:
+- Apache Flink v1.7.1
+- Apache Giraph v1.2.0-hadoop2
+- GraphChi v0.2.2(This is only available wit scala 11.x)
+- Java Streams (version depends on the java version)
+- JDBC-Template
+- Postgres v9.4.1208(It's a implementation of JDBC-Template)
+- Apache Spark v3.1.2 (scala 12.x) and v2.4.8 (scala 11.x)
+- SQLite3 v3.8.11.2(It's a implementation of JDBC-Template)
+
+NOTE: depending on the scala version the list of platforms available
+could be modified.
+
+
+New Features
+------------
+
+- NONE -
+
+Incompatible changes
+--------------------
+
+- NONE -
+
+Miscellaneous changes
+---------------------
+
+WAYANG-3 Unification of the logs
+WAYANG-[32, 33, 35, 38] License issues removed
+
+Known Issues
+------------
+
+WAYANG-23 Iteration Memory Issue
+
+Bug Fixes
+---------
+
+WAYANG-12 Issues on the compilation
+WAYANG-40 Different version of platform depending on the scala version
diff --git a/bin/build.sh b/bin/build.sh
index 8bd6e8e..f69be5d 100755
--- a/bin/build.sh
+++ b/bin/build.sh
@@ -48,15 +48,14 @@
 fi
 
 
-scala_versions=(2.11.8) # 2.12.2 was not supported as of creating this script
+scala_versions=(scala-11 scala-12)
 failures=()
 successes=()
 
 for scala_version in "${scala_versions[@]}"; do
 	echo "Running 'mvn ${mvn_opts[@]}' with Scala $scala_version..."
 
-	"$basedir/bin/change-scala-version.sh" "$scala_version"
-	if mvn "${mvn_opts[@]}"; then
+	if mvn "${mvn_opts[@]}" -P $scala_version; then
 		successes+=("$scala_version")
 	else
 		failures+=("$scala_version")
@@ -64,7 +63,7 @@
 done
 
 echo "Summary:"
-echo "* Successes with Scala versions ${successes[@]}"
-echo "* Failures with Scala versions ${failures[@]}"
+echo "* Successes with Scala versions: ${successes[@]}"
+echo "* Failures with Scala versions: ${failures[@]}"
 
 exit ${#failures[@]}
diff --git a/bin/change-scala-version.sh b/bin/change-scala-version.sh
index 79f4a32..d3378ce 100755
--- a/bin/change-scala-version.sh
+++ b/bin/change-scala-version.sh
@@ -19,6 +19,8 @@
 ##
 ################################################################################
 
+# THIS SCRIPT IS DEPRECATED since https://github.com/apache/incubator-wayang/pull/26
+
 if [ $# -eq 0 ]; then
 	>&2 echo "No parameters given."
 	echo "This script changes the Scala version used in this project."
diff --git a/pom.xml b/pom.xml
index fad1193..93194fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -583,6 +583,9 @@
 
         <profile>
             <id>scala-12</id>
+            <activation>
+                <jdk>11</jdk>
+            </activation>
             <properties>
                 <scala.version>2.12.12</scala.version>
                 <scala.mayor.version>2.12</scala.mayor.version>
diff --git a/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java b/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
index e841298..189ee20 100644
--- a/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
+++ b/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.api.python;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 class PythonAPITest {
 
-}
\ No newline at end of file
+}
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
index ed1f426..22956a1 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
@@ -22,9 +22,12 @@
 import _root_.java.lang.{Iterable => JavaIterable}
 import _root_.java.util.function.{Consumer, IntUnaryOperator, BiFunction => JavaBiFunction, Function => JavaFunction}
 import _root_.java.util.{Collection => JavaCollection}
+
 import org.apache.commons.lang3.Validate
+import org.apache.wayang.basic.data.{Tuple2 => WayangTuple2}
 import org.apache.wayang.basic.function.ProjectionDescriptor
 import org.apache.wayang.basic.operators._
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.function.FunctionDescriptor.{SerializableBinaryOperator, SerializableFunction, SerializablePredicate}
 import org.apache.wayang.core.function._
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
@@ -33,8 +36,6 @@
 import org.apache.wayang.core.plan.wayangplan._
 import org.apache.wayang.core.platform.Platform
 import org.apache.wayang.core.util.{Tuple => WayangTuple}
-import org.apache.wayang.basic.data.{Tuple2 => WayangTuple2}
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 
 import scala.collection.JavaConversions
 import scala.collection.JavaConversions._
@@ -796,6 +797,34 @@
   }
 
   /**
+   * Write the data quanta in this instance to a Object file. Triggers execution.
+   *
+   * @param url          URL to the text file
+   */
+  def writeObjectFile(url: String)(implicit classTag: ClassTag[Out]): Unit = {
+    writeObjectFileJava(url, classTag)
+  }
+
+  /**
+   * Write the data quanta in this instance to a Object file. Triggers execution.
+   *
+   * @param url          URL to the text file
+   */
+  def writeObjectFileJava(url: String, classTag: ClassTag[Out]): Unit ={
+    val sink = new ObjectFileSink[Out](
+      url,
+      basicDataUnitType(classTag).getTypeClass
+    )
+    sink.setName(s"Write objects to $url")
+    this.connectTo(sink, 0)
+
+    // Do the execution.
+    this.planBuilder.sinks += sink
+    this.planBuilder.buildAndExecute()
+    this.planBuilder.sinks.clear()
+  }
+
+  /**
     * Restrict the producing [[Operator]] to run on certain [[Platform]]s.
     *
     * @param platforms on that the [[Operator]] may be executed
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
index 29b4965..6ab7eec 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
@@ -21,6 +21,7 @@
 
 import java.util.function.{Consumer, IntUnaryOperator, Function => JavaFunction}
 import java.util.{Collection => JavaCollection}
+
 import org.apache.wayang.api.graph.{Edge, EdgeDataQuantaBuilder, EdgeDataQuantaBuilderDecorator}
 import org.apache.wayang.api.util.{DataQuantaBuilderCache, TypeTrap}
 import org.apache.wayang.basic.data.{Record, Tuple2 => RT2}
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
index d21870a..53e9207 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
@@ -19,6 +19,7 @@
 package org.apache.wayang.api
 
 import java.util.{Collection => JavaCollection}
+
 import org.apache.commons.lang3.Validate
 import org.apache.wayang.api.util.DataQuantaBuilderCache
 import org.apache.wayang.basic.data.Record
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
index 3709f7f..f77ffc4 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
@@ -21,7 +21,7 @@
 import org.apache.commons.lang3.Validate
 import org.apache.wayang.api
 import org.apache.wayang.basic.data.Record
-import org.apache.wayang.basic.operators.{CollectionSource, TableSource, TextFileSource}
+import org.apache.wayang.basic.operators.{CollectionSource, ObjectFileSource, TableSource, TextFileSource}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.WayangContext
 import org.apache.wayang.core.plan.wayangplan._
@@ -111,6 +111,15 @@
     */
   def readTextFile(url: String): DataQuanta[String] = load(new TextFileSource(url))
 
+
+  /**
+   * Read a object's file and provide it as a dataset of [[Object]]s.
+   *
+   * @param url the URL of the Object's file
+   * @return [[DataQuanta]] representing the file
+   */
+  def readObjectFile[T: ClassTag](url: String): DataQuanta[T] = load(new ObjectFileSource(url, dataSetType[T]))
+
   /**
     * Reads a database table and provides them as a dataset of [[Record]]s.
     *
diff --git a/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java b/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
index 2d4bb6c..420a82e 100644
--- a/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
+++ b/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
@@ -18,27 +18,6 @@
 
 package org.apache.wayang.api;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.WayangContext;
-import org.apache.wayang.core.function.ExecutionContext;
-import org.apache.wayang.core.function.FunctionDescriptor;
-import org.apache.wayang.core.function.PredicateDescriptor;
-import org.apache.wayang.core.function.TransformationDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.util.WayangArrays;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.core.util.fs.LocalFileSystem;
-import org.apache.wayang.java.Java;
-import org.apache.wayang.java.operators.JavaMapOperator;
-import org.apache.wayang.spark.Spark;
-import org.apache.wayang.sqlite3.Sqlite3;
-import org.apache.wayang.sqlite3.operators.Sqlite3TableSource;
-
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
@@ -56,6 +35,26 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.WayangContext;
+import org.apache.wayang.core.function.ExecutionContext;
+import org.apache.wayang.core.function.FunctionDescriptor;
+import org.apache.wayang.core.function.PredicateDescriptor;
+import org.apache.wayang.core.function.TransformationDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangArrays;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.core.util.fs.LocalFileSystem;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.java.operators.JavaMapOperator;
+import org.apache.wayang.spark.Spark;
+import org.apache.wayang.sqlite3.Sqlite3;
+import org.apache.wayang.sqlite3.operators.Sqlite3TableSource;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for the Java API.
diff --git a/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala b/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
index cc05bd2..83e2548 100644
--- a/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
+++ b/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
@@ -24,7 +24,6 @@
 import java.sql.{Connection, Statement}
 import java.util.function.Consumer
 
-import org.junit.{Assert, Test}
 import org.apache.wayang.basic.WayangBasics
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.FunctionDescriptor.ExtendedSerializablePredicate
@@ -35,6 +34,7 @@
 import org.apache.wayang.spark.Spark
 import org.apache.wayang.sqlite3.Sqlite3
 import org.apache.wayang.sqlite3.operators.Sqlite3TableSource
+import org.junit.{Assert, Test}
 
 /**
   * Tests the Wayang API.
diff --git a/wayang-benchmark/pom.xml b/wayang-benchmark/pom.xml
index 477c752..829ec88 100644
--- a/wayang-benchmark/pom.xml
+++ b/wayang-benchmark/pom.xml
@@ -71,6 +71,16 @@
       <artifactId>wayang-sqlite3</artifactId>
       <version>0.6.0-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-common</artifactId>
+      <version>2.7.7</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.spark</groupId>
+      <artifactId>spark-core_${scala.mayor.version}</artifactId>
+      <version>${spark.version}</version>
+    </dependency>
   </dependencies>
 
 
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
index dbd7eac..d953908 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.apps.sgd;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.api.DataQuantaBuilder;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.basic.data.Tuple2;
@@ -27,12 +30,8 @@
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plugin.Plugin;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This class executes a stochastic gradient descent optimization on Apache Wayang.
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
index 1532f57..866fab1 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
@@ -18,22 +18,21 @@
 
 package org.apache.wayang.apps.sgd;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.api.DataQuantaBuilder;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plugin.Plugin;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This class executes a stochastic gradient descent optimization on Apache Wayang, just like {@link SGDImpl}. However,
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java
new file mode 100644
index 0000000..6e85d92
--- /dev/null
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java
@@ -0,0 +1,376 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wayang.apps.terasort;
+
+/**
+ * This class implements a 128-bit linear congruential generator.
+ * Specifically, if X0 is the most recently issued 128-bit random
+ * number (or a seed of 0 if no random number has already been generated,
+ * the next number to be generated, X1, is equal to:
+ * X1 = (a * X0 + c) mod 2**128
+ * where a is 47026247687942121848144207491837523525
+ *            or 0x2360ed051fc65da44385df649fccf645
+ *   and c is 98910279301475397889117759788405497857
+ *            or 0x4a696d47726179524950202020202001
+ * The coefficient "a" is suggested by:
+ * Pierre L'Ecuyer, "Tables of linear congruential generators of different
+ * sizes and good lattice structure", Mathematics of Computation, 68
+ * pp. 249 - 260 (1999)
+ * http://www.ams.org/mcom/1999-68-225/S0025-5718-99-00996-5/S0025-5718-99-00996-5.pdf
+ * The constant "c" meets the simple suggestion by the same reference that
+ * it be odd.
+ *
+ * There is also a facility for quickly advancing the state of the
+ * generator by a fixed number of steps - this facilitates parallel
+ * generation.
+ *
+ * This is based on 1.0 of rand16.c from Chris Nyberg 
+ * <chris.nyberg@ordinal.com>.
+ *
+ * code copied from <a href="https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort/Random16.java">Terasort Example</a>
+ */
+class Random16 {
+
+  /**
+   * The "Gen" array contain powers of 2 of the linear congruential generator.
+   * The index 0 struct contain the "a" coefficient and "c" constant for the
+   * generator.  That is, the generator is:
+   *    f(x) = (Gen[0].a * x + Gen[0].c) mod 2**128
+   *
+   * All structs after the first contain an "a" and "c" that
+   * comprise the square of the previous function.
+   *
+   * f**2(x) = (Gen[1].a * x + Gen[1].c) mod 2**128
+   * f**4(x) = (Gen[2].a * x + Gen[2].c) mod 2**128
+   * f**8(x) = (Gen[3].a * x + Gen[3].c) mod 2**128
+   * ...
+
+   */
+  private static class RandomConstant {
+    final Unsigned16 a;
+    final Unsigned16 c;
+    public RandomConstant(String left, String right) {
+      a = new Unsigned16(left);
+      c = new Unsigned16(right);
+    }
+  }
+
+  private static final RandomConstant[] genArray = new RandomConstant[]{
+      /* [  0] */ new RandomConstant("2360ed051fc65da44385df649fccf645",
+      "4a696d47726179524950202020202001"),
+      /* [  1] */ new RandomConstant("17bce35bdf69743c529ed9eb20e0ae99",
+      "95e0e48262b3edfe04479485c755b646"),
+      /* [  2] */ new RandomConstant("f4dd417327db7a9bd194dfbe42d45771",
+      "882a02c315362b60765f100068b33a1c"),
+      /* [  3] */ new RandomConstant("6347af777a7898f6d1a2d6f33505ffe1",
+      "5efc4abfaca23e8ca8edb1f2dfbf6478"),
+      /* [  4] */ new RandomConstant("b6a4239f3b315f84f6ef6d3d288c03c1",
+      "f25bd15439d16af594c1b1bafa6239f0"),
+      /* [  5] */ new RandomConstant("2c82901ad1cb0cd182b631ba6b261781",
+      "89ca67c29c9397d59c612596145db7e0"),
+      /* [  6] */ new RandomConstant("dab03f988288676ee49e66c4d2746f01",
+      "8b6ae036713bd578a8093c8eae5c7fc0"),
+      /* [  7] */ new RandomConstant("602167331d86cf5684fe009a6d09de01",
+      "98a2542fd23d0dbdff3b886cdb1d3f80"),
+      /* [  8] */ new RandomConstant("61ecb5c24d95b058f04c80a23697bc01",
+      "954db923fdb7933e947cd1edcecb7f00"),
+      /* [  9] */ new RandomConstant("4a5c31e0654c28aa60474e83bf3f7801",
+      "00be4a36657c98cd204e8c8af7dafe00"),
+      /* [ 10] */ new RandomConstant("ae4f079d54fbece1478331d3c6bef001",
+      "991965329dccb28d581199ab18c5fc00"),
+      /* [ 11] */ new RandomConstant("101b8cb830c7cb927ff1ed50ae7de001",
+      "e1a8705b63ad5b8cd6c3d268d5cbf800"),
+      /* [ 12] */ new RandomConstant("f54a27fc056b00e7563f3505e0fbc001",
+      "2b657bbfd6ed9d632079e70c3c97f000"),
+      /* [ 13] */ new RandomConstant("df8a6fc1a833d201f98d719dd1f78001",
+      "59b60ee4c52fa49e9fe90682bd2fe000"),
+      /* [ 14] */ new RandomConstant("5480a5015f101a4ea7e3f183e3ef0001",
+      "cc099c88030679464fe86aae8a5fc000"),
+      /* [ 15] */ new RandomConstant("a498509e76e5d7925f539c28c7de0001",
+      "06b9abff9f9f33dd30362c0154bf8000"),
+      /* [ 16] */ new RandomConstant("0798a3d8b10dc72e60121cd58fbc0001",
+      "e296707121688d5a0260b293a97f0000"),
+      /* [ 17] */ new RandomConstant("1647d1e78ec02e665fafcbbb1f780001",
+      "189ffc4701ff23cb8f8acf6b52fe0000"),
+      /* [ 18] */ new RandomConstant("a7c982285e72bf8c0c8ddfb63ef00001",
+      "5141110ab208fb9d61fb47e6a5fc0000"),
+      /* [ 19] */ new RandomConstant("3eb78ee8fb8c56dbc5d4e06c7de00001",
+      "3c97caa62540f2948d8d340d4bf80000"),
+      /* [ 20] */ new RandomConstant("72d03b6f4681f2f9fe8e44d8fbc00001",
+      "1b25cb9cfe5a0c963174f91a97f00000"),
+      /* [ 21] */ new RandomConstant("ea85f81e4f502c9bc8ae99b1f7800001",
+      "0c644570b4a487103c5436352fe00000"),
+      /* [ 22] */ new RandomConstant("629c320db08b00c6bfa57363ef000001",
+      "3d0589c28869472bde517c6a5fc00000"),
+      /* [ 23] */ new RandomConstant("c5c4b9ce268d074a386be6c7de000001",
+      "bc95e5ab36477e65534738d4bf800000"),
+      /* [ 24] */ new RandomConstant("f30bbbbed1596187555bcd8fbc000001",
+      "ddb02ff72a031c01011f71a97f000000"),
+      /* [ 25] */ new RandomConstant("4a1000fb26c9eeda3cc79b1f78000001",
+      "2561426086d9acdb6c82e352fe000000"),
+      /* [ 26] */ new RandomConstant("89fb5307f6bf8ce2c1cf363ef0000001",
+      "64a788e3c118ed1c8215c6a5fc000000"),
+      /* [ 27] */ new RandomConstant("830b7b3358a5d67ea49e6c7de0000001",
+      "e65ea321908627cfa86b8d4bf8000000"),
+      /* [ 28] */ new RandomConstant("fd8a51da91a69fe1cd3cd8fbc0000001",
+      "53d27225604d85f9e1d71a97f0000000"),
+      /* [ 29] */ new RandomConstant("901a48b642b90b55aa79b1f780000001",
+      "ca5ec7a3ed1fe55e07ae352fe0000000"),
+      /* [ 30] */ new RandomConstant("118cdefdf32144f394f363ef00000001",
+      "4daebb2e085330651f5c6a5fc0000000"),
+      /* [ 31] */ new RandomConstant("0a88c0a91cff430829e6c7de00000001",
+      "9d6f1a00a8f3f76e7eb8d4bf80000000"),
+      /* [ 32] */ new RandomConstant("433bef4314f16a9453cd8fbc00000001",
+      "158c62f2b31e496dfd71a97f00000000"),
+      /* [ 33] */ new RandomConstant("c294b02995ae6738a79b1f7800000001",
+      "290e84a2eb15fd1ffae352fe00000000"),
+      /* [ 34] */ new RandomConstant("913575e0da8b16b14f363ef000000001",
+      "e3dc1bfbe991a34ff5c6a5fc00000000"),
+      /* [ 35] */ new RandomConstant("2f61b9f871cf4e629e6c7de000000001",
+      "ddf540d020b9eadfeb8d4bf800000000"),
+      /* [ 36] */ new RandomConstant("78d26ccbd68320c53cd8fbc000000001",
+      "8ee4950177ce66bfd71a97f000000000"),
+      /* [ 37] */ new RandomConstant("8b7ebd037898518a79b1f78000000001",
+      "39e0f787c907117fae352fe000000000"),
+      /* [ 38] */ new RandomConstant("0b5507b61f78e314f363ef0000000001",
+      "659d2522f7b732ff5c6a5fc000000000"),
+      /* [ 39] */ new RandomConstant("4f884628f812c629e6c7de0000000001",
+      "9e8722938612a5feb8d4bf8000000000"),
+      /* [ 40] */ new RandomConstant("be896744d4a98c53cd8fbc0000000001",
+      "e941a65d66b64bfd71a97f0000000000"),
+      /* [ 41] */ new RandomConstant("daf63a553b6318a79b1f780000000001",
+      "7b50d19437b097fae352fe0000000000"),
+      /* [ 42] */ new RandomConstant("2d7a23d8bf06314f363ef00000000001",
+      "59d7b68e18712ff5c6a5fc0000000000"),
+      /* [ 43] */ new RandomConstant("392b046a9f0c629e6c7de00000000001",
+      "4087bab2d5225feb8d4bf80000000000"),
+      /* [ 44] */ new RandomConstant("eb30fbb9c218c53cd8fbc00000000001",
+      "b470abc03b44bfd71a97f00000000000"),
+      /* [ 45] */ new RandomConstant("b9cdc30594318a79b1f7800000000001",
+      "366630eaba897fae352fe00000000000"),
+      /* [ 46] */ new RandomConstant("014ab453686314f363ef000000000001",
+      "a2dfc77e8512ff5c6a5fc00000000000"),
+      /* [ 47] */ new RandomConstant("395221c7d0c629e6c7de000000000001",
+      "1e0d25a14a25feb8d4bf800000000000"),
+      /* [ 48] */ new RandomConstant("4d972813a18c53cd8fbc000000000001",
+      "9d50a5d3944bfd71a97f000000000000"),
+      /* [ 49] */ new RandomConstant("06f9e2374318a79b1f78000000000001",
+      "bf7ab5eb2897fae352fe000000000000"),
+      /* [ 50] */ new RandomConstant("bd220cae86314f363ef0000000000001",
+      "925b14e6512ff5c6a5fc000000000000"),
+      /* [ 51] */ new RandomConstant("36fd3a5d0c629e6c7de0000000000001",
+      "724cce0ca25feb8d4bf8000000000000"),
+      /* [ 52] */ new RandomConstant("60def8ba18c53cd8fbc0000000000001",
+      "1af42d1944bfd71a97f0000000000000"),
+      /* [ 53] */ new RandomConstant("8d500174318a79b1f780000000000001",
+      "0f529e32897fae352fe0000000000000"),
+      /* [ 54] */ new RandomConstant("48e842e86314f363ef00000000000001",
+      "844e4c6512ff5c6a5fc0000000000000"),
+      /* [ 55] */ new RandomConstant("4af185d0c629e6c7de00000000000001",
+      "9f40d8ca25feb8d4bf80000000000000"),
+      /* [ 56] */ new RandomConstant("7a670ba18c53cd8fbc00000000000001",
+      "9912b1944bfd71a97f00000000000000"),
+      /* [ 57] */ new RandomConstant("86de174318a79b1f7800000000000001",
+      "9c69632897fae352fe00000000000000"),
+      /* [ 58] */ new RandomConstant("55fc2e86314f363ef000000000000001",
+      "e1e2c6512ff5c6a5fc00000000000000"),
+      /* [ 59] */ new RandomConstant("ccf85d0c629e6c7de000000000000001",
+      "68058ca25feb8d4bf800000000000000"),
+      /* [ 60] */ new RandomConstant("1df0ba18c53cd8fbc000000000000001",
+      "610b1944bfd71a97f000000000000000"),
+      /* [ 61] */ new RandomConstant("4be174318a79b1f78000000000000001",
+      "061632897fae352fe000000000000000"),
+      /* [ 62] */ new RandomConstant("d7c2e86314f363ef0000000000000001",
+      "1c2c6512ff5c6a5fc000000000000000"),
+      /* [ 63] */ new RandomConstant("af85d0c629e6c7de0000000000000001",
+      "7858ca25feb8d4bf8000000000000000"),
+      /* [ 64] */ new RandomConstant("5f0ba18c53cd8fbc0000000000000001",
+      "f0b1944bfd71a97f0000000000000000"),
+      /* [ 65] */ new RandomConstant("be174318a79b1f780000000000000001",
+      "e1632897fae352fe0000000000000000"),
+      /* [ 66] */ new RandomConstant("7c2e86314f363ef00000000000000001",
+      "c2c6512ff5c6a5fc0000000000000000"),
+      /* [ 67] */ new RandomConstant("f85d0c629e6c7de00000000000000001",
+      "858ca25feb8d4bf80000000000000000"),
+      /* [ 68] */ new RandomConstant("f0ba18c53cd8fbc00000000000000001",
+      "0b1944bfd71a97f00000000000000000"),
+      /* [ 69] */ new RandomConstant("e174318a79b1f7800000000000000001",
+      "1632897fae352fe00000000000000000"),
+      /* [ 70] */ new RandomConstant("c2e86314f363ef000000000000000001",
+      "2c6512ff5c6a5fc00000000000000000"),
+      /* [ 71] */ new RandomConstant("85d0c629e6c7de000000000000000001",
+      "58ca25feb8d4bf800000000000000000"),
+      /* [ 72] */ new RandomConstant("0ba18c53cd8fbc000000000000000001",
+      "b1944bfd71a97f000000000000000000"),
+      /* [ 73] */ new RandomConstant("174318a79b1f78000000000000000001",
+      "632897fae352fe000000000000000000"),
+      /* [ 74] */ new RandomConstant("2e86314f363ef0000000000000000001",
+      "c6512ff5c6a5fc000000000000000000"),
+      /* [ 75] */ new RandomConstant("5d0c629e6c7de0000000000000000001",
+      "8ca25feb8d4bf8000000000000000000"),
+      /* [ 76] */ new RandomConstant("ba18c53cd8fbc0000000000000000001",
+      "1944bfd71a97f0000000000000000000"),
+      /* [ 77] */ new RandomConstant("74318a79b1f780000000000000000001",
+      "32897fae352fe0000000000000000000"),
+      /* [ 78] */ new RandomConstant("e86314f363ef00000000000000000001",
+      "6512ff5c6a5fc0000000000000000000"),
+      /* [ 79] */ new RandomConstant("d0c629e6c7de00000000000000000001",
+      "ca25feb8d4bf80000000000000000000"),
+      /* [ 80] */ new RandomConstant("a18c53cd8fbc00000000000000000001",
+      "944bfd71a97f00000000000000000000"),
+      /* [ 81] */ new RandomConstant("4318a79b1f7800000000000000000001",
+      "2897fae352fe00000000000000000000"),
+      /* [ 82] */ new RandomConstant("86314f363ef000000000000000000001",
+      "512ff5c6a5fc00000000000000000000"),
+      /* [ 83] */ new RandomConstant("0c629e6c7de000000000000000000001",
+      "a25feb8d4bf800000000000000000000"),
+      /* [ 84] */ new RandomConstant("18c53cd8fbc000000000000000000001",
+      "44bfd71a97f000000000000000000000"),
+      /* [ 85] */ new RandomConstant("318a79b1f78000000000000000000001",
+      "897fae352fe000000000000000000000"),
+      /* [ 86] */ new RandomConstant("6314f363ef0000000000000000000001",
+      "12ff5c6a5fc000000000000000000000"),
+      /* [ 87] */ new RandomConstant("c629e6c7de0000000000000000000001",
+      "25feb8d4bf8000000000000000000000"),
+      /* [ 88] */ new RandomConstant("8c53cd8fbc0000000000000000000001",
+      "4bfd71a97f0000000000000000000000"),
+      /* [ 89] */ new RandomConstant("18a79b1f780000000000000000000001",
+      "97fae352fe0000000000000000000000"),
+      /* [ 90] */ new RandomConstant("314f363ef00000000000000000000001",
+      "2ff5c6a5fc0000000000000000000000"),
+      /* [ 91] */ new RandomConstant("629e6c7de00000000000000000000001",
+      "5feb8d4bf80000000000000000000000"),
+      /* [ 92] */ new RandomConstant("c53cd8fbc00000000000000000000001",
+      "bfd71a97f00000000000000000000000"),
+      /* [ 93] */ new RandomConstant("8a79b1f7800000000000000000000001",
+      "7fae352fe00000000000000000000000"),
+      /* [ 94] */ new RandomConstant("14f363ef000000000000000000000001",
+      "ff5c6a5fc00000000000000000000000"),
+      /* [ 95] */ new RandomConstant("29e6c7de000000000000000000000001",
+      "feb8d4bf800000000000000000000000"),
+      /* [ 96] */ new RandomConstant("53cd8fbc000000000000000000000001",
+      "fd71a97f000000000000000000000000"),
+      /* [ 97] */ new RandomConstant("a79b1f78000000000000000000000001",
+      "fae352fe000000000000000000000000"),
+      /* [ 98] */ new RandomConstant("4f363ef0000000000000000000000001",
+      "f5c6a5fc000000000000000000000000"),
+      /* [ 99] */ new RandomConstant("9e6c7de0000000000000000000000001",
+      "eb8d4bf8000000000000000000000000"),
+      /* [100] */ new RandomConstant("3cd8fbc0000000000000000000000001",
+      "d71a97f0000000000000000000000000"),
+      /* [101] */ new RandomConstant("79b1f780000000000000000000000001",
+      "ae352fe0000000000000000000000000"),
+      /* [102] */ new RandomConstant("f363ef00000000000000000000000001",
+      "5c6a5fc0000000000000000000000000"),
+      /* [103] */ new RandomConstant("e6c7de00000000000000000000000001",
+      "b8d4bf80000000000000000000000000"),
+      /* [104] */ new RandomConstant("cd8fbc00000000000000000000000001",
+      "71a97f00000000000000000000000000"),
+      /* [105] */ new RandomConstant("9b1f7800000000000000000000000001",
+      "e352fe00000000000000000000000000"),
+      /* [106] */ new RandomConstant("363ef000000000000000000000000001",
+      "c6a5fc00000000000000000000000000"),
+      /* [107] */ new RandomConstant("6c7de000000000000000000000000001",
+      "8d4bf800000000000000000000000000"),
+      /* [108] */ new RandomConstant("d8fbc000000000000000000000000001",
+      "1a97f000000000000000000000000000"),
+      /* [109] */ new RandomConstant("b1f78000000000000000000000000001",
+      "352fe000000000000000000000000000"),
+      /* [110] */ new RandomConstant("63ef0000000000000000000000000001",
+      "6a5fc000000000000000000000000000"),
+      /* [111] */ new RandomConstant("c7de0000000000000000000000000001",
+      "d4bf8000000000000000000000000000"),
+      /* [112] */ new RandomConstant("8fbc0000000000000000000000000001",
+      "a97f0000000000000000000000000000"),
+      /* [113] */ new RandomConstant("1f780000000000000000000000000001",
+      "52fe0000000000000000000000000000"),
+      /* [114] */ new RandomConstant("3ef00000000000000000000000000001",
+      "a5fc0000000000000000000000000000"),
+      /* [115] */ new RandomConstant("7de00000000000000000000000000001",
+      "4bf80000000000000000000000000000"),
+      /* [116] */ new RandomConstant("fbc00000000000000000000000000001",
+      "97f00000000000000000000000000000"),
+      /* [117] */ new RandomConstant("f7800000000000000000000000000001",
+      "2fe00000000000000000000000000000"),
+      /* [118] */ new RandomConstant("ef000000000000000000000000000001",
+      "5fc00000000000000000000000000000"),
+      /* [119] */ new RandomConstant("de000000000000000000000000000001",
+      "bf800000000000000000000000000000"),
+      /* [120] */ new RandomConstant("bc000000000000000000000000000001",
+      "7f000000000000000000000000000000"),
+      /* [121] */ new RandomConstant("78000000000000000000000000000001",
+      "fe000000000000000000000000000000"),
+      /* [122] */ new RandomConstant("f0000000000000000000000000000001",
+      "fc000000000000000000000000000000"),
+      /* [123] */ new RandomConstant("e0000000000000000000000000000001",
+      "f8000000000000000000000000000000"),
+      /* [124] */ new RandomConstant("c0000000000000000000000000000001",
+      "f0000000000000000000000000000000"),
+      /* [125] */ new RandomConstant("80000000000000000000000000000001",
+      "e0000000000000000000000000000000"),
+      /* [126] */ new RandomConstant("00000000000000000000000000000001",
+      "c0000000000000000000000000000000"),
+      /* [127] */ new RandomConstant("00000000000000000000000000000001",
+      "80000000000000000000000000000000")};
+
+  /**
+   *  generate the random number that is "advance" steps
+   *  from an initial random number of 0.  This is done by
+   *  starting with 0, and then advancing the by the
+   *  appropriate powers of 2 of the linear congruential
+   *  generator.
+   */
+  public static Unsigned16 skipAhead(Unsigned16 advance) {
+    Unsigned16 result = new Unsigned16();
+    long          bit_map;
+
+    bit_map = advance.getLow8();
+    for (int i = 0; bit_map != 0 && i < 64; i++) {
+      if ((bit_map & (1L << i)) != 0) {
+        /* advance random number by f**(2**i) (x)
+         */
+        result.multiply(genArray[i].a);
+        result.add(genArray[i].c);
+        bit_map &= ~(1L << i);
+      }
+    }
+    bit_map = advance.getHigh8();
+    for (int i = 0; bit_map != 0 && i < 64; i++)
+    {
+      if ((bit_map & (1L << i)) != 0) {
+        /* advance random number by f**(2**(i + 64)) (x)
+         */
+        result.multiply(genArray[i+64].a);
+        result.add(genArray[i+64].c);
+        bit_map &= ~(1L << i);
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Generate the next 16 byte random number.
+   */
+  public static void nextRand(Unsigned16 rand) {
+    /* advance the random number forward once using the linear congruential
+     * generator, and then return the new random number
+     */
+    rand.multiply(genArray[0].a);
+    rand.add(genArray[0].c);
+  }
+}
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
new file mode 100644
index 0000000..ce6b662
--- /dev/null
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
@@ -0,0 +1,299 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.apps.terasort;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.io.Serializable;
+import org.apache.hadoop.io.Writable;
+
+/**
+ * An unsigned 16 byte integer class that supports addition, multiplication,
+ * and left shifts.
+ *
+ *  * code copied from <a href="https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort/Unsigned16.java">Terasort Example</a>
+ */
+class Unsigned16 implements Writable, Serializable {
+  private long hi8;
+  private long lo8;
+
+  public Unsigned16() {
+    hi8 = 0;
+    lo8 = 0;
+  }
+
+  public Unsigned16(long l) {
+    hi8 = 0;
+    lo8 = l;
+  }
+
+  public Unsigned16(Unsigned16 other) {
+    hi8 = other.hi8;
+    lo8 = other.lo8;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (o instanceof Unsigned16) {
+      Unsigned16 other = (Unsigned16) o;
+      return other.hi8 == hi8 && other.lo8 == lo8;
+    }
+    return false;
+  }
+
+  @Override
+  public int hashCode() {
+    return (int) lo8;
+  }
+
+  /**
+   * Parse a hex string
+   * @param s the hex string
+   */
+  public Unsigned16(String s) throws NumberFormatException {
+    set(s);
+  }
+
+  /**
+   * Set the number from a hex string
+   * @param s the number in hexadecimal
+   * @throws NumberFormatException if the number is invalid
+   */
+  public void set(String s) throws NumberFormatException {
+    hi8 = 0;
+    lo8 = 0;
+    final long lastDigit = 0xfl << 60;
+    for (int i = 0; i < s.length(); ++i) {
+      int digit = getHexDigit(s.charAt(i));
+      if ((lastDigit & hi8) != 0) {
+        throw new NumberFormatException(s + " overflowed 16 bytes");
+      }
+      hi8 <<= 4;
+      hi8 |= (lo8 & lastDigit) >>> 60;
+      lo8 <<= 4;
+      lo8 |= digit;
+    }
+  }
+
+  /**
+   * Set the number to a given long.
+   * @param l the new value, which is treated as an unsigned number
+   */
+  public void set(long l) {
+    lo8 = l;
+    hi8 = 0;
+  }
+
+  /**
+   * Map a hexadecimal character into a digit.
+   * @param ch the character
+   * @return the digit from 0 to 15
+   * @throws NumberFormatException
+   */
+  private static int getHexDigit(char ch) throws NumberFormatException {
+    if (ch >= '0' && ch <= '9') {
+      return ch - '0';
+    }
+    if (ch >= 'a' && ch <= 'f') {
+      return ch - 'a' + 10;
+    }
+    if (ch >= 'A' && ch <= 'F') {
+      return ch - 'A' + 10;
+    }
+    throw new NumberFormatException(ch + " is not a valid hex digit");
+  }
+
+  private static final Unsigned16 TEN = new Unsigned16(10);
+
+  public static Unsigned16 fromDecimal(String s) throws NumberFormatException {
+    Unsigned16 result = new Unsigned16();
+    Unsigned16 tmp = new Unsigned16();
+    for(int i=0; i < s.length(); i++) {
+      char ch = s.charAt(i);
+      if (ch < '0' || ch > '9') {
+        throw new NumberFormatException(ch + " not a valid decimal digit");
+      }
+      int digit = ch - '0';
+      result.multiply(TEN);
+      tmp.set(digit);
+      result.add(tmp);
+    }
+    return result;
+  }
+
+  /**
+   * Return the number as a hex string.
+   */
+  public String toString() {
+    if (hi8 == 0) {
+      return Long.toHexString(lo8);
+    } else {
+      StringBuilder result = new StringBuilder();
+      result.append(Long.toHexString(hi8));
+      String loString = Long.toHexString(lo8);
+      for(int i=loString.length(); i < 16; ++i) {
+        result.append('0');
+      }
+      result.append(loString);
+      return result.toString();
+    }
+  }
+
+  /**
+   * Get a given byte from the number.
+   * @param b the byte to get with 0 meaning the most significant byte
+   * @return the byte or 0 if b is outside of 0..15
+   */
+  public byte getByte(int b) {
+    if (b >= 0 && b < 16) {
+      if (b < 8) {
+        return (byte) (hi8 >> (56 - 8*b));
+      } else {
+        return (byte) (lo8 >> (120 - 8*b));
+      }
+    }
+    return 0;
+  }
+
+  /**
+   * Get the hexadecimal digit at the given position.
+   * @param p the digit position to get with 0 meaning the most significant
+   * @return the character or '0' if p is outside of 0..31
+   */
+  public char getHexDigit(int p) {
+    byte digit = getByte(p / 2);
+    if (p % 2 == 0) {
+      digit >>>= 4;
+    }
+    digit &= 0xf;
+    if (digit < 10) {
+      return (char) ('0' + digit);
+    } else {
+      return (char) ('A' + digit - 10);
+    }
+  }
+
+  /**
+   * Get the high 8 bytes as a long.
+   */
+  public long getHigh8() {
+    return hi8;
+  }
+
+  /**
+   * Get the low 8 bytes as a long.
+   */
+  public long getLow8() {
+    return lo8;
+  }
+
+  /**
+   * Multiple the current number by a 16 byte unsigned integer. Overflow is not
+   * detected and the result is the low 16 bytes of the result. The numbers 
+   * are divided into 32 and 31 bit chunks so that the product of two chucks
+   * fits in the unsigned 63 bits of a long.
+   * @param b the other number
+   */
+  void multiply(Unsigned16 b) {
+    // divide the left into 4 32 bit chunks
+    long[] left = new long[4];
+    left[0] = lo8 & 0xffffffffl;
+    left[1] = lo8 >>> 32;
+    left[2] = hi8 & 0xffffffffl;
+    left[3] = hi8 >>> 32;
+    // divide the right into 5 31 bit chunks
+    long[] right = new long[5];
+    right[0] = b.lo8 & 0x7fffffffl;
+    right[1] = (b.lo8 >>> 31) & 0x7fffffffl;
+    right[2] = (b.lo8 >>> 62) + ((b.hi8 & 0x1fffffffl) << 2);
+    right[3] = (b.hi8 >>> 29) & 0x7fffffffl;
+    right[4] = (b.hi8 >>> 60);
+    // clear the cur value
+    set(0);
+    Unsigned16 tmp = new Unsigned16();
+    for(int l=0; l < 4; ++l) {
+      for (int r=0; r < 5; ++r) {
+        long prod = left[l] * right[r];
+        if (prod != 0) {
+          int off = l*32 + r*31;
+          tmp.set(prod);
+          tmp.shiftLeft(off);
+          add(tmp);
+        }
+      }
+    }
+  }
+
+  /**
+   * Add the given number into the current number.
+   * @param b the other number
+   */
+  public void add(Unsigned16 b) {
+    long sumHi;
+    long sumLo;
+    long  reshibit, hibit0, hibit1;
+
+    sumHi = hi8 + b.hi8;
+
+    hibit0 = (lo8 & 0x8000000000000000L);
+    hibit1 = (b.lo8 & 0x8000000000000000L);
+    sumLo = lo8 + b.lo8;
+    reshibit = (sumLo & 0x8000000000000000L);
+    if ((hibit0 & hibit1) != 0 | ((hibit0 ^ hibit1) != 0 && reshibit == 0))
+      sumHi++;  /* add carry bit */
+    hi8 = sumHi;
+    lo8 = sumLo;
+  }
+
+  /**
+   * Shift the number a given number of bit positions. The number is the low
+   * order bits of the result.
+   * @param bits the bit positions to shift by
+   */
+  public void shiftLeft(int bits) {
+    if (bits != 0) {
+      if (bits < 64) {
+        hi8 <<= bits;
+        hi8 |= (lo8 >>> (64 - bits));
+        lo8 <<= bits;
+      } else if (bits < 128) {
+        hi8 = lo8 << (bits - 64);
+        lo8 = 0;
+      } else {
+        hi8 = 0;
+        lo8 = 0;
+      }
+    }
+  }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    hi8 = in.readLong();
+    lo8 = in.readLong();
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    out.writeLong(hi8);
+    out.writeLong(lo8);
+  }
+
+
+}
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
index c020b34..f77abe2 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
@@ -21,14 +21,17 @@
 import org.apache.wayang.apps.tpch.data.LineItemTuple;
 import org.apache.wayang.apps.tpch.data.q1.GroupKey;
 import org.apache.wayang.apps.tpch.data.q1.ReturnTuple;
-import org.apache.wayang.basic.operators.*;
+import org.apache.wayang.basic.operators.FilterOperator;
+import org.apache.wayang.basic.operators.LocalCallbackSink;
+import org.apache.wayang.basic.operators.MapOperator;
+import org.apache.wayang.basic.operators.ReduceByOperator;
+import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.Spark;
-import org.apache.wayang.spark.platform.SparkPlatform;
 
 /**
  * Main class for the TPC-H app based on Apache Wayang.
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
index 9b613cd..0cd0f4d 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
@@ -18,8 +18,19 @@
 
 package org.apache.wayang.apps.wordcount;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.operators.*;
+import org.apache.wayang.basic.operators.FilterOperator;
+import org.apache.wayang.basic.operators.FlatMapOperator;
+import org.apache.wayang.basic.operators.LocalCallbackSink;
+import org.apache.wayang.basic.operators.MapOperator;
+import org.apache.wayang.basic.operators.ReduceByOperator;
+import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -32,14 +43,6 @@
 import org.apache.wayang.java.Java;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.Spark;
-import org.apache.wayang.spark.platform.SparkPlatform;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
 
 /**
  * Example Apache Wayang App that does a word count -- the Hello World of Map/Reduce-like systems.
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
index f1c598a..d4b6b39 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
@@ -19,7 +19,6 @@
 package org.apache.wayang.apps.benchmark
 
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 
 /**
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
index 7aaccbe..3e7f720 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.apps.benchmark
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.api.{DataQuanta, PlanBuilder}
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.WayangContext
 import org.apache.wayang.core.plan.wayangplan.WayangPlan
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
index 9a92ba5..7f16921 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.apps.crocopr
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
 import org.apache.wayang.api.graph._
 import org.apache.wayang.api.{DataQuanta, PlanBuilder}
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.exception.WayangException
 import org.apache.wayang.core.api.{Configuration, WayangContext}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
index 5a1f1fc..bad00ec 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.kmeans
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-
 import java.util
+
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
index 301d953..362de09 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.kmeans.postgres
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-
 import java.util
+
 import org.apache.wayang.api.{PlanBuilder, _}
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
index 981cf1d..2fa5189 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
@@ -19,7 +19,6 @@
 package org.apache.wayang.apps.sgd
 
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.core.api.Configuration
 
 /**
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
index a24f403..246f38e 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
@@ -18,7 +18,6 @@
 
 package org.apache.wayang.apps.simwords
 
-import java.lang.Iterable
 import java.util
 
 import org.apache.wayang.core.function.ExecutionContext
@@ -33,7 +32,7 @@
 
   override def open(ctx: ExecutionContext): Unit = {}
 
-  override def apply(line: String): Iterable[String] = {
+  override def apply(line: String): java.lang.Iterable[String] = {
     val result = new util.LinkedList[String]()
     textScrubber.splitAndScrub(line, result)
     result
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
index c98a961..37eaefb 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.apps.simwords
 
+import org.apache.logging.log4j.LogManager
 import org.apache.wayang.core.function.ExecutionContext
 import org.apache.wayang.core.function.FunctionDescriptor.ExtendedSerializableFunction
 import org.apache.wayang.core.util.WayangCollections
-import org.slf4j.LoggerFactory
 
 import scala.collection.JavaConversions._
 import scala.util.Random
@@ -33,7 +33,7 @@
 class SelectNearestCentroidFunction(broadcastName: String)
   extends ExtendedSerializableFunction[(Int, SparseVector), (Int, SparseVector, Int)] {
 
-  private lazy val logger = LoggerFactory.getLogger(getClass)
+  private lazy val logger = LogManager.getLogger(getClass)
 
   private var centroids: java.util.List[(Int, SparseVector)] = _
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
index f1ace56..183e52a 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.simwords
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
index adbe05c..5696800 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.simwords
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
index 01db9ea..f189f70 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
@@ -18,13 +18,11 @@
 
 package org.apache.wayang.apps.sindy
 
-import java.lang.Iterable
 import java.util
+
 import org.apache.wayang.api._
-import org.apache.wayang.apps
-import Sindy.{CellCreator, CellMerger, IndCandidateGenerator, IndCandidateMerger}
+import org.apache.wayang.apps.sindy.Sindy.{CellCreator, CellMerger, IndCandidateGenerator, IndCandidateMerger}
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.FunctionDescriptor.{SerializableBinaryOperator, SerializableFunction}
@@ -149,7 +147,7 @@
     */
   class CellCreator(val offset: Int, val separator: Char) extends SerializableFunction[String, java.lang.Iterable[(String, Int)]] {
 
-    override def apply(row: String): Iterable[(String, Int)] = {
+    override def apply(row: String): java.lang.Iterable[(String, Int)] = {
       val fields = row.split(separator)
       val cells = new util.ArrayList[(String, Int)](fields.length)
       var columnId = offset
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
new file mode 100644
index 0000000..531bb19
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.apps.terasort
+
+import java.util.regex.Pattern
+
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters}
+import org.apache.wayang.core.api.Configuration
+
+object TeraApp extends ExperimentDescriptor {
+
+  val KEY_LEN = 10
+  val VALUE_LEN = 100
+  val RECORD_LEN : Int = KEY_LEN + VALUE_LEN
+
+  override def version = "0.1.0"
+
+  def main(args: Array[String]) {
+    // Parse args.
+    if (args.isEmpty) {
+      println(s"Usage: " +
+        s"${Parameters.experimentHelp} " +
+        s"<plugin(,plugin)*> " +
+        s"<task could be[generate|sort|validate]> " +
+        s"<file size ([0-9]+(.[0-9]+)?)([B|k|K|m|M|g|G|t|T])> " +
+        s"<partitions>" +
+        s"<input file if not value is null> " +
+        s"<output file if not value is null>")
+      sys.exit(1)
+    }
+    implicit val configuration = new Configuration
+    implicit val experiment = Parameters.createExperiment(args(0), this)
+    val plugins = Parameters.loadPlugins(args(1))
+    experiment.getSubject.addConfiguration("plugins", args(1))
+    val task = args(2)
+    experiment.getSubject.addConfiguration("task", task)
+    val fileSize = sizeStrToBytes(args(3))
+    experiment.getSubject.addConfiguration("fileSize", fileSize)
+    val partitions = args(4).toInt
+    experiment.getSubject.addConfiguration("partitions", partitions)
+    val input_file = if(args(5).equals("null")) null else args(5)
+    val output_file = if(args.length > 6){ if(args(6).equals("null")) null else args(6) } else null
+    experiment.getSubject.addConfiguration("inputFile", input_file)
+    experiment.getSubject.addConfiguration("outputFile", output_file)
+
+    task match {
+      case "generate" => new TeraGen(plugins: _*).apply(output_file, fileSize, partitions)
+      case "sort" => new TeraSort(plugins: _*).apply(input_file, output_file)
+      case "validate" => new TeraValidate(plugins: _*).apply(input_file)
+    }
+
+
+    // Run wordCount.
+//    val wordCount = new WordCountScala(plugins: _*)
+//    val words =
+//      (if (wordsPerLine != null) {
+//        wordCount(inputFile, wordsPerLine)
+//      } else {
+//        wordCount(inputFile)
+//      }).toSeq.sortBy(-_._2)
+//
+//    // Store experiment data.
+//    val inputFileSize = FileSystems.getFileSize(inputFile)
+//    if (inputFileSize.isPresent) experiment.getSubject.addConfiguration("inputSize", inputFileSize.getAsLong)
+//    ProfileDBHelper.store(experiment, configuration)
+//
+//    // Print results.
+//    println(s"Found ${words.size} words:")
+//    words.take(10).foreach(wc => println(s"${wc._2}x ${wc._1}"))
+//    if (words.size > 10) print(s"${words.size - 10} more...")
+
+
+  }
+
+  /**
+   * Convert the string format ([0-9]+(.[0-9]+)?)([B|k|K|m|M|g|G|t|T]) to the
+   * number on bytes
+   *
+   * B = Bytes
+   * k|K = Kilobytes (1_024 Bytes)
+   * m|M = Megabytes (1_048_576 Bytes)
+   * g|G = Gigabytes (1_073_741_824 Bytes)
+   * t|T = Terabytes (1_099_511_627_776 Bytes)
+   *
+   * @param str in the format
+   * @return number equivalent to the byte
+   */
+  def sizeStrToBytes(str: String): Long = {
+    val reg = "(\\d+(\\.\\d+)?)([B|k|K|m|M|g|G|t|T])"
+    val groups = Pattern.compile(reg).matcher(str)
+    groups.find()
+
+    val number_part:Double = groups.group(1).toDouble
+    val letter_part:String = groups.group(3)
+
+    val conversion = letter_part match {
+      case "B" => 1L //2^0
+      case "k" => 1024L //2^10
+      case "K" => 1024L //2^10
+      case "m" => 1048576L //2^20
+      case "M" => 1048576L //2^20
+      case "g" => 1073741824L //2^30
+      case "G" => 1073741824L //2^30
+      case "t" => 1099511627776L //2^40
+      case "T" => 1099511627776L //2^40
+      case _ => 1L //2^0
+    }
+    (number_part * conversion).toLong
+  }
+
+  /**
+   * take a number that represent a size on bytes return the human readable version
+   *
+   * @param size number that represent the size
+   * @return human readable version of the size
+   */
+  def sizeToSizeStr(size: Long): String = {
+    val kbScale: Long = 1024L
+    val mbScale: Long = 1024L * kbScale
+    val gbScale: Long = 1024L * mbScale
+    val tbScale: Long = 1024L * gbScale
+
+    if (size > tbScale) {
+      size / tbScale + "TB"
+    } else if (size > gbScale) {
+      size / gbScale  + "GB"
+    } else if (size > mbScale) {
+      size / mbScale + "MB"
+    } else if (size > kbScale) {
+      size / kbScale + "KB"
+    } else {
+      size + "B"
+    }
+  }
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
new file mode 100644
index 0000000..4d6cd74
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.apps.terasort
+
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+
+class TeraGen(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(output_url: String, file_size: Long, partitions: Int)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+
+    val parts = partitions
+    val recordsPerPartition = file_size / TeraApp.VALUE_LEN / parts.toLong
+    val numRecords = recordsPerPartition * parts.toLong
+
+    assert(recordsPerPartition < Int.MaxValue, s"records per partition > ${Int.MaxValue}")
+
+    println("===========================================================================")
+    println("===========================================================================")
+    println(s"Input size: $file_size")
+    println(s"Total number of records: $numRecords")
+    println(s"Number of output partitions: $parts")
+    println("Number of records/output partition: " + (numRecords / parts))
+    println("===========================================================================")
+    println("===========================================================================")
+
+    planBuilder
+      .withJobName(s"Terasort generate ${file_size}")
+      .withExperiment(experiment)
+      .withUdfJarsOf(this.getClass)
+      .loadCollection(1 to parts)
+      .flatMap( index => {
+        val one = new Unsigned16(1)
+        val firstRecordNumber = new Unsigned16(index.toLong * recordsPerPartition.toLong)
+        val recordsToGenerate = new Unsigned16(recordsPerPartition)
+
+        val recordNumber = new Unsigned16(firstRecordNumber)
+        val lastRecordNumber = new Unsigned16(firstRecordNumber)
+        lastRecordNumber.add(recordsToGenerate)
+
+        val rand = Random16.skipAhead(firstRecordNumber)
+
+        Iterator.tabulate(recordsPerPartition.toInt) { offset =>
+          val rowBytes: Array[Byte] = new Array[Byte](TeraApp.RECORD_LEN)
+          val key = new Array[Byte](TeraApp.KEY_LEN)
+          val value = new Array[Byte](TeraApp.VALUE_LEN)
+          Random16.nextRand(rand)
+          generateRecord(rowBytes, rand, recordNumber)
+          recordNumber.add(one)
+          rowBytes.copyToArray(key, 0, TeraApp.KEY_LEN)
+          rowBytes.takeRight(TeraApp.VALUE_LEN).copyToArray(value, 0, TeraApp.VALUE_LEN)
+          (key, value)
+        }.toStream
+      })
+      .writeObjectFile(output_url)
+  }
+
+  /**
+   * Generate a binary record suitable for all sort benchmarks except PennySort.
+   *
+   * @param recBuf record to return
+   */
+  def generateRecord(recBuf: Array[Byte], rand: Unsigned16, recordNumber: Unsigned16): Unit = {
+    // Generate the 10-byte key using the high 10 bytes of the 128-bit random number
+    var i = 0
+    while (i < 10) {
+      recBuf(i) = rand.getByte(i)
+      i += 1
+    }
+
+    // Add 2 bytes of "break"
+    recBuf(10) = 0x00.toByte
+    recBuf(11) = 0x11.toByte
+
+    // Convert the 128-bit record number to 32 bits of ascii hexadecimal
+    // as the next 32 bytes of the record.
+    i = 0
+    while (i < 32) {
+      recBuf(12 + i) = recordNumber.getHexDigit(i).toByte
+      i += 1
+    }
+
+    // Add 4 bytes of "break" data
+    recBuf(44) = 0x88.toByte
+    recBuf(45) = 0x99.toByte
+    recBuf(46) = 0xAA.toByte
+    recBuf(47) = 0xBB.toByte
+
+    // Add 48 bytes of filler based on low 48 bits of random number
+    i = 0
+    while (i < 12) {
+      val v = rand.getHexDigit(20 + i).toByte
+      recBuf(48 + i * 4) = v
+      recBuf(49 + i * 4) = v
+      recBuf(50 + i * 4) = v
+      recBuf(51 + i * 4) = v
+      i += 1
+    }
+
+    // Add 4 bytes of "break" data
+    recBuf(96) = 0xCC.toByte
+    recBuf(97) = 0xDD.toByte
+    recBuf(98) = 0xEE.toByte
+    recBuf(99) = 0xFF.toByte
+  }
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
new file mode 100644
index 0000000..8b66230
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.apps.terasort
+
+import com.google.common.primitives.Longs
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+
+class TeraSort(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(input_url: String, output_url: String)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+
+    planBuilder
+      .readObjectFile[Tuple2[Array[Byte], Array[Byte]]](input_url)
+      .sort(t => {
+        val bytes = t._1;
+        Longs.fromBytes(0, bytes(0), bytes(1), bytes(2), bytes(3), bytes(4), bytes(5), bytes(6))
+      })
+      .writeObjectFile(output_url);
+  }
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
new file mode 100644
index 0000000..d4e035c
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.apps.terasort
+
+import com.google.common.primitives.UnsignedBytes
+import org.apache.hadoop.util.PureJavaCrc32
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+
+class TeraValidate(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(input_url: String)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+    val dataset = planBuilder
+      .readObjectFile[Tuple2[Array[Byte], Array[Byte]]](input_url)
+
+    val output = dataset.mapPartitions(
+      iterable_element => {
+        val iter = iterable_element.iterator
+        val sum = new Unsigned16
+        val checksum = new Unsigned16
+        val crc32 = new PureJavaCrc32()
+        val min = new Array[Byte](10)
+        val max = new Array[Byte](10)
+
+        val cmp = UnsignedBytes.lexicographicalComparator()
+
+        var pos = 0L
+        var prev = new Array[Byte](10)
+
+        while (iter.hasNext) {
+          val key = iter.next()._1
+          assert(cmp.compare(key, prev) >= 0)
+
+          crc32.reset()
+          crc32.update(key, 0, key.length)
+          checksum.set(crc32.getValue)
+          sum.add(checksum)
+
+          if (pos == 0) {
+            key.copyToArray(min, 0, 10)
+          }
+          pos += 1
+          prev = key
+        }
+        prev.copyToArray(max, 0, 10)
+        Iterator((sum, min, max)).toStream
+      }
+    )
+
+    val checksumOutput = output.collect()
+    val cmp = UnsignedBytes.lexicographicalComparator()
+    val sum = new Unsigned16
+    var numRecords = dataset.count.collect().head
+
+    checksumOutput.foreach { case (partSum, min, max) =>
+      sum.add(partSum)
+    }
+    println("num records: " + numRecords)
+    println("checksum: " + sum.toString)
+    var lastMax = new Array[Byte](10)
+    checksumOutput.map{ case (partSum, min, max) =>
+      (partSum, min.clone(), max.clone())
+    }.zipWithIndex.foreach { case ((partSum, min, max), i) =>
+      println(s"part $i")
+      println(s"lastMax" + lastMax.toSeq.map(x => if (x < 0) 256 + x else x))
+      println(s"min " + min.toSeq.map(x => if (x < 0) 256 + x else x))
+      println(s"max " + max.toSeq.map(x => if (x < 0) 256 + x else x))
+      assert(cmp.compare(min, max) <= 0, "min >= max")
+      assert(cmp.compare(lastMax, min) <= 0, "current partition min < last partition max")
+      lastMax = max
+    }
+    println("num records: " + numRecords)
+    println("checksum: " + sum.toString)
+    println("partitions are properly sorted")
+  }
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
index 60e35a7..c28952f 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
@@ -20,17 +20,15 @@
 
 import org.apache.wayang.apps.tpch.queries.{Query1, Query3Database, Query3File, Query3Hybrid}
 import org.apache.wayang.apps.util.{Parameters, ProfileDBHelper, StdOut}
-import org.apache.wayang.apps.tpch.queries.Query1
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.Configuration
+import org.apache.wayang.core.platform.Platform
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate
 import org.apache.wayang.postgres.Postgres
 import org.apache.wayang.postgres.operators.PostgresTableSource
 import org.apache.wayang.sqlite3.Sqlite3
 import org.apache.wayang.sqlite3.operators.Sqlite3TableSource
 
-import scala.collection.JavaConversions._
 
 /**
   * This app adapts some TPC-H queries.
@@ -50,7 +48,17 @@
 
     val jdbcPlatform = {
       val jdbcPlatforms = plugins
-        .flatMap(_.getRequiredPlatforms)
+        .flatMap(
+          plugin => {
+            val list = plugin.getRequiredPlatforms
+            var array: List[Platform] = List[Platform]()
+            val iterator = list.iterator()
+            while(iterator.hasNext){
+              array :+= iterator.next()
+            }
+            array
+          }
+        )
         .filter(_.isInstanceOf[JdbcPlatformTemplate])
         .distinct
       if (jdbcPlatforms.size == 1) jdbcPlatforms.head.asInstanceOf[JdbcPlatformTemplate]
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
index 01c6a3d..b63af06 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
index d3ea4e7..f146555 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
index 171e184..63aef01 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
index 06a8cc7..930c39d 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
index 135c46a..211fba7 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.apps.util
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.basic.WayangBasics
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
 import org.apache.wayang.core.plugin.{DynamicPlugin, Plugin}
 //import org.apache.wayang.graphchi.GraphChi
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
index 7c4b381..3d98487 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
@@ -20,9 +20,6 @@
 
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.Configuration
-import org.apache.wayang.core.profiling.ProfileDBs
-
-import java.io.File
 
 /**
   * Helper utility to employ with [[ProfileDB]].
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
index 722cf43..af61bcd 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.wordcount
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
diff --git a/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java b/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
index 506a0cb..e53a258 100644
--- a/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
+++ b/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.data;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suited for {@link LineItemTuple}.
diff --git a/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala b/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
index 53d6fea..72c3853 100644
--- a/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
+++ b/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
@@ -19,11 +19,11 @@
 package org.apache.wayang.apps.kmeans
 
 import org.apache.wayang.commons.util.profiledb.model.{Experiment, Subject}
-import org.junit.Assert._
-import org.junit.Test
 import org.apache.wayang.core.api.Configuration
 import org.apache.wayang.java.Java
 import org.apache.wayang.spark.Spark
+import org.junit.Assert._
+import org.junit.Test
 
 /**
   * Test suite for [[Kmeans]].
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
index 9a56afb..17efde9 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.basic.channels;
 
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Random;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,14 +38,6 @@
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
 
-import java.io.IOException;
-import java.io.UncheckedIOException;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Random;
-
 /**
  * Represents a {@link Channel} that is realized via a file/set of files.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
index d11506c..dac710b 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.data;
 
-import org.apache.wayang.core.util.Copyable;
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Objects;
+import org.apache.wayang.core.util.Copyable;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A Type that represents a record with a schema, might be replaced with something standard like JPA entity.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
index 5db00d7..b4ab9ae 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.basic.function;
 
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.types.RecordType;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This descriptor pertains to projections. It takes field names of the input type to describe the projection.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
index 3fe03d6..1888143 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.ReduceByOperator;
@@ -31,9 +33,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping detects combinations of the {@link GroupByOperator} and {@link ReduceOperator} and merges them into
  * a single {@link ReduceByOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
index 38bf55b..ecd7a68 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.basic.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for the components provided in the basic plugin.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
index 62c49c3..039bf52 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping translates the {@link GroupByOperator} into the {@link MaterializedGroupByOperator}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
index 9491b4d..49ed260 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.basic.operators.DistinctOperator;
@@ -44,11 +48,6 @@
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This {@link Mapping} translates a {@link PageRankOperator} into a {@link Subplan} of basic {@link Operator}s.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
index f9b9e1a..97a1328 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.basic.operators.ReduceOperator;
@@ -30,9 +32,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping detects combinations of the {@link GroupByOperator} and {@link ReduceOperator} and merges them into
  * a single {@link ReduceByOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
index d92edf2..c56d3b2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -31,10 +34,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Mapping} translates a {@link RepeatOperator} into a {@link Subplan} with the {@link LoopOperator}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
index 4fde9fc..89f64a9 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -26,8 +27,6 @@
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the cartesian product of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
index 22676e9..b8f2da7 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator groups both inputs by some key and then matches groups with the same key. If a key appears in only
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
index 0150263..2df6de1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -26,10 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This source takes as input a Java {@link java.util.Collection}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
index 0740575..b990609 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the count of elements in this stream.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
index bf1e2d4..8e461f2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the distinct elements in this dataset.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
index 8966f01..ef4376c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -31,11 +35,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.ReflectionUtils;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This operator has three inputs and two outputs.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
index 767ff69..876fa20 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -27,8 +28,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns a new dataset after filtering by applying predicateDescriptor.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
index e2d4406..7cb0e39 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * A flatmap operator represents semantics as they are known from frameworks, such as Spark and Flink. It pulls each
  * available element from the input slot, applies a function to it, returning zero or more output elements,
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
index 3ddb8b5..7f51a16 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set into a single data quantum.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
index 3c03e1c..9301a30 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set and aggregates the groups.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
index d082695..e354a0c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the set intersection of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
index 1d4d1f3..7601652 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the cartesian product of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
index d88e963..4671dc1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Collection;
+import java.util.Optional;
+import java.util.function.Consumer;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.ConsumerDescriptor;
@@ -27,10 +30,6 @@
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Optional;
-import java.util.function.Consumer;
-
 /**
  * This sink executes a callback on each received data unit into a Java {@link Collection}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
index e83022c..6ae1864 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -31,11 +35,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.ReflectionUtils;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This operator has three inputs and three outputs.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
index 13c25a1..1ecb9b1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
@@ -30,8 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * A map operator represents semantics as they are known from frameworks, such as Spark and Flink. It pulls each
  * available element from the input slot, applies a function to it, and pushes that element to the output slot.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
index 976845e..942a252 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator takes as input potentially multiple input data quanta and outputs multiple input data quanta.
  * <p>Since Wayang is not a physical execution engine, its notion of partitions is rather loose. Implementors
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
index 4b06020..11bca6a 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -27,8 +28,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator collocates the data units in a data set w.r.t. a key function.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
new file mode 100644
index 0000000..c648c17
--- /dev/null
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.basic.operators;
+
+import org.apache.wayang.core.plan.wayangplan.UnarySink;
+import org.apache.wayang.core.types.DataSetType;
+
+/**
+ * This {@link UnarySink} writes all incoming data quanta to a Object file.
+ *
+ * @param <T> type of the object to store
+ */
+public class ObjectFileSink<T> extends UnarySink<T> {
+
+  protected final String textFileUrl;
+
+  protected final Class<T> tClass;
+
+  /**
+   * Creates a new instance.
+   *
+   * @param targetPath  URL to file that should be written
+   * @param type        {@link DataSetType} of the incoming data quanta
+   */
+  public ObjectFileSink(String targetPath, DataSetType<T> type) {
+    super(type);
+    this.textFileUrl = targetPath;
+    this.tClass = type.getDataUnitType().getTypeClass();
+  }
+
+  /**
+   * Creates a new instance.
+   *
+   * @param textFileUrl        URL to file that should be written
+   * @param typeClass          {@link Class} of incoming data quanta
+   */
+  public ObjectFileSink(String textFileUrl, Class<T> typeClass) {
+    super(DataSetType.createDefault(typeClass));
+    this.textFileUrl = textFileUrl;
+    this.tClass = typeClass;
+  }
+
+  /**
+   * Creates a copied instance.
+   *
+   * @param that should be copied
+   */
+  public ObjectFileSink(ObjectFileSink<T> that) {
+    super(that);
+    this.textFileUrl = that.textFileUrl;
+    this.tClass = that.tClass;
+  }
+}
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java
new file mode 100644
index 0000000..7ca3410
--- /dev/null
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java
@@ -0,0 +1,197 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.basic.operators;
+
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.util.fs.FileSystems;
+
+/**
+ * This source reads a text file and outputs the lines as data units.
+ */
+public class ObjectFileSource<T> extends UnarySource<T> {
+
+    private final Logger logger = LogManager.getLogger(this.getClass());
+
+    private final String inputUrl;
+
+    private final Class<T> tClass;
+
+    public ObjectFileSource(String inputUrl, DataSetType<T> type) {
+        super(type);
+        this.inputUrl = inputUrl;
+        this.tClass = type.getDataUnitType().getTypeClass();
+    }
+
+    public ObjectFileSource(String inputUrl, Class<T> tClass) {
+        super(DataSetType.createDefault(tClass));
+        this.inputUrl = inputUrl;
+        this.tClass = tClass;
+    }
+
+    /**
+     * Copies an instance (exclusive of broadcasts).
+     *
+     * @param that that should be copied
+     */
+    public ObjectFileSource(ObjectFileSource that) {
+        super(that);
+        this.inputUrl = that.getInputUrl();
+        this.tClass = that.getTypeClass();
+    }
+
+    public String getInputUrl() {
+        return this.inputUrl;
+    }
+
+    public Class<T> getTypeClass(){
+        return this.tClass;
+    }
+
+    @Override
+    public Optional<org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator> createCardinalityEstimator(
+            final int outputIndex,
+            final Configuration configuration) {
+        Validate.inclusiveBetween(0, this.getNumOutputs() - 1, outputIndex);
+        return Optional.of(new ObjectFileSource.CardinalityEstimator());
+    }
+
+
+    /**
+     * Custom {@link org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator} for {@link FlatMapOperator}s.
+     */
+    protected class CardinalityEstimator implements org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator {
+
+        public final CardinalityEstimate FALLBACK_ESTIMATE = new CardinalityEstimate(1000L, 100000000L, 0.7);
+
+        public static final double CORRECTNESS_PROBABILITY = 0.95d;
+
+        /**
+         * We expect selectivities to be correct within a factor of {@value #EXPECTED_ESTIMATE_DEVIATION}.
+         */
+        public static final double EXPECTED_ESTIMATE_DEVIATION = 0.05;
+
+        @Override
+        public CardinalityEstimate estimate(OptimizationContext optimizationContext, CardinalityEstimate... inputEstimates) {
+            //TODO validate if the implementation apply for the case
+            Validate.isTrue(ObjectFileSource.this.getNumInputs() == inputEstimates.length);
+
+            // see Job for StopWatch measurements
+            final TimeMeasurement timeMeasurement = optimizationContext.getJob().getStopWatch().start(
+                    "Optimization", "Cardinality&Load Estimation", "Push Estimation", "Estimate source cardinalities"
+            );
+
+            // Query the job cache first to see if there is already an estimate.
+            String jobCacheKey = String.format("%s.estimate(%s)", this.getClass().getCanonicalName(), ObjectFileSource.this.inputUrl);
+            CardinalityEstimate cardinalityEstimate = optimizationContext.queryJobCache(jobCacheKey, CardinalityEstimate.class);
+            if (cardinalityEstimate != null) return  cardinalityEstimate;
+
+            // Otherwise calculate the cardinality.
+            // First, inspect the size of the file and its line sizes.
+            OptionalLong fileSize = FileSystems.getFileSize(ObjectFileSource.this.inputUrl);
+            if (!fileSize.isPresent()) {
+                ObjectFileSource.this.logger.warn("Could not determine size of {}... deliver fallback estimate.",
+                        ObjectFileSource.this.inputUrl);
+                timeMeasurement.stop();
+                return this.FALLBACK_ESTIMATE;
+
+            } else if (fileSize.getAsLong() == 0L) {
+                timeMeasurement.stop();
+                return new CardinalityEstimate(0L, 0L, 1d);
+            }
+
+            OptionalDouble bytesPerLine = this.estimateBytesPerLine();
+            if (!bytesPerLine.isPresent()) {
+                ObjectFileSource.this.logger.warn("Could not determine average line size of {}... deliver fallback estimate.",
+                        ObjectFileSource.this.inputUrl);
+                timeMeasurement.stop();
+                return this.FALLBACK_ESTIMATE;
+            }
+
+            // Extrapolate a cardinality estimate for the complete file.
+            double numEstimatedLines = fileSize.getAsLong() / bytesPerLine.getAsDouble();
+            double expectedDeviation = numEstimatedLines * EXPECTED_ESTIMATE_DEVIATION;
+            cardinalityEstimate = new CardinalityEstimate(
+                    (long) (numEstimatedLines - expectedDeviation),
+                    (long) (numEstimatedLines + expectedDeviation),
+                    CORRECTNESS_PROBABILITY
+            );
+
+            // Cache the result, so that it will not be recalculated again.
+            optimizationContext.putIntoJobCache(jobCacheKey, cardinalityEstimate);
+
+            timeMeasurement.stop();
+            return cardinalityEstimate;
+        }
+
+        /**
+         * Estimate the number of bytes that are in each line of a given file.
+         *
+         * @return the average number of bytes per line if it could be determined
+         */
+        private OptionalDouble estimateBytesPerLine() {
+            //TODO validate if the implementation apply for the case
+//            final Optional<FileSystem> fileSystem = FileSystems.getFileSystem(ObjectFileSource.this.inputUrl);
+//            if (fileSystem.isPresent()) {
+//
+//                // Construct a limited reader for the first x KiB of the file.
+//                final int KiB = 1024;
+//                final int MiB = 1024 * KiB;
+//                try (LimitedInputStream lis = new LimitedInputStream(fileSystem.get().open(
+//                    ObjectFileSource.this.inputUrl), 1 * MiB)) {
+//                    final BufferedReader bufferedReader = new BufferedReader(
+//                            new InputStreamReader(lis, ObjectFileSource.this.encoding)
+//                    );
+//
+//                    // Read as much as possible.
+//                    char[] cbuf = new char[1024];
+//                    int numReadChars, numLineFeeds = 0;
+//                    while ((numReadChars = bufferedReader.read(cbuf)) != -1) {
+//                        for (int i = 0; i < numReadChars; i++) {
+//                            if (cbuf[i] == '\n') {
+//                                numLineFeeds++;
+//                            }
+//                        }
+//                    }
+//
+//                    if (numLineFeeds == 0) {
+//                        ObjectFileSource.this.logger.warn("Could not find any newline character in {}.", ObjectFileSource.this.inputUrl);
+//                        return OptionalDouble.empty();
+//                    }
+//                    return OptionalDouble.of((double) lis.getNumReadBytes() / numLineFeeds);
+//                } catch (IOException e) {
+//                    ObjectFileSource.this.logger.error("Could not estimate bytes per line of an input file.", e);
+//                }
+//            }
+
+            return OptionalDouble.empty();
+        }
+    }
+
+}
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
index 49a9cc6..1358879 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * {@link Operator} for the PageRank algorithm. It takes as input a list of directed edges, whereby each edge
  * is represented as {@code (source vertex ID, target vertex ID)} tuple. Its output are the page ranks, codified
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
index dd078d0..627bf0e 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set and aggregates the groups.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
index 8d93f0b..153df73 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -26,8 +27,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator is context dependent: after a {@link GroupByOperator}, it is meant to be a {@link ReduceByOperator};
  * otherwise, it is a {@link GlobalReduceOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
index a2c97b7..3919c5c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.SwitchForwardCardinalityEstimator;
@@ -29,11 +33,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This {@link Operator} repeats a certain subplan of {@link Operator}s for a given number of times.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
index 50db0d7..5d0c773 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
 
 /**
  * A random sample operator randomly selects its inputs from the input slot and pushes that element to the output slot.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
index 3436b98..49a7273 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -27,8 +28,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator sorts the elements in this dataset.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
index 970a11f..35f8d99 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Objects;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.optimizer.costs.DefaultLoadEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Objects;
-
 /**
  * This {@link UnarySink} writes all incoming data quanta to a text file.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
index 67ddf49..76474b1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
@@ -19,7 +19,15 @@
 package org.apache.wayang.basic.operators;
 
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -29,15 +37,6 @@
 import org.apache.wayang.core.util.LimitedInputStream;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Optional;
-import java.util.OptionalDouble;
-import java.util.OptionalLong;
 
 /**
  * This source reads a text file and outputs the lines as data units.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
index 449ee9e..5f4a075 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -27,8 +28,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This {@link Operator} creates the union (bag semantics) of two .
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
index 001b010..eba1ec2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -26,8 +27,6 @@
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operators attaches a unique ID to each input data quantum.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
index e580af7..5a9321d 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.plugin;
 
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.mapping.Mappings;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
@@ -27,10 +30,6 @@
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.fs.LocalFileSystem;
 
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Activator for the basic Wayang package.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
index 87c7045..5b867de 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.mapping.Mappings;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
@@ -25,9 +27,6 @@
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.plugin.Plugin;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Activator for graph operations being executed with Wayang's basic operators.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
index 7988e99..09e79e2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.basic.types;
 
-import org.apache.wayang.basic.data.Record;
-import org.apache.wayang.core.types.BasicDataUnitType;
-
 import java.util.Arrays;
 import java.util.Objects;
+import org.apache.wayang.basic.data.Record;
+import org.apache.wayang.core.types.BasicDataUnitType;
 
 /**
  * This is a specific {@link BasicDataUnitType} for {@link Record}s. In particular, it adds schema information.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
index 4532264..80862ac 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.function;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.function.Function;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.types.RecordType;
-
-import java.util.function.Function;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link ProjectionDescriptor}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
index 20d5a63..7b0b0a4 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.basic.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.basic.operators.GroupByOperator;
@@ -31,11 +29,13 @@
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.PlanTransformation;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link ReduceByMapping}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
index d5f21a7..2410a61 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.operators;
 
-import org.junit.Test;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
-
-import java.util.stream.StreamSupport;
+import org.junit.Test;
 
 /**
  * Tests for the {@link MaterializedGroupByOperator}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
index 909169c..a12f832 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
@@ -19,19 +19,8 @@
 package org.apache.wayang.basic.operators;
 
 
-import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-import org.apache.wayang.commons.util.profiledb.model.Subject;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.Job;
-import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -41,9 +30,18 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Optional;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
+import org.apache.wayang.commons.util.profiledb.model.Subject;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.Job;
+import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link TextFileSource}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
index 9d8b472..d7de74c 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.basic.types;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link RecordType}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
index 966ecc5..9c264a6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
@@ -18,8 +18,27 @@
 
 package org.apache.wayang.core.api;
 
+import static org.apache.wayang.core.util.ReflectionUtils.instantiateDefault;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
+import java.util.Properties;
+import java.util.Random;
+import java.util.function.ToDoubleFunction;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.configuration.CollectionProvider;
 import org.apache.wayang.core.api.configuration.ConstantValueProvider;
 import org.apache.wayang.core.api.configuration.ExplicitCollectionProvider;
@@ -58,26 +77,6 @@
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Optional;
-import java.util.OptionalDouble;
-import java.util.OptionalLong;
-import java.util.Properties;
-import java.util.Random;
-import java.util.function.ToDoubleFunction;
-
-import static org.apache.wayang.core.util.ReflectionUtils.instantiateDefault;
 
 /**
  * Describes both the configuration of a {@link WayangContext} and {@link Job}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
index 97454b3..cbfa05f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
@@ -18,6 +18,19 @@
 
 package org.apache.wayang.core.api;
 
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
@@ -67,20 +80,6 @@
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
 
 /**
  * Describes a job that is to be executed using Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
index f40f536..9c3150a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.api;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Subject;
 import org.apache.wayang.core.monitor.Monitor;
@@ -27,8 +29,6 @@
 import org.apache.wayang.core.plugin.Plugin;
 import org.apache.wayang.core.profiling.CardinalityRepository;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * This is the entry point for users to work with Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
index e9e9b73..3a55bd4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.api.configuration;
 
+import java.util.Collection;
+import java.util.Iterator;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 
-import java.util.Collection;
-import java.util.Iterator;
-
 /**
  * Provides a {@link Collection} of objects.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
index 28850a7..c67ab63 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * {@link CollectionProvider} implementation based on a blacklist and a whitelist.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
index d18211a..821eeb7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * {@link CollectionProvider} implementation based on a blacklist and a whitelist.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
index a567ab6..555c23a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.function.BiFunction;
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Implementation of {@link KeyValueProvider} that uses a {@link Function} to provide a value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
index d861290..93e0be3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
index 512d14c..b19d73a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
+import java.util.Optional;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
index 96881d9..0160d98 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Implementation of {@link KeyValueProvider} that uses a {@link Map} to provide a value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
index 3b8a905..5346816 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
+import java.util.Optional;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
index b1a6c4a..6f19937 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Iterator;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.types.DataUnitGroupType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Iterator;
-
 /**
  * This descriptor pertains to functions that take multiple data units and aggregate them into a single data unit.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
index 83221bd..b3507bc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.Optional;
-
 /**
  * Created by bertty on 13-07-17.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
index a870ef0..ebfffdc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Collection;
 import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 import org.apache.wayang.core.platform.Platform;
 
-import java.util.Collection;
-
 /**
  * While a function is executed on a certain {@link Platform}, allows access to some information of the context in
  * which the function is being executed.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
index 948af92..2b1f991 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume a single data unit and output a group of data units.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
index 18d13e0..dfd2d9b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.function;
 
-import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
-import org.apache.wayang.core.optimizer.costs.LoadEstimator;
-import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
-import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
-
 import java.io.Serializable;
 import java.util.Optional;
 import java.util.function.BiFunction;
@@ -30,6 +25,10 @@
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
+import org.apache.wayang.core.optimizer.costs.LoadEstimator;
+import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
+import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 
 /**
  * A function operates on single data units or collections of those.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
index d93833c..08f230c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume and output multiple data quanta.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
index 6b90e27..01b5eef 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.Optional;
-
 /**
  * This descriptor pertains to predicates that consume a single data unit.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
index 0bd3853..fbc090c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.function.BinaryOperator;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.types.DataUnitGroupType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.function.BinaryOperator;
-
 /**
  * This descriptor pertains to functions that take multiple data units and aggregate them into a single data unit
  * by means of a tree-like fold, i.e., using a commutative, associative function..
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
index 3de70e7..34c7b6a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume a single data unit and output a single data unit.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
index 03de5b2..f876dfa 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.function.Predicate;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
@@ -26,10 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.TopDownPlanVisitor;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.function.Predicate;
-
 /**
  * An operator pattern matches to a class of operator instances.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
index 090a05b..39e0720 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
@@ -25,13 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Platform;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
 
 /**
  * Looks for a {@link SubplanPattern} in a {@link WayangPlan} and replaces it with an alternative {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
index 9315f65..b9c2f30 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Map;
+import java.util.function.BiFunction;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.plan.wayangplan.ActualOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -27,9 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
 
-import java.util.Map;
-import java.util.function.BiFunction;
-
 /**
  * This factory takes an {@link SubplanMatch} and derives a replacement {@link Subplan} from it.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
index 5f100b3..7bfc084 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.platform.Platform;
-
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * A subplan match correlates a {@link SubplanPattern} with its actually matched .
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
index a53065d..b6eadda 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -25,15 +31,8 @@
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.TopDownPlanVisitor;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 
 /**
  * A subplan pattern describes a class of subplans in a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
index ebb598b..45077d9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 
 public class DisabledMonitor extends Monitor {
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
index aee3af3..e264fd9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
@@ -19,16 +19,15 @@
 package org.apache.wayang.core.monitor;
 
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.util.fs.FileSystem;
-import org.apache.wayang.core.util.fs.FileSystems;
-
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.UncheckedIOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.util.fs.FileSystem;
+import org.apache.wayang.core.util.fs.FileSystems;
 import org.apache.wayang.core.util.json.JSONObject;
 
 public class FileMonitor extends Monitor {
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
index dda6335..86b234c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * TODO: Implement
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
index 2d5e7c9..a4e8f83 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 public abstract class Monitor {
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
index c031032..881560e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * TODO: Implement
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
index 964d94a..2592632 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer;
 
-import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
+import org.apache.wayang.core.plan.wayangplan.Operator;
 
 /**
  * This {@link OptimizationContext} implementation aggregates several {@link OptimizationContext}s and exposes
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
index 187979d..f7dc525 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.channels.ChannelConversionGraph;
 import org.apache.wayang.core.optimizer.enumeration.PlanEnumerationPruningStrategy;
@@ -25,16 +30,10 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.WayangArrays;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
 /**
  * This implementation of {@link OptimizationContext} represents a direct mapping from {@link OptimizationContext.OperatorContext}
  * to executions of the respective {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
index 19e7b01..bf10011 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -40,23 +51,11 @@
 import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Manages contextual information required during the optimization of a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
index 3f71b5d..56f523b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.enumeration.PlanEnumerationPruningStrategy;
@@ -26,14 +30,9 @@
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.plan.wayangplan.SlotMapping;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 
 /**
  * Utility methods for the optimization process.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
index 5e8a112..39027c6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.optimizer;
 
-import org.apache.wayang.core.util.Formats;
-
 import java.util.Comparator;
 import java.util.Objects;
+import org.apache.wayang.core.util.Formats;
 
 /***
  * An estimate that is capable of expressing uncertainty.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
index d4a5703..f3061b2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collection;
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * This class checks a {@link WayangPlan} for several sanity criteria:
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
index 7d404a1..1a7f438 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.OptimizationContext;
 
 /**
  * {@link CardinalityEstimator} implementation that can have multiple ways of calculating a {@link CardinalityEstimate}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
index 7dc5ae9..4cb5f1c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
@@ -18,17 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
-import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -41,6 +30,16 @@
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
+import org.apache.wayang.core.plan.wayangplan.OutputSlot;
+import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
+import org.apache.wayang.core.util.OneTimeExecutable;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * {@link CardinalityEstimator} that subsumes a DAG of operators, each one providing a local {@link CardinalityEstimator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
index 5c046cc..0c930e7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Collections;
+import java.util.Map;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
@@ -30,11 +34,8 @@
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.ExecutionState;
 import org.apache.wayang.core.platform.Junction;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
 
-import java.util.Collections;
-import java.util.Map;
+;
 
 /**
  * Handles the {@link CardinalityEstimate}s of a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
index bb3bd58..13fb901 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Objects;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.WayangArrays;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Arrays;
-import java.util.Objects;
 
 /**
  * Pushes a input {@link CardinalityEstimate}s through an {@link Operator} and yields its output
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
index 7582261..d52c444 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
 import java.util.Arrays;
 import java.util.function.ToLongBiFunction;
 import java.util.function.ToLongFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
 
 /**
  * Default implementation of the {@link CardinalityEstimator}. Generalizes a single-point estimation function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
index 67a1b7a..627936e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -28,10 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.util.Tuple;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link LoopHeadAlternative}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
index 4834bc2..32ddec7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -26,12 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link LoopSubplan}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
index d5886fc..5beb60e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.util.Tuple;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link OperatorAlternative}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
index 50184bc..71683a2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.CompositeOperator;
@@ -28,12 +33,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link Subplan}s (but not for {@link LoopSubplan}s!)
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
index 7f69fe5..bb50881 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
@@ -18,9 +18,9 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.logging.log4j.LogManager;
 
 /**
  * Forwards the {@link CardinalityEstimate} of any given {@link InputSlot} that is not {@code null}. Asserts that
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
index 95590a8..fffbce5 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -26,9 +28,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Can convert a given {@link Channel} to another {@link Channel}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
index 3e06c95..fcce46e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
@@ -18,6 +18,22 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -37,25 +53,8 @@
 import org.apache.wayang.core.util.Bitmask;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This graph contains a set of {@link ChannelConversion}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
index d4c97a8..7c38140 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,10 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.function.Supplier;
-
 /**
  * Default implementation of the {@link ChannelConversion}. Can be used without further subclassing.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
index 775129e..dc13005 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-
 import java.util.Arrays;
 import java.util.function.ToDoubleBiFunction;
 import java.util.function.ToLongBiFunction;
 import java.util.stream.LongStream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
 /**
  * Implementation of {@link LoadEstimator} that uses a single-point cost function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
index d1896fd..789b4d8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Arrays;
-import java.util.Collection;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
index 2d7d697..9a5c395 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-
 import java.util.Arrays;
 import java.util.function.ToDoubleBiFunction;
 import java.util.function.ToLongBiFunction;
 import java.util.stream.LongStream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
 /**
  * Implementation of {@link LoadEstimator} that uses a interval-based cost function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
index 0f07067..9fb40ba 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Arrays;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
-import java.util.Arrays;
-
 /**
  * Describes the resource utilization of something executable within an {@link EstimationContext}, such as an
  * {@link ExecutionOperator} or a {@link FunctionDescriptor}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
index 94f5856..c0da95d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collection;
+import java.util.LinkedList;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.JsonSerializable;
 import org.apache.wayang.core.util.JsonSerializables;
-
-import java.util.Collection;
-import java.util.LinkedList;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
index 1eb2dc3..7e933b2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Estimates the {@link LoadProfile} of some executable artifact that takes some input data quanta and produces them.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
index fcfe1fe..a0e5ca4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
@@ -18,6 +18,19 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.ToDoubleBiFunction;
+import java.util.function.ToDoubleFunction;
+import java.util.function.ToLongBiFunction;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -33,20 +46,6 @@
 import org.apache.wayang.core.util.mathex.Expression;
 import org.apache.wayang.core.util.mathex.ExpressionBuilder;
 import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.ToDoubleBiFunction;
-import java.util.function.ToDoubleFunction;
-import java.util.function.ToLongBiFunction;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
 
 /**
  * Utilities to deal with {@link LoadProfileEstimator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
index 7bd64c2..58be3d1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.function.Function;
 import java.util.function.ToDoubleBiFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 
 /**
  * {@link LoadProfileEstimator} that can host further {@link LoadProfileEstimator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
index 5e3cac2..38b9851 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
-import java.util.List;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
index 6f6daea..06f22cd 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
@@ -18,16 +18,6 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.plan.executionplan.Channel;
-import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.plan.executionplan.PlatformExecution;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -36,6 +26,15 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.plan.executionplan.Channel;
+import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
+import org.apache.wayang.core.plan.executionplan.ExecutionTask;
+import org.apache.wayang.core.plan.executionplan.PlatformExecution;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
 
 /**
  * Graph of {@link ExecutionTask}s and {@link Channel}s. Does not define {@link ExecutionStage}s and
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
index 972fb4e..098af4d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
@@ -33,18 +44,6 @@
 import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.platform.Platform;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Creates an {@link ExecutionTaskFlow} from a {@link PlanImplementation}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
index a228f14..7aaee98 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} follows the idea that we can prune a
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
index f884364..1ac5c4e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
@@ -26,13 +32,6 @@
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 
 /**
  * Enumerator for {@link LoopSubplan}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
index 57416fa..0b577f0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -27,10 +30,6 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.Junction;
 
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Stream;
-
 /**
  * Describes the enumeration of a {@link LoopSubplan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
index e00753c..b441ebb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
@@ -19,6 +19,19 @@
 package org.apache.wayang.core.optimizer.enumeration;
 
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,22 +46,8 @@
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.util.MultiMap;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Represents a collection of {@link PlanImplementation}s that all implement the same section of a {@link WayangPlan} (which
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
index 17ce28b..a490690 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
@@ -18,30 +18,6 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.OptimizationUtils;
-import org.apache.wayang.core.plan.executionplan.Channel;
-import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
-import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
-import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
-import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
-import org.apache.wayang.core.plan.wayangplan.Operators;
-import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -59,6 +35,29 @@
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.OptimizationUtils;
+import org.apache.wayang.core.plan.executionplan.Channel;
+import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
+import org.apache.wayang.core.plan.executionplan.ExecutionTask;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
+import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
+import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
+import org.apache.wayang.core.plan.wayangplan.Operators;
+import org.apache.wayang.core.plan.wayangplan.OutputSlot;
+import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * The plan partitioner recursively dissects a {@link WayangPlan} into {@link PlanEnumeration}s and then assembles
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
index d8f49af..6cf32c1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
@@ -18,31 +18,6 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
-import org.apache.wayang.core.optimizer.costs.TimeEstimate;
-import org.apache.wayang.core.optimizer.costs.TimeToCostConverter;
-import org.apache.wayang.core.plan.executionplan.Channel;
-import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.plan.wayangplan.ElementaryOperator;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
-import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.wayang.core.platform.Junction;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.util.Canonicalizer;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -58,6 +33,30 @@
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
+import org.apache.wayang.core.optimizer.costs.TimeEstimate;
+import org.apache.wayang.core.optimizer.costs.TimeToCostConverter;
+import org.apache.wayang.core.plan.executionplan.Channel;
+import org.apache.wayang.core.plan.executionplan.ExecutionTask;
+import org.apache.wayang.core.plan.wayangplan.ElementaryOperator;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
+import org.apache.wayang.core.plan.wayangplan.OutputSlot;
+import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
+import org.apache.wayang.core.platform.Junction;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.util.Canonicalizer;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Represents a partial execution plan.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
index c10eb32..21c7731 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Random;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} retains only the best {@code k} {@link PlanImplementation}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
index 2ff313c..70c0746 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
@@ -18,7 +18,20 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
@@ -34,20 +47,6 @@
 import org.apache.wayang.core.util.Iterators;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * Builds an {@link ExecutionPlan} from a {@link ExecutionTaskFlow}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
index a80f9d9..2447710 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.ArrayList;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} retains only the best {@code k} {@link PlanImplementation}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
index f6e5804..a96b347 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
@@ -18,22 +18,6 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.wayang.core.platform.Breakpoint;
-import org.apache.wayang.core.platform.ChannelDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.platform.Executor;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
@@ -45,6 +29,21 @@
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.OutputSlot;
+import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
+import org.apache.wayang.core.platform.Breakpoint;
+import org.apache.wayang.core.platform.ChannelDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.platform.Executor;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.types.DataSetType;
 
 /**
  * Models the data movement between to {@link ExecutionTask}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
index 352c413..2961f1f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
-import org.apache.wayang.core.optimizer.enumeration.StageAssignmentTraversal;
-import org.apache.wayang.core.util.Counter;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -35,6 +29,11 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
+import org.apache.wayang.core.optimizer.enumeration.StageAssignmentTraversal;
+import org.apache.wayang.core.util.Counter;
 
 /**
  * Represents an executable, cross-platform data flow. Consists of muliple {@link PlatformExecution}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
index ced3433..e6a1e8f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,6 +29,10 @@
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Resides within a {@link PlatformExecution} and represents the minimum execution unit that is controlled by Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
index b2b6e94..f112738 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
+import java.util.Collection;
+import java.util.HashSet;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
 import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 
-import java.util.Collection;
-import java.util.HashSet;
-
 /**
  * This class models the execution equivalent of {@link LoopSubplan}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
index 877eba4..a338e18 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.platform.Platform;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * Complete data flow on a single platform, that consists of multiple {@link ExecutionStage}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
index b56f05a..3a4ae67 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 
-import java.util.Optional;
-
 /**
  * Indivisible {@link Operator} that is not containing other {@link Operator}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
index c64ac69..73763b8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.optimizer.costs.EstimationContext;
-
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
+import org.apache.wayang.core.optimizer.costs.EstimationContext;
 
 /**
  * Marks a property of an {@link Operator} that is relevant to the estimation process, i.e., should be provided
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
index f95a946..ce3b055 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -33,13 +39,6 @@
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.platform.lineage.LazyExecutionLineageNode;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Optional;
 
 /**
  * An execution operator is handled by a certain platform.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
index 6713f48..e846e3e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.List;
+import org.apache.wayang.core.types.DataSetType;
 
 /**
  * An input slot declares an input of an {@link Operator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
index 70d9854..cd1adfb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Objects;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.LoopHeadAlternativeCardinalityPusher;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.Collection;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
 /**
  * Special {@link OperatorAlternative} for {@link LoopHeadOperator}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
index 5db5c24..63d0bc6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
 
-import java.util.Collection;
-
 /**
  * Head of a {@link LoopSubplan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
index e497c08..d8dcf7f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.util.OneTimeExecutable;
 
 /**
  * Goes over a {@link WayangPlan} and isolates its loops.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
index 079d071..a86790c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.LoopSubplanCardinalityPusher;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Wraps a loop of {@link Operator}s.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
index 5095342..de856eb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
@@ -18,14 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
-import org.apache.wayang.core.platform.Platform;
-
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.Collection;
@@ -36,6 +28,13 @@
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * An operator is any node that within a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
index babad5d..aff41f8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.OperatorAlternativeCardinalityPusher;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -31,6 +25,11 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.OperatorAlternativeCardinalityPusher;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This operator encapsulates operators that are alternative to each other.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
index e351b49..e3d662c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
@@ -26,6 +26,13 @@
 import com.google.gson.JsonParseException;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -39,14 +46,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.Tuple;
 
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Supplier;
-
 /**
  * Helper class for the implementation of the {@link Operator} interface.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
index 38e86dd..d9d6087 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This is not an {@link Operator} in its own right. However, it contains a set of operators and can redirect
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
index becd0a3..4e0d0c4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Utilities to deal with {@link OperatorContainer}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
index b9a0b91..c9f3762 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -29,6 +27,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
 
 /**
  * An output slot declares an output of an {@link Operator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
index f289e5e..317ebc0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
@@ -28,6 +25,8 @@
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Traverse a plan. In each instance, every operator will be traversed only once.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
index 93f1488..09bb233 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-
 /**
  * Abstract class for inputs and outputs to operators.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
index 48a1e8a..64bcd93 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
@@ -18,18 +18,16 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import java.util.Map.Entry;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.Map.Entry;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This mapping can be used to encapsulate subplans by connecting slots (usually <b>against</b> the data flow direction,
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
index 4954f37..a599229 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.SubplanCardinalityPusher;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -32,6 +26,11 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.SubplanCardinalityPusher;
 
 /**
  * A subplan encapsulates connected operators as a single operator.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
index 649a121..8ec78fc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.mapping.PlanTransformation;
-import org.apache.wayang.core.optimizer.SanityChecker;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Set;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.optimizer.SanityChecker;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * A Wayang plan consists of a set of {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
index 10ba588..e08c77c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.core.plan.wayangplan.traversal;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Queue;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Queue;
 
 /**
  * Encapsulates logic to traverse a {@link WayangPlan} in a topological, bottom-up manner.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
index a45b565..878609b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.OptionalLong;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.lineage.ChannelLineageNode;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.OptionalLong;
 
 /**
  * Template for {@link ChannelInstance} implementations.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
index 1f8ba8a..a98d7ee 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfile;
@@ -26,8 +27,6 @@
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
index a80ffdc..f932ff2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.core.platform;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -27,8 +29,6 @@
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * {@link Breakpoint} implementation that is based on the {@link CardinalityEstimate}s of {@link Channel}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
index 618609c..abb069d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform;
 
+import java.lang.reflect.Constructor;
+import java.util.Objects;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 
-import java.lang.reflect.Constructor;
-import java.util.Objects;
-
 /**
  * Describes a certain {@link Channel} type including further parameters.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
index b5a6fd5..787aed8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.OptionalLong;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.lineage.ChannelLineageNode;
 
-import java.util.OptionalLong;
-
 /**
  * Represents the actual, allocated resource represented by {@link Channel}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
index 6c35138..3c88d00 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
 /**
  * {@link Breakpoint} implementation that disrupts execution if all aggregated {@link Breakpoint}s request a disruption.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
index 1f539bd..8c96ac0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
@@ -18,6 +18,18 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.function.Supplier;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,19 +45,8 @@
 import org.apache.wayang.core.profiling.InstrumentationStrategy;
 import org.apache.wayang.core.util.AbstractReferenceCountable;
 import org.apache.wayang.core.util.Formats;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.function.Supplier;
+;
 
 /**
  * Executes a (cross-platform) {@link ExecutionPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
index 3cd987e..5301da3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
 import org.apache.wayang.core.plan.executionplan.Channel;
 
-import java.util.Collection;
-
 /**
  * Contains a state of the execution of an {@link ExecutionTaskFlow}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
index dd49737..699ee5d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.OptionalLong;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -25,15 +33,6 @@
 import org.apache.wayang.core.plan.executionplan.ExecutionStageLoop;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.AbstractReferenceCountable;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.OptionalLong;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Implements the {@link ExecutionResource} handling as defined by {@link Executor}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
index f6fb93d..35b6a6b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
 /**
  * Describes when to interrupt the execution of an {@link ExecutionPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
index b590443..159bd91 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
@@ -27,12 +32,6 @@
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
 
 /**
  * Describes the implementation of one {@link OutputSlot} to its occupied {@link InputSlot}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
index ef3a8f1..9d2ab9d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,11 +32,6 @@
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.stream.Collectors;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
index f46ae71..5cb335b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
@@ -18,18 +18,6 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.api.Job;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.executionplan.Channel;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
-import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -39,6 +27,17 @@
 import java.util.Objects;
 import java.util.Queue;
 import java.util.Set;
+import org.apache.wayang.core.api.Job;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.executionplan.Channel;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
+import org.apache.wayang.core.plan.executionplan.ExecutionTask;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
+import org.apache.wayang.core.util.OneTimeExecutable;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * {@link Executor} implementation that employs a push model, i.e., data quanta are "pushed"
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
index 7d91f7a..39446ec 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform.lineage;
 
+import java.util.Collection;
+import java.util.LinkedList;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.AtomicExecution;
 
-import java.util.Collection;
-import java.util.LinkedList;
-
 /**
  * Encapsulates {@link AtomicExecution}s with a common {@link OptimizationContext.OperatorContext} in a lazy execution lineage.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
index ef3f6fc..6359a20 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform.lineage;
 
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.util.Tuple;
 
 /**
  * A node wraps a {@link ChannelInstance} and keeps track of predecessor nodes.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
index c0d7695..a4ca0a9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
@@ -18,17 +18,6 @@
 
 package org.apache.wayang.core.plugin;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.mapping.Mapping;
-import org.apache.wayang.core.optimizer.channels.ChannelConversion;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.wayang.core.util.fs.FileSystem;
-import org.apache.wayang.core.util.fs.FileSystems;
-import org.yaml.snakeyaml.Yaml;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collection;
@@ -39,6 +28,16 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.function.Consumer;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.optimizer.channels.ChannelConversion;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.util.ReflectionUtils;
+import org.apache.wayang.core.util.fs.FileSystem;
+import org.apache.wayang.core.util.fs.FileSystems;
+import org.yaml.snakeyaml.Yaml;
 
 /**
  * This {@link Plugin} can be arbitrarily customized.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
index a714588..4fdfc3c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
 import org.apache.wayang.core.platform.Platform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * A plugin contributes the following components to a {@link WayangContext}:
  * <ul>
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
index 3418ba0..9814bc0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
@@ -18,7 +18,16 @@
 
 package org.apache.wayang.core.profiling;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
 import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -29,16 +38,6 @@
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.platform.CrossPlatformExecutor;
 import org.apache.wayang.core.platform.ExecutionState;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
 import org.apache.wayang.core.util.json.JSONArray;
 import org.apache.wayang.core.util.json.JSONObject;
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
index ce1a3d8..6e275f0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
@@ -18,16 +18,6 @@
 
 package org.apache.wayang.core.profiling;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.platform.CrossPlatformExecutor;
-import org.apache.wayang.core.platform.PartialExecution;
-import org.apache.wayang.core.util.JsonSerializables;
-import org.apache.wayang.core.util.JsonSerializer;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -39,6 +29,15 @@
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.stream.Stream;
+import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.platform.CrossPlatformExecutor;
+import org.apache.wayang.core.platform.PartialExecution;
+import org.apache.wayang.core.util.JsonSerializables;
+import org.apache.wayang.core.util.JsonSerializer;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
index 1459d15..9614df8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
@@ -19,6 +19,11 @@
 package org.apache.wayang.core.profiling;
 
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.model.Type;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -26,12 +31,6 @@
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * This {@link Measurement} encapsulates an {@link ExecutionPlan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
index a90cb0d..d90dd90 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.profiling;
 
+import java.util.Arrays;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
-import java.util.Arrays;
-
 /**
  * Instruments only outbound {@link Channel}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
index cc409a8..66ff893 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.types;
 
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.util.Objects;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A data set is an abstraction of the Wayang programming model. Although never directly materialized, a data set
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
index af8904e..39f9992 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.types;
 
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.util.Objects;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A grouped data unit type describes just the structure of data units within a grouped dataset.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
index dba692e..7018401 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
index b164eac..fe1be2f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
@@ -18,12 +18,10 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.SerializationException;
-
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import org.apache.commons.lang3.SerializationException;
 import org.apache.wayang.core.util.json.JSONArray;
 import org.apache.wayang.core.util.json.JSONObject;
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
index 0ed45ad..c59c055 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
@@ -21,13 +21,12 @@
 import de.odysseus.el.ExpressionFactoryImpl;
 import de.odysseus.el.TreeValueExpression;
 import de.odysseus.el.util.SimpleContext;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.OptimizationUtils;
-import org.apache.logging.log4j.LogManager;
-
-import javax.el.ValueExpression;
 import java.util.HashMap;
 import java.util.Map;
+import javax.el.ValueExpression;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.OptimizationUtils;
 
 /**
  * Utilities to deal with JUEL expressions.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
index 0b87241..013486d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.LinkedHashMap;
 import java.util.Map;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Key-value cache with "least recently used" eviction strategy.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
index c470778..f9871dd 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
-
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -46,6 +41,12 @@
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+
+;
 
 /**
  * Utilities for reflection code.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
index 5b3e891..d0a2d91 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -33,6 +31,7 @@
 import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.function.Supplier;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Utilities to operate {@link java.util.Collection}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
index 21ae249..01513f1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.util.LruCache;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,6 +25,10 @@
 import java.util.Optional;
 import java.util.OptionalLong;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.util.LruCache;
 
 /**
  * Tool to work with {@link FileSystem}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
index 85cc0da..b8dfc8d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -29,6 +26,8 @@
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
+import org.apache.commons.io.IOUtils;
+import org.apache.wayang.core.api.exception.WayangException;
 
 public class FileUtils {
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
index 735251e..a280af9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
@@ -18,14 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
-import org.apache.hadoop.fs.Path;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,6 +28,13 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.stream.Collectors;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
+import org.apache.hadoop.fs.Path;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * {@link FileSystem} immplementation for the HDFS.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
index ff4c24a..cf962ad 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
@@ -18,10 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -36,6 +32,9 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * {@link FileSystem} implementation for the local file system.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
index bd01fa5..1fbfdc3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.function.ToDoubleFunction;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * Provides contextual variables and functions in order to evaluate an {@link Expression}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
index 0bea52c..41b8237 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.ToDoubleFunction;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * Default {@link Context} implementation that can be configured.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
index 6170be4..e95d804 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.util.mathex;
 
+import java.util.List;
+import java.util.stream.Collectors;
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.BaseErrorListener;
 import org.antlr.v4.runtime.CommonTokenStream;
@@ -33,9 +35,6 @@
 import org.apache.wayang.core.util.mathex.model.UnaryOperation;
 import org.apache.wayang.core.util.mathex.model.Variable;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * This utility builds {@link Expression}s from an input {@link String}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
index 11455ab..06a15ac 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util.mathex.model;
 
-import org.apache.wayang.core.util.mathex.Context;
-import org.apache.wayang.core.util.mathex.Expression;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.util.mathex.Context;
+import org.apache.wayang.core.util.mathex.Expression;
 
 /**
  * {@link Expression} implementation that represents a function with a static implementation.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
index 9c26eb4..b27e5f3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util.mathex.model;
 
-import org.apache.wayang.core.util.mathex.Context;
-import org.apache.wayang.core.util.mathex.Expression;
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.List;
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.util.mathex.Context;
+import org.apache.wayang.core.util.mathex.Expression;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * {@link Expression} implementation that represents a function that is identified
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
index ebc8e8a..6f4b3ca 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
@@ -18,13 +18,13 @@
 
 package org.apache.wayang.core;
 
-import org.junit.Test;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.test.TestDataUnit2;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Test;
 
 /**
  * Test suite for {@link Slot}s.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
index 1cc7101..2000d43 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.wayang.core.mapping;
 
+import org.apache.wayang.core.test.DummyExecutionOperator;
 import org.junit.Assert;
 import org.junit.Test;
-import org.apache.wayang.core.test.DummyExecutionOperator;
 
 /**
  * Tests for {@link OperatorPattern}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
index d98cbb8..7457c8a 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
@@ -18,19 +18,19 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.core.mapping.test.TestSinkToTestSink2Factory;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink2;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link org.apache.wayang.core.mapping.PlanTransformation} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
index dec530b..5e84d27 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
@@ -18,18 +18,17 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link SubplanPattern}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
index 8b57d34..da575e7 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.mapping.test;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -28,9 +30,6 @@
 import org.apache.wayang.core.test.DummyPlatform;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Dummy {@link Mapping} implementation from {@link TestSink} to {@link TestSink2}.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
index e72d942..188744b 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
-import java.util.Arrays;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.Arrays;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.junit.Assert;
+import org.junit.Test;
+
 /**
  * Test suite for {@link AggregatingCardinalityEstimator}.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
index 5ffc3ab..7ec3312 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
-import java.util.function.ToLongFunction;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.function.ToLongFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.junit.Assert;
+import org.junit.Test;
+
 
 /**
  * Test suite for the {@link DefaultCardinalityEstimator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
index 5a4583e..d50b266 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.configuration.FunctionalKeyValueProvider;
@@ -38,6 +35,9 @@
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.util.WayangCollections;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for {@link LoopSubplanCardinalityPusher}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
index 60b194a..a689a52 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.configuration.FunctionalKeyValueProvider;
@@ -35,6 +32,9 @@
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SubplanCardinalityPusher}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
index 7013c6c..c08fc14 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -38,9 +37,9 @@
 import org.apache.wayang.core.test.DummyReusableChannel;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Arrays;
-import java.util.function.Supplier;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 /**
  * Test suite for {@link ChannelConversionGraph}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
index 6295021..20c12c2 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
@@ -19,8 +19,7 @@
 package org.apache.wayang.core.optimizer.costs;
 
 import java.util.HashMap;
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.List;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -28,8 +27,8 @@
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link NestableLoadProfileEstimator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
index 9d3d2eb..b0604a3 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
@@ -18,8 +18,7 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Collections;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
@@ -28,8 +27,8 @@
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.test.MockFactory;
-
-import java.util.Collections;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link StageAssignmentTraversal}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
index 6eae428..546e635 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.test.TestLoopHead;
 import org.apache.wayang.core.plan.wayangplan.test.TestMapOperator;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
-
-import java.util.ArrayList;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link LoopIsolator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
index 4018ee1..c2638eb 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Collection;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link Operator} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
index 6659beb..1a8da28 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.plan.wayangplan.test.TestSink;
-import org.apache.wayang.core.plan.wayangplan.test.TestSource;
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import org.apache.wayang.core.plan.wayangplan.test.TestSink;
+import org.apache.wayang.core.plan.wayangplan.test.TestSource;
+import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SlotMapping}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
index c05ad58..e524993 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Test operator that exposes filter-like behavior.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
index 6c8424e..f91bd53 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
@@ -19,6 +19,7 @@
 package org.apache.wayang.core.plan.wayangplan.test;
 
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
@@ -30,8 +31,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Join-like operator.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
index f938da9..c6f79cc 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.SwitchForwardCardinalityEstimator;
@@ -29,10 +32,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * {@link LoopHeadOperator} implementation for test purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
index 216f0a4..3988fe5 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -26,8 +27,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Test operator that exposes map-like behavior.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
index e934f31..bfd1dea 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Dummy sink for testing purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
index 06ea764..a81e922 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Dummy source for testing purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
index f39d331..5740114 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
@@ -18,9 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.util.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.configuration.KeyValueProvider;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,11 +34,9 @@
 import org.apache.wayang.core.test.SerializableDummyExecutionOperator;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Arrays;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.wayang.core.util.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suites for {@link PartialExecution}s.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
index 6fd6b39..713613a 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.core.plugin;
 
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.test.TestSinkMapping;
@@ -30,12 +33,8 @@
 import org.apache.wayang.core.test.DummyPlatform;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-import static org.mockito.Mockito.mock;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link DynamicPlugin} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
index ae3e7ec..97234de 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.test;
 
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
@@ -26,10 +29,6 @@
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
 /**
  * Dummy {@link ExecutionOperator} for test purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
index a125d21..fa672c2 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
@@ -18,7 +18,10 @@
 
 package org.apache.wayang.core.test;
 
-import org.mockito.Answers;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -29,11 +32,7 @@
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.Collections;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.mockito.Answers;
 
 /**
  * Utility to mock Wayang objects.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
index 5b1faa1..071b139 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Iterator;
 import java.util.function.Consumer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link ConsumerIteratorAdapter}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
index 021d5c8..8f1b124 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link CrossProductIterable}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
index f757d79..48dfde5 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link LimitedInputStream}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
index 380b250..f6b53ea 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.Map;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link ReflectionUtils}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
index 210e831..b26e192 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link WayangCollections}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
index 05c9a97..b311548 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
@@ -19,12 +19,11 @@
 package org.apache.wayang.core.util.mathex;
 
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.util.mathex.exceptions.ParseException;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.util.mathex.exceptions.ParseException;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the class {@link ExpressionBuilder}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
index b2ac236..a789b0b 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 import org.apache.wayang.core.util.mathex.model.CompiledFunction;
 import org.apache.wayang.core.util.mathex.model.Constant;
 import org.apache.wayang.core.util.mathex.model.NamedFunction;
-
-import java.util.Arrays;
-import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link Expression} subclasses.
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
index d5550b9..a3ab9ae 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
@@ -20,18 +20,19 @@
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.Consumer;
 import org.apache.wayang.commons.util.profiledb.json.MeasurementDeserializer;
 import org.apache.wayang.commons.util.profiledb.json.MeasurementSerializer;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.storage.Storage;
 
-import java.io.*;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.Consumer;
-
 /**
  * This class provides facilities to save and load {@link Experiment}s.
  */
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
index 4592cf4..3fce0d1 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
@@ -22,11 +22,10 @@
 import com.google.gson.JsonDeserializer;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParseException;
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-
 import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
 
 /**
  * Custom deserializer for {@link Measurement}s
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
index 7691a04..f6341ee 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
@@ -22,9 +22,8 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-
 import java.lang.reflect.Type;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
 
 /**
  * Custom serializer for {@link Measurement}s
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
index 821dbde..e7682be 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.commons.util.profiledb.model.measurement;
 
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-import org.apache.wayang.commons.util.profiledb.model.Type;
-
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
+import org.apache.wayang.commons.util.profiledb.model.Type;
 
 /**
  * A {@link Measurement} that captures a certain amount of time in milliseconds. Instances can be nested within
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
index 663eefc..64e7705 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
@@ -18,12 +18,14 @@
 
 package org.apache.wayang.commons.util.profiledb.storage;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 public class FileStorage extends Storage {
 
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
index 3b57add..726112c 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.commons.util.profiledb.storage;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -27,6 +25,7 @@
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 public class JDBCStorage extends Storage {
 
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
index 6102fb8..650dd12 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
@@ -19,13 +19,21 @@
 package org.apache.wayang.commons.util.profiledb.storage;
 
 import com.google.gson.Gson;
-import org.apache.wayang.commons.util.profiledb.ProfileDB;
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
 import java.net.URI;
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.commons.util.profiledb.ProfileDB;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 /**
  * Controls how conducted experiments will be persisted and loaded
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
index 20948b4..e57d881 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.commons.util.profiledb;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 import org.apache.wayang.commons.util.profiledb.measurement.TestMemoryMeasurement;
 import org.apache.wayang.commons.util.profiledb.measurement.TestTimeMeasurement;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
@@ -27,13 +38,6 @@
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.*;
-
 public class ProfileDBTest {
 
     @Test
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
index be85515..a50abb6 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.commons.util.profiledb.measurement;
 
+import java.util.Objects;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.model.Type;
 
-import java.util.Objects;
-
 /**
  * {@link Measurement} implementation for test purposes.
  */
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
index addb644..eae47a5 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.commons.util.profiledb.measurement;
 
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-import org.apache.wayang.commons.util.profiledb.model.Type;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Objects;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
+import org.apache.wayang.commons.util.profiledb.model.Type;
 
 /**
  * {@link Measurement} implementation for test purposes.
diff --git a/wayang-docs/src/main/resources/Gemfile.lock b/wayang-docs/src/main/resources/Gemfile.lock
index 433ff60..b592def 100644
--- a/wayang-docs/src/main/resources/Gemfile.lock
+++ b/wayang-docs/src/main/resources/Gemfile.lock
@@ -68,6 +68,7 @@
     unicode-display_width (1.7.0)
 
 PLATFORMS
+  universal-darwin-19
   universal-darwin-20
   universal-java-1.8
 
@@ -78,4 +79,4 @@
   jekyll-menus
 
 BUNDLED WITH
-   2.2.14
+   2.2.27
diff --git a/wayang-docs/src/main/resources/_data/menus.yml b/wayang-docs/src/main/resources/_data/menus.yml
index c684d4c..f5335f3 100644
--- a/wayang-docs/src/main/resources/_data/menus.yml
+++ b/wayang-docs/src/main/resources/_data/menus.yml
@@ -13,25 +13,25 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 header:
-  - url: /what_is_wayang/
-    title: What is Wayang?
-    identifier: what_wayang
-    weight: 1
+#  - url: /what_is_wayang/
+#    title: What is Wayang?
+#    identifier: what_wayang
+#    weight: 1
 
-  - url: /getting_start/
-    title: Getting Started with Wayang
-    identifier: getting_start
-    weight: 2
+#  - url: /getting_start/
+#    title: Getting Started with Wayang
+#    identifier: getting_start
+#    weight: 2
 
-  - url: /using_wayang/
-    title: Using Wayang
-    identifier: using
-    weight: 3
+#  - url: /using_wayang/
+#    title: Using Wayang
+#    identifier: using
+#    weight: 3
 
-  - url: /extending_wayang/
-    title: Extending Wayang
-    identifier: extending
-    weight: 4
+#  - url: /extending_wayang/
+#    title: Extending Wayang
+#    identifier: extending
+#    weight: 4
 
   - url: /how_contribute/
     title: How To Contribute
@@ -39,53 +39,53 @@
     weight: 5
 
 
-getting_start:
-  - url: /getting_start/how_build/
-    title: How To Build Wayang
-    identifier: build
-    weight: 0
+#getting_start:
+#  - url: /getting_start/how_build/
+#    title: How To Build Wayang
+#    identifier: build
+#    weight: 0
+#
+#  - url: /getting_start/how_install/
+#    title: How To Install Wayang
+#    identifier: install
+#    weight: 1
+#
+#  - url: /getting_start/how_run/
+#    title: How To Run Wayang
+#    identifier: run
+#    weight: 2
+#
+#  - url: /getting_start/writting_wayang_plan/
+#    title: Writting a Wayang Plan
+#    identifier: writting
+#    weight: 3
 
-  - url: /getting_start/how_install/
-    title: How To Install Wayang
-    identifier: install
-    weight: 1
-
-  - url: /getting_start/how_run/
-    title: How To Run Wayang
-    identifier: run
-    weight: 2
-
-  - url: /getting_start/writting_wayang_plan/
-    title: Writting a Wayang Plan
-    identifier: writting
-    weight: 3
-
-using:
-  - url: /using_wayang/api_java_scala/
-    title: API Java/Scala
-    identifier: api_java
-    weight: 0
-
-  - url: /using_wayang/api_python/
-    title: API Python
-    identifier: api_python
-    weight: 1
-
-  - url: /using_wayang/api_rest/
-    title: API REST
-    identifier: api_rest
-    weight: 2
+#using:
+#  - url: /using_wayang/api_java_scala/
+#    title: API Java/Scala
+#    identifier: api_java
+#    weight: 0
+#
+#  - url: /using_wayang/api_python/
+#    title: API Python
+#    identifier: api_python
+#    weight: 1
+#
+#  - url: /using_wayang/api_rest/
+#    title: API REST
+#    identifier: api_rest
+#    weight: 2
 
 #  - url: /using_wayang/api_sql/
 #    title: API SQL
 #    identifier: api_sql
 #    weight: 3
 
-extending:
-  - url: /extending_wayang/adding_platform/
-    title: Adding Platform
-    identifier: platform
-    weight: 0
+#extending:
+#  - url: /extending_wayang/adding_platform/
+#    title: Adding Platform
+#    identifier: platform
+#    weight: 0
 
 contribute:
   - url: /how_contribute/code_changes/
diff --git a/wayang-docs/src/main/resources/how_contribute/bugs_report.md b/wayang-docs/src/main/resources/how_contribute/bugs_report.md
index 32117ff..d3bd5e7 100644
--- a/wayang-docs/src/main/resources/how_contribute/bugs_report.md
+++ b/wayang-docs/src/main/resources/how_contribute/bugs_report.md
@@ -47,4 +47,9 @@
 
 ### Label meaning
 
-TODO: add the label meaning
+Description of error types:
+
+* Functional error: It is a Generic error type that requires further analysis. Happens whenever software does not behave as intended. For example, if the end user clicks the “Save” button, but their entered data isn’t saved, this is a functional error.
+* Logic error: The error represents a mistake in the software flow and causes the software to behave incorrectly. This type of error can cause the program to produce an incorrect output, or even hang or crash.
+* Calculation error: Anytime software returns an incorrect value. There may be used an incorrect algorithm or a data type mismatch during arithmetic operations.
+* Out of bounds error: End user interacts with the software in ways that were not expected. This often occurs when the user sets a parameter outside the limits of intended use.
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md
index 37f4b5d..b3b253b 100644
--- a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md
@@ -29,4 +29,26 @@
 
 # Pull Request
 
-TODO: add this
+The simplest way to submit code changes, is via a GitHub pull-request.
+
+In order to do this first create a GitHub account and sign into you account.
+
+After that’s done, please visit our GitHub site and create a so-called Fork.
+
+
+
+What happens now, is that GitHub creates a full copy of the Wayang repository in your account. Only you can commit to this.
+
+Now ideally you check-out your cloned repository:
+
+* git clone https://github.com/{your-user-id}/incubator-wayang.git
+
+Now you have a copy of Wayang on your computer and you can change whatever you want and as it’s your copy, you can even commit these changes without any danger of breaking things.
+
+As soon as you’re finished with your changes and want us to have a look, it’s time to create a so-called Pull-Request.
+
+You do that by going to your forked repository page on GitHub.
+
+Every forked repository has an additional button called "New Pull Request":
+
+If you click on it, we will receive a notification on your changes and can review them. We also can discuss your changes and have you perfect your pull request before we accept and merge it into Wayang.
\ No newline at end of file
diff --git a/wayang-docs/src/main/resources/how_contribute/helping_users.md b/wayang-docs/src/main/resources/how_contribute/helping_users.md
index b7adfb8..38e9454 100644
--- a/wayang-docs/src/main/resources/how_contribute/helping_users.md
+++ b/wayang-docs/src/main/resources/how_contribute/helping_users.md
@@ -29,7 +29,7 @@
 
 # Helping Other Users
 
-A great way to contribute to Wayang is to help answer user questions on the StackOverflow. There are always many new Wayang users; taking a few minutes to help answer a question is a very valuable community service.
+A great way to contribute to Wayang is to help answer user questions on StackOverflow. There are always many new Wayang users; taking a few minutes to help answer a question is a very valuable community service.
 
 Contributors should subscribe to email list (`dev@wayang.apache.org`) and follow it in order to keep up to date on what’s happening in Wayang. Answering questions is an excellent and visible way to help the community, which also demonstrates your expertise.
 
diff --git a/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md b/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md
index fda271f..16f2d4c 100644
--- a/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md
+++ b/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md
@@ -48,9 +48,19 @@
 
 ## Types of Label of the Issues
 
-TODO: complete this part
-* Bug:
-* Feature Request:
-* Suggestion: 
 
+* Change : Requesting a change in the current IT profile.
 
+* IT help: Requesting help for an IT related problem.
+
+* Incident: Reporting an incident or IT service outage.
+
+* New feature: Requesting new capability or software feature.
+
+* Problem: Investigating and reporting the root cause of multiple incidents.
+
+* Service request: Requesting help from an internal or customer service team.
+
+* Service request with approval: Requesting help that requires a manager or board approval.
+
+* Support: Requesting help for customer support issues. 
\ No newline at end of file
diff --git a/wayang-docs/src/main/resources/how_contribute/preparing_releases.md b/wayang-docs/src/main/resources/how_contribute/preparing_releases.md
new file mode 100644
index 0000000..c693f11
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/preparing_releases.md
@@ -0,0 +1,388 @@
+---
+license: |
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+layout: default
+title: "Testing Releases"
+previous:
+    url: /how_contribute/reviewing_changes/
+    title: Reviewing Changes
+next:
+    url: /how_contribute/user_libraries_wayang/
+    title: User Libraries to Wayang
+menus:
+    contribute:
+        weight: 7
+---
+
+# Release process
+
+Wayang’s release process is community-oriented, and members of the community can vote on new releases on the [email list@dev](mailto:dev@wayang.apache.org). Wayang users are invited to subscribe to the email list \#Dev to receive announcements, and test their workloads on newer release and provide feedback on any performance or correctness issues found in the newer release.
+
+## Preparing your system
+
+As part of the release process, Maven will upload maven release artifacts to a so-called staging repository.
+
+This can be thought of as an ad-hoc Maven repository that contains only the artifacts for one release. This helps reviewers to see what’s in the convenience maven package and to release that to the public repos with one click.
+
+In order to be allowed to upload artifacts, your account has to be enabled for this, and you have to tell Maven about your credentials.
+
+In order to do this, you should provide these credentials via `.m2/settings.xml`.
+
+So if you don’t already have one, you should create a .m2 directory in your user home and inside that create a `settings.xml` file with at least this content:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <servers>
+    <!-- Apache Repo Settings -->
+        <server>
+            <id>apache.snapshots.https</id>
+            <username>{user-id}</username>
+            <password>{user-pass}</password>
+        </server>
+        <server>
+            <id>apache.releases.https</id>
+            <username>{user-id}</username>
+            <password>{user-pass}</password>
+        </server>
+    </servers>
+</settings>
+```
+
+
+This tells maven to use above credentials as soon as a repository with the id `apache.snapshots.https` or `apache.releases.https` is being used. For a release all you need is the releases repo, but it is good to have the other in place as it enables you to also deploy SNAPSHOTs from your system. There repos are defined in the apache parent pom and is identical for all Apache projects.
+
+Additionally, all artifacts are automatically signed by the release build. In order to be able to do this you need to set up GPG.
+
+The key being used to sign the artifacts will have to be linked to your Apache E-Mail ({apache-id}@apache.org) and verified by at least one fellow Apache committer (Ideally more) that have trusted keys themselves. Usually for this you have to get in touch - in real life - with any Apache committer with a trusted key. Attending an ApacheCon is usually a great way to do this as usually every ApacheCon has a Key Signing event in its schedule. He can then sign your key and hereby enable you to sign Apache release artifacts.
+
+If you happen to have multiple keys, adding the following profile to your settings.xml should help:
+
+```xml
+<profile>
+  <id>apache-release</id>
+  <properties>
+    <gpg.keyname>5C60D6B9</gpg.keyname><!-- Your GPG Keyname here -->
+    <!-- Use an agent: Prevents being asked for the password during the build -->
+    <gpg.useagent>true</gpg.useagent>
+    <gpg.passphrase>topsecret-password</gpg.passphrase>
+  </properties>
+</profile>
+```
+
+
+
+## Creating a release branch
+
+For each new release we create a new branch at the beginning of a code-freeze phase. So if currently the project version in develop is `0.6.0-SNAPSHOT`, we create a branch `rel/0.6`. When creating the branch is exactly the moment in which the version in develop is incremented to the next minor version.
+
+This can and should be automated by the maven-release-plugin. Per default the plugin will ask for the working copy version during the build execution. This is the version the develop branch will be changed to.
+
+In contrast to normal builds, it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building.
+
+Being 0.6 the minor version
+```shell
+mvn release:branch -P scala-12 -DbranchName=rel/0.6
+```
+The plugin will then aks for the version:
+
+```shell
+What is the new working copy version for "Wayang"? (org.apache.wayang:wayang-parent) 0.6.1-SNAPSHOT: : 0.7.0-SNAPSHOT
+```
+
+## Preparing a release
+
+Same as with creating the branch it is important to enable all profiles when creating the branch as only this way will all modules versions be updated. Otherwise, the non-default modules on develop will reference the old version which will cause problems when building. For people building with some additional profiles from the source release will be impossible.
+
+As especially when switching a lot between different branches, it is recommended to do a clean checkout of the repository. Otherwise, a lot of directories can be left over, which would be included in the `source-release` zip. In order to prepare a `release-candidate`, the first step is switching to the corresponding `release-branch`.
+
+After that, the following command will to all preparation steps for the release:
+
+```shell
+mvn release:prepare -P scala-12
+```
+
+(The -P scala-12 tells maven to activate all the profiles that partition the build and makes sure the versions of all modules are updated as part of the release) In general the plugin will now ask you 3 questions:
+
+1. The version we want to release as (It will suggest the version you get by omitting the `-SNAPSHOT` suffix)
+
+2. The name of the tag the release commit will be tagged with in the SCM (Name it `v{release-version}` (`v0.6.0` in our case)
+
+3. The next development version (The version present in the pom after the release) (`{current-next-bugfix-version}` in our case)
+
+Usually for 1 and 3 the defaults are just fine, make sure the tag name is correct as this usually is different.
+
+What the plugin now does, is automatically execute the following operations:
+
+1. Check we aren’t referencing any `SNAPSHOT` dependencies.
+
+2. Update all pom versions to the release version.
+
+3. Run a build with all tests
+
+4. Commit the changes (commit message: [maven-release-plugin] prepare release `v0.6.0`)
+
+5. Push the commit
+
+6. Tag the commit
+
+7. Update all poms to the next development version.
+
+8. Commit the changes (commit message: [maven-release-plugin] prepare for next development iteration)
+
+9. Push the commit
+
+However, this just prepared the git repository for the release, we have to perform the release to produce and stage the release artifacts.
+
+Please verify the git repository at: `https://gitbox.apache.org/repos/asf?p=incubator-wayang.git` is in the correct state. Please select the release branch and verify the commit log. It is important that the commit with the message "[maven-release-plugin] prepare release `v{release-version}`" is tagged with the release tag (in this case `v0.6.0`)
+
+# What if something goes wrong?
+
+If something goes wrong, you can always execute:
+
+```shell
+mvn release:rollback
+```
+
+It will change the versions back and commit and push things.
+
+However, it will not delete the tag in GIT (locally and remotely). So you have to do that manually or use a different tag next time.
+
+# Performing a release
+
+This is done by executing another goal of the maven-release-plugin:
+
+```shell
+mvn release:perform
+```
+
+This executes automatically as all information it requires is located in the release.properties file the prepare-goal prepared.
+
+The first step is that the perform-goal checks out the previously tagged revision into the root modules target/checkout directory. Here it automatically executes a maven build (You don’t have to do this, it’s just that you know what’s happening):
+
+```shell
+mvn clean deploy -P apache-release
+```
+
+As the apache-release profile is also activated, this builds and tests the project as well as creates the JavaDocs, Source packages and signs each of these with your PGP key.
+
+We are intentionally not adding the other profiles, as these either produce binary artifacts that usually only work on the system they were compiled on (C++, .Net).
+
+As this time the build is building with release versions, Maven will automatically choose the release url for deploying artifacts.
+
+The way things are set up in the apache parent pom, is that release artifacts are deployed to a so-called staging repository.
+
+You can think of a staging repository as a dedicated repository created on the fly as soon as the first artifact comes in.
+
+After the build you will have a nice and clean Maven repository at `https://repository.apache.org/` that contains only artifacts from the current build.
+
+At this point, it is important to log in to Nexus at `https://repository.apache.org/`, select Staging Repositories and find the repository with the name: `orgapachewayang-{somenumber}`.
+
+Select that and click on the Close button.
+
+Now Nexus will do some checks on the artifacts and check the signatures.
+
+As soon as it’s finished, we are done on the Maven side and ready to continue with the rest of the release process.
+
+A release build also produces a so-called source-assembly zip.
+
+This contains all sources of the project and will be what’s actually the release from an Apache point of view and will be the thing we will be voting on.
+
+This file will also be signed and SHA512 hashes will be created.
+
+## Staging a release
+
+Each new release and release-candidate has to be staged in the Apache SVN under:
+
+* `https://dist.apache.org/repos/dist/dev/wayang/`
+
+The directory structure of this directory is as follows:
+
+```shell
+./KEYS
+./0.6.0/
+./0.6.0/rc1
+./0.6.0/rc1/README
+./0.6.0/rc1/RELEASE_NOTES
+./0.6.0/rc1/apache-wayang-0.6.0-source-release.zip
+./0.6.0/rc1/apache-wayang-0.6.0-source-release.zip.asc
+./0.6.0/rc1/apache-wayang-0.6.0-source-release.zip.sha512
+```
+
+You can generally import the stuff, by preparing a directory structure like above locally and then using svn import to do the importing:
+
+```shell
+cd ./{current-full-version}
+svn import rc1 https://dist.apache.org/repos/dist/dev/wayang/{current-full-version}/rc1 -m"Staging of rc1 of Wayang {current-full-version}"
+```
+
+* The KEYS file contains the PGP public key which belongs to the private key used to sign the release artifacts.
+
+If this is your first release be sure to add your key to this file. For the format have a look at the file itself. It should contain all the information needed.
+
+Be sure to stage exactly the README and RELEASE_NOTES files contained in the root of your project. Ideally you just copy them there from there.
+
+All three `-source-relese.zip` artifacts should be located in the directory: `target/checkout/target`
+
+After committing these files to SVN you are ready to start the vote.
+
+## Starting a vote on the mailing list
+
+After staging the release candidate in the Apache SVN, it is time to actually call out the vote.
+
+For this we usually send two emails. The following would be the one used to do our first TLP release:
+
+E-Mail Topic:
+<div style="border: 1px solid gray; padding: 1em;">
+<pre>
+[VOTE] Apache Wayang 0.6.0 RC1
+</pre>
+</div>
+
+Message:
+<div style="border: 1px solid gray; padding: 1em;">
+<pre>
+Apache Wayang 0.6.0 has been staged under [2] and it’s time to vote on accepting it for release. All Maven artifacts are available under [1].
+Voting will be open for 72hr. A minimum of 3 binding +1 votes and more binding +1 than binding -1
+are required to pass.
+
+* Release tag: v0.6.0
+
+Hash for the release tag: {replacethiswiththerealgitcommittag}
+
+Per [3] "Before voting +1 PMC members are required to download
+the signed source code package, compile it as provided, and test
+the resulting executable on their own platform, along with also
+verifying that the package meets the requirements of the ASF policy
+on releases."
+
+You can achieve the above by following [4].
+
+[ ]  +1 accept (indicate what you validated - e.g. performed the non-RM items in [4])
+
+[ ]  -1 reject (explanation required)
+
+
+<a style="color: dodgerblue">1. https://repository.apache.org/content/repositories/orgapachewayang-{somefourdigitnumber}</a>
+<a style="color: dodgerblue">2. https://dist.apache.org/repos/dist/dev/wayang/0.6.0/rc1</a>
+<a style="color: dodgerblue">3. https://www.apache.org/dev/release.html#approving-a-release</a>
+
+</pre>
+</div>
+
+As it is sometimes to do the vote counting, if voting and discussions are going on in the same thread, we send a second email:
+
+E-Mail Topic:
+<div style="border: 1px solid gray; padding: 1em;">
+<pre>[DISCUSS] Apache Wayang 0.6.0 RC1</pre>
+</div>
+
+
+Message:
+<div style="border: 1px solid gray; padding: 1em;">
+<pre>
+This is the discussion thread for the corresponding VOTE thread.
+
+Please keep discussions in this thread to simplify the counting of votes.
+
+If you have to vote -1 please mention a brief description on why and then take the details to this thread.
+</pre>
+</div>
+
+
+
+Now we have to wait 72 hours till we can announce the result of the vote. The vote passes, if at least 3 +1 votes are received and more +1 are received than -1.
+
+## Releasing after a successful vote
+
+As soon as the votes are finished, and the results were in favor of a release, the staged artifacts can be released. This is done by moving them inside the Apache SVN.
+
+```shell
+svn move -m "Release Apache Wayang 0.6.0" \
+  https://dist.apache.org/repos/dist/dev/wayang/0.6.0/rc1 \
+  https://dist.apache.org/repos/dist/release/wayang/0.6.0
+```
+
+This will make the release artifacts available and will trigger them being copied to mirror sites.
+
+This is also the reason why you should wait at least 24 hours before sending out the release notification emails.
+
+## Cleaning up older release versions
+
+As a lot of mirrors are serving our releases, it is the Apache policy to clean old releases from the repo if newer versions are released.
+
+This can be done like this:
+
+```shell
+svn delete https://dist.apache.org/repos/dist/release/wayang/{current-full-version}/ -m"deleted version {current-full-version}"
+```
+
+After this `https://dist.apache.org/repos/dist/release/wayang` should only contain the latest release directory.
+
+## Releasing the Maven artifacts
+
+Probably the simplest part is releasing the Maven artifacts.
+
+In order to do this, the release manager logs into Nexus at `https://repository.apache.org/`, selects the staging repository and clicks on the Release button.
+
+This will move all artifacts into the Apache release repository and delete the staging repository after that.
+
+All release artifacts released to the Apache release repo, will automatically be synced to Maven central.
+
+
+## Add the version to the DOAP file
+Now that the release is out, in the develop branch, update the DOAP file for Wayang.
+
+This is found at: 
+
+* `src/site/resources-filtered/wayang-doap.rdf`
+
+Please add the just released version to the top of the versions.
+
+This file is needed for Apache’s tooling to automatically keep track of project release activity, and we use this internally too to automatically update the documentation to always reference the latest released version automatically.
+
+## Releasing the Maven artifacts
+
+Probably the simplest part is releasing the Maven artifacts.
+
+In order to do this, the release manager logs into Nexus at `https://repository.apache.org/`, selects the staging repository and clicks on the Release button.
+
+This will move all artifacts into the Apache release repository and delete the staging repository after that.
+
+All release artifacts released to the Apache release repo, will automatically be synced to Maven central.
+
+## Merge back release version to release branch
+
+The release branch should always point to the last released version. This has to be done with git
+
+```shell
+git checkout release
+```
+```shell
+git merge v0.6.0
+```
+When there are conflicts it could help to use the theirs merge strategy, i.e.,
+```shell
+git merge -X theirs v0.6.0
+```
+  Possibly a manual conflict resolution has to be done afterwards. After that, changes need to be pushed.
+
+## Updating Jira
+
+Set the released version to "released" and set the "release-date"
+
+Add the next version to the versions.
\ No newline at end of file
diff --git a/wayang-docs/src/main/resources/how_contribute/slack_channels.md b/wayang-docs/src/main/resources/how_contribute/slack_channels.md
index 8af8fb8..9e90824 100644
--- a/wayang-docs/src/main/resources/how_contribute/slack_channels.md
+++ b/wayang-docs/src/main/resources/how_contribute/slack_channels.md
@@ -26,6 +26,7 @@
 
 # Slack Channels
 
-TODO: analyse if is necessary to do it
+In case of any doubts, our community will be glad to answer your questions.
 
+Join the Apache Wayang slack. After creating account in slack you can join #wayang where you can look for help in using and developing Apache Wayang.
 
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
index 64013a8..29d0060 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.channels;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -31,9 +33,6 @@
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link ChannelConversion}s used by the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
index 5a45b82..e69bb77 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.flink.channels;
 
+import java.util.OptionalLong;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -28,8 +29,6 @@
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.OptionalLong;
-
 /**
  * Describes the situation where one {@link DataSet} is operated on, producing a further {@link DataSet}.
  * <p><i>NB: We might be more specific: Distinguish between cached/uncached and pipelined/aggregated.</i></p>
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
index 2eb5aaf..378ff6c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.function.Function;
 import org.apache.flink.api.common.functions.CoGroupFunction;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.common.functions.FlatMapFunction;
@@ -41,10 +44,6 @@
 import org.apache.wayang.flink.compiler.criterion.WayangConvergenceCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
 /**
  * A compiler translates Wayang functions into executable Flink functions.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
index 732c745..f26dfc4 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.flink.compiler;
 
-import org.apache.flink.api.java.functions.KeySelector;
-
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.util.Base64;
+import org.apache.flink.api.java.functions.KeySelector;
 
 /**
  * Wrapper for {@Link KeySelector}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
index 06098a3..06acfed 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.Serializable;
+import java.util.function.Function;
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.java.functions.KeySelector;
 import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
 import org.apache.wayang.core.function.TransformationDescriptor;
 
-import java.io.Serializable;
-import java.util.function.Function;
-
 /**
  * Wrapper for {@Link KeySelector}
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
index 91e67f8..8007de8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.IOException;
+import java.io.Serializable;
 import org.apache.flink.api.common.io.OutputFormat;
 import org.apache.flink.configuration.Configuration;
 import org.apache.wayang.core.function.ConsumerDescriptor;
 
-import java.io.IOException;
-import java.io.Serializable;
-
 /**
  * Wrapper for {@Link OutputFormat}
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
index e2d8eb5..55713b4 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.net.URI;
 import org.apache.flink.api.common.io.BlockInfo;
 import org.apache.flink.api.common.io.CleanupWhenUnsuccessful;
 import org.apache.flink.api.common.io.FileOutputFormat;
@@ -32,17 +39,9 @@
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.SequenceFile;
-import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.net.URI;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Wrapper for {@link FileOutputFormat}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
index add4daf..080d53b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.flink.compiler.criterion;
 
-import org.apache.flink.api.common.aggregators.Aggregator;
-import org.apache.flink.types.ListValue;
-
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.flink.api.common.aggregators.Aggregator;
+import org.apache.flink.types.ListValue;
 
 /**
  * Class create a {@Link Aggregator} that generate aggregatorWrapper
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
index 17c7e2e..14a4c16 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
@@ -19,12 +19,11 @@
 package org.apache.wayang.flink.compiler.criterion;
 
 
-import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
-import org.apache.wayang.core.function.FunctionDescriptor;
-
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.stream.Collectors;
+import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
+import org.apache.wayang.core.function.FunctionDescriptor;
 
 /**
  * Class create a {@Link ConvergenceCriterion} that generate aggregatorWrapper
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
index 2333e3b..5fb0c92 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.flink.compiler.criterion;
 
-import org.apache.flink.types.ListValue;
-
 import java.util.Collection;
+import org.apache.flink.types.ListValue;
 
 /**
  * Is a Wrapper for used in the criterion of the Loops
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
index 2fc0d6b..3e85e17 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
@@ -19,10 +19,6 @@
 package org.apache.wayang.flink.compiler.criterion;
 
 
-import org.apache.flink.core.memory.DataInputView;
-import org.apache.flink.core.memory.DataOutputView;
-import org.apache.flink.types.Value;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -30,6 +26,9 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
+import org.apache.flink.core.memory.DataInputView;
+import org.apache.flink.core.memory.DataOutputView;
+import org.apache.flink.types.Value;
 /**
  * Implementation of {@link Value} of flink for use in Wayang
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
index a14b38d..2521cd2 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.flink.execution;
 
+import java.io.Serializable;
+import java.util.Collection;
 import org.apache.flink.api.common.functions.RichFunction;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.flink.operators.FlinkExecutionOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.Serializable;
-import java.util.Collection;
-
 /**
  * {@link ExecutionContext} implementation for the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
index 61eef4a..f95c9a8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.ExecutionEnvironment;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -36,10 +39,6 @@
 import org.apache.wayang.flink.operators.FlinkExecutionOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * {@link Executor} implementation for the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
index 08f4927..27c5684 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.flink.mapping;
 
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkCartesianOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CartesianOperator} to {@link FlinkCartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
index b2e79a2..7f48397 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.flink.mapping;
 
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkCoGroupOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CoGroupOperator} to {@link FlinkCoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
index 289207f..b8aa313 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkCollectionSource;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link FlinkCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
index 95e9975..fa5921b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkCountOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CountOperator} to {@link FlinkCountOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
index adf2481..ec53f68 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkDistinctOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DistinctOperator} to {@link FlinkDistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
index d4fc663..f89b66c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkDoWhileOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DoWhileOperator} to {@link FlinkDoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
index 8afea3b..fc1f811 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkFilterOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 
 /**
  * Mapping from {@link FilterOperator} to {@link FlinkFilterOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
index 2a898ed..8a7d61a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkFlatMapOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FlatMapOperator} to {@link FlinkFlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
index 870e1aa..b05fa61 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkGlobalMaterializedGroupOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalMaterializedGroupOperator} to {@link FlinkGlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
index 7ced46d..aaf3a2b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkGlobalReduceOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalReduceOperator} to {@link FlinkGlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
index 9c9faa0..51ce3d7 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkGroupByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GroupByOperator} to {@link FlinkGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
index 368a040..2676e55 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkIntersectOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IntersectOperator} to {@link FlinkIntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
index cc98c82..f1e2b52 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkJoinOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link FlinkJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
index 586c309..19291cb 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkLocalCallbackSink;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LocalCallbackSink} to {@link FlinkLocalCallbackSink}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
index dab0374..1645a69 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkLoopOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link FlinkLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
index dbbe5e2..c0b62df 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkMapOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link FlinkMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
index bc2a1e2..b7f0320 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkMapPartitionsOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapPartitionsOperator} to {@link FlinkMapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
index 2406544..685b9a1 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.flink.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
@@ -53,7 +52,9 @@
             new SampleMapping(),
             new SortMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSinkMapping(),
             new TextFileSourceMapping(),
+            new ObjectFileSourceMapping(),
             new UnionAllMapping(),
             new ZipWithIdMapping()
     );
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
index 8fa46c1..72f0049 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkMaterializedGroupByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MaterializedGroupByOperator} to {@link FlinkMaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..1008119
--- /dev/null
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.flink.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.flink.operators.FlinkObjectFileSink;
+import org.apache.wayang.flink.platform.FlinkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link FlinkObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                FlinkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+                "sink",
+                new ObjectFileSink<>(
+                    null,
+                    DataSetType.none().getDataUnitType().getTypeClass()
+                ),
+                false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new FlinkObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..f48eba3
--- /dev/null
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.flink.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.flink.operators.FlinkObjectFileSource;
+import org.apache.wayang.flink.platform.FlinkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link FlinkObjectFileSource}.
+ */
+@SuppressWarnings("unchecked")
+public class ObjectFileSourceMapping implements Mapping {
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                FlinkPlatform.getInstance()
+        ));
+    }
+
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource<>(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new FlinkObjectFileSource<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
index b35a600..6f719aa 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@
 import org.apache.wayang.flink.operators.FlinkPageRankOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link PageRankOperator} to {@link FlinkPageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
index 8d5d666..3898b09 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkReduceByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ReduceByOperator} to {@link FlinkReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
index 5de4d4a..220e1bc 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.operators.FlinkRepeatOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link RepeatOperator} to {@link FlinkRepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
index f1d3feb..5318a81 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkSampleOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SampleOperator} to {@link FlinkSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
index 412803f..144e591 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkSortOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SortOperator} to {@link FlinkSortOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
index c5963fb..e3fc257 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkTextFileSink;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 
 /**
  * Mapping from {@link TextFileSink} to {@link FlinkTextFileSink}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
index a57bb66..b6ef0a6 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@
 import org.apache.wayang.flink.operators.FlinkTextFileSource;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSource} to {@link FlinkTextFileSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
index ec2f0ed..ae54c8c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkUnionAllOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link UnionAllOperator} to {@link FlinkUnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
index c45de87..94c72a1 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ZipWithIdOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.flink.operators.FlinkZipWithIdOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ZipWithIdOperator} to {@link FlinkZipWithIdOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
index 280586b..c2fc3af 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CartesianOperator;
@@ -32,11 +36,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
index d1230b7..5693be6 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.CoGroupFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
index c88f656..54df5a9 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.core.api.Configuration;
@@ -35,11 +39,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Converts {@link DataSetChannel} into a {@link CollectionChannel}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
index 577f67f..6e33ec8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,10 +34,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * This is execution operator implements the {@link CollectionSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
index 570e97e..daf6278 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -31,11 +35,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CountOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
index 72037be..be069fc 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,11 +35,6 @@
 import org.apache.wayang.flink.compiler.KeySelectorDistinct;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Flink implementation of the {@link DistinctOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
index a558e1d..7164d29 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
@@ -40,11 +44,6 @@
 import org.apache.wayang.flink.compiler.criterion.WayangFilterCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
index f8b5da4..9bb8755 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.Serializable;
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -26,9 +28,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.Serializable;
-import java.util.Collection;
-
 /**
  * Execution operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
index 9954f7f..c364840 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.FilterOperator;
@@ -35,12 +40,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
index d2f8c41..406d9de 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.common.functions.RichFlatMapFunction;
 import org.apache.flink.api.java.DataSet;
@@ -38,12 +43,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link FlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
index a2c78f7..cf4a881 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapPartitionFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
@@ -32,12 +37,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link GlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
index a5ccec3..20f5544 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.ReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
@@ -35,12 +40,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link GlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
index b2f236f..6e86fee 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -37,13 +43,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link GroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
index 2e4d518..3ab8b97 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -34,10 +37,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link IntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
index f60b578..3cdd652 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.JoinFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
index c3a8e6e..ff8b657 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.io.PrintingOutputFormat;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
@@ -32,11 +36,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Implementation of the {@link LocalCallbackSink} operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
index 826c187..82aa3f3 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
@@ -36,10 +39,6 @@
 import org.apache.wayang.flink.compiler.criterion.WayangFilterCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
index 57f7b96..be66622 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.common.functions.RichMapFunction;
 import org.apache.flink.api.java.DataSet;
@@ -37,11 +41,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
index 215c473..e39fff5 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.MapPartitionFunction;
 import org.apache.flink.api.common.functions.RichMapPartitionFunction;
 import org.apache.flink.api.java.DataSet;
@@ -37,12 +42,6 @@
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
index 627259a..15545da 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -36,12 +41,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
index 9130a97..51a420e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
@@ -18,13 +18,16 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.operators.DataSink;
 import org.apache.flink.core.fs.FileSystem;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -35,27 +38,23 @@
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * {@link Operator} for the {@link FlinkPlatform} that creates a sequence file.
  *
  * @see FlinkObjectFileSink
  */
-public class FlinkObjectFileSink<Type> extends UnarySink<Type> implements FlinkExecutionOperator {
+public class FlinkObjectFileSink<Type> extends ObjectFileSink<Type> implements FlinkExecutionOperator {
 
-    private final String targetPath;
-
+    public FlinkObjectFileSink(ObjectFileSink<Type> that) {
+        super(that);
+    }
 
     public FlinkObjectFileSink(DataSetType<Type> type) {
         this(null, type);
     }
 
     public FlinkObjectFileSink(String targetPath, DataSetType<Type> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -68,10 +67,16 @@
 
         assert inputs.length == this.getNumInputs();
         assert outputs.length <= 1;
+        final FileChannel.Instance output;
+        final String targetPath;
+        if(outputs.length == 1) {
+            output = (FileChannel.Instance) outputs[0];
+            targetPath = output.addGivenOrTempPath(this.textFileUrl, flinkExecutor.getConfiguration());
+        }else{
+            targetPath = this.textFileUrl;
+        }
 
-        final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String targetPath = output.addGivenOrTempPath(this.targetPath, flinkExecutor.getConfiguration());
-
+        //TODO: remove the set parallelism 1
         DataSetChannel.Instance input = (DataSetChannel.Instance) inputs[0];
         final DataSink<Type> tDataSink = input.<Type>provideDataSet()
                 .write(new WayangFileOutputFormat<Type>(targetPath), targetPath, FileSystem.WriteMode.OVERWRITE)
@@ -83,7 +88,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new FlinkObjectFileSink<>(targetPath, this.getType());
+        return new FlinkObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
index fb1e569..d9fba1e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.hadoop.mapred.HadoopInputFormat;
@@ -27,10 +32,10 @@
 import org.apache.hadoop.io.NullWritable;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -40,29 +45,24 @@
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * {@link Operator} for the {@link FlinkPlatform} that creates a sequence file.
  *
  * @see FlinkObjectFileSource
  */
-public class FlinkObjectFileSource<Type> extends UnarySource<Type> implements FlinkExecutionOperator {
+public class FlinkObjectFileSource<Type> extends ObjectFileSource<Type> implements FlinkExecutionOperator {
 
-    private final String sourcePath;
+    public FlinkObjectFileSource(ObjectFileSource<Type> that) {
+        super(that);
+    }
 
     public FlinkObjectFileSource(DataSetType<Type> type) {
         this(null, type);
     }
 
     public FlinkObjectFileSource(String sourcePath, DataSetType<Type> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -76,12 +76,12 @@
         assert outputs.length == this.getNumOutputs();
 
         final String path;
-        if (this.sourcePath == null) {
+        if (this.getInputUrl() == null) {
             final FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             path = input.getSinglePath();
         } else {
             assert inputs.length == 0;
-            path = this.sourcePath;
+            path = this.getInputUrl();
         }
         DataSetChannel.Instance output = (DataSetChannel.Instance) outputs[0];
         flinkExecutor.fee.setParallelism(flinkExecutor.getNumDefaultPartitions());
@@ -109,7 +109,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new FlinkObjectFileSource<Type>(sourcePath, this.getType());
+        return new FlinkObjectFileSource<Type>(this.getInputUrl(), this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
index 6a62337..b5095f5 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.operators;
 
+import static org.apache.flink.api.java.aggregation.Aggregations.SUM;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
@@ -36,14 +43,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.apache.flink.api.java.aggregation.Aggregations.SUM;
-
 /**
  * Flink implementation of the {@link PageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
index d0d7e03..0f2a78e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.ReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Flink implementation of the {@link ReduceByOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
index b60abe2..0d551ac 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
 import org.apache.wayang.basic.operators.RepeatOperator;
@@ -32,10 +35,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
index 3b5507c..8b6bb39 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
 import org.apache.wayang.basic.operators.RepeatOperator;
@@ -31,10 +34,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
index 86b0613..61c9582 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.utils.DataSetUtils;
 import org.apache.wayang.basic.operators.SampleOperator;
@@ -32,14 +39,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-
 /**
  * Flink implementation of the {@link SampleOperator}. Sampling with replacement (i.e., the sample may contain duplicates)
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
index 97e5d19..034426a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.operators.Order;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -34,11 +38,6 @@
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link SortOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
index 9682344..cfeb271 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.io.TextOutputFormat;
 import org.apache.wayang.basic.operators.TextFileSink;
@@ -34,11 +38,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Implementation of the {@link TextFileSink} operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
index 2485acf..46c4eca 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Provides a {@link Collection} to a Flink job.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
index 4bc2ba9..3e6721c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.channels.FileChannel;
@@ -33,11 +37,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Created by bertty on 31-10-17.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
index 93452ff..f0d1f45 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link UnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
index 027821a..7d4ad8a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.utils.DataSetUtils;
 import org.apache.wayang.basic.data.Tuple2;
@@ -34,11 +38,6 @@
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link MapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
index 445e6d0..325afdf 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
@@ -18,8 +18,14 @@
 
 package org.apache.wayang.flink.platform;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
 import org.apache.flink.api.java.CollectionEnvironment;
 import org.apache.flink.api.java.ExecutionEnvironment;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.basic.plugin.WayangBasic;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -32,13 +38,6 @@
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.flink.execution.FlinkContextReference;
 import org.apache.wayang.flink.execution.FlinkExecutor;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
 
 /**
  * {@link Platform} for Apache Flink.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
index bc7df27..853e229 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -29,9 +31,6 @@
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
index eb4a8c8..b7c0361 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,10 +30,6 @@
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} provides {@link ChannelConversion}s from the  {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
index 2e0f688..91710e4 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.giraph.Algorithm;
 
 import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.util.List;
 import org.apache.giraph.aggregators.DoubleMaxAggregator;
 import org.apache.giraph.aggregators.DoubleMinAggregator;
 import org.apache.giraph.aggregators.LongSumAggregator;
@@ -41,9 +43,6 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.io.IOException;
-import java.util.List;
-
 /**
  * Basic PageRank implementation.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
index 20f7761..86ef4e2 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
@@ -18,12 +18,9 @@
 
 package org.apache.wayang.giraph.Algorithm;
 
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Queue;
-import java.util.Stack;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Parameters for Basic PageRank implementation.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
index cd1eb61..90bb99d 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.giraph.channels;
 
-import org.apache.wayang.core.optimizer.channels.ChannelConversion;
-import org.apache.wayang.giraph.platform.GiraphPlatform;
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.core.optimizer.channels.ChannelConversion;
+import org.apache.wayang.giraph.platform.GiraphPlatform;
 
 /**
  * {@link ChannelConversion}s for the {@link GiraphPlatform}.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
index 86e7aa1..cc615df 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
@@ -18,20 +18,28 @@
 
 package org.apache.wayang.giraph.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Set;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.platform.*;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.platform.ExecutionState;
+import org.apache.wayang.core.platform.Executor;
+import org.apache.wayang.core.platform.ExecutorTemplate;
+import org.apache.wayang.core.platform.PartialExecution;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.giraph.operators.GiraphExecutionOperator;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 
-import java.util.*;
-
 /**
  * {@link Executor} for the {@link GiraphPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
index 7f98c14..6db2dae 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.giraph.mappings;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
index cc21b99..a69a65e 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
@@ -18,15 +18,16 @@
 
 package org.apache.wayang.giraph.mappings;
 
-import org.apache.wayang.basic.operators.PageRankOperator;
-import org.apache.wayang.core.mapping.*;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.Subplan;
-import org.apache.wayang.giraph.operators.GiraphPageRankOperator;
-import org.apache.wayang.giraph.platform.GiraphPlatform;
-
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.basic.operators.PageRankOperator;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.giraph.operators.GiraphPageRankOperator;
+import org.apache.wayang.giraph.platform.GiraphPlatform;
 
 /**
  * Maps {@link PageRankOperator}s to {@link GiraphPageRankOperator}s.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
index 21f9b86..988823e 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.giraph.operators;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -25,8 +26,6 @@
 import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 
-import java.util.Collection;
-
 /**
  * {@link ExecutionOperator} that can be run by the {@link GiraphExecutor}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
index 83e68d3..ac1d5cd 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
@@ -18,8 +18,17 @@
 
 package org.apache.wayang.giraph.operators;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.giraph.job.GiraphJob;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.PageRankOperator;
@@ -40,13 +49,6 @@
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 import org.apache.wayang.java.channels.StreamChannel;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.*;
-import java.net.URISyntaxException;
-import java.util.*;
-import java.util.stream.Stream;
 
 /**
  * PageRank {@link Operator} implementation for the {@link GiraphPlatform}.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
index d267e25..51f66bc 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
@@ -18,7 +18,6 @@
 
 package org.apache.wayang.giraph.platform;
 
-import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.LoadProfileToTimeConverter;
 import org.apache.wayang.core.optimizer.costs.LoadToTimeConverter;
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
index a1a075d..0700b88 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.giraph.plugin;
 
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -28,10 +31,6 @@
 import org.apache.wayang.giraph.mappings.Mappings;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} activates default capabilities of the {@link GiraphPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java b/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
index 436c711..c73592d 100644
--- a/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
+++ b/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
@@ -18,8 +18,10 @@
 
 package org.apache.wayang.giraph.operators;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -33,11 +35,7 @@
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 import org.apache.wayang.java.channels.StreamChannel;
-
-import java.io.IOException;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Before;
 
 /**
  * Test For GiraphPageRank
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
index e1e9661..4df344b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -30,9 +32,6 @@
 import org.apache.wayang.java.operators.JavaTsvFileSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link ChannelConversion}s for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
index c71c840..8ab7e22 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
@@ -26,9 +28,6 @@
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.Collection;
-import java.util.stream.Stream;
-
 /**
  * {@link Channel} between two {@link JavaExecutionOperator}s using an intermediate {@link Collection}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
index dbcdf8d..e1393f2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.stream.Stream;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.platform.ChannelInstance;
 
-import java.util.stream.Stream;
-
 /**
  * Defines execution logic to handle a {@link Channel}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
index 98d8a89..14fc7ba 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Collection;
+import java.util.OptionalLong;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -27,10 +30,6 @@
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.Collection;
-import java.util.OptionalLong;
-import java.util.stream.Stream;
-
 /**
  * {@link Channel} between two {@link JavaExecutionOperator}s using a {@link Stream}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
index 32c3bcb..94945a5 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.compiler;
 
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.MapPartitionsDescriptor;
@@ -25,10 +28,6 @@
 import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.function.TransformationDescriptor;
 
-import java.util.function.BinaryOperator;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
 /**
  * A compiler translates Wayang functions into executable Java functions.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
index 14b46cc..dbc70d2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.java.execution;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -26,8 +27,6 @@
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-
 /**
  * {@link ExecutionContext} implementation for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
index 6150b7c..7fddddd 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.ExtendedFunction;
@@ -35,10 +38,6 @@
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * {@link Executor} implementation for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
index 9fca8af..95925db 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaCartesianOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CartesianOperator} to {@link JavaCartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
index d029d7c..be2ff24 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -30,9 +32,6 @@
 import org.apache.wayang.java.operators.JavaJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link JavaJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
index d56087b..b7f9558 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaCollectionSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link JavaCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
index ec2c97a..6971e08 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaCountOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CountOperator} to {@link JavaCountOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
index bdea8d7..421860f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaDistinctOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DistinctOperator} to {@link JavaDistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
index c71fab6..f33ab1c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -31,9 +33,6 @@
 import org.apache.wayang.java.operators.JavaLoopOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link JavaLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
index a75c4cb..f9710e0 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.java.operators.JavaFilterOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FilterOperator} to {@link JavaFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
index 3f282c0..ef34935 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaFlatMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FlatMapOperator} to {@link JavaFlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
index 7472966..8328094 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaGlobalMaterializedGroupOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalMaterializedGroupOperator} to {@link JavaGlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
index c4aa625..d61cb93 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaGlobalReduceOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalReduceOperator} to {@link JavaGlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
index c3e1750..77d24e3 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaIntersectOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IntersectOperator} to {@link JavaIntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
index e48d0eb..5704f7c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link JavaJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
index 51b7819..b0a1777 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaLocalCallbackSink;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LocalCallbackSink} to {@link JavaLocalCallbackSink}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
index de3386d..6b3c5b9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.java.operators.JavaLoopOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link JavaLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
index 60c73cb..d5f7c4c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link JavaMapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
index dc1bb5a..49a9d5f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaMapPartitionsOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapPartitionsOperator} to {@link JavaMapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
index ee9cebc..c77d531 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.java.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-import org.apache.wayang.java.mapping.graph.PageRankMapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.java.mapping.graph.PageRankMapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
@@ -32,6 +31,8 @@
     public static Collection<Mapping> BASIC_MAPPINGS = Arrays.asList(
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSourceMapping(),
+            new ObjectFileSinkMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
             new ReduceByMapping(),
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
index b74e5e0..4ffad2f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaMaterializedGroupByOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MaterializedGroupByOperator} to {@link JavaMaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..cbc4dca
--- /dev/null
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.java.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaObjectFileSink;
+import org.apache.wayang.java.platform.JavaPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link JavaObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                JavaPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+                "sink", new ObjectFileSink<>(null, DataSetType.none().getDataUnitType().getTypeClass()), false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new JavaObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..2e5f466
--- /dev/null
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.java.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaObjectFileSource;
+import org.apache.wayang.java.platform.JavaPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link JavaObjectFileSource}.
+ */
+public class ObjectFileSourceMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                JavaPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new JavaObjectFileSource(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
index cea8d88..45684e9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaReduceByOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ReduceByOperator} to {@link JavaReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
index 8d80f33..dbd3b8d 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaRepeatOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link RepeatOperator} to {@link JavaRepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
index 6cf42c2..d67e6ec 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.mapping.Mapping;
@@ -30,9 +32,6 @@
 import org.apache.wayang.java.operators.JavaReservoirSampleOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SampleOperator} to {@link JavaRandomSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
index 302f118..8e59b0a 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaSortOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SortOperator} to {@link JavaSortOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
index eb1d05a..34b5140 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaTextFileSink;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSink} to {@link JavaTextFileSink}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
index 3bc5aa1..45e5db9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@
 import org.apache.wayang.java.operators.JavaTextFileSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSource} to {@link JavaTextFileSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
index 8fc0fbf..a847cea 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.operators.JavaUnionAllOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link UnionAllOperator} to {@link JavaUnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
index ce0f590..9ae8d8f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.ZipWithIdOperator;
 import org.apache.wayang.core.function.ExecutionContext;
@@ -32,9 +34,6 @@
 import org.apache.wayang.java.operators.JavaMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ZipWithIdMapping} to a subplan.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
index d2a4c3d..b2b0cb2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping.graph;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@
 import org.apache.wayang.java.operators.graph.JavaPageRankOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link PageRankOperator} to {@link JavaPageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
index cdb4822..d9d0b7d 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,14 +40,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link CartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
index 253110f..9e255f1 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
@@ -18,6 +18,16 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -37,17 +47,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * Java implementation of the {@link CoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
index 10ddfa6..32bfde5 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -34,12 +39,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
 /**
  * Converts {@link StreamChannel} into a {@link CollectionChannel}
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
index 7020349..543d6d6 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This is execution operator implements the {@link TextFileSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
index 0cdf1fd..9018599 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,11 +35,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link CountOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
index 2f43c83..714087a 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,11 +35,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link DistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
index d1a3659..b2556a9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -35,13 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
index d6b2ae3..cee674c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -30,9 +32,6 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.stream.Stream;
-
 /**
  * Execution operator for the Java platform.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
index 757220e..1d1c3f2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -35,13 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
index 3c101ad..1d3590b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.function.Function;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
@@ -35,16 +44,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.function.Function;
-import java.util.stream.StreamSupport;
-
 /**
  * Java implementation of the {@link FlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperator.java
index 1fffb1d..e66fffe 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -29,11 +33,6 @@
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link GlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalReduceOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalReduceOperator.java
index afe5e7e..b11907b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalReduceOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaGlobalReduceOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.BinaryOperator;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -35,13 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.BinaryOperator;
-
 /**
  * Java implementation of the {@link GlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaIntersectOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaIntersectOperator.java
index 1019b4b..0b2347b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaIntersectOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaIntersectOperator.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -33,15 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link IntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaJoinOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaJoinOperator.java
index 7bd0f36..10e8f20 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaJoinOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaJoinOperator.java
@@ -18,6 +18,16 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -37,17 +47,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLocalCallbackSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLocalCallbackSink.java
index 8e99e18..b2f16df 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLocalCallbackSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLocalCallbackSink.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Consumer;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,12 +36,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.function.Consumer;
-
 /**
  * Implementation of the {@link LocalCallbackSink} operator for the Java platform.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLoopOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLoopOperator.java
index 5cd4e93..663e751 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLoopOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaLoopOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -35,13 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link LoopOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapOperator.java
index 62fe702..4109e8e 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -35,13 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * Java implementation of the {@link org.apache.wayang.basic.operators.MapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapPartitionsOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapPartitionsOperator.java
index 5a6ebc2..b0cc455 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapPartitionsOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMapPartitionsOperator.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.function.Function;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.MapPartitionsDescriptor;
@@ -36,16 +45,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.function.Function;
-import java.util.stream.StreamSupport;
-
 /**
  * Java implementation of the {@link MapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperator.java
index e4aae19..4161d98 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperator.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -35,15 +43,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
 /**
  * Java implementation of the {@link MaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
index ff45db6..2ab2e7e 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
@@ -18,18 +18,28 @@
 
 package org.apache.wayang.java.operators;
 
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.UncheckedIOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.BiConsumer;
+import java.util.stream.Stream;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.SequenceFile;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -40,34 +50,24 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
-import org.apache.logging.log4j.LogManager;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.UncheckedIOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.BiConsumer;
-import java.util.stream.Stream;
 
 /**
  * {@link Operator} for the {@link JavaPlatform} that creates a sequence file. Consistent with Spark's object files.
  *
  * @see JavaObjectFileSource
  */
-public class JavaObjectFileSink<T> extends UnarySink<T> implements JavaExecutionOperator {
+public class JavaObjectFileSink<T> extends ObjectFileSink<T> implements JavaExecutionOperator {
 
-    private final String targetPath;
+    public JavaObjectFileSink(ObjectFileSink<T> that) {
+        super(that);
+    }
 
     public JavaObjectFileSink(DataSetType<T> type) {
         this(null, type);
     }
 
     public JavaObjectFileSink(String targetPath, DataSetType<T> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -79,9 +79,15 @@
         assert inputs.length == this.getNumInputs();
 
         // Prepare Hadoop's SequenceFile.Writer.
-        FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String path = output.addGivenOrTempPath(this.targetPath, javaExecutor.getCompiler().getConfiguration());
-
+        final String path;
+        FileChannel.Instance output;
+        if(outputs.length == 1) {
+            output = (FileChannel.Instance) outputs[0];
+            path = output.addGivenOrTempPath(this.textFileUrl,
+                javaExecutor.getCompiler().getConfiguration());
+        }else{
+            path = this.textFileUrl;
+        }
         final SequenceFile.Writer.Option fileOption = SequenceFile.Writer.file(new Path(path));
         final SequenceFile.Writer.Option keyClassOption = SequenceFile.Writer.keyClass(NullWritable.class);
         final SequenceFile.Writer.Option valueClassOption = SequenceFile.Writer.valueClass(BytesWritable.class);
@@ -90,6 +96,9 @@
             // Chunk the stream of data quanta and write the chunks into the sequence file.
             StreamChunker streamChunker = new StreamChunker(10, (chunk, size) -> {
                 if (chunk.length != size) {
+                    System.out.println("heer");
+                    System.out.println(chunk.length);
+                    System.out.println(size);
                     chunk = Arrays.copyOfRange(chunk, 0, size);
                 }
                 try {
@@ -119,7 +128,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new JavaObjectFileSink<>(this.targetPath, this.getType());
+        return new JavaObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
index 4973ffd..57cde98 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
@@ -18,30 +18,6 @@
 
 package org.apache.wayang.java.operators;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.Validate;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.SequenceFile;
-import org.apache.wayang.basic.channels.FileChannel;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySource;
-import org.apache.wayang.core.platform.ChannelDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.wayang.java.channels.StreamChannel;
-import org.apache.wayang.java.execution.JavaExecutor;
-import org.apache.wayang.java.platform.JavaPlatform;
-import org.apache.logging.log4j.LogManager;
-
 import java.io.ByteArrayInputStream;
 import java.io.Closeable;
 import java.io.IOException;
@@ -54,23 +30,46 @@
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.Validate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.SequenceFile;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.platform.ChannelDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.fs.FileSystems;
+import org.apache.wayang.java.channels.StreamChannel;
+import org.apache.wayang.java.execution.JavaExecutor;
+import org.apache.wayang.java.platform.JavaPlatform;
 
 /**
  * {@link Operator} for the {@link JavaPlatform} that creates a sequence file. Consistent with Spark's object files.
  *
  * @see JavaObjectFileSink
  */
-public class JavaObjectFileSource<T> extends UnarySource<T> implements JavaExecutionOperator {
+public class JavaObjectFileSource<T> extends ObjectFileSource<T> implements JavaExecutionOperator {
 
-    private final String sourcePath;
-
-    public JavaObjectFileSource(DataSetType<T> type) {
-        this(null, type);
+    public JavaObjectFileSource(ObjectFileSource<T> that) {
+        super(that);
     }
 
+    public JavaObjectFileSource(DataSetType<T> type) {
+        super(null, type);
+    }
     public JavaObjectFileSource(String sourcePath, DataSetType<T> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -83,12 +82,12 @@
 
         SequenceFileIterator sequenceFileIterator;
         final String path;
-        if (this.sourcePath == null) {
+        if (this.getInputUrl() == null) {
             final FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             path = input.getSinglePath();
         } else {
             assert inputs.length == 0;
-            path = this.sourcePath;
+            path = this.getInputUrl();
         }
         try {
             final String actualInputPath = FileSystems.findActualSingleInputPath(path);
@@ -110,7 +109,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new JavaObjectFileSource<>(this.sourcePath, this.getType());
+        return new JavaObjectFileSource<>(this.getInputUrl(), this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRandomSampleOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRandomSampleOperator.java
index 528f716..dec83fa 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRandomSampleOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRandomSampleOperator.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,16 +40,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link JavaRandomSampleOperator}. This sampling method is with replacement (i.e., duplicates may appear in the sample).
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReduceByOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReduceByOperator.java
index 6721a6a..156075b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReduceByOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReduceByOperator.java
@@ -18,6 +18,20 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.BiConsumer;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -36,21 +50,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.BiConsumer;
-import java.util.function.BinaryOperator;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.Collector;
-import java.util.stream.Collectors;
-
 /**
  * Java implementation of the {@link ReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRepeatOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRepeatOperator.java
index 048f7d2..e807f4c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRepeatOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaRepeatOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -32,11 +36,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReservoirSampleOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReservoirSampleOperator.java
index f6946e6..809b6a2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReservoirSampleOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaReservoirSampleOperator.java
@@ -18,6 +18,16 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,17 +41,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-import java.util.stream.Collectors;
-
 /**
  * Java implementation of the {@link JavaReservoirSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaSortOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaSortOperator.java
index 587c0a3..cb3d9a3 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaSortOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaSortOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -32,12 +37,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.Function;
-
 /**
  * Java implementation of the {@link SortOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSink.java
index bd7cdcf..3cc88e7 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSink.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UncheckedIOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -38,16 +47,6 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UncheckedIOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * Implementation fo the {@link TextFileSink} for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSource.java
index 6d8577f..e75a635 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTextFileSource.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,16 +40,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Stream;
-
 /**
  * This is execution operator implements the {@link TextFileSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSink.java
index 61a197c..0e0ee63 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSink.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UncheckedIOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -38,15 +46,6 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UncheckedIOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * {@link Operator} for the {@link JavaPlatform} that creates a TSV file.
  * Only applicable to tuples with standard datatypes.
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSource.java
index 2580032..c416216 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaTsvFileSource.java
@@ -18,7 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
-import org.apache.commons.io.IOUtils;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
@@ -32,26 +36,12 @@
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
 import org.apache.wayang.core.util.fs.FileUtils;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.UncheckedIOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Spliterators;
-import java.util.function.Function;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-
 /**
  * {@link Operator} for the {@link JavaPlatform} that creates a sequence file. Consistent with Spark's object files.
  *
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaUnionAllOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaUnionAllOperator.java
index 61cad25..8bfa5f7 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaUnionAllOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaUnionAllOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,12 +36,6 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link UnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/graph/JavaPageRankOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/graph/JavaPageRankOperator.java
index d06c1b5..677dfa9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/graph/JavaPageRankOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/graph/JavaPageRankOperator.java
@@ -18,9 +18,13 @@
 
 package org.apache.wayang.java.operators.graph;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.function.BiFunction;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -34,14 +38,6 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Spliterators;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-
 /**
  * Java implementation of the {@link PageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaBasicPlugin.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaBasicPlugin.java
index 4771401..7babf3d 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaBasicPlugin.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaBasicPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -28,9 +30,6 @@
 import org.apache.wayang.java.mapping.Mappings;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaChannelConversionPlugin.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaChannelConversionPlugin.java
index 346b541..b763eef 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaChannelConversionPlugin.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaChannelConversionPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -26,9 +28,6 @@
 import org.apache.wayang.java.channels.ChannelConversions;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} is a subset of the {@link JavaBasicPlugin} and only ships with the {@link ChannelConversion}s.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaGraphPlugin.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaGraphPlugin.java
index f581cac..dcac252 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaGraphPlugin.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/plugin/JavaGraphPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,9 +29,6 @@
 import org.apache.wayang.java.mapping.Mappings;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/execution/JavaExecutorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/execution/JavaExecutorTest.java
index 39f76f4..c5c5721 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/execution/JavaExecutorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/execution/JavaExecutorTest.java
@@ -18,8 +18,9 @@
 
 package org.apache.wayang.java.execution;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -33,10 +34,8 @@
 import org.apache.wayang.java.operators.JavaDoWhileOperator;
 import org.apache.wayang.java.operators.JavaLocalCallbackSink;
 import org.apache.wayang.java.operators.JavaMapOperator;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link JavaExecutor}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCartesianOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCartesianOperatorTest.java
index 05c8e7f..a81f997 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCartesianOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCartesianOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaCartesianOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCoGroupOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCoGroupOperatorTest.java
index 64b7451..d9886b0 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCoGroupOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCoGroupOperatorTest.java
@@ -18,22 +18,21 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.function.ProjectionDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.types.DataUnitType;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.java.channels.CollectionChannel;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.function.ProjectionDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.types.DataUnitType;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.java.channels.CollectionChannel;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaJoinOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCollectionSourceTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCollectionSourceTest.java
index 4446430..901bac8 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCollectionSourceTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCollectionSourceTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link JavaCollectionSource}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCountOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCountOperatorTest.java
index a7af4ad..f2563d7 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCountOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaCountOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaCountOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaDistinctOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaDistinctOperatorTest.java
index 6c9632b..1360261 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaDistinctOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaDistinctOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaDistinctOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaExecutionOperatorTestBase.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaExecutionOperatorTestBase.java
index 67c7ab4..fbaafde 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaExecutionOperatorTestBase.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaExecutionOperatorTestBase.java
@@ -18,7 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.BeforeClass;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -33,12 +37,7 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.java.test.ChannelFactory;
-
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.BeforeClass;
 
 /**
  * Superclass for tests of {@link JavaExecutionOperator}s.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaFilterOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaFilterOperatorTest.java
index 504d9c9..90205d6 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaFilterOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaFilterOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.function.PredicateDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.function.PredicateDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaFilterOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperatorTest.java
index b63b623..f362d07 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalMaterializedGroupOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.CollectionChannel;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.CollectionChannel;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaGlobalReduceOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalReduceOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalReduceOperatorTest.java
index 54023f1..3048fe7 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalReduceOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaGlobalReduceOperatorTest.java
@@ -18,18 +18,17 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.java.channels.JavaChannelInstance;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaGlobalReduceOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaJoinOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaJoinOperatorTest.java
index 65cb5f7..6ca2856 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaJoinOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaJoinOperatorTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.function.ProjectionDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.types.DataUnitType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.function.ProjectionDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.types.DataUnitType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaJoinOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaLocalCallbackSinkTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaLocalCallbackSinkTest.java
index fd23e49..d36d4f5 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaLocalCallbackSinkTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaLocalCallbackSinkTest.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaLocalCallbackSink}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperatorTest.java
index 4aa76d6..969fb46 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaMaterializedGroupByOperatorTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.function.ProjectionDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.types.DataUnitType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.function.ProjectionDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.types.DataUnitType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaReduceByOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSinkTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSinkTest.java
index e23cfae..a5a7533 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSinkTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSinkTest.java
@@ -18,18 +18,17 @@
 
 package org.apache.wayang.java.operators;
 
-import org.apache.commons.lang3.Validate;
-import org.junit.Test;
-import org.apache.wayang.basic.channels.FileChannel;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaObjectFileSink}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSourceTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSourceTest.java
index d5fdd55..517ae1a 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSourceTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaObjectFileSourceTest.java
@@ -18,13 +18,6 @@
 
 package org.apache.wayang.java.operators;
 
-import org.apache.commons.lang3.Validate;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-import org.apache.wayang.java.execution.JavaExecutor;
-
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -32,6 +25,12 @@
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.apache.wayang.java.execution.JavaExecutor;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaObjectFileSource}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaRandomSampleOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaRandomSampleOperatorTest.java
index d8e9cd0..7089bba 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaRandomSampleOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaRandomSampleOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaRandomSampleOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReduceByOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReduceByOperatorTest.java
index 225f397..b3b1bf3 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReduceByOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReduceByOperatorTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.java.channels.JavaChannelInstance;
-
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaReduceByOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReservoirSampleOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReservoirSampleOperatorTest.java
index 66d56a5..d4b98c2 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReservoirSampleOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaReservoirSampleOperatorTest.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaReservoirSampleOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaSortOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaSortOperatorTest.java
index 3483ab5..597c654 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaSortOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaSortOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.function.TransformationDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.function.TransformationDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaSortOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaTextFileSinkTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaTextFileSinkTest.java
index 502d9ef..25e1557 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaTextFileSinkTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaTextFileSinkTest.java
@@ -18,10 +18,20 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -32,23 +42,10 @@
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.text.DecimalFormatSymbols;
-import java.text.NumberFormat;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaTextFileSink}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaUnionAllOperatorTest.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaUnionAllOperatorTest.java
index 7f61545..bc25cb7 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaUnionAllOperatorTest.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/operators/JavaUnionAllOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.java.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaUnionAllOperator}.
diff --git a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/test/ChannelFactory.java b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/test/ChannelFactory.java
index 87ee278..7d38951 100644
--- a/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/test/ChannelFactory.java
+++ b/wayang-platforms/wayang-java/src/test/java/org/apache/wayang/java/test/ChannelFactory.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.java.test;
 
-import org.junit.Before;
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
-
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import static org.mockito.Mockito.mock;
+import org.junit.Before;
 
 /**
  * Utility to create {@link Channel}s in tests.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/channels/SqlQueryChannel.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/channels/SqlQueryChannel.java
index f0dae79..ed3d8f3 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/channels/SqlQueryChannel.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/channels/SqlQueryChannel.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.jdbc.channels;
 
+import java.util.Objects;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
@@ -30,8 +31,6 @@
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate;
 
-import java.util.Objects;
-
 /**
  * Implementation of a {@link Channel} that is given by a SQL query.
  */
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/DatabaseDescriptor.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/DatabaseDescriptor.java
index 0aeb475..5ec9016 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/DatabaseDescriptor.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/DatabaseDescriptor.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.jdbc.execution;
 
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.sql.Connection;
 import java.sql.DriverManager;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * This class describes a database.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/JdbcExecutor.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/JdbcExecutor.java
index af53930..8cb29de 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/JdbcExecutor.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/execution/JdbcExecutor.java
@@ -18,6 +18,19 @@
 
 package org.apache.wayang.jdbc.execution;
 
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UncheckedIOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.core.api.Job;
@@ -40,20 +53,6 @@
 import org.apache.wayang.jdbc.operators.JdbcFilterOperator;
 import org.apache.wayang.jdbc.operators.JdbcProjectionOperator;
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UncheckedIOException;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * {@link Executor} implementation for the {@link JdbcPlatformTemplate}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcExecutionOperator.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcExecutionOperator.java
index f6ccccf..2dd6ed9 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcExecutionOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcExecutionOperator.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.jdbc.operators;
 
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.compiler.FunctionCompiler;
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate;
 
-import java.sql.Connection;
-import java.util.Collections;
-import java.util.List;
-
 public interface JdbcExecutionOperator extends ExecutionOperator {
 
     /**
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcFilterOperator.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcFilterOperator.java
index d28253a..c7df655 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcFilterOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcFilterOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.jdbc.operators;
 
+import java.sql.Connection;
+import java.util.Optional;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -26,9 +28,6 @@
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimators;
 import org.apache.wayang.jdbc.compiler.FunctionCompiler;
 
-import java.sql.Connection;
-import java.util.Optional;
-
 
 /**
  * Template for JDBC-based {@link FilterOperator}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcProjectionOperator.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcProjectionOperator.java
index c8615fa..ef32b7f 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcProjectionOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcProjectionOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.jdbc.operators;
 
+import java.sql.Connection;
+import java.util.Optional;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -27,9 +29,6 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.jdbc.compiler.FunctionCompiler;
 
-import java.sql.Connection;
-import java.util.Optional;
-
 /**
  * Projects the fields of {@link Record}s.
  */
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcTableSource.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcTableSource.java
index 2d546de..c3e18dc 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcTableSource.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/JdbcTableSource.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.jdbc.operators;
 
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.jdbc.compiler.FunctionCompiler;
-import org.apache.logging.log4j.LogManager;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
 
 /**
  * PostgreSQL implementation for the {@link TableSource}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/SqlToStreamOperator.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/SqlToStreamOperator.java
index 12d77f0..e98a4a4 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/SqlToStreamOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/operators/SqlToStreamOperator.java
@@ -18,6 +18,20 @@
 
 package org.apache.wayang.jdbc.operators;
 
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.types.RecordType;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -38,21 +52,6 @@
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.jdbc.channels.SqlQueryChannel;
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate;
-import org.apache.logging.log4j.LogManager;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 
 /**
  * This {@link Operator} converts {@link SqlQueryChannel}s to {@link StreamChannel}s.
diff --git a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/platform/JdbcPlatformTemplate.java b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/platform/JdbcPlatformTemplate.java
index a5d7709..363f92f 100644
--- a/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/platform/JdbcPlatformTemplate.java
+++ b/wayang-platforms/wayang-jdbc-template/src/main/java/org/apache/wayang/jdbc/platform/JdbcPlatformTemplate.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.jdbc.platform;
 
+import java.sql.Connection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.LoadProfileToTimeConverter;
 import org.apache.wayang.core.optimizer.costs.LoadToTimeConverter;
@@ -30,8 +31,6 @@
 import org.apache.wayang.jdbc.execution.DatabaseDescriptor;
 import org.apache.wayang.jdbc.execution.JdbcExecutor;
 
-import java.sql.Connection;
-
 /**
  * {@link Platform} implementation for a JDBC-accessible database.
  */
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/execution/JdbcExecutorTest.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/execution/JdbcExecutorTest.java
index 0a6e952..f351107 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/execution/JdbcExecutorTest.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/execution/JdbcExecutorTest.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.jdbc.execution;
 
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.sql.SQLException;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -38,12 +41,8 @@
 import org.apache.wayang.jdbc.test.HsqldbPlatform;
 import org.apache.wayang.jdbc.test.HsqldbProjectionOperator;
 import org.apache.wayang.jdbc.test.HsqldbTableSource;
-
-import java.sql.SQLException;
-import java.util.Collections;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JdbcExecutor}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/JdbcTableSourceTest.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/JdbcTableSourceTest.java
index aea6fc1..6d9d4dc 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/JdbcTableSourceTest.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/JdbcTableSourceTest.java
@@ -19,11 +19,15 @@
 package org.apache.wayang.jdbc.operators;
 
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
 import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Subject;
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -31,13 +35,8 @@
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.jdbc.test.HsqldbPlatform;
 import org.apache.wayang.jdbc.test.HsqldbTableSource;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SqlToStreamOperator}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/OperatorTestBase.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/OperatorTestBase.java
index eda04e5..58ba6da 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/OperatorTestBase.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/OperatorTestBase.java
@@ -18,7 +18,9 @@
 
 package org.apache.wayang.jdbc.operators;
 
-import org.junit.BeforeClass;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -31,9 +33,7 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.BeforeClass;
 
 /**
  * Test base for {@link JdbcExecutionOperator}s and other {@link ExecutionOperator}s in this module.
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/SqlToStreamOperatorTest.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/SqlToStreamOperatorTest.java
index affd236..fd57821 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/SqlToStreamOperatorTest.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/operators/SqlToStreamOperatorTest.java
@@ -18,8 +18,15 @@
 
 package org.apache.wayang.jdbc.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -37,16 +44,8 @@
 import org.apache.wayang.jdbc.channels.SqlQueryChannel;
 import org.apache.wayang.jdbc.test.HsqldbFilterOperator;
 import org.apache.wayang.jdbc.test.HsqldbPlatform;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SqlToStreamOperator}.
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbFilterOperator.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbFilterOperator.java
index 2878f2a..925ed1b 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbFilterOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbFilterOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.jdbc.test;
 
+import java.util.List;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.operators.JdbcFilterOperator;
 
-import java.util.List;
-
 /**
  * Test implementation of {@link JdbcFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbProjectionOperator.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbProjectionOperator.java
index 3f7bc7e..f5ce3bc 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbProjectionOperator.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbProjectionOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.jdbc.test;
 
+import java.util.List;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.operators.JdbcFilterOperator;
 import org.apache.wayang.jdbc.operators.JdbcProjectionOperator;
 
-import java.util.List;
-
 /**
  * Test implementation of {@link JdbcFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbTableSource.java b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbTableSource.java
index 72f9fe5..312b82b 100644
--- a/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbTableSource.java
+++ b/wayang-platforms/wayang-jdbc-template/src/test/java/org/apache/wayang/jdbc/test/HsqldbTableSource.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.jdbc.test;
 
+import java.util.List;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.operators.JdbcFilterOperator;
 import org.apache.wayang.jdbc.operators.JdbcTableSource;
 
-import java.util.List;
-
 /**
  * Test implementation of {@link JdbcFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/channels/ChannelConversions.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/channels/ChannelConversions.java
index 8134b6c..af0077c 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/channels/ChannelConversions.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.postgres.channels;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
 import org.apache.wayang.core.optimizer.channels.DefaultChannelConversion;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.jdbc.operators.SqlToStreamOperator;
 import org.apache.wayang.postgres.platform.PostgresPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Register for the {@link ChannelConversion}s supported for this platform.
  */
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/FilterMapping.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/FilterMapping.java
index 7a38724..16a4c42 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.postgres.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.postgres.operators.PostgresFilterOperator;
 import org.apache.wayang.postgres.platform.PostgresPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 
 /**
  * Mapping from {@link FilterOperator} to {@link PostgresFilterOperator}.
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/Mappings.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/Mappings.java
index 56e8ff6..a20855a 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/Mappings.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.postgres.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for the {@link Mapping}s supported for this platform.
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/ProjectionMapping.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/ProjectionMapping.java
index 0fae1a8..1ebe48b 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/ProjectionMapping.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/mapping/ProjectionMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.postgres.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -30,9 +32,6 @@
 import org.apache.wayang.postgres.operators.PostgresProjectionOperator;
 import org.apache.wayang.postgres.platform.PostgresPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * /**
  * Mapping from {@link MapOperator} to {@link PostgresProjectionOperator}.
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/operators/PostgresTableSource.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/operators/PostgresTableSource.java
index 15e8332..5090080 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/operators/PostgresTableSource.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/operators/PostgresTableSource.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.postgres.operators;
 
+import java.util.List;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.operators.JdbcTableSource;
 
-import java.util.List;
-
 /**
  * PostgreSQL implementation for the {@link TableSource}.
  */
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresConversionsPlugin.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresConversionsPlugin.java
index 3c169a6..8e5f580 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresConversionsPlugin.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresConversionsPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.postgres.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -28,10 +31,6 @@
 import org.apache.wayang.postgres.channels.ChannelConversions;
 import org.apache.wayang.postgres.platform.PostgresPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} enables to use some basic Wayang {@link Operator}s on the {@link PostgresPlatform}.
  */
diff --git a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresPlugin.java b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresPlugin.java
index edc5c3a..bc61767 100644
--- a/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresPlugin.java
+++ b/wayang-platforms/wayang-postgres/src/main/java/org/apache/wayang/postgres/plugin/PostgresPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.postgres.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -29,9 +31,6 @@
 import org.apache.wayang.postgres.mapping.Mappings;
 import org.apache.wayang.postgres.platform.PostgresPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * This {@link Plugin} enables to use some basic Wayang {@link Operator}s on the {@link PostgresPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/ChannelConversions.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/ChannelConversions.java
index 9f8fca1..7d14c18 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/ChannelConversions.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.channels;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -34,9 +36,6 @@
 import org.apache.wayang.spark.operators.SparkTsvFileSink;
 import org.apache.wayang.spark.operators.SparkTsvFileSource;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link ChannelConversion}s used by the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/RddChannel.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/RddChannel.java
index 7f4f360..01f961b 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/RddChannel.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/channels/RddChannel.java
@@ -18,7 +18,7 @@
 
 package org.apache.wayang.spark.channels;
 
-import org.apache.spark.util.AccumulatorV2;
+import java.util.OptionalLong;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.util.LongAccumulator;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -32,8 +32,6 @@
 import org.apache.wayang.core.util.Actions;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.OptionalLong;
-
 /**
  * Describes the situation where one {@link JavaRDD} is operated on, producing a further {@link JavaRDD}.
  * <p><i>NB: We might be more specific: Distinguish between cached/uncached and pipelined/aggregated.</i></p>
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/BinaryOperatorAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/BinaryOperatorAdapter.java
index 5ffffda..9dba4cf 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/BinaryOperatorAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/BinaryOperatorAdapter.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.spark.compiler;
 
-import org.apache.spark.api.java.function.Function2;
-
 import java.util.function.BinaryOperator;
+import org.apache.spark.api.java.function.Function2;
 
 /**
  * Wraps a {@link java.util.function.BinaryOperator} as a {@link Function2}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedFlatMapFunctionAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedFlatMapFunctionAdapter.java
index 7040f16..d274f31 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedFlatMapFunctionAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedFlatMapFunctionAdapter.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.spark.compiler;
 
+import java.util.Iterator;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.spark.execution.SparkExecutionContext;
 
-import java.util.Iterator;
-
 /**
  * Implements a {@link FlatMapFunction} that calls {@link org.apache.wayang.core.function.ExtendedFunction#open(ExecutionContext)}
  * of its implementation before delegating the very first {@link Function#call(Object)}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedMapPartitionsFunctionAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedMapPartitionsFunctionAdapter.java
index 18871ed..096bf99 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedMapPartitionsFunctionAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/ExtendedMapPartitionsFunctionAdapter.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.compiler;
 
-import org.apache.spark.api.java.function.FlatMapFunction;
-import org.apache.wayang.core.function.FunctionDescriptor;
-import org.apache.wayang.core.util.Iterators;
-import org.apache.wayang.spark.execution.SparkExecutionContext;
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.function.Function;
+import org.apache.spark.api.java.function.FlatMapFunction;
+import org.apache.wayang.core.function.FunctionDescriptor;
+import org.apache.wayang.core.util.Iterators;
+import org.apache.wayang.spark.execution.SparkExecutionContext;
 
 /**
  * Wraps a {@link Function} as a {@link FlatMapFunction}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FlatMapFunctionAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FlatMapFunctionAdapter.java
index 9216fcc..515f782 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FlatMapFunctionAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FlatMapFunctionAdapter.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.spark.compiler;
 
-import org.apache.spark.api.java.function.FlatMapFunction;
-
 import java.util.Iterator;
+import org.apache.spark.api.java.function.FlatMapFunction;
 
 /**
  * Wraps a {@link java.util.function.Function} as a {@link FlatMapFunction}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FunctionCompiler.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FunctionCompiler.java
index 2ced813..d0f667d 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FunctionCompiler.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/FunctionCompiler.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.compiler;
 
+import java.util.Iterator;
+import java.util.function.BinaryOperator;
+import java.util.function.Predicate;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.apache.spark.api.java.function.Function;
@@ -34,10 +37,6 @@
 import org.apache.wayang.spark.execution.SparkExecutionContext;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 
-import java.util.Iterator;
-import java.util.function.BinaryOperator;
-import java.util.function.Predicate;
-
 /**
  * A compiler translates Wayang functions into executable Java functions.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/MapPartitionsFunctionAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/MapPartitionsFunctionAdapter.java
index 3fb7683..5f2cf3c 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/MapPartitionsFunctionAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/MapPartitionsFunctionAdapter.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.spark.compiler;
 
-import org.apache.spark.api.java.function.FlatMapFunction;
-import org.apache.wayang.core.util.Iterators;
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.function.Function;
+import org.apache.spark.api.java.function.FlatMapFunction;
+import org.apache.wayang.core.util.Iterators;
 
 /**
  * Wraps a {@link Function} as a {@link FlatMapFunction}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/PredicateAdapter.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/PredicateAdapter.java
index 931d47e..c3f2c5f 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/PredicateAdapter.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/compiler/PredicateAdapter.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.spark.compiler;
 
-import org.apache.spark.api.java.function.Function;
-
 import java.util.function.Predicate;
+import org.apache.spark.api.java.function.Function;
 
 /**
  * Wraps a {@link Predicate} as a {@link Function}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutionContext.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutionContext.java
index ab11e05..439dfbe 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutionContext.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutionContext.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.execution;
 
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 import org.apache.spark.broadcast.Broadcast;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.ExecutionContext;
@@ -27,11 +31,6 @@
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * {@link ExecutionContext} implementation for the {@link SparkPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutor.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutor.java
index 9aab425..5ebcbf8 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutor.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/execution/SparkExecutor.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -36,10 +39,6 @@
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * {@link Executor} implementation for the {@link SparkPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CartesianMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CartesianMapping.java
index 203de34..a755536 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CartesianMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CartesianMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkCartesianOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CartesianOperator} to {@link SparkCartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CoGroupMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CoGroupMapping.java
index 2eabfb4..cf56953 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CoGroupMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CoGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkCoGroupOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CoGroupOperator} to {@link SparkCoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CollectionSourceMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CollectionSourceMapping.java
index b648e81..3cb7bb9 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CollectionSourceMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CollectionSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkCollectionSource;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link SparkCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CountMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CountMapping.java
index 2ae19e9..8e4c561 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CountMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/CountMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkCountOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CountOperator} to {@link SparkCountOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DistinctMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DistinctMapping.java
index aa8773d..fe80369 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DistinctMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DistinctMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkDistinctOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DistinctOperator} to {@link SparkDistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DoWhileMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DoWhileMapping.java
index 924c814..41a1982 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DoWhileMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/DoWhileMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -31,9 +33,6 @@
 import org.apache.wayang.spark.operators.SparkLoopOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link SparkLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FilterMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FilterMapping.java
index eeac994..137c576 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.spark.operators.SparkFilterOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FilterOperator} to {@link SparkFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FlatMapMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FlatMapMapping.java
index 1b88b61..2d2d1c2 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FlatMapMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/FlatMapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkFlatMapOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FlatMapOperator} to {@link SparkFlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalMaterializedGroupMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalMaterializedGroupMapping.java
index 3c79d70..b4ffff4 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalMaterializedGroupMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalMaterializedGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkGlobalMaterializedGroupOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalMaterializedGroupOperator} to {@link SparkGlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalReduceMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalReduceMapping.java
index 30ea8ba..b08cfd1 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalReduceMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkGlobalReduceOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalReduceOperator} to {@link SparkGlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/IntersectMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/IntersectMapping.java
index 8f5e4da..9c95668 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/IntersectMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/IntersectMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkIntersectOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IntersectOperator} to {@link SparkIntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/JoinMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/JoinMapping.java
index a2bbc94..28447f1 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/JoinMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/JoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkJoinOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link SparkJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LocalCallbackSinkMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LocalCallbackSinkMapping.java
index 301246b..ff70576 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LocalCallbackSinkMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LocalCallbackSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkLocalCallbackSink;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LocalCallbackSink} to {@link SparkLocalCallbackSink}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LoopMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LoopMapping.java
index d4f3d09..1c236e5 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LoopMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/LoopMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.spark.operators.SparkLoopOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link SparkLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapMapping.java
index 6d88bef..f6e267f 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkMapOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link SparkMapOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapPartitionsMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapPartitionsMapping.java
index fd33b52..1d4b027 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapPartitionsMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MapPartitionsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkMapPartitionsOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapPartitionsOperator} to {@link SparkMapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
index 70ec802..5c455e9 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.spark.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-import org.apache.wayang.spark.mapping.graph.PageRankMapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.spark.mapping.graph.PageRankMapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
@@ -32,6 +31,8 @@
     public static Collection<Mapping> BASIC_MAPPINGS = Arrays.asList(
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSinkMapping(),
+            new ObjectFileSourceMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
             new ReduceByMapping(),
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MaterializedGroupByMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MaterializedGroupByMapping.java
index beca291..f30dad8 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MaterializedGroupByMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkMaterializedGroupByOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MaterializedGroupByOperator} to {@link SparkMaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..36eab65
--- /dev/null
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.spark.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.operators.SparkObjectFileSink;
+import org.apache.wayang.spark.platform.SparkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link SparkObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                SparkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+            "sink",
+            new ObjectFileSink<>(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new SparkObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..f84006f
--- /dev/null
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.wayang.spark.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.operators.SparkObjectFileSource;
+import org.apache.wayang.spark.platform.SparkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link SparkObjectFileSource}.
+ */
+public class ObjectFileSourceMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                SparkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new SparkObjectFileSource(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ReduceByMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ReduceByMapping.java
index 6279e4d..66bb249 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ReduceByMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkReduceByOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ReduceByOperator} to {@link SparkReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/RepeatMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/RepeatMapping.java
index d36587e..eda7179 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/RepeatMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/RepeatMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkRepeatOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link RepeatOperator} to {@link SparkRepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SampleMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SampleMapping.java
index fb2d7a1..0d84168 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SampleMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SampleMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.mapping.Mapping;
@@ -31,9 +33,6 @@
 import org.apache.wayang.spark.operators.SparkShufflePartitionSampleOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SampleOperator} to {@link SparkRandomPartitionSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SortMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SortMapping.java
index 7938c09..0ac9243 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SortMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/SortMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkSortOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SortOperator} to {@link SparkSortOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSinkMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSinkMapping.java
index d43a2b4..2a97fe0 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSinkMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
@@ -30,9 +32,6 @@
 import org.apache.wayang.spark.operators.SparkTextFileSink;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link SparkCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSourceMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSourceMapping.java
index 09063e1..cceec72 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSourceMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/TextFileSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@
 import org.apache.wayang.spark.operators.SparkTextFileSource;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link SparkCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/UnionAllMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/UnionAllMapping.java
index e5b5a44..953b555 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/UnionAllMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/UnionAllMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkUnionAllOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link UnionAllOperator} to {@link SparkUnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ZipWithIdMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ZipWithIdMapping.java
index 6ac4f54..90fc928 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ZipWithIdMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ZipWithIdMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ZipWithIdOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.operators.SparkZipWithIdOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ZipWithIdOperator} to {@link SparkZipWithIdOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/graph/PageRankMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/graph/PageRankMapping.java
index a9bc1bb..c78f460 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/graph/PageRankMapping.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/graph/PageRankMapping.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.mapping.graph;
 
+import java.lang.reflect.Constructor;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.mapping.Mapping;
@@ -28,10 +31,6 @@
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.lang.reflect.Constructor;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link PageRankOperator} to org.apache.wayang.spark.operators.graph.SparkPageRankOperator .
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperator.java
index be041ae..eddb9bb 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,13 +37,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-
 
 /**
  * Spark implementation of the {@link SparkBernoulliSampleOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBroadcastOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBroadcastOperator.java
index ce90108..724378c 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBroadcastOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkBroadcastOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.broadcast.Broadcast;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,10 +34,6 @@
 import org.apache.wayang.spark.channels.BroadcastChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Takes care of creating a {@link Broadcast} that can be used later on.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCacheOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCacheOperator.java
index cbf62e2..c3c35e9 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCacheOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCacheOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.api.Configuration;
@@ -34,11 +38,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Converts an uncached {@link RddChannel} into a cached {@link RddChannel}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCartesianOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCartesianOperator.java
index 25d8b5b..c56cbec 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCartesianOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCartesianOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.data.Tuple2;
@@ -32,11 +36,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Spark implementation of the {@link CartesianOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCoGroupOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCoGroupOperator.java
index 162546b..3038a99 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCoGroupOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCoGroupOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -38,11 +42,6 @@
 import org.apache.wayang.spark.compiler.FunctionCompiler;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectOperator.java
index c237eae..d1e2aad 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -35,12 +40,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Converts a {@link RddChannel} into a {@link CollectionChannel} of the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectionSource.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectionSource.java
index 5258733..4d667c1 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectionSource.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCollectionSource.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -27,18 +31,13 @@
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Provides a {@link Collection} to a Spark job. Can also be used to convert {@link CollectionChannel}s of the
  * {@link JavaPlatform} into {@link RddChannel}s.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCountOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCountOperator.java
index 6356b50..6a8d7dd 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCountOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkCountOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -30,11 +34,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Spark implementation of the {@link CountOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDistinctOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDistinctOperator.java
index b7a870c..01e79b8 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDistinctOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDistinctOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,11 +34,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Spark implementation of the {@link DistinctOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDoWhileOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDoWhileOperator.java
index 498daed..351650e 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDoWhileOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkDoWhileOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -36,12 +41,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkExecutionOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkExecutionOperator.java
index 80fb5ab..d5ad4a1 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkExecutionOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkExecutionOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -28,8 +29,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-
 /**
  * Execution operator for the {@link SparkPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFilterOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFilterOperator.java
index 737061e..94e25fb 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFilterOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFilterOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.basic.operators.FilterOperator;
@@ -36,12 +41,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFlatMapOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFlatMapOperator.java
index 2a1a28d..3ca612a 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFlatMapOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkFlatMapOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.apache.wayang.basic.operators.FlatMapOperator;
@@ -36,12 +41,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Spark implementation of the {@link FlatMapOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperator.java
index 75c3620..8b3b92b 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,13 +37,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link GlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperator.java
index cf87b5a..c3f9377 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function2;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
@@ -37,12 +42,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link GlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkIntersectOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkIntersectOperator.java
index 931fc1b..f3444cf 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkIntersectOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkIntersectOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.basic.operators.JoinOperator;
@@ -31,11 +35,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkJoinOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkJoinOperator.java
index cbba24b..4b91f30 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkJoinOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkJoinOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -39,12 +44,6 @@
 import org.apache.wayang.spark.compiler.FunctionCompiler;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLocalCallbackSink.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLocalCallbackSink.java
index c909d29..a0ca27d 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLocalCallbackSink.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLocalCallbackSink.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Consumer;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,12 +35,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.function.Consumer;
-
 /**
  * Implementation of the {@link LocalCallbackSink} operator for the Spark platform.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLoopOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLoopOperator.java
index b72b3a7..e02b780 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLoopOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkLoopOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -37,12 +42,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link LoopOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapOperator.java
index 25e6bda..a33c257 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -36,12 +41,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Spark implementation of the {@link org.apache.wayang.basic.operators.MapOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperator.java
index f13403d..c08d918 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.FlatMapFunction;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
@@ -36,13 +42,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Spark implementation of the {@link MapPartitionsOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperator.java
index 9c83160..08cb718 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -37,12 +42,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import scala.Tuple2;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Spark implementation of the {@link MaterializedGroupByOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
index 7115500..42b1ebb 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
@@ -18,11 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -31,28 +35,24 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * {@link Operator} for the {@link SparkPlatform} that creates a sequence file.
  *
  * @see SparkObjectFileSource
  */
-public class SparkObjectFileSink<T> extends UnarySink<T> implements SparkExecutionOperator {
+public class SparkObjectFileSink<T> extends ObjectFileSink<T> implements SparkExecutionOperator {
 
-    private final String targetPath;
+    public SparkObjectFileSink(ObjectFileSink<T> that) {
+        super(that);
+    }
 
     public SparkObjectFileSink(DataSetType<T> type) {
         this(null, type);
     }
 
     public SparkObjectFileSink(String targetPath, DataSetType<T> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -64,8 +64,14 @@
         assert inputs.length == this.getNumInputs();
         assert outputs.length <= 1;
 
-        final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String targetPath = output.addGivenOrTempPath(this.targetPath, sparkExecutor.getConfiguration());
+        final String targetPath;
+        if(outputs.length > 0) {
+            final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
+            targetPath = output.addGivenOrTempPath(this.textFileUrl, sparkExecutor.getConfiguration());
+        }else{
+            targetPath = this.textFileUrl;
+        }
+
         RddChannel.Instance input = (RddChannel.Instance) inputs[0];
 
         input.provideRdd()
@@ -78,7 +84,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new SparkObjectFileSink<>(targetPath, this.getType());
+        return new SparkObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
index 55820f3..839903b 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
@@ -18,12 +18,17 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -33,31 +38,26 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * {@link Operator} for the {@link SparkPlatform} that creates a sequence file.
  *
  * @see SparkObjectFileSink
  */
-public class SparkObjectFileSource<T> extends UnarySource<T> implements SparkExecutionOperator {
+public class SparkObjectFileSource<T> extends ObjectFileSource<T> implements SparkExecutionOperator {
 
     private final Logger logger = LogManager.getLogger(this.getClass());
 
-    private final String sourcePath;
+    public SparkObjectFileSource(ObjectFileSource that) {
+        super(that);
+    }
 
     public SparkObjectFileSource(DataSetType<T> type) {
         this(null, type);
     }
 
     public SparkObjectFileSource(String sourcePath, DataSetType<T> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -67,9 +67,9 @@
             SparkExecutor sparkExecutor,
             OptimizationContext.OperatorContext operatorContext) {
         final String sourcePath;
-        if (this.sourcePath != null) {
+        if (this.getInputUrl() != null) {
             assert inputs.length == 0;
-            sourcePath = this.sourcePath;
+            sourcePath = this.getInputUrl();
         } else {
             FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             sourcePath = input.getSinglePath();
@@ -86,7 +86,7 @@
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new SparkObjectFileSource<>(this.sourcePath, this.getType());
+        return new SparkObjectFileSource<>(this.getInputUrl(), this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperator.java
index 8333a17..3d0c09c 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperator.java
@@ -18,6 +18,21 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.SampleOperator;
@@ -35,22 +50,6 @@
 import scala.collection.JavaConversions;
 import scala.runtime.AbstractFunction1;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-
 
 /**
  * Spark implementation of the {@link SampleOperator}. Sampling with replacement (i.e., the sample may contain duplicates)
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkReduceByOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkReduceByOperator.java
index 8bf3f33..01dc697 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkReduceByOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkReduceByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -40,12 +45,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Spark implementation of the {@link ReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRepeatOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRepeatOperator.java
index 916f1c0..6e6f96f 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRepeatOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkRepeatOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -29,11 +33,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperator.java
index ca1c36b..8f77106 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperator.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function2;
@@ -36,16 +45,6 @@
 import scala.collection.convert.Wrappers;
 import scala.runtime.AbstractFunction1;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-
 
 /**
  * Spark implementation of the {@link SparkShufflePartitionSampleOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkSortOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkSortOperator.java
index 8605541..0de03dd 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkSortOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkSortOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.PairFunction;
@@ -34,11 +38,6 @@
 import org.apache.wayang.spark.compiler.FunctionCompiler;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link SortOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSink.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSink.java
index c20bb01..f3d4559 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSink.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
 import org.apache.wayang.basic.operators.TextFileSink;
@@ -34,11 +38,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Implementation of the {@link TextFileSink} operator for the Spark platform.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSource.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSource.java
index acf9f1d..fae70c2 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSource.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTextFileSource.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,11 +34,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Provides a {@link Collection} to a Spark job.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSink.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSink.java
index 076fd1b..01cf956 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSink.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
@@ -34,11 +38,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * {@link Operator} for the {@link SparkPlatform} that creates a TSV file.
  * Only applicable to tuples with standard datatypes.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSource.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSource.java
index e611798..f4fe298 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSource.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkTsvFileSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
@@ -35,10 +38,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * {@link Operator} for the {@link SparkPlatform} that creates a sequence file. Consistent with Spark's object files.
  *
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkUnionAllOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkUnionAllOperator.java
index 7ca4a0d..2b8a192 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkUnionAllOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkUnionAllOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,11 +34,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link UnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkZipWithIdOperator.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkZipWithIdOperator.java
index a5a3f22..43a346c 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkZipWithIdOperator.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkZipWithIdOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.data.Tuple2;
@@ -34,11 +38,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Spark implementation of the {@link MapOperator}.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/platform/SparkPlatform.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/platform/SparkPlatform.java
index 9b574af..495b4de 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/platform/SparkPlatform.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/platform/SparkPlatform.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.spark.platform;
 
+import java.util.Collections;
+import java.util.Set;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.spark.SparkConf;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.wayang.basic.plugin.WayangBasic;
@@ -37,11 +41,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.operators.SparkCollectionSource;
 import org.apache.wayang.spark.operators.SparkLocalCallbackSink;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collections;
-import java.util.Set;
 
 /**
  * {@link Platform} for Apache Spark.
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkBasicPlugin.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkBasicPlugin.java
index f4dfae1..9fa5da9 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkBasicPlugin.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkBasicPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -29,9 +31,6 @@
 import org.apache.wayang.spark.mapping.Mappings;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkConversionPlugin.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkConversionPlugin.java
index f6c4c51..fbf07f2 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkConversionPlugin.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkConversionPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.spark.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,10 +30,6 @@
 import org.apache.wayang.spark.channels.ChannelConversions;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} enables to create {@link org.apache.spark.rdd.RDD}s.
  */
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkGraphPlugin.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkGraphPlugin.java
index 2b6514b..d6bb5f0 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkGraphPlugin.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/plugin/SparkGraphPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.spark.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -28,9 +30,6 @@
 import org.apache.wayang.spark.mapping.Mappings;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperatorTest.java
index 4de83a0..3ecc2c2 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkBernoulliSampleOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkBernoulliSampleOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCartesianOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCartesianOperatorTest.java
index 9d6c4b2..03cb0d7 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCartesianOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCartesianOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkCartesianOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCoGroupOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCoGroupOperatorTest.java
index 5ff68c4..a3e2dc5 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCoGroupOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCoGroupOperatorTest.java
@@ -18,23 +18,22 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.function.ProjectionDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.types.DataUnitType;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.spark.channels.RddChannel;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.function.ProjectionDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.types.DataUnitType;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkJoinOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCollectionSourceTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCollectionSourceTest.java
index 52205cb..a10bde9 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCollectionSourceTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCollectionSourceTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.spark.channels.RddChannel;
-
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link SparkCollectionSource}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCountOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCountOperatorTest.java
index 9d1317c..5f30f75 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCountOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkCountOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
 
 
 /**
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkDistinctOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkDistinctOperatorTest.java
index 157490a..10a0e6c 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkDistinctOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkDistinctOperatorTest.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkDistinctOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFilterOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFilterOperatorTest.java
index 8aacc54..72b84bb 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFilterOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFilterOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkFilterOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFlatMapOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFlatMapOperatorTest.java
index 246a24f..854d73b 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFlatMapOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkFlatMapOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkFilterOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperatorTest.java
index 4cfcbbd..ec6b1bd 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalMaterializedGroupOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkGlobalMaterializedGroupOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperatorTest.java
index 9f0e72e..69c38b7 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkGlobalReduceOperatorTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -29,10 +29,9 @@
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkGlobalReduceOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkJoinOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkJoinOperatorTest.java
index ab65150..c9794d5 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkJoinOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkJoinOperatorTest.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkJoinOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperatorTest.java
index dee490c..a8611a6 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMapPartitionsOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.function.MapPartitionsDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.spark.channels.RddChannel;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
+import org.apache.wayang.core.function.MapPartitionsDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkFilterOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperatorTest.java
index 8886cb7..0e73d3b 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkMaterializedGroupByOperatorTest.java
@@ -18,21 +18,20 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.function.ProjectionDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.types.DataUnitType;
-import org.apache.wayang.spark.channels.RddChannel;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.function.ProjectionDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.types.DataUnitType;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkMaterializedGroupByOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSinkTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSinkTest.java
index c9a8e2f..75e8491 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSinkTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSinkTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.apache.commons.lang3.Validate;
-import org.junit.Test;
-import org.apache.wayang.basic.channels.FileChannel;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.spark.channels.RddChannel;
-import org.apache.wayang.spark.execution.SparkExecutor;
-
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.apache.wayang.spark.execution.SparkExecutor;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkObjectFileSink}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSourceTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSourceTest.java
index 20b7dba..0d853ab 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSourceTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkObjectFileSourceTest.java
@@ -18,20 +18,19 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.apache.commons.lang3.Validate;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.spark.channels.RddChannel;
-import org.apache.wayang.spark.execution.SparkExecutor;
-
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.apache.wayang.spark.execution.SparkExecutor;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkObjectFileSource}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkOperatorTestBase.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkOperatorTestBase.java
index 7265ccc..a3a8615 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkOperatorTestBase.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkOperatorTestBase.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
 import org.apache.spark.api.java.JavaSparkContext;
-import org.junit.Before;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -33,11 +36,7 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
 import org.apache.wayang.spark.test.ChannelFactory;
-
-import java.util.Collection;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Before;
 
 /**
  * Test base for {@link SparkExecutionOperator} tests.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperatorTest.java
index 8e4da05..7f2613c 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkRandomPartitionSampleOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkRandomPartitionSampleOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkReduceByOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkReduceByOperatorTest.java
index ff97e7d..6cef162 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkReduceByOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkReduceByOperatorTest.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -27,12 +30,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkReduceByOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperatorTest.java
index ee0ec52..f5b16c7 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkShufflePartitionSampleOperatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkShufflePartitionSampleOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkSortOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkSortOperatorTest.java
index 6109fe7..d685960 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkSortOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkSortOperatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkSortOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkTextFileSinkTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkTextFileSinkTest.java
index 57523ba..f164195 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkTextFileSinkTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkTextFileSinkTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Test;
-import org.apache.wayang.core.function.TransformationDescriptor;
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.spark.channels.RddChannel;
-
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Arrays;
+import org.apache.wayang.core.function.TransformationDescriptor;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.spark.channels.RddChannel;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkTextFileSink}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkUnionAllOperatorTest.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkUnionAllOperatorTest.java
index d94059b..90df6cb 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkUnionAllOperatorTest.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/operators/SparkUnionAllOperatorTest.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.spark.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkUnionAllOperator}.
diff --git a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/test/ChannelFactory.java b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/test/ChannelFactory.java
index e83c44f..a7bd9c4 100644
--- a/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/test/ChannelFactory.java
+++ b/wayang-platforms/wayang-spark/src/test/java/org/apache/wayang/spark/test/ChannelFactory.java
@@ -18,7 +18,9 @@
 
 package org.apache.wayang.spark.test;
 
-import org.junit.Before;
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.platform.ChannelDescriptor;
@@ -26,10 +28,7 @@
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
-
-import java.util.Collection;
-
-import static org.mockito.Mockito.mock;
+import org.junit.Before;
 
 /**
  * Utility to create {@link Channel}s in tests.
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/channels/ChannelConversions.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/channels/ChannelConversions.java
index ae9fbdf..576c660 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/channels/ChannelConversions.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.sqlite3.channels;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
 import org.apache.wayang.core.optimizer.channels.DefaultChannelConversion;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.jdbc.operators.SqlToStreamOperator;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Register for the {@link ChannelConversion}s supported for this platform.
  */
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/FilterMapping.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/FilterMapping.java
index eeb0ac9..7407110 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.sqlite3.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -28,9 +30,6 @@
 import org.apache.wayang.sqlite3.operators.Sqlite3FilterOperator;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FilterOperator} to {@link Sqlite3FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/Mappings.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/Mappings.java
index 42bfc94..879620e 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/Mappings.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.sqlite3.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for the {@link Mapping}s supported for this platform.
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/ProjectionMapping.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/ProjectionMapping.java
index 7fc8eee..6085adf 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/ProjectionMapping.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/mapping/ProjectionMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.sqlite3.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -29,9 +31,6 @@
 import org.apache.wayang.sqlite3.operators.Sqlite3ProjectionOperator;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link Sqlite3ProjectionOperator}.
  */
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/operators/Sqlite3TableSource.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/operators/Sqlite3TableSource.java
index cce4163..0703657 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/operators/Sqlite3TableSource.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/operators/Sqlite3TableSource.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.sqlite3.operators;
 
+import java.util.List;
 import org.apache.wayang.basic.operators.TableSource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.jdbc.operators.JdbcTableSource;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.List;
-
 /**
  * Implementation of the {@link TableSource} for the {@link Sqlite3Platform}.
  */
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3ConversionPlugin.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3ConversionPlugin.java
index 4617c1f..de8aed7 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3ConversionPlugin.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3ConversionPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.sqlite3.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,10 +30,6 @@
 import org.apache.wayang.sqlite3.channels.ChannelConversions;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} provides {@link ChannelConversion}s from the  {@link Sqlite3Platform}.
  */
diff --git a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3Plugin.java b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3Plugin.java
index a3189aa..236837c 100644
--- a/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3Plugin.java
+++ b/wayang-platforms/wayang-sqlite3/src/main/java/org/apache/wayang/sqlite3/plugin/Sqlite3Plugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.sqlite3.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -29,9 +31,6 @@
 import org.apache.wayang.sqlite3.mapping.Mappings;
 import org.apache.wayang.sqlite3.platform.Sqlite3Platform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * This {@link Plugin} enables to use some basic Wayang {@link Operator}s on the {@link Sqlite3Platform}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/IEJoin.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/IEJoin.java
index 4ea2ee2..1d84bee 100644
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/IEJoin.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/IEJoin.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.iejoin;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -31,11 +35,6 @@
 import org.apache.wayang.spark.Spark;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Provides {@link Plugin}s that enable usage of the {@link IEJoinOperator} and the {@link IESelfJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/Mappings.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/Mappings.java
index 0257599..505396d 100644
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/Mappings.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/Mappings.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.iejoin.mapping;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.iejoin.mapping.spark.IEJoinMapping;
 import org.apache.wayang.iejoin.mapping.spark.IESelfJoinMapping;
@@ -25,9 +27,6 @@
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link Mapping}s for the {@link IEJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IEJoinMapping.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IEJoinMapping.java
index 4e2791f..300d4fa 100644
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IEJoinMapping.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IEJoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.iejoin.mapping.java;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -29,9 +31,6 @@
 import org.apache.wayang.iejoin.operators.JavaIEJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IEJoinOperator} to {@link JavaIEJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IESelfJoinMapping.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IESelfJoinMapping.java
index 6f4a719..e71d4c2 100644
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IESelfJoinMapping.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/java/IESelfJoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.iejoin.mapping.java;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -29,9 +31,6 @@
 import org.apache.wayang.iejoin.operators.JavaIESelfJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IESelfJoinOperator} to {@link JavaIESelfJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IEJoinMapping.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IEJoinMapping.java
index dd8546f..f3ea599 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IEJoinMapping.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IEJoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.iejoin.mapping.spark;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -32,9 +34,6 @@
 import org.apache.wayang.iejoin.operators.SparkIEJoinOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IEJoinOperator} to {@link SparkIEJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IESelfJoinMapping.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IESelfJoinMapping.java
index 923f3d9..36ec91f 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IESelfJoinMapping.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/mapping/spark/IESelfJoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.iejoin.mapping.spark;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -32,9 +34,6 @@
 import org.apache.wayang.iejoin.operators.SparkIESelfJoinOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IESelfJoinOperator} to {@link SparkIESelfJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperator.java
index 31a5aad..590a28a 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperator.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.iejoin.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -37,15 +45,6 @@
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link IEJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIESelfJoinOperator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIESelfJoinOperator.java
index ca5d5fa..a473b53 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIESelfJoinOperator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/JavaIESelfJoinOperator.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.iejoin.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -37,15 +45,6 @@
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link IESelfJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperator.java
index 7b719a0..66225a4 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.iejoin.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -43,13 +49,6 @@
 import scala.Tuple2;
 import scala.Tuple5;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link   IEJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperator.java
index 551a624..8599822 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.iejoin.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.spark.api.java.function.Function;
@@ -43,13 +49,6 @@
 import scala.Tuple2;
 import scala.Tuple5;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * Spark implementation of the {@link   IESelfJoinOperator}.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/BitSetJoin.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/BitSetJoin.java
index 4c07294..094fbb6 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/BitSetJoin.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/BitSetJoin.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.iejoin.operators.java_helpers;
 
+import java.util.ArrayList;
+import java.util.BitSet;
 import org.apache.wayang.iejoin.data.Data;
 import org.apache.wayang.iejoin.operators.IEJoinMasterOperator;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.BitSet;
-
 /**
  * Created by khayyzy on 5/28/16.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/DataComparator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/DataComparator.java
index b753c5a..48e23b1 100644
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/DataComparator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/DataComparator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.iejoin.operators.java_helpers;
 
-import org.apache.wayang.iejoin.data.Data;
-import scala.Tuple2;
-
 import java.io.Serializable;
 import java.util.Comparator;
+import org.apache.wayang.iejoin.data.Data;
+import scala.Tuple2;
 
 /**
  * Created by khayyzy on 5/28/16.
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/extractData.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/extractData.java
index 5db0056..8ecd70f 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/extractData.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/extractData.java
@@ -19,9 +19,8 @@
 package org.apache.wayang.iejoin.operators.java_helpers;
 
 
-import org.apache.wayang.iejoin.data.Data;
-
 import java.util.function.Function;
+import org.apache.wayang.iejoin.data.Data;
 
 /**
  * Created by khayyzy on 5/28/16.
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/myMergeSort.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/myMergeSort.java
index 6834e57..c00603f 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/myMergeSort.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/myMergeSort.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.iejoin.operators.java_helpers;
 
-import org.apache.wayang.iejoin.data.Data;
-import scala.Tuple2;
-
 import java.util.ArrayList;
 import java.util.Comparator;
+import org.apache.wayang.iejoin.data.Data;
+import scala.Tuple2;
 
 /**
  * Created by khayyzy on 5/28/16.
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/revDataComparator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/revDataComparator.java
index 7e3ed72..ffd6dd8 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/revDataComparator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/java_helpers/revDataComparator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.iejoin.operators.java_helpers;
 
-import org.apache.wayang.iejoin.data.Data;
-import scala.Tuple2;
-
 import java.io.Serializable;
 import java.util.Comparator;
+import org.apache.wayang.iejoin.data.Data;
+import scala.Tuple2;
 
 public class revDataComparator<Type0 extends Comparable<Type0>, Type1 extends Comparable<Type1>, Input>
         implements Serializable, Comparator<Tuple2<Data<Type0, Type1>, Input>> {
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/BitSetJoin.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/BitSetJoin.java
index 41e251c..d48778a 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/BitSetJoin.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/BitSetJoin.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Iterator;
 import org.apache.spark.api.java.function.PairFlatMapFunction;
 import org.apache.wayang.iejoin.data.Data;
 import org.apache.wayang.iejoin.operators.IEJoinMasterOperator;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Iterator;
-
 /**
  * Created by khayyzy on 5/28/16.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/List2AttributesObjectSkinny.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/List2AttributesObjectSkinny.java
index df3c0f0..5e99740 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/List2AttributesObjectSkinny.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/List2AttributesObjectSkinny.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
+import java.io.Serializable;
 import org.apache.wayang.iejoin.data.Data;
 import scala.Tuple2;
 
-import java.io.Serializable;
-
 /**
  * Created by khayyzy on 5/28/16.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/addUniqueID.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/addUniqueID.java
index 8753b27..6880a47 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/addUniqueID.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/addUniqueID.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
+import java.util.ArrayList;
+import java.util.Iterator;
 import org.apache.spark.api.java.function.Function2;
 import org.apache.wayang.core.util.Copyable;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-
 /**
  * Created by khayyzy on 5/28/16.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/build2ListObject.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/build2ListObject.java
index 5faa693..20d0502 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/build2ListObject.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/build2ListObject.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
 import org.apache.spark.api.java.function.Function2;
 import org.apache.wayang.core.util.Copyable;
 import org.apache.wayang.iejoin.data.Data;
 import scala.Tuple2;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-
 /**
  * Created by khayyzy on 5/28/16.
  */
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/myMergeSort.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/myMergeSort.java
index 72cd4ed..bfa02d0 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/myMergeSort.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/myMergeSort.java
@@ -19,9 +19,8 @@
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
 
-import org.apache.wayang.iejoin.data.Data;
-
 import java.util.Comparator;
+import org.apache.wayang.iejoin.data.Data;
 
 /**
  * Created by khayyzy on 5/28/16.
diff --git a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/revDataComparator.java b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/revDataComparator.java
index e5f2fbc..a0c8bb8 100755
--- a/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/revDataComparator.java
+++ b/wayang-plugins/wayang-iejoin/src/main/java/org/apache/wayang/iejoin/operators/spark_helpers/revDataComparator.java
@@ -19,10 +19,9 @@
 package org.apache.wayang.iejoin.operators.spark_helpers;
 
 
-import org.apache.wayang.iejoin.data.Data;
-
 import java.io.Serializable;
 import java.util.Comparator;
+import org.apache.wayang.iejoin.data.Data;
 
 public class revDataComparator implements Serializable, Comparator<Data> {
 
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaExecutionOperatorTestBase.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaExecutionOperatorTestBase.java
index 6266505..9f611c5 100644
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaExecutionOperatorTestBase.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaExecutionOperatorTestBase.java
@@ -18,7 +18,11 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.BeforeClass;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -31,12 +35,7 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
-
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.BeforeClass;
 
 /**
  * Superclass for tests of {@link JavaExecutionOperator}s.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperatorTest.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperatorTest.java
index 137084a..4f95e5d 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperatorTest.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/JavaIEJoinOperatorTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.java.channels.JavaChannelInstance;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link JavaIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest.java
index 503798a..89b0339 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest2.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest2.java
index 5c63d86..72a42ab 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest2.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest2.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest3.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest3.java
index 2083d25..023d1a0 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest3.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest3.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest4.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest4.java
index 9840b51..0d1ff2a 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest4.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIEJoinOperatorTest4.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperatorTest.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperatorTest.java
index 8029737..b723b6b 100755
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperatorTest.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkIESelfJoinOperatorTest.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.iejoin.operators;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.function.TransformationDescriptor;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.spark.channels.RddChannel;
-
-import java.util.Arrays;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SparkIEJoinOperator}.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkOperatorTestBase.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkOperatorTestBase.java
index aa33376..3fbded0 100644
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkOperatorTestBase.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/operators/SparkOperatorTestBase.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.iejoin.operators;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collection;
 import org.apache.spark.api.java.JavaSparkContext;
-import org.junit.Before;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -33,11 +36,7 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 import org.apache.wayang.spark.platform.SparkPlatform;
-
-import java.util.Collection;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Before;
 
 /**
  * Test base for {@link SparkExecutionOperator} tests.
diff --git a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/test/ChannelFactory.java b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/test/ChannelFactory.java
index 424b78d..e068e58 100644
--- a/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/test/ChannelFactory.java
+++ b/wayang-plugins/wayang-iejoin/src/test/java/org/apache/wayang/iejoin/test/ChannelFactory.java
@@ -18,7 +18,10 @@
 
 package org.apache.wayang.iejoin.test;
 
-import org.junit.Before;
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.platform.ChannelDescriptor;
@@ -28,11 +31,7 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.execution.SparkExecutor;
-
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import static org.mockito.Mockito.mock;
+import org.junit.Before;
 
 /**
  * Utility to create {@link Channel}s in tests.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/data/DataGenerators.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/data/DataGenerators.java
index 034f5ad..237faf2 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/data/DataGenerators.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/data/DataGenerators.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.profiler.data;
 
-import org.apache.commons.lang3.Validate;
-
 import java.io.Serializable;
 import java.util.List;
 import java.util.Random;
 import java.util.function.Supplier;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Utility to create common data generators.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/hardware/DiskProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/hardware/DiskProfiler.java
index f72b37d..9ef965d 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/hardware/DiskProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/hardware/DiskProfiler.java
@@ -18,18 +18,17 @@
 
 package org.apache.wayang.profiler.hardware;
 
-import org.apache.commons.lang.Validate;
-import org.apache.wayang.core.util.Formats;
-import org.apache.wayang.core.util.fs.FileSystem;
-import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.wayang.profiler.util.ProfilingUtils;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Random;
+import org.apache.commons.lang.Validate;
+import org.apache.wayang.core.util.Formats;
+import org.apache.wayang.core.util.fs.FileSystem;
+import org.apache.wayang.core.util.fs.FileSystems;
+import org.apache.wayang.profiler.util.ProfilingUtils;
 
 /**
  * Profiles the reading and writing speed to some directory.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/BinaryOperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/BinaryOperatorProfiler.java
index c873cb6..1e4274d 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/BinaryOperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/BinaryOperatorProfiler.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.profiler.java;
 
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-import org.apache.wayang.java.operators.JavaExecutionOperator;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.function.Supplier;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.apache.wayang.java.operators.JavaExecutionOperator;
 
 /**
  * {@link OperatorProfiler} specifically for {@link JavaExecutionOperator}s with a single {@link InputSlot}.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaCollectionSourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaCollectionSourceProfiler.java
index c8506fb..cc68520 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaCollectionSourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaCollectionSourceProfiler.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.profiler.java;
 
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.java.operators.JavaCollectionSource;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.function.Supplier;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaCollectionSource;
 
 /**
  * {@link OperatorProfiler} for {@link JavaCollectionSource}s.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaTextFileSourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaTextFileSourceProfiler.java
index 0a73a8c..2117752 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaTextFileSourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/JavaTextFileSourceProfiler.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.profiler.java;
 
-import org.apache.wayang.java.operators.JavaTextFileSource;
-
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.util.function.Supplier;
+import org.apache.wayang.java.operators.JavaTextFileSource;
 
 /**
  * {@link OperatorProfiler} for sources.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfiler.java
index c17e6f1..cc4a998 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfiler.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.profiler.java;
 
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadMXBean;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Supplier;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,15 +38,6 @@
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.profiler.util.ProfilingUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.ThreadMXBean;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.function.Supplier;
 
 /**
  * Allows to instrument an {@link JavaExecutionOperator}.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfilers.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfilers.java
index d8f9ba3..0dfb9c7 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfilers.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/OperatorProfilers.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.profiler.java;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -41,13 +47,6 @@
 import org.apache.wayang.java.operators.JavaUnionAllOperator;
 import org.apache.wayang.profiler.data.DataGenerators;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-
 /**
  * Utilities to create {@link OperatorProfiler} instances.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/Profiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/Profiler.java
index 1862ec1..535b905 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/Profiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/Profiler.java
@@ -19,6 +19,13 @@
 package org.apache.wayang.profiler.java;
 
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Random;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
@@ -30,14 +37,6 @@
 import org.apache.wayang.profiler.data.DataGenerators;
 import org.apache.wayang.profiler.util.ProfilingUtils;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Random;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
 /**
  * Utility to support finding reasonable {@link LoadProfileEstimator}s for {@link JavaExecutionOperator}s.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SinkProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SinkProfiler.java
index f162974..8dbce09 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SinkProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SinkProfiler.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.profiler.java;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.java.channels.JavaChannelInstance;
-import org.apache.wayang.java.operators.JavaExecutionOperator;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.function.Supplier;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.java.channels.JavaChannelInstance;
+import org.apache.wayang.java.operators.JavaExecutionOperator;
 
 /**
  * {@link OperatorProfiler} implementation for sinks.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SourceProfiler.java
index d4237bb..2b2548f 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/SourceProfiler.java
@@ -18,13 +18,11 @@
 
 package org.apache.wayang.profiler.java;
 
+import java.util.function.Supplier;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.function.Supplier;
 
 /**
  * {@link OperatorProfiler} implementation for sinks.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/UnaryOperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/UnaryOperatorProfiler.java
index 09ccb8e..af19c70 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/UnaryOperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/java/UnaryOperatorProfiler.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.profiler.java;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.function.Supplier;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.function.Supplier;
-
 /**
  * {@link OperatorProfiler} specifically for {@link JavaExecutionOperator}s with a single {@link InputSlot}.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicEstimationContext.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicEstimationContext.java
index 5de2354..23c4362 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicEstimationContext.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicEstimationContext.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 
-import java.util.Collection;
-
 /**
  * {@link EstimationContext} implementation for {@link DynamicLoadEstimator}s.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadEstimator.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadEstimator.java
index 5f77fd0..cf96888 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadEstimator.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadEstimator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.function.Function;
+import java.util.function.ToDoubleFunction;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 import org.apache.wayang.core.optimizer.costs.LoadEstimate;
@@ -30,13 +36,6 @@
 import org.apache.wayang.core.util.mathex.ExpressionBuilder;
 import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.function.Function;
-import java.util.function.ToDoubleFunction;
-
 /**
  * Adjustable {@link LoadProfileEstimator} implementation.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimator.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimator.java
index c45a75e..0024b78 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimator.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimator.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfile;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-
 /**
  * Adjustable {@link LoadProfileEstimator} implementation.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimators.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimators.java
index c487766..0fdca90 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimators.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/DynamicLoadProfileEstimators.java
@@ -20,6 +20,10 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
@@ -28,11 +32,6 @@
 import org.apache.wayang.core.optimizer.costs.LoadProfile;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.Collections;
 
 /**
  * Utility to create {@link DynamicLoadProfileEstimator}s.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizer.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizer.java
index 03645f9..728bc0e 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizer.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizer.java
@@ -18,7 +18,14 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.function.ToDoubleFunction;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.platform.AtomicExecution;
@@ -29,14 +36,6 @@
 import org.apache.wayang.profiler.log.sampling.Sampler;
 import org.apache.wayang.profiler.log.sampling.TournamentSampler;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.function.ToDoubleFunction;
-
 /**
  * Implementation of the genetic optimization technique for finding good {@link LoadProfileEstimator}s.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
index f091ad8..0918bc3 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/GeneticOptimizerApp.java
@@ -18,28 +18,6 @@
 
 package org.apache.wayang.profiler.log;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.optimizer.costs.EstimationContext;
-import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.platform.AtomicExecution;
-import org.apache.wayang.core.platform.AtomicExecutionGroup;
-import org.apache.wayang.core.platform.PartialExecution;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.profiling.ExecutionLog;
-import org.apache.wayang.core.util.Bitmask;
-import org.apache.wayang.core.util.Formats;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.java.Java;
-import org.apache.wayang.postgres.Postgres;
-import org.apache.wayang.spark.Spark;
-import org.apache.wayang.sqlite3.Sqlite3;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
@@ -56,6 +34,27 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.optimizer.costs.EstimationContext;
+import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.platform.AtomicExecution;
+import org.apache.wayang.core.platform.AtomicExecutionGroup;
+import org.apache.wayang.core.platform.PartialExecution;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.profiling.ExecutionLog;
+import org.apache.wayang.core.util.Bitmask;
+import org.apache.wayang.core.util.Formats;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.postgres.Postgres;
+import org.apache.wayang.spark.Spark;
+import org.apache.wayang.sqlite3.Sqlite3;
 
 /**
  * This app tries to infer good {@link LoadProfileEstimator}s for {@link ExecutionOperator}s using data from an
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/Individual.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/Individual.java
index 4cf8160..2e5ee5f 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/Individual.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/Individual.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.util.Comparator;
+import java.util.Map;
+import java.util.Random;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.DoubleStream;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
@@ -27,12 +32,6 @@
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.Bitmask;
 
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Random;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.DoubleStream;
-
 /**
  * Context for the optimization of {@link LoadProfileEstimator}s.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/LogEvaluator.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/LogEvaluator.java
index 05f23fa..8610ef1 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/LogEvaluator.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/LogEvaluator.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.profiler.log;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.ProbabilisticIntervalEstimate;
@@ -28,18 +39,6 @@
 import org.apache.wayang.core.util.Formats;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.platform.SparkPlatform;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Evaluates a {@link Configuration} on a {@link ExecutionLog}.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/OptimizationSpace.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/OptimizationSpace.java
index 23d6ae4..6ccccdd 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/OptimizationSpace.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/log/OptimizationSpace.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.profiler.log;
 
-import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 
 /**
  * Context for the optimization of {@link LoadProfileEstimator}s.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/BinaryOperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/BinaryOperatorProfiler.java
index e63a177..72bc110 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/BinaryOperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/BinaryOperatorProfiler.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.function.Supplier;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -25,8 +26,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} implementation for {@link SparkExecutionOperator}s with two inputs and one output.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/Main.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/Main.java
index 8a0d3a7..9e37375 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/Main.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/Main.java
@@ -19,6 +19,13 @@
 package org.apache.wayang.profiler.spark;
 
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Subject;
@@ -29,14 +36,6 @@
 import org.apache.wayang.profiler.data.DataGenerators;
 import org.apache.wayang.spark.platform.SparkPlatform;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
-
 /**
  * Starts a profiling run of Spark.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/OperatorProfilers.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/OperatorProfilers.java
index 384c3a8..a2e9244 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/OperatorProfilers.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/OperatorProfilers.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -43,10 +46,6 @@
 import org.apache.wayang.spark.operators.SparkTextFileSource;
 import org.apache.wayang.spark.operators.SparkUnionAllOperator;
 
-import java.util.ArrayList;
-import java.util.Random;
-import java.util.function.Supplier;
-
 /**
  * Utilities to create {@link SparkOperatorProfiler} instances.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SinkProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SinkProfiler.java
index 351ce6b..d628368 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SinkProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SinkProfiler.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.function.Supplier;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.profiler.util.ProfilingUtils;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} implementation for {@link SparkExecutionOperator}s with one input and no outputs.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkCollectionSourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkCollectionSourceProfiler.java
index 22368ff..4197c8b 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkCollectionSourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkCollectionSourceProfiler.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.ArrayList;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.spark.operators.SparkCollectionSource;
 import org.apache.wayang.spark.operators.SparkTextFileSource;
 
-import java.util.ArrayList;
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} for the {@link SparkTextFileSource}.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkOperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkOperatorProfiler.java
index d221deb..c98d092 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkOperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkOperatorProfiler.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.Supplier;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -34,16 +43,6 @@
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 import org.rrd4j.ConsolFun;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.Supplier;
 
 /**
  * Allows to instrument an {@link SparkExecutionOperator}.
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkSourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkSourceProfiler.java
index 7f35839..63563e6 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkSourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkSourceProfiler.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.profiler.util.ProfilingUtils;
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} implementation for {@link SparkExecutionOperator}s with one input and one output.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkTextFileSourceProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkTextFileSourceProfiler.java
index 408c931..2f8920a 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkTextFileSourceProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkTextFileSourceProfiler.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
 import org.apache.wayang.spark.operators.SparkTextFileSource;
 
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} for the {@link SparkTextFileSource}.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkUnaryOperatorProfiler.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkUnaryOperatorProfiler.java
index f59a357..32eb8f0 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkUnaryOperatorProfiler.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/spark/SparkUnaryOperatorProfiler.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.profiler.spark;
 
+import java.util.function.Supplier;
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -25,8 +26,6 @@
 import org.apache.wayang.spark.channels.RddChannel;
 import org.apache.wayang.spark.operators.SparkExecutionOperator;
 
-import java.util.function.Supplier;
-
 /**
  * {@link SparkOperatorProfiler} implementation for {@link SparkExecutionOperator}s with one input and one output.
  */
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/ProfilingUtils.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/ProfilingUtils.java
index 2d36876..572a696 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/ProfilingUtils.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/ProfilingUtils.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.profiler.util;
 
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
@@ -27,7 +28,6 @@
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.execution.SparkExecutor;
 import org.apache.wayang.spark.platform.SparkPlatform;
-import org.apache.logging.log4j.LogManager;
 
 /**
  * Utilities to fake Wayang internals etc..
diff --git a/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/RrdAccessor.java b/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/RrdAccessor.java
index bb5fb38..7e218bc 100644
--- a/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/RrdAccessor.java
+++ b/wayang-profiler/src/main/java/org/apache/wayang/profiler/util/RrdAccessor.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.profiler.util;
 
+import java.io.IOException;
+import java.util.Arrays;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.rrd4j.ConsolFun;
 import org.rrd4j.core.FetchData;
 import org.rrd4j.core.FetchRequest;
 import org.rrd4j.core.RrdBackendFactory;
 import org.rrd4j.core.RrdDb;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.util.Arrays;
 
 /**
  * Utility to read from an RRD file.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
index b5d964c..62ccf0f 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FlinkIntegrationIT.java
@@ -18,20 +18,6 @@
 
 package org.apache.wayang.tests;
 
-import org.apache.wayang.java.plugin.JavaBasicPlugin;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.core.api.Job;
-import org.apache.wayang.core.api.WayangContext;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.wayang.core.plugin.Plugin;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.flink.Flink;
-import org.apache.wayang.java.Java;
-import org.apache.wayang.tests.platform.MyMadeUpPlatform;
-
 import java.io.File;
 import java.io.IOException;
 import java.net.URISyntaxException;
@@ -46,6 +32,17 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.api.Job;
+import org.apache.wayang.core.api.WayangContext;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.flink.Flink;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.tests.platform.MyMadeUpPlatform;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test the Spark integration with Wayang.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FullIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FullIntegrationIT.java
index 51cf036..fc7b707 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FullIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/FullIntegrationIT.java
@@ -18,9 +18,23 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.basic.WayangBasics;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.data.Tuple2;
@@ -43,24 +57,9 @@
 import org.apache.wayang.spark.Spark;
 import org.apache.wayang.sqlite3.Sqlite3;
 import org.apache.wayang.tests.platform.MyMadeUpPlatform;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test the Java integration with Wayang.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
index 8921a26..ee87853 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/GiraphIntegrationIT.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.core.api.WayangContext;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.wayang.giraph.Giraph;
-import org.apache.wayang.java.Java;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.api.WayangContext;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
+import org.apache.wayang.giraph.Giraph;
+import org.apache.wayang.java.Java;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Integration tests for the integration of Giraph with Wayang.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/JavaIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/JavaIntegrationIT.java
index deafb00..e7a2515 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/JavaIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/JavaIntegrationIT.java
@@ -18,8 +18,20 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.WayangBasics;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CollectionSource;
@@ -39,21 +51,8 @@
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.tests.platform.MyMadeUpPlatform;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test the Java integration with Wayang.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/PostgresIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/PostgresIntegrationIT.java
index 721f27b..7fd9b75 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/PostgresIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/PostgresIntegrationIT.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.postgres.platform.PostgresPlatform;
-
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.postgres.platform.PostgresPlatform;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 
 
 /**
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/RegressionIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/RegressionIT.java
index 59b48cd..e763f72 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/RegressionIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/RegressionIT.java
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.Arrays;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.api.LoadCollectionDataQuantaBuilder;
 import org.apache.wayang.api.MapDataQuantaBuilder;
@@ -27,9 +27,8 @@
 import org.apache.wayang.core.util.WayangArrays;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.spark.Spark;
-
-import java.util.ArrayList;
-import java.util.Arrays;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * This class hosts and documents some tests for bugs that we encountered. Ultimately, we want to avoid re-introducing
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/SparkIntegrationIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/SparkIntegrationIT.java
index 7323f8d..79ce88a 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/SparkIntegrationIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/SparkIntegrationIT.java
@@ -18,8 +18,20 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.WayangBasics;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CollectionSource;
@@ -36,21 +48,8 @@
 import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.spark.Spark;
 import org.apache.wayang.tests.platform.MyMadeUpPlatform;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test the Spark integration with Wayang.
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
index c4a7567..5e302b5 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlans.java
@@ -18,6 +18,18 @@
 
 package org.apache.wayang.tests;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.api.DataQuantaBuilder;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.basic.data.Record;
@@ -53,25 +65,12 @@
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.wayang.core.util.WayangArrays;
 import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangArrays;
 import org.apache.wayang.spark.operators.SparkShufflePartitionSampleOperator;
 import org.apache.wayang.sqlite3.Sqlite3;
 import org.apache.wayang.sqlite3.operators.Sqlite3TableSource;
 
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Provides plans that can be used for integration testing.
  */
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlansOperators.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlansOperators.java
index 1dc5179..da6bcf3 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlansOperators.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WayangPlansOperators.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.tests;
 
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.basic.operators.CoGroupOperator;
@@ -41,11 +45,6 @@
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangArrays;
 
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Provides plans that can be used for integration testing..
  */
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WordCountIT.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WordCountIT.java
index 0175ae5..7f6d4fa 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WordCountIT.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/WordCountIT.java
@@ -18,8 +18,16 @@
 
 package org.apache.wayang.tests;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
@@ -45,17 +53,8 @@
 import org.apache.wayang.spark.operators.SparkFlatMapOperator;
 import org.apache.wayang.spark.operators.SparkMapOperator;
 import org.apache.wayang.spark.operators.SparkTextFileSource;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Word count integration test. Besides going through different {@link Platform} combinations, each test addresses a different
diff --git a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/platform/MyMadeUpPlatform.java b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/platform/MyMadeUpPlatform.java
index bc93d30..5c388e2 100644
--- a/wayang-tests-integration/src/test/java/org/apache/wayang/tests/platform/MyMadeUpPlatform.java
+++ b/wayang-tests-integration/src/test/java/org/apache/wayang/tests/platform/MyMadeUpPlatform.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.tests.platform;
 
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,11 +31,6 @@
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.plugin.Plugin;
 
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.mockito.Mockito.mock;
-
 /**
  * Dummy {@link Platform} that does not provide any {@link Mapping}s.
  */