Our representation to evolve Lego structures borrows the tree mutation and crossover operators from genetic programming (GP) [85]. We implemented tree representations of 2D and 3D Lego structures. Each node of the tree represents a brick and has a size parameter, indicating the size of the brick, and a list of descendants, which are new bricks physically attached to the parent. Each descendant node has positional parameters that specify the position of the new brick relative to the parent.