add "Night mode" and pull out into it's own object

also start adding unit tests