@polesye Things could be more concise and understandable if we used Object.create

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_Revisited

But IE has to be version 9 or above. Is that a blocker then?