    padding (.setChartPadding (int padding))
    title (set-chart-title-style! title)))
 
+(defn- set-plot-style!
+  [^Styler styler
+   {:keys [background-color border-color border-visible content-size]}]
+  (doto-cond
+   styler
+   background-color (.setPlotBackgroundColor (colors background-color background-color))
+   border-color (.setPlotBorderColor (colors border-color border-color))
+   (not (nil? border-visible)) (.setPlotBorderVisible (boolean border-visible))
+   content-size (.setPlotContentSize (double content-size))))
+
+(defn- set-series-style!
+  [^Styler styler
+   series]
+  ;; All of these are arrays, so we mutate them and set them back in.
+  (let [series-colors (.getSeriesColors styler)
+        series-lines (.getSeriesLines styler)
+        series-markers (.getSeriesMarkers styler)
+        series (vec series)]
+    (dotimes [i (count series)]
+      (let [{:keys [color stroke marker]} (series i)]
+        (when color
+          (aset series-colors i (colors color color)))
+        (when stroke
+          (aset series-lines i stroke))
+        (when marker
+          (aset series-markers i (markers marker marker)))))
+    (doto styler
+      (.setSeriesColors series-colors)
+      (.setSeriesLines series-lines)
+      (.setSeriesMarkers series-markers))))
+
+(defn- set-default-style!
+  [^Styler styler
+   {:keys [annotations-font annotations? chart plot legend series]}]
+  (doto-cond
+   styler
+   annotations-font (.setAnnotationsFont annotations-font)
+   (not (nil? annotations?)) (.setHasAnnotations (boolean annotations?))
+   chart (set-chart-style! chart)
+   legend (set-legend! legend)
+   plot (set-plot-style! plot)
+   series (set-series-style! series)))
+
 ;; TODO: Add in font as a shortcut to set all fonts not yet set.
 
 (defn xy-chart
   "Returns an xy-chart"
-  [{:keys [width height title series legend theme render-style chart-style
-           annotations-font]
-    :or {width 640 height 500}}]
-  {:pre [series]}
-  (let [chart (XYChart. width height)]
-    (doseq [[s-name data] series]
-      (if (sequential? data)
-        (apply add-series chart s-name data)
-        (let [{:keys [x y error-bars style]} data
-              {:keys [marker-color marker-type
-                      line-color line-style line-width
-                      fill-color show-in-legend render-style]} style]
-          (doto-cond
-           (if error-bars
-             (add-series chart s-name x y error-bars)
-             (add-series chart s-name x y))
-           marker-color (.setMarkerColor (colors marker-color marker-color))
-           marker-type (.setMarker (markers marker-type marker-type))
-           line-color (.setLineColor (colors line-color line-color))
-           line-style (.setLineStyle line-style)
-           line-width (.setLineWidth (float line-width))
-           fill-color (.setFillColor (colors fill-color fill-color))
-           (not (nil? show-in-legend)) (.setShowInLegend (boolean show-in-legend))
-           render-style (.setXYSeriesRenderStyle (xy-render-styles render-style))))))
-    (doto-cond
-     (.getStyler chart)
-     theme (.setTheme (themes theme theme))
-     render-style (.setDefaultSeriesRenderStyle (xy-render-styles render-style))
-     legend (set-legend! legend)
-     chart-style (set-chart-style! chart-style)
-     annotations-font (.setAnnotationsFont annotations-font))
-    (doto-cond
-     chart
-     title (.setTitle title))))
+  ([series]
+   (xy-chart series {}))
+  ([series
+    {:keys [width height title theme render-style]
+     :or {width 640 height 500}
+     :as styling}]
+   {:pre [series]}
+   (let [chart (XYChart. width height)]
+     (doseq [[s-name data] series]
+       (if (sequential? data)
+         (apply add-series chart s-name data)
+         (let [{:keys [x y error-bars style]} data
+               {:keys [marker-color marker-type
+                       line-color line-style line-width
+                       fill-color show-in-legend render-style]} style]
+           (doto-cond
+            (if error-bars
+              (add-series chart s-name x y error-bars)
+              (add-series chart s-name x y))
+            marker-color (.setMarkerColor (colors marker-color marker-color))
+            marker-type (.setMarker (markers marker-type marker-type))
+            line-color (.setLineColor (colors line-color line-color))
+            line-style (.setLineStyle line-style)
+            line-width (.setLineWidth (float line-width))
+            fill-color (.setFillColor (colors fill-color fill-color))
+            (not (nil? show-in-legend)) (.setShowInLegend (boolean show-in-legend))
+            render-style (.setXYSeriesRenderStyle (xy-render-styles render-style))))))
+     (doto-cond
+      (.getStyler chart)
+      theme (.setTheme (themes theme theme))
+      render-style (.setDefaultSeriesRenderStyle (xy-render-styles render-style)))
+     (set-default-style! (.getStyler chart) styling)
+     (doto-cond
+      chart
+      title (.setTitle title)))))
 
 (defn pie-chart
   "Returns a pie chart"
-  [{:keys [width height title series circular legend theme render-style
-           chart-style annotations-font]
-    :or {width 640 height 500}}]
-  {:pre [series]}
-  (let [chart (PieChart. width height)]
-    (doseq [[s-name num] series]
-      (.addSeries chart s-name num))
-    (doto-cond
-     (.getStyler chart)
-     theme (.setTheme (themes theme theme))
-     render-style (.setDefaultSeriesRenderStyle (pie-render-styles render-style))
-     (not (nil? circular)) (.setCircular circular)
-     legend (set-legend! legend)
-     chart-style (set-chart-style! chart-style)
-     annotations-font (.setAnnotationsFont annotations-font))
-    (doto-cond
-     chart
-     title (.setTitle title))))
+  ([series]
+   (pie-chart series {}))
+  ([series
+    {:keys [width height title circular legend theme render-style
+            chart-style annotations-font annotation-distance
+            start-angle]
+     :or {width 640 height 500}}]
+   {:pre [series]}
+   (let [chart (PieChart. width height)]
+     (doseq [[s-name num] series]
+       (.addSeries chart s-name num))
+     (doto-cond
+      (.getStyler chart)
+      theme (.setTheme (themes theme theme))
+      render-style (.setDefaultSeriesRenderStyle (pie-render-styles render-style))
+      legend (set-legend! legend)
+      chart-style (set-chart-style! chart-style)
+      annotations-font (.setAnnotationsFont annotations-font)
+      (not (nil? circular)) (.setCircular (boolean circular))
+      annotation-distance (.setAnnotationDistance (double annotation-distance))
+      start-angle (.setStartAngleInDegrees (double start-angle)))
+     (doto-cond
+      chart
+      title (.setTitle title)))))
 
 (defn view
   "Utility function to render one or more charts in a swing frame."

   (not (nil? visible)) (.setLegendVisible visible)))

(defn- set-chart-title-style!
  [styler
   {:keys [box-background-color box-border-color box-visible
           font padding visible]}]
  (doto-cond

                             PieSeries$PieSeriesRenderStyle
                             XYSeries$XYSeriesRenderStyle
                             XChartPanel)
           (org.knowm.xchart.style Styler
                                   Styler$LegendPosition
                                   GGPlot2Theme
                                   MatlabTheme
                                   XChartTheme)
