use a dependency resolver to dispatch commands.
leave the object lifecycle maintenance to the dependecy container.