Nanoscale self assembly