public void initialize() {

        JPanel detailPanel = new JPanel(new MigLayout("wrap 7", "[]30[][]30[][]30[][]", ""));
        detailPanel.setOpaque(false);

        Role role = Role.DEFAULT;
        if (unitType.hasAbility(Ability.EXPERT_PIONEER)) {
            role = Role.PIONEER;
        } else if (unitType.hasAbility(Ability.EXPERT_MISSIONARY)) {
            role = Role.MISSIONARY;
        }

        // summary
        detailPanel.add(new JLabel(getLibrary().getUnitImageIcon(unitType, role)), "spany");
        detailPanel.add(localizedLabel(unitType.getNameKey()));
        detailPanel.add(new JLabel(String.valueOf(unitCount.getCount(unitType))), "wrap 10");
        boolean canTrain = false;
        Map<Location, Integer> unitLocations = data.get(unitType);
        for (Colony colony : colonies) {
            if (unitLocations.get(colony) != null) {
                String colonyName = colony.getName();
                if (colony.canTrain(unitType)) {
                    canTrain = true;
                    colonyName += "*";
                }
                JButton colonyButton = getLinkButton(colonyName, null, colony.getId());
                colonyButton.addActionListener(this);
                detailPanel.add(colonyButton);
                JLabel countLabel = new JLabel(unitLocations.get(colony).toString());
                countLabel.setForeground(LINK_COLOR);
                detailPanel.add(countLabel);
            }
        }
        for (Entry<Location, Integer> entry : unitLocations.entrySet()) {
            if (!(entry.getKey() instanceof Colony)) {
                String locationName = Messages.message(entry.getKey().getLocationName());
                JButton linkButton = getLinkButton(locationName, null, entry.getKey().getId());
                linkButton.addActionListener(this);
                detailPanel.add(linkButton);
                JLabel countLabel = new JLabel(entry.getValue().toString());
                countLabel.setForeground(LINK_COLOR);
                detailPanel.add(countLabel);
            }
        }
        if (canTrain) {
            detailPanel.add(new JLabel(Messages.message("report.labour.canTrain")),
                            "newline 20, span");
        }
        reportPanel.add(detailPanel);
    }