delegate more object creation to Laravel IoC