Just having the drawFunc won't work at all for any of my use cases. The inheritance is not needed, just holding onto a copy of the base guy is probably just as good... but the inheritance isn't a bad thing to have necessarily. Besides, it won't really hurt the UIViews code, we can just make more variables public to deal with the public/private thing, as no one will really have direct access to a UIView by it's type (the views are quickly put into a list, so you can't really access a specific view's public variables).