made body optional to layout()