implemented WithIcon.fromJSON