Switch to using Result to indicate failure instead of Option/false
Switch set_icons to an array of trait objects for heterogeneus support