Although polymorphism can often be replaced by separating components. It often seems like it would be very convinient to have interface based polymorphism. Just for example there are Components that implement IDisposableComponent and there is a system that can query for all disposable components and delete them at the end of the frame. Or there are many different components wit ITimeCountdown with Time property. And there is a system that performs Time -= deltaTime on all of them. Or there are many types of tweeners VelocityTweener, PositionTweener, RotationTweener etc. All they implement ITweenerComponent, and you can query them by that interface. That way you can have any number of different tweeners on an Entity but then TweeningSystem can work with them through a common interface. The only workaround I see in this case is to have each Tweener as a separate entity which seems much more complicated. TLDR: Can querying entities by custom interfaces be implemented? (e.g. Entities.WithInterface<ITweener>()) It would be very useful, I think.