Custom events are driving me mad! :'(

I need to start really getting into AS3 events, but I’m really confused… I have read a lot on custom events but I still can’t make them work…

Custom Event:

package Game{
    import flash.events.Event;
    import flash.geom.Point;
    public class MouseSelection extends Event {
        public static  const SELECTION:String="selection";
        public var StartingPoint:Point;
        public function MouseSelection(type:String,bubbles:Boolean=false,cancelable:Boolean=false) {
            super(type,bubbles,cancelable);
        }
        public override  function clone():Event {
            return new MouseSelection(type, bubbles, cancelable);
        }
        public override  function toString():String {
            return formatToString("MouseSelection","StartingPoint","type","bubbles","cancelable");
        }
    }
}

Main Class :

package Game{
    import flash.display.MovieClip;
    import flash.events.*;
    import flash.geom.Point;
    import flash.display.Shape;
    import Game.MouseSelection;
    public class Main extends MovieClip {
        private var StartingMousePoint:Point;
        private var MouseIsDown:Boolean=false;
        private var MouseSelectionRect:Shape=new Shape  ;
        function Main() {
            var Exemple:Character=new Character();
            Exemple.x=50;
            Exemple.y=50;
            addChild(Exemple);
            addChild(MouseSelectionRect);
            stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
            stage.addEventListener(MouseSelection.SELECTION,mouseSel);
        }
        public function mouseSel(event:MouseSelection) {
            trace(event); // DOES NOT WORKS
        }
        public function mouseDownHandler(event:MouseEvent):void {
            MouseIsDown=true; // WORKS
            StartingMousePoint=new Point(event.stageX,event.stageY);
            var MouseSelectionEvent:MouseSelection=new MouseSelection(MouseSelection.SELECTION);
            MouseSelectionEvent.StartingPoint=StartingMousePoint;
            dispatchEvent(MouseSelectionEvent);
            trace("Dispatch!");
        }
    }
}

I have no idea what I have done wrong… but it just doesn’t work! Also, eventually this will need to be in another class (display object) than the main class, it’s just easier to work all in the main class at first.