Just have a look at how existing widgets are made. For example look at UITexture. It inherits from UIBasicSprite, overwriting its OnFill function which is what does the drawing. In UITexture's case it simply uses the Fill function inside Basic Sprite after figuring out the inner and outer rectangles of the texture (used for slicing). In its heart the OnFill function is simply about filling the geometry buffers. You can replace the whole thing with the UIBasicSprite's SimpleFill function for example -- it can't get any easier than that.