Perspective XY Chart Dynamic Series List

I have a number of series elements hard coded for each machine state event as you can see here.
I am curious if there is a good way to bind the series property to a dataset where I can have a dynamic number of series.. This would also help me order them from highest to lowest like a pareto chart.
If I write a single series element to a property I get this:

: {u'stepLine': {u'appearance': {u'minDistance': 0.5, u'fill': {u'color': u'', u'opacity': 0L}, u'stroke': {u'color': u'', u'width': 3L, u'dashArray': u'', u'opacity': 1L}, u'connect': True, u'tensionX': 1L, u'bullets': [{u'deriveFieldsFromData': {u'rotation': u'', u'fill': {u'color': u'', u'opacity': u''}, u'stroke': {u'color': u'', u'width': u'', u'opacity': u''}}, u'rotation': 0L, u'tooltip': {u'background': {u'color': u'', u'opacity': 1L}, u'pointerLength': 4L, u'text': u'{name}: [bold]{valueY}[/]', u'enabled': True, u'cornerRadius': 3L}, u'width': 10L, u'heatRules': {u'dataField': u'', u'min': 2L, u'max': 100L, u'enabled': False}, u'label': {u'position': {u'dx': 0L, u'dy': 0L}, u'text': u'{value}'}, u'fill': {u'color': u'', u'opacity': 1L}, u'render': u'circle', u'stroke': {u'color': u'', u'width': 1L, u'opacity': 1L}, u'enabled': True, u'height': 10L}], u'tensionY': 1L}, u'open': {u'x': u'', u'y': u''}}, u'visible': True, u'xAxis': u'time', u'candlestick': {u'high': {u'x': u'', u'y': u''}, u'appearance': {u'deriveFieldsFromData': {u'fill': {u'color': u'', u'opacity': u''}, u'stroke': {u'color': u'', u'width': u'', u'opacity': u''}}, u'stacked': False, u'heatRules': {u'dataField': u'', u'min': u'', u'max': u'', u'enabled': False}, u'fill': {u'color': u'', u'opacity': 1L}, u'stroke': {u'color': u'', u'width': 1L, u'opacity': 1L}}, u'low': {u'x': u'', u'y': u''}, u'open': {u'x': u'', u'y': u''}}, u'data': {u'x': u'time', u'y': u'Stopped', u'source': u'hours'}, u'defaultState': {u'visible': True}, u'line': {u'appearance': {u'minDistance': 0.5, u'fill': {u'color': u'', u'opacity': 0L}, u'stroke': {u'color': u'', u'width': 3L, u'dashArray': u'', u'opacity': 1L}, u'connect': True, u'tensionX': 1L, u'bullets': [{u'deriveFieldsFromData': {u'rotation': u'', u'fill': {u'color': u'', u'opacity': u''}, u'stroke': {u'color': u'', u'width': u'', u'opacity': u''}}, u'rotation': 0L, u'tooltip': {u'background': {u'color': u'', u'opacity': 1L}, u'pointerLength': 4L, u'text': u'{name}: [bold]{valueY}[/]', u'enabled': True, u'cornerRadius': 3L}, u'width': 10L, u'heatRules': {u'dataField': u'', u'min': 2L, u'max': 100L, u'enabled': False}, u'label': {u'position': {u'dx': 0L, u'dy': 0L}, u'text': u'{value}'}, u'fill': {u'color': u'', u'opacity': 1L}, u'render': u'circle', u'stroke': {u'color': u'#FFFFFF', u'width': 2L, u'opacity': 1L}, u'enabled': True, u'height': 10L}, {u'deriveFieldsFromData': {u'rotation': u'', u'fill': {u'color': u'', u'opacity': u''}, u'stroke': {u'color': u'', u'width': u'', u'opacity': u''}}, u'rotation': 0L, u'tooltip': {u'background': {u'color': u'', u'opacity': 1L}, u'pointerLength': 4L, u'text': u'{name}: [bold]{process_temp}[/]', u'enabled': True, u'cornerRadius': 3L}, u'width': 10L, u'heatRules': {u'dataField': u'', u'min': 2L, u'max': 100L, u'enabled': False}, u'label': {u'position': {u'dx': 0L, u'dy': -20L}, u'text': u'{process_temp}'}, u'fill': {u'color': u'#ffffff', u'opacity': 1L}, u'render': u'label', u'stroke': {u'color': u'#ffffff', u'width': 2L, u'opacity': 1L}, u'enabled': True, u'height': 10L}], u'tensionY': 1L}, u'open': {u'x': u'', u'y': u''}}, u'column': {u'appearance': {u'deriveFieldsFromData': {u'fill': {u'color': u'', u'opacity': u''}, u'stroke': {u'color': u'', u'width': u'', u'opacity': u''}}, u'stacked': False, u'width': None, u'heatRules': {u'dataField': u'', u'min': u'', u'max': u'', u'enabled': False}, u'fill': {u'color': u'#D5D5D5', u'opacity': 1L}, u'stroke': {u'color': u'', u'width': 1L, u'opacity': 1L}, u'height': None}, u'open': {u'x': u'', u'y': u''}}, u'tooltip': {u'background': {u'color': u'', u'opacity': 1L}, u'pointerLength': 4L, u'text': u'{name}: [bold]{valueY}[/]', u'enabled': True, u'cornerRadius': 3L}, u'label': {u'text': u'Stopped'}, u'yAxis': u'Minutes', u'name': u'Stopped', u'hiddenInLegend': False, u'render': u'column', u'zIndex': 0L}

I am not sure whether I need all of this to create a custom binding or can just pass in the label and the name and color which is likely all I need instead of this massive block above.