introducing context as another thing a step can receive (e.g. to pass around data the library needs internally (current build etc))