branching processes applications