diff --git a/xchart/src/main/java/org/knowm/xchart/Chart.java b/xchart/src/main/java/org/knowm/xchart/Chart.java
index b19f2f09632c3592cf11f2cdbdadadd333df5841..94c1b1ef90142350ec94de7a80b663e3124433f7 100644
--- a/xchart/src/main/java/org/knowm/xchart/Chart.java
+++ b/xchart/src/main/java/org/knowm/xchart/Chart.java
@@ -103,30 +103,30 @@ public class Chart {
   }
 
   /**
-   * Add a series to the chart using Collections
+   * Add a Number series to the chart using Collections with error bars
    *
    * @param seriesName
    * @param xData the X-Axis data
    * @param yData the Y-Axis data
+   * @param errorBars the error bar data
    * @return A Series object that you can set properties on
    */
-  public Series addSeries(String seriesName, List<?> xData, List<? extends Number> yData) {
+  public Series addSeries(String seriesName, List<?> xData, List<? extends Number> yData, List<? extends Number> errorBars) {
 
-    return chartPainter.getAxisPair().addSeries(seriesName, xData, yData, null);
+    return chartPainter.getAxisPair().addSeries(seriesName, xData, yData, errorBars);
   }
 
   /**
-   * Add a Number series to the chart using Collections with error bars
+   * Add a series to the chart using Collections
    *
    * @param seriesName
    * @param xData the X-Axis data
    * @param yData the Y-Axis data
-   * @param errorBars the error bar data
    * @return A Series object that you can set properties on
    */
-  public Series addSeries(String seriesName, List<?> xData, List<? extends Number> yData, List<? extends Number> errorBars) {
+  public Series addSeries(String seriesName, List<?> xData, List<? extends Number> yData) {
 
-    return chartPainter.getAxisPair().addSeries(seriesName, xData, yData, errorBars);
+    return addSeries(seriesName, xData, yData, null);
   }
 
   /**
@@ -172,7 +172,7 @@ public class Chart {
       }
     }
 
-    return chartPainter.getAxisPair().addSeries(seriesName, xDataNumber, yDataNumber, errorBarDataNumber);
+    return addSeries(seriesName, xDataNumber, yDataNumber, errorBarDataNumber);
   }
 
   /**
@@ -218,7 +218,7 @@ public class Chart {
       }
     }
 
-    return chartPainter.getAxisPair().addSeries(seriesName, xDataNumber, yDataNumber, errorBarDataNumber);
+    return addSeries(seriesName, xDataNumber, yDataNumber, errorBarDataNumber);
   }
 
   /**
diff --git a/xchart/src/main/java/org/knowm/xchart/Series.java b/xchart/src/main/java/org/knowm/xchart/Series.java
index f5d1d66f0654d02a8aafb82a1a2bfa342aa400d3..63fa0799d04062451c00893bb30d7cbae633e43d 100644
--- a/xchart/src/main/java/org/knowm/xchart/Series.java
+++ b/xchart/src/main/java/org/knowm/xchart/Series.java
@@ -35,9 +35,11 @@ import org.knowm.xchart.internal.style.SeriesColorMarkerLineStyle;
 public class Series {
 
   public enum SeriesType {
-    Line, Area
+    Line, Scatter, Area, Bar
   }
 
+  private SeriesType seriesType = null;
+
   private String name = "";
 
   private List<?> xData;
@@ -46,8 +48,6 @@ public class Series {
   private List<? extends Number> yData;
   private AxisType yAxisType;
 
-  private SeriesType seriesType;
-
   private List<? extends Number> errorBars;
 
   /** the minimum value of axis range */
@@ -108,6 +108,7 @@ public class Series {
     stroke = seriesColorMarkerLineStyle.getStroke();
 
     calculateMinMax();
+
   }
 
   /**
diff --git a/xchart/src/main/java/org/knowm/xchart/StyleManager.java b/xchart/src/main/java/org/knowm/xchart/StyleManager.java
index ad084568bbefe93829379dcf7674d9431e790948..a7dc1ed09954ac0ba8122cb770c3f9fcc02c6860 100644
--- a/xchart/src/main/java/org/knowm/xchart/StyleManager.java
+++ b/xchart/src/main/java/org/knowm/xchart/StyleManager.java
@@ -34,9 +34,6 @@ import org.knowm.xchart.internal.style.XChartTheme;
  */
 public class StyleManager {
 
-  /**
-   * Note: For Area Charts, the X-Axis data must be in ascending order.
-   */
   public enum ChartType {
 
     Line, Scatter, Area, Bar
diff --git a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/AxisPair.java
index a874dd98711f64746d750f392ae26f0000ac4149..ca332510bef101406ebf1c76c924969dbe60e170 100644
--- a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/AxisPair.java
+++ b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/AxisPair.java
@@ -124,12 +124,33 @@ public class AxisPair implements ChartPart {
       series = new Series(seriesName, generatedXData, xAxis.getAxisType(), yData, yAxis.getAxisType(), errorBars, seriesColorMarkerLineStyleCycler.getNextSeriesColorMarkerLineStyle());
     }
 
+    // set series type based on chart type, but only if it's not explicitly set on the series yet.
     switch (chartPainter.getStyleManager().getChartType()) {
+    case Line:
+      if (series.getSeriesType() == null) {
+        series.setSeriesType(Series.SeriesType.Line);
+      }
+      break;
     case Area:
-      series.setSeriesType(Series.SeriesType.Area);
+      if (series.getSeriesType() == null) {
+        series.setSeriesType(Series.SeriesType.Area);
+      }
+      break;
+    case Scatter:
+      if (series.getSeriesType() == null) {
+        series.setSeriesType(Series.SeriesType.Scatter);
+      }
+      break;
+    case Bar:
+      if (series.getSeriesType() == null) {
+        series.setSeriesType(Series.SeriesType.Bar);
+      }
+      break;
+    default:
+      if (series.getSeriesType() == null) {
+        series.setSeriesType(Series.SeriesType.Line);
+      }
       break;
-    case Line:
-      series.setSeriesType(Series.SeriesType.Line);
     }
 
     if (seriesMap.keySet().contains(seriesName)) {
diff --git a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/Legend.java
index c8083fc30f3d4ef193845a04fa19110d3e5e45e8..7827a3db1e308dcf2c299c3e06c10c1c884a631f 100644
--- a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/Legend.java
+++ b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/Legend.java
@@ -28,7 +28,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.knowm.xchart.Series;
-import org.knowm.xchart.StyleManager.ChartType;
 
 /**
  * @author timmolter
@@ -71,7 +70,7 @@ public class Legend implements ChartPart {
       return;
     }
 
-    boolean isBar = getChartPainter().getStyleManager().getChartType() == ChartType.Bar;
+    boolean containsBar = false;
 
     // determine legend text content max width
     double legendTextContentMaxWidth = 0;
@@ -90,14 +89,18 @@ public class Legend implements ChartPart {
       }
 
       blockHeight -= MULTI_LINE_SPACE;
-      blockHeight = Math.max(blockHeight, isBar ? BOX_SIZE : getChartPainter().getStyleManager().getMarkerSize());
+      blockHeight = Math.max(blockHeight, series.getSeriesType() == Series.SeriesType.Bar ? BOX_SIZE : getChartPainter().getStyleManager().getMarkerSize());
 
       legendContentHeight += blockHeight + getChartPainter().getStyleManager().getLegendPadding();
+
+      if (series.getSeriesType() == Series.SeriesType.Bar) {
+        containsBar = true;
+      }
     }
 
     // determine legend content width
     double legendContentWidth = 0;
-    if (!isBar) {
+    if (!containsBar) {
       legendContentWidth = getChartPainter().getStyleManager().getLegendSeriesLineLength() + getChartPainter().getStyleManager().getLegendPadding() + legendTextContentMaxWidth;
     }
     else {
@@ -181,12 +184,12 @@ public class Legend implements ChartPart {
       }
       blockHeight -= MULTI_LINE_SPACE;
 
-      blockHeight = Math.max(blockHeight, getChartPainter().getStyleManager().getChartType() == ChartType.Bar ? BOX_SIZE : getChartPainter().getStyleManager().getMarkerSize());
+      blockHeight = Math.max(blockHeight, series.getSeriesType() == Series.SeriesType.Bar ? BOX_SIZE : getChartPainter().getStyleManager().getMarkerSize());
 
-      if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) {
+      if (series.getSeriesType() != Series.SeriesType.Bar) {
 
         // paint line
-        if (getChartPainter().getStyleManager().getChartType() != ChartType.Scatter && series.getStroke() != null) {
+        if (series.getSeriesType() != Series.SeriesType.Scatter && series.getStroke() != null) {
           g.setColor(series.getStrokeColor());
           g.setStroke(series.getStroke());
           Shape line = new Line2D.Double(startx, starty + blockHeight / 2.0, startx + getChartPainter().getStyleManager().getLegendSeriesLineLength(), starty + blockHeight / 2.0);
@@ -206,7 +209,8 @@ public class Legend implements ChartPart {
 
         }
       }
-      else {
+      else { // bar type series
+
         // paint little box
         if (series.getStroke() != null) {
           g.setColor(series.getStrokeColor());
@@ -220,12 +224,12 @@ public class Legend implements ChartPart {
         // g.draw(boundsTemp);
       }
 
-      // paint series text
+      // paint series text /////////////////////////////////////////////////////
       g.setColor(chartPainter.getStyleManager().getChartFontColor());
 
       double multiLineOffset = 0.0;
 
-      if (getChartPainter().getStyleManager().getChartType() != ChartType.Bar) {
+      if (series.getSeriesType() != Series.SeriesType.Bar) {
 
         double x = startx + getChartPainter().getStyleManager().getLegendSeriesLineLength() + getChartPainter().getStyleManager().getLegendPadding();
         for (Map.Entry<String, Rectangle2D> entry : seriesTextBounds.entrySet()) {
@@ -253,7 +257,7 @@ public class Legend implements ChartPart {
 
         starty += blockHeight + getChartPainter().getStyleManager().getLegendPadding();
       }
-      else {
+      else { // bar type series
 
         final double x = startx + BOX_SIZE + getChartPainter().getStyleManager().getLegendPadding();
         for (Map.Entry<String, Rectangle2D> entry : seriesTextBounds.entrySet()) {
diff --git a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/PlotContentLineChart.java b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/PlotContentLineChart.java
index 2dd4d2b46effc488532e50fcee4911d2d41ed547..d496691c23faf330510ab39f4c0bc10b5ca4922b 100644
--- a/xchart/src/main/java/org/knowm/xchart/internal/chartpart/PlotContentLineChart.java
+++ b/xchart/src/main/java/org/knowm/xchart/internal/chartpart/PlotContentLineChart.java
@@ -28,7 +28,6 @@ import java.util.Iterator;
 
 import org.knowm.xchart.Series;
 import org.knowm.xchart.StyleManager;
-import org.knowm.xchart.StyleManager.ChartType;
 import org.knowm.xchart.internal.Utils;
 import org.knowm.xchart.internal.chartpart.Axis.AxisType;
 
@@ -193,18 +192,21 @@ public class PlotContentLineChart extends PlotContent {
         // System.out.println(yTransform);
 
         // paint line
-        if (series.getStroke() != null && getChartPainter().getStyleManager().getChartType() != ChartType.Scatter) {
+        if (Series.SeriesType.Line.equals(series.getSeriesType()) || Series.SeriesType.Area.equals(series.getSeriesType())) {
 
-          if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
-            g.setColor(series.getStrokeColor());
-            g.setStroke(series.getStroke());
-            Shape line = new Line2D.Double(previousX, previousY, xOffset, yOffset);
-            g.draw(line);
+          if (series.getStroke() != null) {
+
+            if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {
+              g.setColor(series.getStrokeColor());
+              g.setStroke(series.getStroke());
+              Shape line = new Line2D.Double(previousX, previousY, xOffset, yOffset);
+              g.draw(line);
+            }
           }
         }
 
         // paint area
-        if (getChartPainter().getStyleManager().getChartType() == ChartType.Area || Series.SeriesType.Area.equals(series.getSeriesType())) {
+        if (Series.SeriesType.Area.equals(series.getSeriesType())) {
 
           if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) {