@Override
  protected EllipseGlassThing addThing(List<ObjRef> relLineageRefs, ObjRef objRef) {

    Point newPointSpot = ArchipelagoUtils.findOpenSpotForNewThing(getBNAWorld().getBNAModel());

    EllipseThing edge = getBNAModel().addThing(new EllipseThing(null));
    edge.setLineWidth(2);
    edge.setColor(null);

    EllipseGlassThing thing = Assemblies.createEllipse(getBNAWorld(), null, edge);
    thing.setBoundingBox(
        new Rectangle(newPointSpot.x, newPointSpot.y, defaultSize.width, defaultSize.height));
    Assemblies.BACKGROUND_KEY
        .get(thing, getBNAModel())
        .set(IHasColor.COLOR_KEY, new RGB(32, 32, 32));
    Assemblies.BACKGROUND_KEY.get(thing, getBNAModel()).set(IHasCount.COUNT_KEY, defaultCount);
    Assemblies.BACKGROUND_KEY
        .get(thing, getBNAModel())
        .set(IHasLocalInsets.LOCAL_INSETS_KEY, new Insets(4, 4, 4, 4));
    Assemblies.markPart(thing, EDGE_KEY, edge);

    mvl.mirrorValue(
        Assemblies.BACKGROUND_KEY.get(thing, getBNAModel()),
        IHasColor.COLOR_KEY,
        Assemblies.BACKGROUND_KEY.get(thing, getBNAModel()),
        IHasSecondaryColor.SECONDARY_COLOR_KEY,
        new Function<RGB, RGB>() {

          @Override
          @Nullable
          public RGB apply(@Nullable RGB input) {
            return BNAUtils.adjustBrightness(input, 1.5f);
          }
        });
    mvl.mirrorValue(thing, IHasBoundingBox.BOUNDING_BOX_KEY, edge);

    UserEditableUtils.addEditableQualities(
        thing, IHasMutableSelected.USER_MAY_SELECT, IRelativeMovable.USER_MAY_MOVE);

    return thing;
  }