model definitions and basic layout