Why do you use AS path prepending?


I learned from some measurement data that many ISPs are now using AS path
prepending. I am very curious about the goal of these actions.
Intuitively, I guess there are following reasons:
1. because of some business reasons, one ISP dislikes the traffic to some
destination prefixes to go through it. Then this ISP prepends the routes to
these prefixes.
2. for the traffic engineering purpose. The prepending is performed because
ISPs want to balance the inbound load.
3. for performance purpose. Although the route via ASa has the shortest AS
path, the performance of this path is not very good. Then the ISP prepends
all routes via ASa.

What do you think about this question? Why do you use AS path prepending?