split out into simple structure, icon has 3 working states