anchor.diff:     * Registers [Handler] for a [Route] and adds listener to the stream which
      * is also returned.
      */
  -  Stream<HttpRequest> registerHandler(String routeName, String method, dynamic handler){
  -    if(routeName == 'default') {
  -      throw new ArgumentError("Route name should not be 'default'.");
  +  Stream<RequestHandlerParameters> registerHandler(String routeName, dynamic handler){
  +    if(_streams.containsKey(routeName)){
  +      throw new ArgumentError("Route name '$routeName' already in use in RequestNavigator.");
       }
   
  -    var serverRoute = new _ServerRoute(routeName, method);
  -    if(_streams.containsKey(serverRoute)){
  -      throw new ArgumentError("Route name '$serverRoute' already in use in RequestNavigator.");
  -    }
  -
  -    _streams[serverRoute] = _createStreamControllerWithHandler(handler);
  -    return _streams[serverRoute].stream;
  +    _streams[routeName] = _createStreamControllerWithHandler(handler);
  +    return _streams[routeName].stream;
     }
   
     /**
      * When [Router] matches nothing then [handler] will be called (through the returned [Stream]).
      */
  -  Stream<HttpRequest> registerDefaultHandler(dynamic handler){
  -    //TODO what should we do if overriding?
  -    _streams[_defaultServerRouteId] = _createStreamControllerWithHandler(handler);
  -    return _streams[_defaultServerRouteId].stream;
  -  }
  -
  -  /**
  -   * If incoming [HttpRequest] matches [route] then [filter] is called.
  -   * If the [filter] returns true then registered handler will be called
  -   * (through [Stream]). Otherwise [noPassedHandler] will be called (through the
  -   * returned [Stream]).
  -   */
  -  Stream<HttpRequest> registerFilter(Route route, Filter filter, dynamic notPassedHandler){
  -    //TODO
  -    return null;
  +  Stream<RequestHandlerParameters> registerDefaultHandler(dynamic handler){
  +    if(_defaultStreamController != null){
  +      //TODO warning
  +      _defaultStreamController.close();
  +    }
  +    _defaultStreamController = _createStreamControllerWithHandler(handler);
  +    return _defaultStreamController.stream;
     }
   
     /**
  
positive.code: 
  library clean_router.server;
  
  //TODO Should we match HttpRequest with not set method?
  //TODO How we should handle uri parameters?
  //TODO   should handler be an abstract class / interface?
  //TODO Filters
  
  import "dart:core";
  
negative.code: import 'common.dart';
  export 'common.dart';
  
  class RequestHandlerParameters{
    HttpRequest req;
    Map<String, String> url_params;
  
    RequestHandlerParameters(this.req, this.url_params);
  }
  
  /**
   * [RequestNavigator] wires together [Route] matching, [Filter]ing of [HttpRequest]s
   * and [Handler] calling. It manages url addresses and bind them handlers.
   */
  class RequestNavigator {
    final Stream<HttpRequest> _incoming;
    final Router _router;
  
    /**
     * Maps route names to [Stream]
     */
    final Map<String, StreamController<RequestHandlerParameters>> _streams = {};
  
    /**
     * If no route is matched.
     */
    StreamController<RequestHandlerParameters> _defaultStreamController = null;
  
    /**
     * Creates new RequestNavigator listening on [_incoming] and routing via [_router].
     */
    RequestNavigator(this._incoming, this._router){
      this._incoming.listen(navigate);
    }
  
    StreamController _createStreamControllerWithHandler(dynamic handler){
      var streamController = new StreamController<RequestHandlerParameters>();
      streamController.stream.listen(handler);
      return streamController;
    }
  