introduce more layout functions