as3 custom events made easy

I've seen a lot of tutorials on this and none of them seem so straightforward so here goes. So let's say i have a class and i have another class that extends something like socket and i want to know when something happens in my socket class, like an event…

i'll have to create a custom event class:

package
{
  import flash.events.Event
  public class ServerEvent extends Event
  {
    public static const ON_LOGIN:String = "onLogin"
    public function ServerEvent(type:String):void
    {
      super(type)
    }
  }
}

so then in my class which extends Socket, I will simply dispatch this event when I want it to fire:

package
{
  import flash.events.*
  import flash.net.Socket
  public class CustomSocket extends Socket
  {
    //custom class goes here
    //run onLogin function when logged in
  }
  public function onLogin():void{
    dispatchEvent(new ServerEvent("onLogin"))
  }
}

so then, when we instantiate our custom server class in our pre we simply add an event listener like we normally would.

package {
  import flash.display.Sprite
  public class Sockets extends Sprite
  {
    public var socket:CustomSocket
    public function Sockets()
    {
      socket = new CustomSocket()
      socket.addEventListener(ServerEvent.ON_LOGIN, loggedIn)
    }
    public function loggedIn(e:ServerEvent):void{
      trace("yay! custom event worked!")
    }
  }
}

seems easy right? awesome.