greately modify the topology module