anchor.diff:  
   [source, java]
   ----
  -    @FunctionalInterface
  -    interface MessageClickListener {
  -        public void messageClick(MessageComponent source, Message message);
  -    }
  +@FunctionalInterface
  +interface MessageClickListener {
  +    public void messageClick(MessageComponent source, Message message);
  +}
   ----
   
   Add MessageClickListener parameter to the constructor and call the listener in LayoutClickListener.
   
   [source, java]
   ----
  -    public MessageComponent(Message message,
  -            MessageClickListener clickListener) {
  -        // … 
  -        addLayoutClickListener(
  -                event -> clickListener.messageClick(this, message));
  -    }
  +public MessageComponent(Message message,
  +        MessageClickListener clickListener) {
  +    // … 
  +    addLayoutClickListener(
  +            event -> clickListener.messageClick(this, message));
  +}
   ----
   
   - Fix the FolderView message population to include this new MessageClickListener. So instead of 
  -MessageComponent::new call this::createFromEntity.
  -
  -[source, java]
  -----
  -    private void refreshFolder(String folder) {
  -        removeAllComponents();
  -        messageFacade.getFolderMessages(folder).stream()
  -                .map(this::createFromEntity).forEach(this::addComponent);
  -    }
  -
  -    private MessageComponent createFromEntity(Message entity) {
  -        MessageComponent msg = new MessageComponent(entity,
  -                this::onMessageClicked);
  -        return msg;
  -    }
  -
  -    private void onMessageClicked(MessageComponent source, Message message) {
  -    }
  +`MessageComponent::new` call `this::createFromEntity`.
  +
  +[source, java]
  +----
  +private void refreshFolder(String folder) {
  +    removeAllComponents();
  +    messageFacade.getFolderMessages(folder).stream()
  +            .map(this::createFromEntity).forEach(this::addComponent);
  +}
  +
  +private MessageComponent createFromEntity(Message entity) {
  +    MessageComponent msg = new MessageComponent(entity,
  +            this::onMessageClicked);
  +    return msg;
  +}
  +
  +private void onMessageClicked(MessageComponent source, Message message) {
  +}
   ----
   
   .Now the FolderView consumes the click event and you can modify the message.
  
positive.code: 
  [source, java]
  ----
      public void setIndicator(boolean read, Flag flag) {
          MyTheme.MESSAGE_STYLES.forEach(indicatorButton::removeStyleName);
          indicatorButton.setIcon(null);
          if (flag == Flag.FLAG_STAR) {
              indicatorButton.setIcon(FontAwesome.STAR);
              if (!read) {
                  indicatorButton.addStyleName(MyTheme.INDICATOR_STAR_RED);
              }
          } else if (!read) {
              indicatorButton.setIcon(FontAwesome.CIRCLE);
              indicatorButton.addStyleName(MyTheme.INDICATOR_CIRCLE);
          }
      }
  ----
  
  - Call setIndicator in MessageComponent constructor +
  setIndicator(message.isRead(), message.getFlag());
  
  === Marking messages as read
  .Let’s add a support for marking messages as read. This requires you to:
  
negative.code: 
  [source, java]
  ----
  @Override
  public void enter(ViewChangeEvent event) {
      String folder = event.getParameters();
      refreshFolder(folder);
  }
  
  private void refreshFolder(String folder) {
      removeAllComponents();
      messageFacade.getFolderMessages(folder).stream()
              .map(MessageComponent::new).forEach(this::addComponent);
  }
  ----
  
  Ok, so now the message listing is working, but the message unread indicator is not colored for the unread messages
  