adding on-demand processing