new better version, string recusion instead of array
children have no knowledge of parents