 			{
 				return o[valueName];
 			}
-			return null;
+			return undefined;
 		}
 		
+        private function getInheritingValue(thisObject:Object, valueName:String, state:String = null, attrs:Object = null):*
+        {
+            var value:*;
+            if (thisObject is IChild)
+            {
+                var parentObject:Object = IChild(thisObject).parent;
+                if (parentObject)
+                {
+                    value = getValue(parentObject, valueName, state, attrs);
+                    if (value == "inherit" || value === undefined)
+                        return getInheritingValue(parentObject, valueName, state, attrs);
+                    if (value !== undefined)
+                        return value;
+                }
+            }
+            return "inherit";
+        }
+        
         /**
          *  A method that stores a value to be shared with other objects.
          *  It is global, not per instance.  Fancier implementations

				if (o)
				{
					value = o[valueName];
					if (value !== undefined)
						return value;
				}

			var className:String;
			var selectorName:String;
			
			if (thisObject is IStyleableObject)
			{
                var styleable:IStyleableObject = IStyleableObject(thisObject);
                if (styleable.style != null)
                {
                    try {
                        value = styleable.style[valueName];
                    }
                    catch (e:Error) {
                        value = undefined;
                    }
                    if (value == "inherit")
                        return getInheritingValue(thisObject, valueName, state, attrs);
                    if (value !== undefined)
                        return value;
                }
				className = styleable.className;
				if (state)
				{
					selectorName = className + ":" + state;
