Think about the variable timeout. The variable fails to convey a very important piece of information and that is the unit. Is it seconds, milliseconds, nanoseconds?
We shouldn’t need to convey the type of a type this way. Let our IDEs help us. Furthermore, you are working with a struct, so does it really matter if it’s an interface or not?
This comes in play when you expect your class to be extended. Avoid naming classes Base or Abstract.
Over-reliance On Managers And Services
It seems to me like the easiest thing to do when it comes to naming a class, we are not certain what to call, is sticking to calling it some sort of Manager or Service.