function Listenable() {
  this.listeners = {};
  this.registerListener = function( eventType, listener ) {
    if ( !isSet( this.listeners[ eventType ] ) )
      this.listeners[ eventType ] = [];
    //  Apparemment il y a un problème avec ma version de extend
    var exists = false;
    for( var i in this.listeners[ eventType ] )
      if ( this.listeners[ eventType ][ i ] == listener )
        exists = true;
    if ( !exists )
      this.listeners[ eventType ].push( listener );
    //  ** **
  }
  this.removeListener = function( listener ) {
    for( var i in this.listeners ) {
      for( var j=0; j<this.listeners.length; j++ )
        if ( this.listeners[ i ][ j ] == listener ) {
          delete( this.listeners[ i ][ j ] );
        }
    }
  }
  this.notify = function( eventType ) {
    for( var i in this.listeners ) {
      if ( i != eventType )
        continue;
      for( var j=0; j<this.listeners[ i ].length; j++ )
        this.listeners[ i ][ j ].handleEvent( eventType, this );
    }
  }
}