anchor.diff:      menuBarPresenter.addMenus(menus);
     }
   
  -  private Command makeScreenCommand(final Class<?> screenClass) {
  +  private Command makeGoToPlaceCommand(final Class<?> placeClass) {
       return new Command() {
         @Override
         public void execute() {
  -        // screenClass.getName() works as a place name in our app
  -        // because we chose to name our screens after their FQCNs.
  -        // If you used arbitrary names for your screens, this won't work.
  -        placeManager.goTo(screenClass.getName());
  +        placeManager.goTo(placeClass.getName());
         }
       };
     }
  
positive.code:     <dependency><groupId>org.jboss.weld</groupId><artifactId>weld-api</artifactId><scope>provided</scope></dependency>
      <dependency><groupId>org.jboss.weld</groupId><artifactId>weld-spi</artifactId><scope>provided</scope></dependency>
      <dependency><groupId>xml-apis</groupId><artifactId>xml-apis</artifactId><scope>provided</scope></dependency>
      <dependency><groupId>org.jboss.errai.io.netty</groupId><artifactId>netty</artifactId><scope>provided</scope></dependency>
  
      <!-- And finally, add this -->
  
negative.code: link:https://github.com/uberfire/uberfire-tutorial/archive/checkpoint-4.zip[a zipfile of the sources].
  ======
  
  
  == Define a second perspective
  
  Now let's define a second perspective that contains the same two
  screens arranged in a different layout.
  
  .Create src/main/java/com/mycompany/uftutorial/client/HorizontalPerspective.java
  [source,java]
  ------
  package com.mycompany.uftutorial.client;
  
  import javax.enterprise.context.ApplicationScoped;
  
  import org.uberfire.client.annotations.Perspective;
  import org.uberfire.client.annotations.WorkbenchPerspective;
  import org.uberfire.mvp.impl.DefaultPlaceRequest;
  import org.uberfire.workbench.model.PanelType;
  import org.uberfire.workbench.model.PerspectiveDefinition;
  import org.uberfire.workbench.model.Position;
  import org.uberfire.workbench.model.impl.PanelDefinitionImpl;
  import org.uberfire.workbench.model.impl.PartDefinitionImpl;
  import org.uberfire.workbench.model.impl.PerspectiveDefinitionImpl;
  
  @ApplicationScoped
  @WorkbenchPerspective(
      identifier =
      "com.mycompany.uftutorial.client.HorizontalPerspective")
  public class HorizontalPerspective {
  
    @Perspective
    public PerspectiveDefinition getPerspective() {
      final PerspectiveDefinition p = new
    PerspectiveDefinitionImpl(PanelType.ROOT_LIST);
      p.setTransient(true);
      p.setName(getClass().getName());
  
      p.getRoot().addPart(
              new PartDefinitionImpl(
                      new
              DefaultPlaceRequest(HelloWorldScreen.class.getName())));
  
      PanelDefinitionImpl northPanel = new
      PanelDefinitionImpl(PanelType.MULTI_LIST);
      p.getRoot().insertChild(Position.NORTH, northPanel);
      northPanel.setHeight(300);
      northPanel.addPart(
              new PartDefinitionImpl(
                      new
      DefaultPlaceRequest(MoodScreen.class.getName())));
  
      return p;
    }
  
  }
  ------
  
  This looks very much like what we did in `HomePerspective` except this
  time we're docking the second panel at the north edge of the root
  panel rather than the west.
  
  To give ourselves a way to switch between the perspectives, let's add
  a new top-level menu item:
  
  .Modify src/main/java/com/mycompany/uftutorial/client/AppMenuBar.java
  [source,java]
  ------
  // (other methods remain unchanged)
  
    @PostConstruct
    private void initMenus() {
      Menus menus =
        MenuFactory.newTopLevelMenu("Screens")
          .menus()
            .menu("Hello Screen").respondsWith(makeGoToPlaceCommand(HelloWorldScreen.class)).endMenu()
            .menu("Mood Screen").respondsWith(makeGoToPlaceCommand(MoodScreen.class)).endMenu()
          .endMenus()
        .endMenu()
  // BEGIN new code to insert
        .newTopLevelMenu("Perspectives")
          .menus()
            .menu("Home Perspective").respondsWith(makeGoToPlaceCommand(HomePerspective.class)).endMenu()
            .menu("Horizontal Perspective").respondsWith(makeGoToPlaceCommand(HorizontalPerspective.class)).endMenu()
          .endMenus()
        .endMenu()
  // END new code to insert
        .newTopLevelMenu("Other")
          .menus()
            .menu("Alert Box").respondsWith(new Command() {
                @Override
                public void execute() {
                  Window.alert("Hi. I'm an Alert Box.");
                }
              }).endMenu()
          .endMenus()
        .endMenu()
      .build();
  
      menuBarPresenter.addMenus(menus);
    }
  ------
  
  Luckily, we get to reuse our `makeGoToPlaceCommand()` method for
  creating the Command callbacks that switch between perspectives.
  
  === Time to see it work!
  
  Refresh the browser window once again, and you should now see the new
  Perspectives menu. Select "Horizontal Perspective" to press this new
  perspective into action.
  
  [TIP]
  .Not Working?
  ======
  At this point, your project should be more-or-less identical to the
  Tutorial project at the
  link:https://github.com/uberfire/uberfire-tutorial/tree/checkpoint-5[checkpoint-5
  tag]. If your project isn't working at this point, grab that one and
  compare yours with it.
  
  ......
  $ git clone https://github.com/uberfire/uberfire-tutorial.git
  $ cd uberfire-tutorial
  $ git checkout checkpoint-5
  ......
  
  Or grab
  link:https://github.com/uberfire/uberfire-tutorial/archive/checkpoint-5.zip[a zipfile of the sources].
  ======
  