code: @Override
      protected void perform(final Wave wave) {
  
          // The old node is the one that exists into the parent container (or null if none)
          Node oldNode = waveBean(wave).hideModel() == null ? null : waveBean(wave).hideModel().node();
  
          if (oldNode == null) {
              final ObservableList<Node> parentContainer = waveBean(wave).childrenPlaceHolder();
              oldNode = parentContainer.size() > 1 ? parentContainer.get(waveBean(wave).childrenPlaceHolder().size() - 1) : null;
          }
  
          // The new node is the one create by PrepareModelCommand
          final Node newNode = waveBean(wave).showModel() == null ? null : waveBean(wave).showModel().node();
  
          if (oldNode != null || newNode != null) {
              final ParallelTransition animation = new ParallelTransition();
  
              if (oldNode != null) {
                  final FadeTransition ft = new FadeTransition();
                  ft.setDuration(Duration.millis(600));
                  ft.setNode(oldNode);
                  ft.setFromValue(1.0);
                  ft.setToValue(0.0);
  
                  animation.getChildren().add(ft);
              }
              if (newNode != null) {
  
                  final FadeTransition ft = new FadeTransition();
                  ft.setDuration(Duration.millis(600));
                  ft.setNode(newNode);
                  ft.setFromValue(0.0);
                  ft.setToValue(1.0);
  
                  animation.getChildren().add(ft);
              }
  
              final Node oldNodeLink = oldNode;
  
              // When animation is finished remove the hidden node from the stack to let only one node at the same time
              animation.setOnFinished(event -> {
                  if (oldNodeLink != null) {
                      // remove the old nod from the stack to hide it
                      waveBean(wave).childrenPlaceHolder().remove(oldNodeLink);
  
                      LOGGER.info("Remove " + oldNodeLink.toString() + " from stack container");
                  }
                  // FIXME do it in the right way
                  waveBean(wave).showModel().doShowView(wave);
              });
              animation.playFromStart();
          }
  
      }
docs: {@inheritDoc}