в общем, есть проблема называется "контекст исполнения"
у неё есть один способов решения - параметры, параметр который присутствует в вызывающем и вызываемом коде всегда и вызывающий код прокидывает его в вызываемый
соответственно сорта этих параметров могут быть
1. Явный параметр. Прокидывать нужно явно
2. Неявный параметр прокидывать не нужно явно, но нужно везде объявлять
3. Ридер - магически дописывающийся везде параметр, но к несчатью он только один. Поэтому все такие параметры нужно объединить в структуру данных.