scope and closure experimentation
DI & cached functions