Heterogeneity in Multi-Agent Systems