Code cleanups and warnings
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/AdaptiveBagging.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/AdaptiveBagging.java
index 6680862..b92ab8a 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/AdaptiveBagging.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/AdaptiveBagging.java
@@ -67,9 +67,6 @@
   /** The distributor processor. */
   private BaggingDistributorProcessor distributorP;
 
-  /** The input streams for the ensemble, one per member. */
-  private Stream[] ensembleStreams;
-  
   /** The result stream. */
   protected Stream resultStream;
 
@@ -117,7 +114,8 @@
       }
     }
 
-    ensembleStreams = new Stream[ensembleSize];
+    /* The input streams for the ensemble, one per member. */
+    Stream[] ensembleStreams = new Stream[ensembleSize];
     for (int i = 0; i < ensembleSize; i++) {
       ensembleStreams[i] = builder.createStream(distributorP);
       builder.connectInputShuffleStream(ensembleStreams[i], ensemble[i].getInputProcessor()); // connect streams one-to-one with ensemble members (the type of connection does not matter)
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/Boosting.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/Boosting.java
index 6512028..eac3d88 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/Boosting.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/ensemble/Boosting.java
@@ -104,9 +104,6 @@
     Stream predictionStream = this.builder.createStream(distributorP);
     this.builder.connectInputKeyStream(predictionStream, classifier.getInputProcessor());
 
-//    distributorP.setOutputStream(testingStream);
-//    distributorP.setPredictionStream(predictionStream);
-
     // Addition to Bagging: stream to train
     /* The training stream. */
     Stream trainingStream = this.builder.createStream(predictionCombinerP);
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/centralized/AMRulesRegressorProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/centralized/AMRulesRegressorProcessor.java
index 55f0064..685e2f9 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/centralized/AMRulesRegressorProcessor.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/centralized/AMRulesRegressorProcessor.java
@@ -163,7 +163,7 @@
     int numberOfRulesCovering = 0;
 
     for (ActiveRule rule : ruleSet) {
-      if (rule.isCovering(instance) == true) {
+      if (rule.isCovering(instance)) {
         numberOfRulesCovering++;
         double[] vote = rule.getPrediction(instance);
         double error = rule.getCurrentError();
@@ -179,9 +179,8 @@
       double error = defaultRule.getCurrentError();
       errorWeightedVote.addVote(vote, error);
     }
-    double[] weightedVote = errorWeightedVote.computeWeightedVote();
 
-    return weightedVote;
+    return errorWeightedVote.computeWeightedVote();
   }
 
   public ErrorWeightedVote newErrorWeightedVote() {
@@ -223,13 +222,13 @@
     Iterator<ActiveRule> ruleIterator = this.ruleSet.iterator();
     while (ruleIterator.hasNext()) {
       ActiveRule rule = ruleIterator.next();
-      if (rule.isCovering(instance) == true) {
+      if (rule.isCovering(instance)) {
         rulesCoveringInstance = true;
-        if (isAnomaly(instance, rule) == false) {
+        if (!isAnomaly(instance, rule)) {
           // Update Change Detection Tests
           double error = rule.computeError(instance); // Use adaptive mode error
           boolean changeDetected = ((RuleActiveRegressionNode) rule.getLearningNode()).updateChangeDetection(error);
-          if (changeDetected == true) {
+          if (changeDetected) {
             ruleIterator.remove();
           } else {
             rule.updateStatistics(instance);
@@ -245,10 +244,10 @@
       }
     }
 
-    if (rulesCoveringInstance == false) {
+    if (!rulesCoveringInstance) {
       defaultRule.updateStatistics(instance);
       if (defaultRule.getInstancesSeen() % this.gracePeriod == 0.0) {
-        if (defaultRule.tryToExpand(this.splitConfidence, this.tieThreshold) == true) {
+        if (defaultRule.tryToExpand(this.splitConfidence, this.tieThreshold)) {
           ActiveRule newDefaultRule = newRule(defaultRule.getRuleNumberID(),
               (RuleActiveRegressionNode) defaultRule.getLearningNode(),
               ((RuleActiveRegressionNode) defaultRule.getLearningNode()).getStatisticsOtherBranchSplit()); // other branch
@@ -274,7 +273,7 @@
     // AMRUles is equipped with anomaly detection. If on, compute the anomaly
     // value.
     boolean isAnomaly = false;
-    if (this.noAnomalyDetection == false) {
+    if (!this.noAnomalyDetection) {
       if (rule.getInstancesSeen() >= this.anomalyNumInstThreshold) {
         isAnomaly = rule.isAnomaly(instance,
             this.univariateAnomalyprobabilityThreshold,
@@ -308,19 +307,19 @@
         }
       }
     }
-    if (statistics != null && ((RuleActiveRegressionNode) r.getLearningNode()).getTargetMean() != null)
+    if (statistics != null && (r.getLearningNode()).getTargetMean() != null)
     {
       double mean;
       if (statistics[0] > 0) {
         mean = statistics[1] / statistics[0];
-        ((RuleActiveRegressionNode) r.getLearningNode()).getTargetMean().reset(mean, (long) statistics[0]);
+        (r.getLearningNode()).getTargetMean().reset(mean, (long) statistics[0]);
       }
     }
     return r;
   }
 
   private ActiveRule newRule(int ID) {
-    ActiveRule r = new ActiveRule.Builder().
+    return new ActiveRule.Builder().
         threshold(this.pageHinckleyThreshold).
         alpha(this.pageHinckleyAlpha).
         changeDetection(this.driftDetection).
@@ -329,7 +328,6 @@
         learningRatio(this.learningRatio).
         numericObserver(numericObserver).
         id(ID).build();
-    return r;
   }
 
   /*
@@ -342,7 +340,7 @@
     this.ruleNumberID = 0;
     this.defaultRule = newRule(++this.ruleNumberID);
 
-    this.ruleSet = new LinkedList<ActiveRule>();
+    this.ruleSet = new LinkedList<>();
   }
 
   /*
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/common/ActiveRule.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/common/ActiveRule.java
index d233af0..871cdd7 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/common/ActiveRule.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/common/ActiveRule.java
@@ -38,8 +38,6 @@
 
   private static final long serialVersionUID = 1L;
 
-  private double[] statisticsOtherBranchSplit;
-
   private Builder builder;
 
   private RuleActiveRegressionNode learningNode;
@@ -89,10 +87,6 @@
     this.learningNode = (RuleActiveRegressionNode) learningNode;
   }
 
-  public double[] statisticsOtherBranchSplit() {
-    return this.statisticsOtherBranchSplit;
-  }
-
   public RuleSplitNode getLastUpdatedRuleSplitNode() {
     return this.lastUpdatedRuleSplitNode;
   }
@@ -104,7 +98,6 @@
 
     private static final long serialVersionUID = 1712887264918475622L;
     protected boolean changeDetection;
-    protected boolean usePerceptron;
     protected double threshold;
     protected double alpha;
     protected int predictionFunction;
@@ -115,8 +108,6 @@
 
     protected FIMTDDNumericAttributeClassLimitObserver numericObserver;
 
-    protected double lastTargetMean;
-
     public int id;
 
     public Builder() {
@@ -182,8 +173,7 @@
    */
   public boolean tryToExpand(double splitConfidence, double tieThreshold) {
 
-    boolean shouldSplit = this.learningNode.tryToExpand(splitConfidence, tieThreshold);
-    return shouldSplit;
+    return this.learningNode.tryToExpand(splitConfidence, tieThreshold);
 
   }
 
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRLearnerProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRLearnerProcessor.java
index a718945..06a319c 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRLearnerProcessor.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRLearnerProcessor.java
@@ -50,10 +50,7 @@
 	 */
   private static final long serialVersionUID = -2302897295090248013L;
 
-  private static final Logger logger =
-      LoggerFactory.getLogger(AMRLearnerProcessor.class);
-
-  private int processorId;
+  private static final Logger logger = LoggerFactory.getLogger(AMRLearnerProcessor.class);
 
   private transient List<ActiveRule> ruleSet;
 
@@ -105,10 +102,10 @@
       ActiveRule rule = ruleIterator.next();
       if (rule.getRuleNumberID() == ruleID) {
         // Check (again) for coverage
-        if (rule.isCovering(instance) == true) {
+        if (rule.isCovering(instance)) {
           double error = rule.computeError(instance); // Use adaptive mode error
           boolean changeDetected = ((RuleActiveRegressionNode) rule.getLearningNode()).updateChangeDetection(error);
-          if (changeDetected == true) {
+          if (changeDetected) {
             ruleIterator.remove();
 
             this.sendRemoveRuleEvent(ruleID);
@@ -137,7 +134,7 @@
     // AMRUles is equipped with anomaly detection. If on, compute the anomaly
     // value.
     boolean isAnomaly = false;
-    if (this.noAnomalyDetection == false) {
+    if (!this.noAnomalyDetection) {
       if (rule.getInstancesSeen() >= this.anomalyNumInstThreshold) {
         isAnomaly = rule.isAnomaly(instance,
             this.univariateAnomalyprobabilityThreshold,
@@ -167,8 +164,7 @@
 
   @Override
   public void onCreate(int id) {
-    this.processorId = id;
-    this.ruleSet = new LinkedList<ActiveRule>();
+    this.ruleSet = new LinkedList<>();
   }
 
   @Override
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRulesStatisticsProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRulesStatisticsProcessor.java
index 86fae3c..0b6fa80 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRulesStatisticsProcessor.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/classifiers/rules/distributed/AMRulesStatisticsProcessor.java
@@ -49,10 +49,7 @@
 	 */
   private static final long serialVersionUID = 5268933189695395573L;
 
-  private static final Logger logger =
-      LoggerFactory.getLogger(AMRulesStatisticsProcessor.class);
-
-  private int processorId;
+  private static final Logger logger = LoggerFactory.getLogger(AMRulesStatisticsProcessor.class);
 
   private transient List<ActiveRule> ruleSet;
 
@@ -98,10 +95,10 @@
       if (rule.getRuleNumberID() == ruleID) {
         // Check (again) for coverage
         // Skip anomaly check as Aggregator's perceptron should be well-updated
-        if (rule.isCovering(instance) == true) {
+        if (rule.isCovering(instance)) {
           double error = rule.computeError(instance); // Use adaptive mode error
           boolean changeDetected = ((RuleActiveRegressionNode) rule.getLearningNode()).updateChangeDetection(error);
-          if (changeDetected == true) {
+          if (changeDetected) {
             ruleIterator.remove();
 
             this.sendRemoveRuleEvent(ruleID);
@@ -143,8 +140,7 @@
 
   @Override
   public void onCreate(int id) {
-    this.processorId = id;
-    this.ruleSet = new LinkedList<ActiveRule>();
+    this.ruleSet = new LinkedList<>();
   }
 
   @Override
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/LocalClustererProcessor.java b/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/LocalClustererProcessor.java
index 163184f..c7bb1ad 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/LocalClustererProcessor.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/LocalClustererProcessor.java
@@ -45,8 +45,7 @@
      *
      */
   private static final long serialVersionUID = -1577910988699148691L;
-  private static final Logger logger = LoggerFactory
-      .getLogger(LocalClustererProcessor.class);
+  private static final Logger logger = LoggerFactory.getLogger(LocalClustererProcessor.class);
   private LocalClustererAdapter model;
   private Stream outputStream;
   private int modelId;
@@ -84,7 +83,7 @@
    * Set the output streams.
    * 
    * @param outputStream
-   *          the new output stream {@link PredictionCombinerPE}.
+   *          the new output stream {@link Stream}.
    */
   public void setOutputStream(Stream outputStream) {
 
diff --git a/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/SingleLearner.java b/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/SingleLearner.java
index f6173f6..e0fa058 100644
--- a/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/SingleLearner.java
+++ b/samoa-api/src/main/java/org/apache/samoa/learners/clusterers/SingleLearner.java
@@ -69,7 +69,7 @@
 
   protected void setLayout() {
     learnerP = new LocalClustererProcessor();
-    LocalClustererAdapter learner = (LocalClustererAdapter) this.learnerOption.getValue();
+    LocalClustererAdapter learner = this.learnerOption.getValue();
     learner.setDataset(this.dataset);
     learnerP.setLearner(learner);
 
@@ -96,7 +96,6 @@
    */
   @Override
   public Set<Stream> getResultStreams() {
-    Set<Stream> streams = ImmutableSet.of(this.resultStream);
-    return streams;
+    return ImmutableSet.of(this.resultStream);
   }
 }
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/cluster/Miniball.java b/samoa-api/src/main/java/org/apache/samoa/moa/cluster/Miniball.java
index da2a0e5..3dcdc5f 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/cluster/Miniball.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/cluster/Miniball.java
@@ -20,7 +20,6 @@
  * #L%
  */
 
-import com.dreizak.miniball.model.ArrayPointSet;
 import com.dreizak.miniball.model.PointSet;
 import java.util.ArrayList;
 import java.util.List;
@@ -62,7 +61,7 @@
 
     public PointStorage(int dimension) {
       this.dimension = dimension;
-      this.L = new ArrayList<double[]>();
+      this.L = new ArrayList<>();
     }
 
     public void add(double[] array) {
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/AbstractClusterer.java b/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/AbstractClusterer.java
index 02a5191..da77d04 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/AbstractClusterer.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/AbstractClusterer.java
@@ -20,6 +20,7 @@
  * #L%
  */
 
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Random;
@@ -134,21 +135,19 @@
   }
 
   public Measurement[] getModelMeasurements() {
-    List<Measurement> measurementList = new LinkedList<Measurement>();
+    List<Measurement> measurementList = new LinkedList<>();
     measurementList.add(new Measurement("model training instances",
         trainingWeightSeenByModel()));
     measurementList.add(new Measurement("model serialized size (bytes)",
         measureByteSize()));
     Measurement[] modelMeasurements = getModelMeasurementsImpl();
     if (modelMeasurements != null) {
-      for (Measurement measurement : modelMeasurements) {
-        measurementList.add(measurement);
-      }
+      Collections.addAll(measurementList, modelMeasurements);
     }
     // add average of sub-model measurements
     Clusterer[] subModels = getSubClusterers();
     if ((subModels != null) && (subModels.length > 0)) {
-      List<Measurement[]> subMeasurements = new LinkedList<Measurement[]>();
+      List<Measurement[]> subMeasurements = new LinkedList<>();
       for (Clusterer subModel : subModels) {
         if (subModel != null) {
           subMeasurements.add(subModel.getModelMeasurements());
@@ -157,9 +156,7 @@
       Measurement[] avgMeasurements = Measurement
           .averageMeasurements(subMeasurements
               .toArray(new Measurement[subMeasurements.size()][]));
-      for (Measurement measurement : avgMeasurements) {
-        measurementList.add(measurement);
-      }
+      Collections.addAll(measurementList, avgMeasurements);
     }
     return measurementList.toArray(new Measurement[measurementList.size()]);
   }
@@ -295,5 +292,5 @@
 
   public Clustering getMicroClusteringResult() {
     return null;
-  };
+  }
 }
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/ClusterGenerator.java b/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/ClusterGenerator.java
index b9f80b5..06c9cff 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/ClusterGenerator.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/clusterers/ClusterGenerator.java
@@ -58,7 +58,6 @@
   public FloatOption clusterAddOption = new FloatOption("clusterAdd", 'A',
       "Adds additional clusters.", 0, 0, 1);
 
-  private static double err_intervall_width = 0.0;
   private ArrayList<DataPoint> points;
   private int instanceCounter;
   private int windowCounter;
@@ -67,7 +66,7 @@
 
   @Override
   public void resetLearningImpl() {
-    points = new ArrayList<DataPoint>();
+    points = new ArrayList<>();
     instanceCounter = 0;
     windowCounter = 0;
     random = new Random(227);
@@ -169,8 +168,9 @@
       double radius = sourceCluster.getRadius();
 
       // move cluster center
+      double err_interval_width = 0.0;
       if (errLevelPosition > 0) {
-        double errOffset = random.nextDouble() * err_intervall_width / 2.0;
+        double errOffset = random.nextDouble() * err_interval_width / 2.0;
         double errOffsetDirection = ((random.nextBoolean()) ? 1 : -1);
         double level = errLevelPosition + errOffsetDirection * errOffset;
         double[] vector = new double[center.length];
@@ -203,20 +203,15 @@
         }
         center = newCenter;
         for (int d = 0; d < center.length; d++) {
-          if (newCenter[d] >= 0 && newCenter[d] <= 1) {
-          }
-          else {
-            System.out
-                .println("This shouldnt have happend, Cluster center out of bounds:" + Arrays.toString(newCenter));
+          if (newCenter[d] < 0 || newCenter[d] > 1) {
+            System.out.println("This shouldnt have happend, Cluster center out of bounds:" + Arrays.toString(newCenter));
           }
         }
-        // System.out.println("new Center "+Arrays.toString(newCenter));
-
       }
 
       // alter radius
       if (errLevelRadiusDecrease > 0 || errLevelRadiusIncrease > 0) {
-        double errOffset = random.nextDouble() * err_intervall_width / 2.0;
+        double errOffset = random.nextDouble() * err_interval_width / 2.0;
         int errOffsetDirection = ((random.nextBoolean()) ? 1 : -1);
 
         if (errLevelRadiusDecrease > 0 && (errLevelRadiusIncrease == 0 || random.nextBoolean())) {
@@ -289,9 +284,7 @@
       for (int c1 = 0; c1 < clustering.size(); c1++) {
         SphereCluster sc1 = (SphereCluster) clustering.get(c1);
         double minDist = Double.MAX_VALUE;
-        double minOver = 1;
-        int maxindexCon = -1;
-        int maxindexOver = -1;
+        int maxIndexCon = -1;
         for (int c2 = 0; c2 < clustering.size(); c2++) {
           SphereCluster sc2 = (SphereCluster) clustering.get(c2);
           // double over = sc1.overlapRadiusDegree(sc2);
@@ -303,14 +296,11 @@
           double threshold = Math.min(sc1.getRadius(), sc2.getRadius()) * radiusFactor;
           if (dist > 0 && dist < minDist && dist < threshold) {
             minDist = dist;
-            maxindexCon = c2;
+            maxIndexCon = c2;
           }
         }
-        int maxindex = -1;
-        if (maxindexOver != -1)
-          maxindex = maxindexOver;
-        else
-          maxindex = maxindexCon;
+        int maxindex;
+        maxindex = maxIndexCon;
 
         if (maxindex != -1 && !merged[c1]) {
           merged[c1] = true;
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningCurve.java b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningCurve.java
index dcc4f50..e4bdb82 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningCurve.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningCurve.java
@@ -39,11 +39,11 @@
 
   private static final long serialVersionUID = 1L;
 
-  protected List<String> measurementNames = new ArrayList<String>();
+  protected List<String> measurementNames = new ArrayList<>();
 
-  protected List<String> voteNames = new ArrayList<String>();
+  protected List<String> voteNames = new ArrayList<>();
 
-  protected List<double[]> measurementValues = new ArrayList<double[]>();
+  protected List<double[]> measurementValues = new ArrayList<>();
 
   protected List<String> voteValues = new ArrayList<String>();
 
@@ -154,7 +154,7 @@
   /**
    * This method is used to set generate header line of a text file containing predictions and votes (for classification
    * only)
-   * 
+   *
    * @return String This returns the text of the header of a file containing predictions and votes.
    */
   public String voteHeaderToString() {
@@ -174,7 +174,7 @@
   /**
    * This method is used to set generate one body line of a text file containing predictions and votes (for
    * classification only)
-   * 
+   *
    * @return String This returns the text of one line of a file containing predictions and votes.
    */
   public String voteEntryToString() {
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningEvaluation.java b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningEvaluation.java
index 993667d..3389fda 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningEvaluation.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/LearningEvaluation.java
@@ -46,7 +46,7 @@
 
   public LearningEvaluation(Measurement[] evaluationMeasurements,
       LearningPerformanceEvaluator cpe, Learner model) {
-    List<Measurement> measurementList = new LinkedList<Measurement>();
+    List<Measurement> measurementList = new LinkedList<>();
     measurementList.addAll(Arrays.asList(evaluationMeasurements));
     measurementList.addAll(Arrays.asList(cpe.getPerformanceMeasurements()));
     measurementList.addAll(Arrays.asList(model.getModelMeasurements()));
diff --git a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/MembershipMatrix.java b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/MembershipMatrix.java
index 4387c04..3510b4d 100644
--- a/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/MembershipMatrix.java
+++ b/samoa-api/src/main/java/org/apache/samoa/moa/evaluation/MembershipMatrix.java
@@ -35,7 +35,7 @@
   int total_entries;
   int class_distribution[];
   int total_class_entries;
-  int initalBuildTimestamp = -1;
+  int initialBuildTimestamp = -1;
 
   public MembershipMatrix(Clustering foundClustering, ArrayList<DataPoint> points) {
     classmap = Clustering.classValues(points);
@@ -50,13 +50,13 @@
     class_sums = new int[numClasses];
     total_entries = 0;
     total_class_entries = points.size();
-    for (int p = 0; p < points.size(); p++) {
-      int worklabel = classmap.get((int) points.get(p).classValue());
+    for (DataPoint point : points) {
+      int worklabel = classmap.get((int) point.classValue());
       // real class distribution
       class_distribution[worklabel]++;
       boolean covered = false;
       for (int c = 0; c < numCluster - 1; c++) {
-        double prob = foundClustering.get(c).getInclusionProbability(points.get(p));
+        double prob = foundClustering.get(c).getInclusionProbability(point);
         if (prob >= 1) {
           cluster_class_weights[c][worklabel]++;
           class_sums[worklabel]++;
@@ -74,7 +74,7 @@
 
     }
 
-    initalBuildTimestamp = points.get(0).getTimestamp();
+    initialBuildTimestamp = points.get(0).getTimestamp();
   }
 
   public int getClusterClassWeight(int i, int j) {
@@ -119,7 +119,7 @@
 
   @Override
   public String toString() {
-    StringBuffer sb = new StringBuffer();
+    StringBuilder sb = new StringBuilder();
     sb.append("Membership Matrix\n");
     for (int i = 0; i < cluster_class_weights.length; i++) {
       for (int j = 0; j < cluster_class_weights[i].length; j++) {
@@ -128,22 +128,22 @@
       sb.append("| " + cluster_sums[i] + "\n");
     }
     // sb.append("-----------\n");
-    for (int i = 0; i < class_sums.length; i++) {
-      sb.append(class_sums[i] + "\t ");
+    for (int class_sum : class_sums) {
+      sb.append(class_sum + "\t ");
     }
     sb.append("| " + total_entries + "\n");
 
     sb.append("Real class distribution \n");
-    for (int i = 0; i < class_distribution.length; i++) {
-      sb.append(class_distribution[i] + "\t ");
+    for (int aClass_distribution : class_distribution) {
+      sb.append(aClass_distribution + "\t ");
     }
     sb.append("| " + total_class_entries + "\n");
 
     return sb.toString();
   }
 
-  public int getInitalBuildTimestamp() {
-    return initalBuildTimestamp;
+  public int getInitialBuildTimestamp() {
+    return initialBuildTimestamp;
   }
 
 }
diff --git a/samoa-api/src/main/java/org/apache/samoa/streams/clustering/RandomRBFGeneratorEvents.java b/samoa-api/src/main/java/org/apache/samoa/streams/clustering/RandomRBFGeneratorEvents.java
index 139b8f7..5fe70ea 100644
--- a/samoa-api/src/main/java/org/apache/samoa/streams/clustering/RandomRBFGeneratorEvents.java
+++ b/samoa-api/src/main/java/org/apache/samoa/streams/clustering/RandomRBFGeneratorEvents.java
@@ -37,7 +37,6 @@
 import org.apache.samoa.moa.cluster.SphereCluster;
 import org.apache.samoa.moa.core.AutoExpandVector;
 import org.apache.samoa.moa.core.DataPoint;
-import org.apache.samoa.moa.core.FastVector;
 import org.apache.samoa.moa.core.InstanceExample;
 import org.apache.samoa.moa.core.ObjectRepository;
 import org.apache.samoa.moa.tasks.TaskMonitor;
@@ -48,7 +47,7 @@
 import com.github.javacliparser.IntOption;
 
 public class RandomRBFGeneratorEvents extends ClusteringStream {
-  private transient Vector listeners;
+  private transient Vector<ClusterEventListener> listeners;
 
   private static final long serialVersionUID = 1L;
 
@@ -135,10 +134,10 @@
     int currentMovementSteps;
     boolean isSplitting = false;
 
-    LinkedList<DataPoint> points = new LinkedList<DataPoint>();
-    ArrayList<SphereCluster> microClusters = new ArrayList<SphereCluster>();
-    ArrayList<ArrayList<DataPoint>> microClustersPoints = new ArrayList();
-    ArrayList<Integer> microClustersDecay = new ArrayList();
+    LinkedList<DataPoint> points = new LinkedList<>();
+    ArrayList<SphereCluster> microClusters = new ArrayList<>();
+    ArrayList<ArrayList<DataPoint>> microClustersPoints = new ArrayList<>();
+    ArrayList<Integer> microClustersDecay = new ArrayList<>();
 
     public GeneratorCluster(int label) {
       boolean outofbounds = true;
@@ -230,8 +229,7 @@
       int minMicroIndex = -1;
       double minHullDist = Double.MAX_VALUE;
       boolean inserted = false;
-      // we favour more recently build clusters so we can remove earlier cluster
-      // sooner
+      // we favour more recently build clusters so we can remove earlier cluster sooner
       for (int m = microClusters.size() - 1; m >= 0; m--) {
         SphereCluster micro = microClusters.get(m);
         double hulldist = micro.getCenterDistance(point) - micro.getRadius();
@@ -251,49 +249,25 @@
         }
       }
       // Reseting index choice for alternative cluster building
-      int alt = 1;
-      if (alt == 1)
-        minMicroIndex = -1;
       if (!inserted) {
         // add to closest cluster and expand cluster
-        if (minMicroIndex != -1) {
-          microClustersPoints.get(minMicroIndex).add(point);
-          // we should keep the miniball instances and just check in
-          // new points instead of rebuilding the whole thing
-          SphereCluster s = new SphereCluster(microClustersPoints.get(minMicroIndex), numAttsOption.getValue());
-          // check if current microcluster is bigger then generating cluster
-          if (s.getRadius() > generator.getRadius()) {
-            // remove previously added point
-            microClustersPoints.get(minMicroIndex).remove(microClustersPoints.get(minMicroIndex).size() - 1);
-            minMicroIndex = -1;
-          }
-          else {
-            microClusters.set(minMicroIndex, s);
-            microClustersDecay.set(minMicroIndex, numGeneratedInstances);
-          }
-        }
         // minMicroIndex might have been reset above
         // create new micro cluster
-        if (minMicroIndex == -1) {
-          ArrayList<DataPoint> microPoints = new ArrayList<DataPoint>();
-          microPoints.add(point);
-          SphereCluster s;
-          if (alt == 0)
-            s = new SphereCluster(microPoints, numAttsOption.getValue());
-          else
-            s = new SphereCluster(generator.getCenter(), generator.getRadius(), 1);
+        ArrayList<DataPoint> microPoints = new ArrayList<>();
+        microPoints.add(point);
+        SphereCluster s;
+        s = new SphereCluster(generator.getCenter(), generator.getRadius(), 1);
 
-          microClusters.add(s);
-          microClustersPoints.add(microPoints);
-          microClustersDecay.add(numGeneratedInstances);
-          int id = 0;
-          while (id < kernels.size()) {
-            if (kernels.get(id) == this)
-              break;
-            id++;
-          }
-          s.setGroundTruth(id);
+        microClusters.add(s);
+        microClustersPoints.add(microPoints);
+        microClustersDecay.add(numGeneratedInstances);
+        int id = 0;
+        while (id < kernels.size()) {
+          if (kernels.get(id) == this)
+            break;
+          id++;
         }
+        s.setGroundTruth(id);
       }
 
     }
@@ -301,10 +275,7 @@
     private void move() {
       if (currentMovementSteps < totalMovementSteps) {
         currentMovementSteps++;
-        if (moveVector == null) {
-          return;
-        }
-        else {
+        if (moveVector != null) {
           double[] center = generator.getCenter();
           boolean outofbounds = true;
           while (outofbounds) {
@@ -426,24 +397,17 @@
       double radius = kernelRadiiOption.getValue();
       double avgWeight = 1.0 / numClusterOption.getValue();
       double weight = avgWeight + avgWeight * densityRangeOption.getValue() * instanceRandom.nextDouble();
-      SphereCluster spcluster = null;
+      SphereCluster spcluster;
 
       double[] center = generator.getCenter();
       spcluster = new SphereCluster(center, radius, weight);
 
-      if (spcluster != null) {
-        GeneratorCluster gc = new GeneratorCluster(clusterIdCounter++, spcluster);
-        gc.isSplitting = true;
-        kernels.add(gc);
-        normalizeWeights();
-        numActiveKernels++;
-        return "Split from Kernel " + generator.getId();
-      }
-      else {
-        System.out.println("Tried to split new kernel from C" + generator.getId() +
-            ". Not enough room for new cluster, decrease average radii, number of clusters or enable overlap.");
-        return "";
-      }
+      GeneratorCluster gc = new GeneratorCluster(clusterIdCounter++, spcluster);
+      gc.isSplitting = true;
+      kernels.add(gc);
+      normalizeWeights();
+      numActiveKernels++;
+      return "Split from Kernel " + generator.getId();
     }
 
     private String fadeOut() {
@@ -493,18 +457,18 @@
     numGeneratedInstances = 0;
     clusterIdCounter = 0;
     mergeClusterA = mergeClusterB = null;
-    kernels = new AutoExpandVector<GeneratorCluster>();
+    kernels = new AutoExpandVector<>();
 
     initKernels();
   }
 
   protected void generateHeader() { // 2013/06/02: Noise label
-    ArrayList<Attribute> attributes = new ArrayList<Attribute>();
+    ArrayList<Attribute> attributes = new ArrayList<>();
     for (int i = 0; i < this.numAttsOption.getValue(); i++) {
       attributes.add(new Attribute("att" + (i + 1)));
     }
 
-    ArrayList<String> classLabels = new ArrayList<String>();
+    ArrayList<String> classLabels = new ArrayList<>();
     for (int i = 0; i < this.numClusterOption.getValue(); i++) {
       classLabels.add("class" + (i + 1));
     }
@@ -531,7 +495,7 @@
 
     // make room for the classlabel
     double[] values_new = new double[numAttsOption.getValue()]; // +1
-    double[] values = null;
+    double[] values;
     int clusterChoice = -1;
 
     if (instanceRandom.nextDouble() > noiseLevelOption.getValue()) {
@@ -539,7 +503,7 @@
       values = kernels.get(clusterChoice).generator.sample(instanceRandom).toDoubleArray();
     }
     else {
-      // get ranodm noise point
+      // get random noise point
       values = getNoisePoint();
     }
 
@@ -569,8 +533,8 @@
 
   public Clustering getGeneratingClusters() {
     Clustering clustering = new Clustering();
-    for (int c = 0; c < kernels.size(); c++) {
-      clustering.add(kernels.get(c).generator);
+    for (GeneratorCluster kernel : kernels) {
+      clustering.add(kernel.generator);
     }
     return clustering;
   }
@@ -579,11 +543,11 @@
     Clustering clustering = new Clustering();
     int id = 0;
 
-    for (int c = 0; c < kernels.size(); c++) {
-      for (int m = 0; m < kernels.get(c).microClusters.size(); m++) {
-        kernels.get(c).microClusters.get(m).setId(id);
-        kernels.get(c).microClusters.get(m).setGroundTruth(kernels.get(c).generator.getId());
-        clustering.add(kernels.get(c).microClusters.get(m));
+    for (GeneratorCluster kernel : kernels) {
+      for (int m = 0; m < kernel.microClusters.size(); m++) {
+        kernel.microClusters.get(m).setId(id);
+        kernel.microClusters.get(m).setGroundTruth(kernel.generator.getId());
+        clustering.add(kernel.microClusters.get(m));
         id++;
       }
     }
@@ -595,8 +559,8 @@
   /**************************** EVENTS ******************************************/
   private void eventScheduler() {
 
-    for (int i = 0; i < kernels.size(); i++) {
-      kernels.get(i).updateKernel();
+    for (GeneratorCluster kernel : kernels) {
+      kernel.updateKernel();
     }
 
     nextEventCounter--;
@@ -604,8 +568,8 @@
     // should this be randomized as well???
     if (nextEventCounter % kernelMovePointFrequency == 0) {
       // move kernels
-      for (int i = 0; i < kernels.size(); i++) {
-        kernels.get(i).move();
+      for (GeneratorCluster kernel : kernels) {
+        kernel.move();
         // overlapControl();
       }
     }
@@ -715,8 +679,7 @@
     while (kernels.get(id).kill != -1)
       id = instanceRandom.nextInt(kernels.size());
 
-    String message = kernels.get(id).fadeOut();
-    return message;
+    return kernels.get(id).fadeOut();
   }
 
   private String fadeIn() {
@@ -782,9 +745,7 @@
     while (kernels.get(id).kill != -1)
       id = instanceRandom.nextInt(kernels.size());
 
-    String message = kernels.get(id).splitKernel();
-
-    return message;
+    return kernels.get(id).splitKernel();
   }
 
   private String mergeKernels(int steps) {
@@ -796,10 +757,7 @@
       // System.out.println("DisredDist:"+(2*diseredDist));
       for (int i = 0; i < kernels.size(); i++) {
         for (int j = 0; j < i; j++) {
-          if (kernels.get(i).kill != -1 || kernels.get(j).kill != -1) {
-            continue;
-          }
-          else {
+          if (kernels.get(i).kill == -1 && kernels.get(j).kill == -1) {
             double kernelDist = kernels.get(i).generator.getCenterDistance(kernels.get(j).generator);
             double d = kernelDist - 2 * diseredDist;
             // System.out.println("Dist:"+i+" / "+j+" "+d);
@@ -866,10 +824,10 @@
       incluster = false;
       if (!noiseInClusterOption.isSet() && counter > 0) {
         counter--;
-        for (int c = 0; c < kernels.size(); c++) {
-          for (int m = 0; m < kernels.get(c).microClusters.size(); m++) {
+        for (GeneratorCluster kernel : kernels) {
+          for (int m = 0; m < kernel.microClusters.size(); m++) {
             Instance inst = new DenseInstance(1, sample);
-            if (kernels.get(c).microClusters.get(m).getInclusionProbability(inst) > 0) {
+            if (kernel.microClusters.get(m).getInclusionProbability(inst) > 0) {
               incluster = true;
               break;
             }
@@ -904,11 +862,11 @@
 
   private void normalizeWeights() {
     double sumWeights = 0.0;
-    for (int i = 0; i < kernels.size(); i++) {
-      sumWeights += kernels.get(i).generator.getWeight();
+    for (GeneratorCluster kernel : kernels) {
+      sumWeights += kernel.generator.getWeight();
     }
-    for (int i = 0; i < kernels.size(); i++) {
-      kernels.get(i).generator.setWeight(kernels.get(i).generator.getWeight() / sumWeights);
+    for (GeneratorCluster kernel : kernels) {
+      kernel.generator.setWeight(kernel.generator.getWeight() / sumWeights);
     }
   }
 
@@ -919,14 +877,14 @@
   /** Add a listener */
   synchronized public void addClusterChangeListener(ClusterEventListener l) {
     if (listeners == null)
-      listeners = new Vector();
+      listeners = new Vector<>();
     listeners.addElement(l);
   }
 
   /** Remove a listener */
   synchronized public void removeClusterChangeListener(ClusterEventListener l) {
     if (listeners == null)
-      listeners = new Vector();
+      listeners = new Vector<>();
     listeners.removeElement(l);
   }
 
@@ -940,9 +898,9 @@
 
       // make a copy of the listener list in case
       // anyone adds/removes listeners
-      Vector targets;
+      Vector<ClusterEventListener> targets;
       synchronized (this) {
-        targets = (Vector) listeners.clone();
+        targets = (Vector<ClusterEventListener>) listeners.clone();
       }
 
       // walk through the listener list and
diff --git a/samoa-api/src/main/java/org/apache/samoa/streams/fs/HDFSFileStreamSource.java b/samoa-api/src/main/java/org/apache/samoa/streams/fs/HDFSFileStreamSource.java
index 67d5e79..07050eb 100644
--- a/samoa-api/src/main/java/org/apache/samoa/streams/fs/HDFSFileStreamSource.java
+++ b/samoa-api/src/main/java/org/apache/samoa/streams/fs/HDFSFileStreamSource.java
@@ -40,7 +40,7 @@
 public class HDFSFileStreamSource implements FileStreamSource {
 
   /**
-   * 
+   *
    */
   private static final long serialVersionUID = -3887354805787167400L;
 
@@ -63,7 +63,7 @@
         org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
     config.set("fs.file.impl",
         org.apache.hadoop.fs.LocalFileSystem.class.getName());
-    this.filePaths = new ArrayList<String>();
+    this.filePaths = new ArrayList<>();
     Path hdfsPath = new Path(path);
     FileSystem fs;
     try {
@@ -72,14 +72,14 @@
       if (fileStat.isDirectory()) {
         Path filterPath = hdfsPath;
         if (ext != null) {
-          filterPath = new Path(path.toString(), "*." + ext);
+          filterPath = new Path(path, "*." + ext);
         } else {
-          filterPath = new Path(path.toString(), "*");
+          filterPath = new Path(path, "*");
         }
         FileStatus[] filesInDir = fs.globStatus(filterPath);
-        for (int i = 0; i < filesInDir.length; i++) {
-          if (filesInDir[i].isFile()) {
-            filePaths.add(filesInDir[i].getPath().toString());
+        for (FileStatus aFilesInDir : filesInDir) {
+          if (aFilesInDir.isFile()) {
+            filePaths.add(aFilesInDir.getPath().toString());
           }
         }
       } else {
diff --git a/samoa-api/src/main/java/org/apache/samoa/streams/fs/LocalFileStreamSource.java b/samoa-api/src/main/java/org/apache/samoa/streams/fs/LocalFileStreamSource.java
index 129d247..addd232 100644
--- a/samoa-api/src/main/java/org/apache/samoa/streams/fs/LocalFileStreamSource.java
+++ b/samoa-api/src/main/java/org/apache/samoa/streams/fs/LocalFileStreamSource.java
@@ -25,7 +25,6 @@
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.file.FileSystems;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -49,12 +48,12 @@
   }
 
   public void init(String path, String ext) {
-    this.filePaths = new ArrayList<String>();
+    this.filePaths = new ArrayList<>();
     File fileAtPath = new File(path);
     if (fileAtPath.isDirectory()) {
       File[] filesInDir = fileAtPath.listFiles(new FileExtensionFilter(ext));
-      for (int i = 0; i < filesInDir.length; i++) {
-        filePaths.add(filesInDir[i].getAbsolutePath());
+      for (File aFilesInDir : filesInDir) {
+        filePaths.add(aFilesInDir.getAbsolutePath());
       }
     }
     else {
diff --git a/samoa-api/src/main/java/org/apache/samoa/streams/generators/HyperplaneGenerator.java b/samoa-api/src/main/java/org/apache/samoa/streams/generators/HyperplaneGenerator.java
index 8274040..3ac68ce 100644
--- a/samoa-api/src/main/java/org/apache/samoa/streams/generators/HyperplaneGenerator.java
+++ b/samoa-api/src/main/java/org/apache/samoa/streams/generators/HyperplaneGenerator.java
@@ -83,8 +83,6 @@
 
   protected int[] sigma;
 
-  public int numberInstance;
-
   @Override
   protected void prepareForUseImpl(TaskMonitor monitor, ObjectRepository repository) {
     monitor.setCurrentActivity("Preparing hyperplane...", -1.0);
@@ -160,7 +158,7 @@
 
   private void addDrift() {
     for (int i = 0; i < this.numDriftAttsOption.getValue(); i++) {
-      this.weights[i] += (double) ((double) sigma[i]) * ((double) this.magChangeOption.getValue());
+      this.weights[i] += ((double) sigma[i]) * this.magChangeOption.getValue();
       if (// this.weights[i] >= 1.0 || this.weights[i] <= 0.0 ||
       (1 + (this.instanceRandom.nextInt(100))) <= this.sigmaPercentageOption.getValue()) {
         this.sigma[i] *= -1;
diff --git a/samoa-local/src/test/java/org/apache/samoa/AlgosTest.java b/samoa-local/src/test/java/org/apache/samoa/AlgosTest.java
index f621aba..38099a8 100644
--- a/samoa-local/src/test/java/org/apache/samoa/AlgosTest.java
+++ b/samoa-local/src/test/java/org/apache/samoa/AlgosTest.java
@@ -20,7 +20,6 @@
  * #L%
  */
 
-import org.apache.samoa.LocalDoTask;
 import org.junit.Test;
 import org.apache.samoa.TestParams;