diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
index 5b6a061a0f06a7cca9f06fbbb1eeb110f5ba3738..2f02aaa04c0fc65691b193cbb5fed9f407a3043e 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/area/AreaChart01.java
@@ -51,6 +51,7 @@ public class AreaChart01 implements ExampleChart {
 
     // Customize Chart
     chart.getStyleManager().setLegendPosition(LegendPosition.InsideNW);
+    chart.getStyleManager().setAxisTitlesVisible(false);
 
     return chart;
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
index 8ecc754b02a6a792239f97244df2297a8c670c85..03f6c8d33a886b346c1b7fc27687b255a718b86e 100644
--- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
+++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java
@@ -45,7 +45,7 @@ public class StyleManager {
 
   public enum LegendPosition {
 
-    OutsideW, InsideNW, InsideNE, InsideSE, InsideSW
+    OutsideE, InsideNW, InsideNE, InsideSE, InsideSW
   }
 
   public enum ChartTheme {
@@ -567,7 +567,6 @@ public class StyleManager {
 
     this.xAxisTicksVisible = isVisible;
     this.yAxisTicksVisible = isVisible;
-
   }
 
   /**
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
index cc033ca1a6d3103f0f66b725ae0e9749329ff283..d6b8dcfa1be376f09e9231033d3c3dfc2d019ae9 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Axis.java
@@ -80,8 +80,8 @@ public class Axis implements ChartPart {
 
     this.axisPair = axisPair;
     this.direction = direction;
-    axisTitle = new AxisTitle(this, direction == Direction.X ? getChartPainter().getStyleManager().isXAxisTitleVisible() : getChartPainter().getStyleManager().isYAxisTitleVisible());
-    axisTick = new AxisTick(this, direction == Direction.X ? getChartPainter().getStyleManager().isXAxisTicksVisible() : getChartPainter().getStyleManager().isYAxisTicksVisible());
+    axisTitle = new AxisTitle(this);
+    axisTick = new AxisTick(this);
   }
 
   /**
@@ -193,12 +193,13 @@ public class Axis implements ChartPart {
       int yOffset = (int) (axisPair.getyAxis().getBounds().getY() + axisPair.getyAxis().getBounds().getHeight());
 
       int chartLegendWidth = 0;
-      if (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideW) {
+      if (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideE) {
         chartLegendWidth = getChartPainter().getChartLegend().getSizeHint()[0];
       }
 
-      int width = (int) (getChartPainter().getWidth() - axisPair.getyAxis().getBounds().getWidth() - chartLegendWidth - (getChartPainter().getStyleManager().isLegendVisible() ? 3 : 2)
-          * getChartPainter().getStyleManager().getChartPadding() - getChartPainter().getStyleManager().getPlotPadding());
+      int width = (int) (getChartPainter().getWidth() - axisPair.getyAxis().getBounds().getWidth() - chartLegendWidth - 2 * getChartPainter().getStyleManager().getChartPadding()
+          - getChartPainter().getStyleManager().getPlotPadding() - (getChartPainter().getStyleManager().getLegendPosition() == LegendPosition.OutsideE ? getChartPainter().getStyleManager()
+          .getChartPadding() : 0));
       int height = this.getSizeHint();
       Rectangle xAxisRectangle = new Rectangle(xOffset, yOffset, width, height);
       this.paintZone = xAxisRectangle;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
index b7fa1d222062e9bbe39dbb4bdbfacb93ff6d6865..100a15207668e7830977b489e6f1caf21f6723d3 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java
@@ -38,7 +38,7 @@ public class AxisPair implements ChartPart {
 
   private Map<Integer, Series> seriesMap = new LinkedHashMap<Integer, Series>();
 
-  private int seriesCount;
+  private int seriesCount = 0;
 
   private Axis xAxis;
   private Axis yAxis;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
index 2fd2bf844881200846e2e54dc2ecaea55357cdac..9cb22fdc19dff4cc861a4a3d667405112206cf24 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTick.java
@@ -37,10 +37,7 @@ public class AxisTick implements ChartPart {
   private AxisTickMarks axisTickMarks;
 
   /** the bounds */
-  private Rectangle bounds;
-
-  /** the visibility state of axistick */
-  private boolean isVisible = true; // default to true
+  private Rectangle bounds = new Rectangle();;
 
   AxisTickCalculator gridStep = null;
 
@@ -48,12 +45,10 @@ public class AxisTick implements ChartPart {
    * Constructor
    * 
    * @param axis
-   * @param isVisible
    */
-  protected AxisTick(Axis axis, boolean isVisible) {
+  protected AxisTick(Axis axis) {
 
     this.axis = axis;
-    this.isVisible = isVisible;
     axisTickLabels = new AxisTickLabels(this);
     axisTickMarks = new AxisTickMarks(this);
   }
@@ -67,13 +62,11 @@ public class AxisTick implements ChartPart {
   @Override
   public void paint(Graphics2D g) {
 
-    bounds = new Rectangle();
-
     int workingSpace = 0;
     if (axis.getDirection() == Axis.Direction.Y) {
       workingSpace = (int) axis.getPaintZone().getHeight(); // number of pixels the axis has to work with for drawing AxisTicks
       // System.out.println("workingspace= " + workingSpace);
-    } else {
+    } else if (axis.getDirection() == Axis.Direction.X) {
       workingSpace = (int) axis.getPaintZone().getWidth(); // number of pixels the axis has to work with for drawing AxisTicks
       // System.out.println("workingspace= " + workingSpace);
     }
@@ -100,23 +93,37 @@ public class AxisTick implements ChartPart {
 
     }
 
-    if (isVisible) {
+    if (axis.getDirection() == Axis.Direction.Y && getChartPainter().getStyleManager().isYAxisTicksVisible()) {
+
+      axisTickLabels.paint(g);
+      axisTickMarks.paint(g);
+
+      bounds = new Rectangle(
+
+      (int) axisTickLabels.getBounds().getX(),
+
+      (int) (axisTickLabels.getBounds().getY()),
+
+      (int) (axisTickLabels.getBounds().getWidth() + getChartPainter().getStyleManager().getAxisTickPadding() + axisTickMarks.getBounds().getWidth()),
+
+      (int) (axisTickMarks.getBounds().getHeight())
+
+      );
+
+      // g.setColor(Color.red);
+      // g.draw(bounds);
+
+    } else if (axis.getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) {
 
       axisTickLabels.paint(g);
       axisTickMarks.paint(g);
 
-      if (axis.getDirection() == Axis.Direction.Y) {
-        bounds = new Rectangle((int) axisTickLabels.getBounds().getX(), (int) (axisTickLabels.getBounds().getY()), (int) (axisTickLabels.getBounds().getWidth()
-            + getChartPainter().getStyleManager().getAxisTickPadding() + axisTickMarks.getBounds().getWidth()), (int) (axisTickMarks.getBounds().getHeight()));
-        // g.setColor(Color.red);
-        // g.draw(bounds);
-      } else {
-        bounds = new Rectangle((int) axisTickMarks.getBounds().getX(), (int) (axisTickMarks.getBounds().getY()), (int) axisTickLabels.getBounds().getWidth(), (int) (axisTickMarks.getBounds()
-            .getHeight()
-            + getChartPainter().getStyleManager().getAxisTickPadding() + axisTickLabels.getBounds().getHeight()));
-        // g.setColor(Color.red);
-        // g.draw(bounds);
-      }
+      bounds = new Rectangle((int) axisTickMarks.getBounds().getX(), (int) (axisTickMarks.getBounds().getY()), (int) axisTickLabels.getBounds().getWidth(), (int) (axisTickMarks.getBounds()
+          .getHeight()
+          + getChartPainter().getStyleManager().getAxisTickPadding() + axisTickLabels.getBounds().getHeight()));
+      // g.setColor(Color.red);
+      // g.draw(bounds);
+
     }
 
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
index 90f642c34b70c70131af856afc7d65ea044d2763..5edf008c8987bed54cb0514403c04f3d50e72602 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickLabels.java
@@ -29,7 +29,7 @@ public class AxisTickLabels implements ChartPart {
   private final AxisTick axisTick;
 
   /** the bounds */
-  private Rectangle bounds;
+  private Rectangle bounds = new Rectangle();
 
   /**
    * Constructor
@@ -50,12 +50,11 @@ public class AxisTickLabels implements ChartPart {
   @Override
   public void paint(Graphics2D g) {
 
-    bounds = new Rectangle();
     g.setFont(getChartPainter().getStyleManager().getAxisTickLabelsFont());
 
     g.setColor(getChartPainter().getStyleManager().getAxisTickLabelsColor());
 
-    if (axisTick.getAxis().getDirection() == Axis.Direction.Y) { // Y-Axis
+    if (axisTick.getAxis().getDirection() == Axis.Direction.Y && getChartPainter().getStyleManager().isYAxisTicksVisible()) { // Y-Axis
 
       int xOffset = (int) (axisTick.getAxis().getAxisTitle().getBounds().getX() + axisTick.getAxis().getAxisTitle().getBounds().getWidth());
       int yOffset = (int) (axisTick.getAxis().getPaintZone().getY());
@@ -84,7 +83,7 @@ public class AxisTickLabels implements ChartPart {
       // g.setColor(Color.blue);
       // g.draw(bounds);
 
-    } else { // X-Axis
+    } else if (axisTick.getAxis().getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) { // X-Axis
 
       int xOffset = (int) (axisTick.getAxis().getPaintZone().getX());
       int yOffset = (int) (axisTick.getAxis().getAxisTitle().getBounds().getY());
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
index 5e1c668fdf8404b8e1d4043efe84bd05a3023660..9741344ebcbbbd9f62704915b39f57acb76c5240 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTickMarks.java
@@ -27,7 +27,7 @@ public class AxisTickMarks implements ChartPart {
   private AxisTick axisTick;
 
   /** the bounds */
-  private Rectangle bounds;
+  private Rectangle bounds = new Rectangle();
 
   /**
    * Constructor
@@ -48,12 +48,10 @@ public class AxisTickMarks implements ChartPart {
   @Override
   public void paint(Graphics2D g) {
 
-    bounds = new Rectangle();
-
     g.setColor(getChartPainter().getStyleManager().getAxisTickMarksColor());
     g.setStroke(getChartPainter().getStyleManager().getAxisTickMarksStroke());
 
-    if (axisTick.getAxis().getDirection() == Axis.Direction.Y) { // Y-Axis
+    if (axisTick.getAxis().getDirection() == Axis.Direction.Y && getChartPainter().getStyleManager().isYAxisTicksVisible()) { // Y-Axis
 
       int xOffset = (int) (axisTick.getAxisTickLabels().getBounds().getX() + axisTick.getAxisTickLabels().getBounds().getWidth() + getChartPainter().getStyleManager().getAxisTickPadding());
       int yOffset = (int) (axisTick.getAxis().getPaintZone().getY());
@@ -82,7 +80,7 @@ public class AxisTickMarks implements ChartPart {
       // g.setColor(Color.yellow);
       // g.draw(bounds);
 
-    } else { // X-Axis
+    } else if (axisTick.getAxis().getDirection() == Axis.Direction.X && getChartPainter().getStyleManager().isXAxisTicksVisible()) { // X-Axis
 
       int xOffset = (int) (axisTick.getAxis().getPaintZone().getX());
       // int yOffset = (int) (axisTick.getAxisTickLabels().getBounds().getY() - getChart().getStyleManager().getAxisTickPadding());
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
index baa42fea655fc78888cd1ababbe6ca55a77e02f8..a9e393c4a28138f1bdcc0fd0f6801b333122cc24 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisTitle.java
@@ -40,7 +40,7 @@ public class AxisTitle implements ChartPart {
    * 
    * @param axis the axis
    */
-  protected AxisTitle(Axis axis, boolean isVisible) {
+  protected AxisTitle(Axis axis) {
 
     this.axis = axis;
   }
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
index 71a8517e926cae9773157b52a246f7de1219bae1..fffe7f621cedc2466c022f1a3f966d45a2af427c 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Legend.java
@@ -121,7 +121,7 @@ public class Legend implements ChartPart {
       int xOffset = 0;
       int yOffset = 0;
       switch (chartPainter.getStyleManager().getLegendPosition()) {
-      case OutsideW:
+      case OutsideE:
         xOffset = chartPainter.getWidth() - legendBoxWidth - chartPainter.getStyleManager().getChartPadding();
         yOffset = (int) (chartPainter.getPlot().getBounds().getY() + (chartPainter.getPlot().getBounds().getHeight() - legendBoxHeight) / 2.0);
         break;
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
index da909005f9292a134ad8efcfa971cd0ef6e03cf8..b2d81a31283b0e9b38015ab51b004d0de21adc1d 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/Plot.java
@@ -59,8 +59,12 @@ public class Plot implements ChartPart {
     bounds = new Rectangle();
 
     // calculate bounds
-    int xOffset = (int) (chartPainter.getAxisPair().getyAxis().getBounds().getX() + chartPainter.getAxisPair().getyAxis().getBounds().getWidth() + (chartPainter.getStyleManager()
-        .isYAxisTicksVisible() ? (chartPainter.getStyleManager().getPlotPadding() + 1) : 0));
+    int xOffset = (int) (chartPainter.getAxisPair().getyAxis().getBounds().getX()
+
+    + chartPainter.getAxisPair().getyAxis().getBounds().getWidth()
+
+    + (chartPainter.getStyleManager().isYAxisTicksVisible() ? (chartPainter.getStyleManager().getPlotPadding() + 1) : 0));
+
     int yOffset = (int) (chartPainter.getAxisPair().getyAxis().getBounds().getY());
     int width = (int) chartPainter.getAxisPair().getxAxis().getBounds().getWidth();
     int height = (int) chartPainter.getAxisPair().getyAxis().getBounds().getHeight();
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
index 207d55be598fb1db51875a8be76ea6f55b74807e..a817902a9eb8aaf1df1c2b32e44143d37b6344db 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java
@@ -127,7 +127,7 @@ public class GGPlot2Theme implements Theme {
   @Override
   public LegendPosition getLegendPosition() {
 
-    return LegendPosition.OutsideW;
+    return LegendPosition.OutsideE;
   }
 
   // Chart Axes ///////////////////////////////
diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
index 5d9b542b073313a464759abf599004f88c10393c..c727d38fa38e1619b398991a40e93576c55aeafb 100644
--- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
+++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java
@@ -128,7 +128,7 @@ public class XChartTheme implements Theme {
   @Override
   public LegendPosition getLegendPosition() {
 
-    return LegendPosition.OutsideW;
+    return LegendPosition.OutsideE;
   }
 
   // Chart Axes ///////////////////////////////