     constructor: (@parent, from, to, x, y, z, isIcon = false) ->
       @ln = new Shapes.Line(0xababab, from, to, z)
       @ln.obj3d.userData = this
+      @props = {
+        name: "lnk",
+        capacity: 100,
+        latency: 0
+      }
 
       #TODO if ln itself is clicked on this messes up selection logic 
       if isIcon

  g.ve = new VisualEnvironment(document.getElementById("surface"))
  g.ve.ebox = new ElementBox(g.ve)
  g.ve.surface = new Surface(g.ve)
  g.ve.datgui = new dat.GUI()
  g.ve.render(g.ve)

#Global event handlers

      @shp = new Shapes.Rectangle(0x0047ca, x, y, z, 25, 25)
      @shp.obj3d.userData = this
      @parent.obj3d.add(@shp.obj3d)
      @props = {
        name: "sw"
        capacity: 100,
        latency: 0
      }

    showProps: (f) ->
      f.add(@props, 'name')
      f.add(@props, 'capacity')
      f.add(@props, 'latency')
    
    #cyjs generates the json for this object
    cyjs: ->
