     elementFactory.register @ if @registerWithElementFactory()
     super
 
+  ############################
+  # name/key property
+  ############################
+
+  @concreteProperty
+    name:
+      default: null
+      validate:   (v) -> v == null || isFunction v.toString
+      preprocess: (v) -> if v == null then v else v.toString()
+
+  @virtualProperty
+    key:
+      getter: (pending) -> @getState(pending)._name
+      setter: (v) -> @setName v
+
+
   ##########################
   # Element Registry
   ##########################
   @_elementInstanceRegistry: _elementInstanceRegistry = {}
+
+  @getter
+    isRegistered: -> !!_elementInstanceRegistry[@getInstanceId()]
+
   @getElementByInstanceId: (instanceId) -> _elementInstanceRegistry[instanceId]
 
   _register: ->

    @queueEvent "unregistered"
    null

  @getter
    isRegistered: -> !!_elementInstanceRegistry[@getInstanceId()]

  _updateRegistryFromPendingState: ->
    if pendingParent = @getPendingParent()
      @_register() if pendingParent.getIsRegistered()

      @_unregister()

  ############################
  # Inspectors
  ############################

  @getter
    instanceId: -> @remoteId || @getUniqueId()
