todo: rgb -> hsl/hsv