abstracting to layout