order required properties first