Big charts refactor

WIP, mostly to avoid working in the solitude :stuck_out_tongue:... but NOT for review yet.
`legend (str or bool)`

comma separates `optional`, if it is present