adding color (cherrypicking code from canvas branch, needs organization)