If we have a lot of buttons now and those buttons didn't require to be "iconed", then probably we shouldn't include it in Button class, but create separated class that inherits from Button. Especially that in this implementation "InconedElement" mixing is "applied" always, but the visible effect (appending $icon) is conditional.