Add support for variable number of colors and use event throttling

Also partially revoke 76e00af1