Ext.AbstractPlugin doesn't really do a whole lot. It has some standard template methods but that's really it. Ext.util.Observable can be a mixin or it's own class so extending Ext.util.Observable is still valid. Ext.AbstractPlugin extends Ext.Base and Ext.util.Observable also extends Ext.Base so they are sisters and since Ext.AbstractPlugin doesn't do a whole lot, extending Ext.util.Observable may have better performance than using it as a mixing and extending Ext.AbstractPlugin. Inconsistent... your argument is still valid there.