more correct implementation of caller class (that takes into account
virtual methods)