refactor button: use 'icon' block