private void setup() {
    // destroy dated tagLayouts
    if (tagLayouts != null) {
      for (LocatableHLayout tagLayout : tagLayouts) {
        removeMember(tagLayout);
        tagLayout.destroy();
      }
    }
    // remove remaining members
    for (Canvas canvas : getMembers()) {
      removeMember(canvas);
    }

    // [re]build

    addMember(tagTitleLabel);

    tagLayouts = createTagLayouts();
    for (LocatableHLayout tagLayout : tagLayouts) {
      addMember(tagLayout);
    }

    if (!readOnly) {
      addMember(addImg);
      tagInputDialog.place(addImg);
    }

    markForRedraw();
  }