refactoring + allow color to be presented as a indexed array of components