         protected function effectiveVisibilityChanged(value:Boolean):void
         {
             dispatchEvent(new PropertyChangeEvent("layerPropertyChange", false, 
-                false, PropertyChangeEventKind.UPDATE, "effectiveVisibility", !value, value));
+                false, PropertyChangeEventKind.UPDATE, "effectiveVisibility", 
+                !effectiveVisibility, effectiveVisibility));
             
             for (var i:int = 0; i < layerChildren.length; i++)
             {

        protected function effectiveAlphaChanged(oldAlpha:Number):void
        {
            dispatchEvent(new PropertyChangeEvent("layerPropertyChange", false, 
                false, PropertyChangeEventKind.UPDATE, "effectiveAlpha", oldAlpha, effectiveAlpha));
            
            for (var i:int = 0; i < layerChildren.length; i++)
            {

         */
        protected function parentChanged(value:DesignLayer):void
        {
            // We remove our layer from the old parent unless the new
            // parent is null (in this case we know we are invoking this 
            // directly from removeLayer).
            if (_parent && value)
                _parent.removeLayer(this);
            
            _parent = value;
