[draft] Clearly differentiate what you want to implement and what you consume. How?
If you use an alien dependency, dont consume it directly
Provide all dependencies in constructor (services and data)
If possible, try hard to have only one constructor -> apparent instructions for others, in your implementation, you don’t have to check how it is constructed.
No setters, method calls don’t change inner state of the instance.