A holy grail of nano-technology is to create truly complex, multi-component structures by self-assembly. Most self-assembly has focused on the creation of "structural complexity". In my talk, I will discuss "Addressable Complexity": the creation of structures that contain hundreds or thousands of distinct building blocks that all have to find their place in a 3D structure. Experiments on “DNA bricks” have demonstrated the feasibility of making such structures. Simulation and theory yield surprising insights that suggest design principles for brick structures. Interestingly, the design principles are different for DNA origami.