Excellent writeup and straight to the point. As the author demonstrated one can get quite a lot of OOP constructs using C primitives.
what seems to be impossible to implement (as least to me) was something like interfaces, a way to decouple in a way such that high level functions don't need to know about the low level building blocks.