anchor.diff:      }
   
       return new ScrollableGrid(
  -      scrollableKey: config.showFavorites ? _favoritesScrollableKey : _homeScrollableKey,
  +      scrollableKey: config.scrollableKey,
         delegate: new MaxTileWidthGridDelegate(
  -        maxTileWidth: 500.0,
  +        maxTileWidth: _kRecipePageMaxWidth,
           rowSpacing: 8.0,
           columnSpacing: 8.0,
           padding: padding
         ),
  -      children: recipes.map(
  -        (Recipe recipe) => new _RecipeCard(
  +      children: config.recipes.map((Recipe recipe) {
  +        return new RecipeCard(
             recipe: recipe,
  -          onTap: () { _showRecipe(context, recipe); }
  -        )
  -      )
  -    );
  -  }
  -
  -  void _showFavorites(BuildContext context) {
  +          onTap: () { showRecipePage(context, recipe); }
  +        );
  +      })
  +    );
  +  }
  +
  +  void showFavoritesPage(BuildContext context) {
       Navigator.push(context, new MaterialPageRoute<Null>(
         settings: const RouteSettings(name: "/pesto/favorites"),
  -      builder: (BuildContext context) {
  -        return new PestoDemo(showFavorites: true);
  -      }
  +      builder: (BuildContext context) => new PestoFavorites()
       ));
     }
   
  -  void _showRecipe(BuildContext context, Recipe recipe) {
  +  void showRecipePage(BuildContext context, Recipe recipe) {
       Navigator.push(context, new MaterialPageRoute<Null>(
         settings: const RouteSettings(name: "/pesto/recipe"),
         builder: (BuildContext context) {
           return new Theme(
             data: _kTheme,
  -          child: new _RecipePage(recipe: recipe)
  +          child: new RecipePage(recipe: recipe)
           );
         }
       ));
     }
   }
   
  -/// A short recipe card to be displayed in a grid.
  -class _RecipeCard extends StatelessWidget {
  -  final TextStyle titleStyle = _textStyle(24.0, FontWeight.w600);
  -  final TextStyle authorStyle = _textStyle(12.0, FontWeight.w500).copyWith(color: Colors.black54);
  -
  -  _RecipeCard({ Key key, this.recipe, this.onTap }) : super(key: key);
  +// A card with the recipe's image, author, and title.
  +class RecipeCard extends StatelessWidget {
  +  final TextStyle titleStyle = const PestoStyle(fontSize: 24.0, fontWeight: FontWeight.w600);
  +  final TextStyle authorStyle = const PestoStyle(fontWeight: FontWeight.w500, color: Colors.black54);
  +
  +  RecipeCard({ Key key, this.recipe, this.onTap }) : super(key: key);
   
     final Recipe recipe;
     final VoidCallback onTap;
  
positive.code:   }
  }
  
  // Data models for the UI.
  
  class Recipe {
    const Recipe({
      this.name,
  
negative.code: 
    void _toggleFavorite() {
      setState(() {
        if (_favoriteRecipes.contains(config.recipe))
          _favoriteRecipes.remove(config.recipe);
        else
          _favoriteRecipes.add(config.recipe);
      });
    }
  }
  
  /// Displays the recipe's name and instructions.
  class RecipeSheet extends StatelessWidget {
    final TextStyle titleStyle = const PestoStyle(fontSize: 34.0);
    final TextStyle descriptionStyle = const PestoStyle(fontSize: 15.0, color: Colors.black54, height: 24.0/15.0);
    final TextStyle itemStyle = const PestoStyle(fontSize: 15.0, height: 24.0/15.0);
    final TextStyle itemAmountStyle = new PestoStyle(fontSize: 15.0, color: _kTheme.primaryColor, height: 24.0/15.0);
    final TextStyle headingStyle = const PestoStyle(fontSize: 16.0, fontWeight: FontWeight.bold, height: 24.0/15.0);
  
    RecipeSheet({ Key key, this.recipe }) : super(key: key);
  
    final Recipe recipe;
  
  