refactored property injection