This needs to be general for all types of buttons (see alchemy-buttons).