First pass. Needs to recurse since it's all drill-downy and whatnot.