diff --git a/frontend/src/metabase/dashboard/components/DashboardGrid.jsx b/frontend/src/metabase/dashboard/components/DashboardGrid.jsx
index d219d5b65c15621541fc9405f4f9217624c591f2..f80c947a1f0a640c1fb57e163db4360f22eafaf0 100644
--- a/frontend/src/metabase/dashboard/components/DashboardGrid.jsx
+++ b/frontend/src/metabase/dashboard/components/DashboardGrid.jsx
@@ -190,10 +190,10 @@ export default class DashboardGrid extends Component {
         this.setState({ addSeriesModalDashCard: dc });
     }
 
-    onUpdateVisualizationSetting(dc, setting, value) {
+    onUpdateVisualizationSetting(dc, key, value) {
         this.props.setDashCardVisualizationSetting({
             id: dc.id,
-            setting: setting,
+            key: key,
             value: value
         });
     }
diff --git a/frontend/src/metabase/dashboard/dashboard.js b/frontend/src/metabase/dashboard/dashboard.js
index b4e593b2c5319fc638da1c2151ff29909b1fc1b2..254865b134f8c5cc5ede58f96619cb395c1ee98a 100644
--- a/frontend/src/metabase/dashboard/dashboard.js
+++ b/frontend/src/metabase/dashboard/dashboard.js
@@ -357,9 +357,9 @@ const dashcards = handleActions({
         })
     },
     [SET_DASHCARD_VISUALIZATION_SETTING]: {
-        next: (state, { payload: { id, setting, value } }) =>
+        next: (state, { payload: { id, key, value } }) =>
             i.chain(state)
-                .assocIn([id, "card", "visualization_settings"].concat(setting), value)
+                .assocIn([id, "card", "visualization_settings", key], value)
                 .assocIn([id, "card", "isDirty"], true)
                 .value()
     },
diff --git a/frontend/src/metabase/query_builder/actions.js b/frontend/src/metabase/query_builder/actions.js
index ee60cb5b4743cc14eda221d49fad137fd6e1a5da..965bc60135a0d797284a978acb889ec56404f08c 100644
--- a/frontend/src/metabase/query_builder/actions.js
+++ b/frontend/src/metabase/query_builder/actions.js
@@ -340,10 +340,10 @@ export const setCardVisualization = createThunkAction(SET_CARD_VISUALIZATION, (d
 });
 
 export const SET_CARD_VISUALIZATION_SETTING = "SET_CARD_VISUALIZATION_SETTING";
-export const setCardVisualizationSetting = createThunkAction(SET_CARD_VISUALIZATION_SETTING, (path, value) => {
+export const setCardVisualizationSetting = createThunkAction(SET_CARD_VISUALIZATION_SETTING, (key, value) => {
     return (dispatch, getState) => {
         const { qb: { card, uiControls } } = getState();
-        let updatedCard = updateVisualizationSettings(card, uiControls.isEditing, card.display, i.assocIn(card.visualization_settings, path, value));
+        let updatedCard = updateVisualizationSettings(card, uiControls.isEditing, card.display, i.assocIn(card.visualization_settings, key, value));
         dispatch(updateUrl(updatedCard, true));
         return updatedCard;
     };
diff --git a/frontend/src/metabase/visualizations/PinMap.jsx b/frontend/src/metabase/visualizations/PinMap.jsx
index ddb7460caddf9f6c191ada78a73c8fe1a8d882cc..0d3acc9200f0a979b19a606c4020d18969563185 100644
--- a/frontend/src/metabase/visualizations/PinMap.jsx
+++ b/frontend/src/metabase/visualizations/PinMap.jsx
@@ -35,13 +35,13 @@ export default class PinMap extends Component {
 
     updateSettings() {
         if (this.state.lat != null) {
-            this.props.onUpdateVisualizationSetting(["map", "center_latitude"], this.state.lat);
+            this.props.onUpdateVisualizationSetting("map.center_latitude", this.state.lat);
         }
         if (this.state.lon != null) {
-            this.props.onUpdateVisualizationSetting(["map", "center_longitude"], this.state.lon);
+            this.props.onUpdateVisualizationSetting("map.center_longitude", this.state.lon);
         }
         if (this.state.zoom != null) {
-            this.props.onUpdateVisualizationSetting(["map", "zoom"], this.state.zoom);
+            this.props.onUpdateVisualizationSetting("map.zoom", this.state.zoom);
         }
         this.setState({ lat: null, lon: null, zoom: null });
     }
diff --git a/frontend/src/metabase/visualizations/components/ChartSettings.jsx b/frontend/src/metabase/visualizations/components/ChartSettings.jsx
index e2a48cec5c475ae65b1b564d083fb90df1d84589..942e434919bc8b9f67cee640369a7ef7344b348b 100644
--- a/frontend/src/metabase/visualizations/components/ChartSettings.jsx
+++ b/frontend/src/metabase/visualizations/components/ChartSettings.jsx
@@ -48,9 +48,9 @@ class ChartSettings extends Component {
         this.setState({ currentTab: tab });
     }
 
-    onUpdateVisualizationSetting = (path, value) => {
+    onUpdateVisualizationSetting = (key, value) => {
         this.onChangeSettings({
-            [path.join(".")]: value
+            [key]: value
         });
     }
 
diff --git a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
index 5b3d34437b153f76095daf71e2f62afe13441e03..b58e4cf9a3081955c7226877f1b5b7ada4ceb517 100644
--- a/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
+++ b/frontend/src/metabase/visualizations/components/LineAreaBarChart.jsx
@@ -59,7 +59,6 @@ export default class LineAreaBarChart extends Component {
         super(props, context);
         this.state = {
             series: null,
-            isMultiseries: null
         };
     }
 
@@ -88,7 +87,6 @@ export default class LineAreaBarChart extends Component {
         let { series, settings } = newProps;
         let nextState = {
             series: series,
-            isMultiseries: false
         };
         let s = series && series.length === 1 && series[0];
         if (s && s.data) {
@@ -109,7 +107,6 @@ export default class LineAreaBarChart extends Component {
                 const rowIndexes = [dimensionIndex].concat(metricIndexes);
                 const seriesGroup = dataset.dimension(d => d[seriesIndex]).group()
 
-                nextState.isMultiseries = true;
                 nextState.series = seriesGroup.reduce(
                     (p, v) => p.concat([rowIndexes.map(i => v[i])]),
                     (p, v) => null, () => []
@@ -127,7 +124,6 @@ export default class LineAreaBarChart extends Component {
             } else {
                 const dimensionIndex = dimensionIndexes[0];
 
-                nextState.isMultiseries = metrics.length > 1;
                 nextState.series = metricIndexes.map(metricIndex => {
                     const col = cols[metricIndex];
                     return {
@@ -213,22 +209,26 @@ export default class LineAreaBarChart extends Component {
 
     render() {
         const { hovered, isDashboard, onAddSeries, onRemoveSeries, actionButtons } = this.props;
-        const { series, isMultiseries } = this.state;
+        const { series } = this.state;
 
         const card = this.props.series[0].card;
 
         let settings = this.getSettings();
 
+        let isMultiseries = this.state.series.length > 1;
+        let isDashboardMultiseries = this.props.series.length > 1;
+        let isCardMultiseries = isMultiseries && !isDashboardMultiseries;
+
         return (
             <div className={cx("flex flex-column p1", this.getHoverClasses(), this.props.className)}>
-                { (isDashboard && isMultiseries) &&
+                { (isDashboard && !isDashboardMultiseries) &&
                     <a href={card.id && Urls.card(card.id)} className="Card-title pt1 px1 flex-no-shrink no-decoration h3 text-bold fullscreen-night-text fullscreen-normal-text" style={{fontSize: '1em'}}>{card.name}</a>
                 }
-                { (isDashboard || isMultiseries) &&
+                { isMultiseries &&
                     <LegendHeader
                         className="flex-no-shrink"
                         series={series}
-                        onAddSeries={isMultiseries ? undefined : onAddSeries}
+                        onAddSeries={isCardMultiseries ? undefined : onAddSeries}
                         onRemoveSeries={onRemoveSeries}
                         actionButtons={actionButtons}
                         hovered={hovered}