Engineering For Testability / Testable App Code / Protocols and Parameterization / Separating Logic and Effects