Not all derived types support a margin, and for some it represents some other property (the radius of a sphere for example), so the setter should only be exposed in a derived class if at all (and it may want to change the size of the core shape as well)