write some tests, encapsulate colour modifying logic (far from done)