sub do_bond { get LOCATION; check LOCATION or return; foreach @acc check PARENT_ID or return; update & insert or return; foreach @built check PARENT_ID or return; update & insert or return; return 1; # if you got here, everything's fine }