@Override
      public Object[] create(ICreateContext context) {
        // create SPP
        SPPRef spp = RoomFactory.eINSTANCE.createSPPRef();
        spp.setName("");

        ActorContainerClass acc =
            (ActorContainerClass)
                context.getTargetContainer().getLink().getBusinessObjects().get(0);

        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
        SPPPropertyDialog dlg = new SPPPropertyDialog(shell, spp, acc, true, false);
        if (dlg.open() != Window.OK)
          // find a method to abort creation
          // throw new RuntimeException();
          return EMPTY;

        doneChanges = true;

        acc.getIfSPPs().add(spp);

        // do the add
        addGraphicalRepresentation(context, spp);

        // return newly created business object(s)
        return new Object[] {spp};
      }
      @Override
      public void execute(ICustomContext context) {
        SPPRef spp =
            (SPPRef) getBusinessObjectForPictogramElement(context.getPictogramElements()[0]);
        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
        ActorContainerClass acc = (ActorContainerClass) spp.eContainer();
        boolean refport = isRefItem(context.getPictogramElements()[0]);

        SPPPropertyDialog dlg = new SPPPropertyDialog(shell, spp, acc, false, refport);
        if (dlg.open() != Window.OK)
          // TODOHRR: introduce a method to revert changes, does hasDoneChanges=false roll back
          // changes?
          // throw new RuntimeException();
          return;

        updateSPPFigure(
            spp,
            context.getPictogramElements()[0],
            manageColor(DARK_COLOR),
            manageColor(BRIGHT_COLOR));
      }