make layout more programmable