Refactor to use a self-implemented color struct