dependency injection and precurser patterns