added support for custom icons and button text