It would be useful if there was a better explanation of why this can't just be done with regular procedural programming. I.e., each analysis is a function which takes its required inputs as arguments and then returns its output (or mutates its input). Why does it need to be more complex than that?