Microsoft but when he was at Columbia, he where you are starting with a network and you are assigning - you start to some sort of prior assumption about how many communities around the network and then you sort of make a guess about who goes into which community and then you measure the relative densities of internal versus external links and then you shuffle back and forth making various random changes, so try to optimize the allocation of people to communities in order to get this sort of maximization of modularity. 