colors added algorithm could use work