emember the location of this Node
      .bindTwoWay('location', 'loc', go.Point.parse, go.Point.stringify)
      // remember the angle of this Node
      .bindTwoWay('angle', 'angle')
      // move a selected part into the Foreground layer, so it isn't obscured by any non-selected parts
      .bindObject('layerName', 'isSelected', (s) => (s ? 'Foreground' : ''))
      .add(
        new go.Shape({
          name: 'SHAPE',
          // the following are default values;
          // actual values may come from