Framework for different icon types