James C - peepopt (partial)
James C - switch, more peepopt