     private static function injectProperty(property:XML, metadata:XML,
             source:DisplayObjectContainer, target:*):void
     {
-        var args:Object = { name: null, wrapper: null };
+        var args:Object = { name: null, adapter: null };
 
         try {
             collectArgs(metadata, args);
             var displayPath:String = args.name || property.@name;
             var child:* = getChildByPath(source, displayPath);
 
-            if (args.wrapper)
-            {
-                child = construct(args.wrapper, child);
+            if (args.adapter === "")
+            {
+                args.adapter = property.@type;
+            }
+
+            if (args.adapter !== null)
+            {
+                child = construct(args.adapter, child);
             }
 
             target[property.@name] = child;

 *     </listing>
 *     will first search the container for a child called 'navBar', and
 *     then search 'navBar' for a child called 'nextButton'. If any of the
 *     intermediate children are not themselves DisplayObjectContainers,
 *     an error is thrown.
 *   </dd>
 *
 *   <dt><code>wrapper</code></dt>
 *   <dd>Instead of casting the child DisplayObject to the property's
 *     class, use the specified class as a constructor, with the child
 *     DisplayObject as an argument. For example:
 *     <listing version="3.0">
 *       [Display(wrapper="org.yellcorp.ui.GlowButton")]
 *       public var nextButton:GlowButton;
 *     </listing>
 *     will perform the following:
 *     <listing version="3.0">
 *       target.nextButton = new GlowButton(container.getChildByName("nextButton")));
 *     </listing>
 *   </dd>
 * </dl>
 *
 * TODO: The <code>wrapper</code> parameter should support a default value,
 * which would be the class of the target property. Filling out the full
 * class name would only then be necessary if a subclass or an implemetor of
 * an interface was desired.
 */
public class DisplayInjector
{

 * called the 'target'.
 *
 * For each qualifying instance variable of the target, the default
 * behaviour of DisplayInjector.inject is:
 * <ul>
 *   <li>Search the container for a child with the same name as the target
 *       variable.</li>
 *   <li>Cast it to the target variable class.</li>
 *   <li>Assign it to the target variable.</li>
 * </ul>
 *
 * A qualifying instance variable is one that is publically accessible and
 * has the metadata tag <code>[Display]</code>.
 *
 * As an example, if a target instance has the following variable:
 *
