Contracting with Heterogeneous Externalities