modular chart update functions

Generate chart has been broken into component functions for more
asynchronous chart update behaviour