refactored colour mixing