lay out algo