     @baseRect = new Shapes.Rectangle(0x262626, 0, 0, 0, @width, @height)
     @baseRect.obj3d.userData = this
     @ve.scene.add(@baseRect.obj3d)
+
+  addElement: (ef, x, y) ->
+    e = new ef.constructor(@baseRect, x, y, 5)
+    @ve.render()
+    e
 
 #VisualEnvironment holds the state associated with the Threejs objects used
 #to render Surfaces and the ElementBox. This class also contains methods

    @pos.y = -(event.layerY / @ve.container.offsetHeight) * 2 + 1
    console.log(@pos.x + "," + @pos.y)

  #onmousedown handlers
  baseDown: (event) ->
    @updateMouse(event)

  placingMove: (event) ->
    @updateMouse(event)

    @ve.raycaster.setFromCamera(@pos, @ve.camera)
    bix = @ve.raycaster.intersectObject(@ve.surface.baseRect.obj3d)

    if bix.length > 0
      @placingObject.shp.obj3d.position.x = bix[0].point.x #event.layerX #@pos.x
      @placingObject.shp.obj3d.position.y = bix[0].point.y #event.layerY #@pos.y
      @ve.render()

