First stab at making traversals typesafe