widths and margins now are cached