for (tail_ch = head_ch; tail_ch; tail_ch = tail_ch->next); return tail_ch;
Going to want to add a test case with more than one child at a time. I think as is it loses all but the most recent child.