Rounded rectangle class not working

hi all, so i wrote this rounded rectangle class that can draw rounded rectangles with either a solid or a gradient fill. drawing solid rect causes no prblems at all, but the ones with a gradient fill just won’t work… i’m lost… especially because i could draw them easily before with a function… maybe its something really obvious, but i thought its a nice class that probably many people could use, so i put it here for everyone. any help appreciated.

here is the class:

 class DrawRoundedRect
{
    public var mc:MovieClip;
    private var x:Number;
    private var y:Number;
    private var w:Number;
    private var h:Number;
    private var cornerRad:Number;
    // --------------------------------------
    private var fill:Object = {};
    // --------------------------------------
    private var stroke:Object = {};
    /////////////////////////////////////////////////////////////////
    public function DrawRoundedRect(props:Object)
    {
        mc = props.mc;
        x = props.x;
        y = props.y;
        w = props.w;
        h = props.h;
        cornerRad = props.cornerRad;
        // --------------------------------------
        if (props.fill.type == "solid")
        {
            fill.color = props.fill.color;
            fill.alpha = props.fill.alpha;
        }
        else if (props.fill.type == "gradient")
        {
            fill.gradType = props.fill.gradType;
            fill.colors = props.fill.colors;
            fill.alphas = props.fill.alphas;
            fill.ratios = props.fill.ratios;
            //
            fill.matrix = {};
            fill.matrix.type = props.fill.matrix.type;
            fill.matrix.x = props.fill.matrix.x;
            fill.matrix.y = props.fill.matrix.y;
            fill.matrix.w = props.fill.matrix.w;
            fill.matrix.h = props.fill.matrix.h;
            fill.matrix.rad = props.fill.matrix.rad;
        }
        // --------------------------------------
        if (props.stroke)
        {
            stroke.w = props.stroke.w;
            stroke.color = props.stroke.color;
            stroke.alpha = props.stroke.alpha;
        }
        // --------------------------------------       
        createRect(props.fill.type, props.stroke);
    }
    /////////////////////////////////////////////////////////////////
    private function createRect(fillType:String, strokeBool:Boolean):Void
    {
        mc._x = x;
        mc._y = y;
        // --------------------------------------
        if (strokeBool && stroke.width != 0)
        {
            mc.lineStyle(stroke.width, stroke.color, stroke.alpha);
        }
        // --------------------------------------       
        if (fillType == "solid")
        {
            mc.beginFill(fill.color, fill.alpha);
        }
        else if (fillType == "gradient")
        {
            mc.beginGradientFill(fill.gradType, fill.colors, fill.alphas, fill.ratios, fill.matrix);
        }
        // --------------------------------------
        mc.moveTo(0 + cornerRad, 0);
        mc.lineTo(w - cornerRad, 0);
        mc.curveTo(w, 0, w, cornerRad);
        mc.lineTo(w, h - cornerRad);
        mc.curveTo(w, h, w - cornerRad, h);
        mc.lineTo(0 + cornerRad, h);
        mc.curveTo(0, h, 0, h - cornerRad);
        mc.lineTo(0, 0 + cornerRad);
        mc.curveTo(0, 0, 0 + cornerRad, 0);
        mc.endFill();
    }
    /////////////////////////////////////////////////////////////////
}

and here is how i call it:

 var rectShineObj:Object = {};
// --------------------------------------
rectShineObj.mc = this.createEmptyMovieClip("rectShineMC", this.getNextHighestDepth());
// --------------------------------------
rectShineObj.x = 102;
rectShineObj.y = 152;
rectShineObj.w = 296;
rectShineObj.h = 100;
rectShineObj.cornerRad = 8;
// --------------------------------------
rectShineObj.fill = {};
rectShineObj.fill.type = "gradient";
rectShineObj.fill.gradType = "linear";
rectShineObj.fill.colors = [0xFFFFFF, 0xFFFFFF];
rectShineObj.fill.alphas = [25, 0];
rectShineObj.fill.ratios = [0, 255];
// --------------------------------------
rectShineObj.fill.matrix = {};
rectShineObj.fill.matrix.type = "box";
rectShineObj.fill.matrix.x = 0;
rectShineObj.fill.matrix.y = 0;
rectShineObj.fill.matrix.w = 296;
rectShineObj.fill.matrix.h = 100;
rectShineObj.fill.matrix.rad = 90 / 180 * Math.PI;
// --------------------------------------
var gradRectrawRoundedRect = new DrawRoundedRect(rectShineObj);