A computer-implemented method, at a computer system having a display and means for receiving user input, the method comprising: displaying on the display a user interface comprising a plurality of selectable node objects of a node-link structure, arranged in a plurality of levels of a circular tree; obtaining data identifying a first node within the node-link structure; determining a first position of the first node, the first position being a center of the circular tree, wherein the radius of each level is measured from the center of the circular tree; determining positions of any children nodes of the first node and drawing the children nodes on a first level of the circular tree along the determined radius; determining positions of any grand children nodes of any children nodes; and drawing the grand children nodes on a second level of the circular tree, wherein a radius of the second level is greater than a radius of the first level; characterised by: displaying at least one parent node object within the node-link structure; in response to detecting a parent node expansion input: causing the parent node to be displayed in an expanded state having at least one child node; re-arranging the relative positioning of the plurality of selectable node objects by determining the radius of each level by subtracting a fraction from 1, wherein the fraction is a value less than one that decreases logarithmically toward zero as a function of a number of levels in the tree and a number of the level for which the radius is being determined. displaying on the display a user interface comprising a plurality of selectable node objects of a node-link structure, arranged in a plurality of levels of a circular tree; obtaining data identifying a first node within the node-link structure; determining a first position of the first node, the first position being a center of the circular tree, wherein the radius of each level is measured from the center of the circular tree; determining positions of any children nodes of the first node and drawing the children nodes on a first level of the circular tree along the determined radius; determining positions of any grand children nodes of any children nodes; and drawing the grand children nodes on a second level of the circular tree, wherein a radius of the second level is greater than a radius of the first level; displaying at least one parent node object within the node-link structure; in response to detecting a parent node expansion input: causing the parent node to be displayed in an expanded state having at least one child node; re-arranging the relative positioning of the plurality of selectable node objects by determining the radius of each level by subtracting a fraction from 1, wherein the fraction is a value less than one that decreases logarithmically toward zero as a function of a number of levels in the tree and a number of the level for which the radius is being determined. causing the parent node to be displayed in an expanded state having at least one child node; re-arranging the relative positioning of the plurality of selectable node objects by determining the radius of each level by subtracting a fraction from 1, wherein the fraction is a value less than one that decreases logarithmically toward zero as a function of a number of levels in the tree and a number of the level for which the radius is being determined.