Layout algorithm