         sys: "",
         design: dsg,
         capacity: 1000,
-        latency: null,
+        latency: 0,
         endpoints: [
           {name: "", sys: "", design: dsg, ifname: ""},
           {name: "", sys: "", design: dsg, ifname: ""}

  #onmousedown handlers
  baseDown: (event) ->

    #get the list of objects the mouse click intersected
    @updateMouse(event)
    @ve.raycaster.setFromCamera(@pos, @ve.camera)
    ixs = @ve.raycaster.intersectObjects(@ve.scene.children, true)

    e

  addIfContains: (box, e, set) ->
    o3d = null
    if e.shp?
      o3d = e.shp.obj3d
    else if e.ln?
      o3d = e.ln.obj3d
    if o3d != null
      o3d.geometry.computeBoundingBox()
      bb = o3d.geometry.boundingBox
      bx = new THREE.Box2(
        o3d.localToWorld(bb.min),
        o3d.localToWorld(bb.max)
      )
      set.push(e) if box.containsBox(bx)

      #for some reason computing the bounding box kills selection
      o3d.geometry.boundingBox = null
    true

  toBox2: (box) ->
