diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
index 9a3758d7eb077fada48f5ce799aa52b1a76886a7..5bae95c0626bcafdd4c128a32c4bb972882a593f 100644
--- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java
@@ -31,6 +31,7 @@ import javax.swing.tree.TreeSelectionModel;
 import com.xeiam.xchart.XChartPanel;
 import com.xeiam.xchart.demo.charts.Example1;
 import com.xeiam.xchart.demo.charts.Example10;
+import com.xeiam.xchart.demo.charts.Example11;
 import com.xeiam.xchart.demo.charts.Example2;
 import com.xeiam.xchart.demo.charts.Example3;
 import com.xeiam.xchart.demo.charts.Example4;
@@ -162,6 +163,9 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
     chart = new DefaultMutableTreeNode(new ChartInfo("Example10 - Plots Hundreds of Series on One Plot", new Example10().getChart()));
     category.add(chart);
 
+    chart = new DefaultMutableTreeNode(new ChartInfo("Example11 - Using ChartBuilder to Make a Chart", new Example11().getChart()));
+    category.add(chart);
+
   }
 
   /**
diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java
new file mode 100644
index 0000000000000000000000000000000000000000..109ee4b447dd72c90d103e0d254c4ca502e14bf2
--- /dev/null
+++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright 2011-2013 Xeiam LLC.
+ *
+ * Licensed 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 com.xeiam.xchart.demo.charts;
+
+import com.xeiam.xchart.Chart;
+import com.xeiam.xchart.ChartBuilder;
+import com.xeiam.xchart.SwingWrapper;
+
+/**
+ * Using ChartBuilder to Make a Chart
+ * 
+ * @author timmolter
+ */
+public class Example11 implements ExampleChart {
+
+  public static void main(String[] args) {
+
+    ExampleChart exampleChart = new Example11();
+    Chart chart = exampleChart.getChart();
+    new SwingWrapper(chart).displayChart();
+  }
+
+  @Override
+  public Chart getChart() {
+
+    // Create Chart
+    Chart chart = new ChartBuilder().width(800).height(600).title("My Title").xAxisTitle("X").yAxisTitle("Y").showLegend(false).build();
+    chart.addSeries("x", new double[] { 1, 2, 5, 7 }, new double[] { -3, 6, 9, 0 });
+
+    return chart;
+  }
+}
diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java
index 9d2edcbc0748cd7e349e09768dc232b64ab3cee5..c955a7b2fa9a3a166342f5cb30280eb64e5b461e 100644
--- a/xchart/src/main/java/com/xeiam/xchart/Chart.java
+++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java
@@ -65,6 +65,20 @@ public class Chart {
     fontColor = ChartColor.getAWTColor(ChartColor.BLACK);
   }
 
+  /**
+   * Constructor
+   * 
+   * @param chartBuilder
+   */
+  public Chart(ChartBuilder chartBuilder) {
+
+    this(chartBuilder.width, chartBuilder.height);
+    setTitle(chartBuilder.title);
+    setXAxisTitle(chartBuilder.xAxisTitle);
+    setYAxisTitle(chartBuilder.yAxisTitle);
+    setLegendVisible(chartBuilder.isLegendVisible);
+  }
+
   /**
    * @param g
    * @param width
diff --git a/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..c582ce9c3863e74c44805d55760a8aded2e10dca
--- /dev/null
+++ b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2013 Xeiam LLC http://xeiam.com
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package com.xeiam.xchart;
+
+/**
+ * @author timmolter
+ */
+public class ChartBuilder {
+
+  protected int width = 800;
+  protected int height = 600;
+  protected String title = "";
+  protected String xAxisTitle = "";
+  protected String yAxisTitle = "";
+  protected boolean isLegendVisible = true;
+
+  public ChartBuilder width(int width) {
+
+    this.width = width;
+    return this;
+  }
+
+  public ChartBuilder height(int height) {
+
+    this.height = height;
+    return this;
+  }
+
+  public ChartBuilder title(String title) {
+
+    this.title = title;
+    return this;
+  }
+
+  public ChartBuilder xAxisTitle(String xAxisTitle) {
+
+    this.xAxisTitle = xAxisTitle;
+    return this;
+  }
+
+  public ChartBuilder yAxisTitle(String yAxisTitle) {
+
+    this.yAxisTitle = yAxisTitle;
+    return this;
+  }
+
+  public ChartBuilder showLegend(boolean isLegendVisible) {
+
+    this.isLegendVisible = isLegendVisible;
+    return this;
+  }
+
+  /**
+   * return fully built Chart
+   * 
+   * @return a Chart
+   */
+  public Chart build() {
+
+    return new Chart(this);
+  }
+
+}