Use DI instead of Inheritance