anchor.diff:    Widget build(BuildContext context) {
       return new GestureDetector(
         onTap: onTap,
  -      child: new Card(
  -        child: new Column(
  -          crossAxisAlignment: CrossAxisAlignment.start,
  -          children: <Widget>[
  -            new AssetImage(
  -              name: recipe.imagePath,
  -              fit: ImageFit.scaleDown
  -            ),
  -            new Flexible(
  -              child: new Row(
  -                children: <Widget>[
  -                  new Padding(
  -                    padding: const EdgeInsets.all(16.0),
  -                    child: new AssetImage(
  -                      width: 48.0,
  -                      height: 48.0,
  -                      name: recipe.ingredientsImagePath
  +      child: new Hero(
  +        tag: recipe.imagePath,
  +        child: new Card(
  +          child: new Column(
  +            crossAxisAlignment: CrossAxisAlignment.start,
  +            children: <Widget>[
  +              new AssetImage(
  +                name: recipe.imagePath,
  +                fit: ImageFit.scaleDown
  +              ),
  +              new Flexible(
  +                child: new Row(
  +                  children: <Widget>[
  +                    new Padding(
  +                      padding: const EdgeInsets.all(16.0),
  +                      child: new AssetImage(
  +                        width: 48.0,
  +                        height: 48.0,
  +                        name: recipe.ingredientsImagePath
  +                      )
  +                    ),
  +                    new Column(
  +                      crossAxisAlignment: CrossAxisAlignment.start,
  +                      mainAxisAlignment: MainAxisAlignment.center,
  +                      children: <Widget>[
  +                        new Text(recipe.name, style: titleStyle),
  +                        new Text(recipe.author, style: authorStyle),
  +                      ]
                       )
  -                  ),
  -                  new Column(
  -                    crossAxisAlignment: CrossAxisAlignment.start,
  -                    mainAxisAlignment: MainAxisAlignment.center,
  -                    children: <Widget>[
  -                      new Text(recipe.name, style: titleStyle),
  -                      new Text(recipe.author, style: authorStyle),
  -                    ]
  -                  )
  -                ]
  +                  ]
  +                )
                 )
  -            )
  -          ]
  +            ]
  +          )
           )
         )
       );
  
positive.code:           child: new Icon(icon: Icons.edit),
            onPressed: () { }
          ),
          body: new ScrollableGrid(
            delegate: new MaxTileWidthGridDelegate(
              maxTileWidth: 500.0,
              rowSpacing: 8.0,
              columnSpacing: 8.0,
              padding: new EdgeInsets.fromLTRB(8.0, 8.0 + _kAppBarHeight + statusBarHeight, 8.0, 8.0)
            ),
            children: recipes.map(
              (Recipe recipe) => new _RecipeCard(
                recipe: recipe,
                onTap: () { _showRecipe(context, recipe); }
              )
            )
          )
        )
      );
    }
  
negative.code:     // here because that doesn't allow us to overlap the app bar on top of the
      // content.
      final double statusBarHeight = MediaQuery.of(context).padding.top;
      return new Stack(
        children: <Widget>[
          _buildContainer(context),
          new Padding(
            padding: new EdgeInsets.only(top: statusBarHeight),
            child: new AppBar(
              backgroundColor: Colors.transparent,
              elevation: 0,
              leading: new IconButton(
                icon: Icons.arrow_back,
                onPressed: () => Navigator.pop(context),
  