just Learned Interfaces

Interfaces are also good for decoupling data and functions. It can pave the way for making objects that are more like data where one can specify actions independent of a hierarchy. However, to really understand what I am saying(typing), you might need to get some functional language exposure(not necessary, but it speeds up the process).

The same can be said for design by composition.