Added a separate logical width and height to each component.  0 for either means variable size in that dimension.