An algorithm for laying out nodes and links