anchor.diff:            response.headers.set(HttpHeaders.CONTENT_LENGTH, length);
           }
   
  -        if (_maxAge != null) {
  -          response.headers.set(HttpHeaders.CACHE_CONTROL, "max-age=$_maxAge");
  -        }
  -        
           // Fall back to sending the entire content.
           pipeToResponse(file.openRead(), response);
         }, onError: fileError);
       }, onError: fileError);
     }
   
  -  _resolvePath(String uriPath) {
  -    Builder builder = new Builder(root: absolute(_root.root));
  -    var decodedUri = Uri.decodeComponent(uriPath);
  -    var root = rootPrefix(decodedUri);
  -    var parts = split(decodedUri);
  +  /**
  +   * Seeks for file at documentRoot/relativePath and depending on [request]
  +   * parameters it fills [request.response].
  +   */
  +  void handleRequest(String relativePath, HttpRequest request) {
  +    request.response.done.catchError(
  +        //TODO
  +      () => throw new StateError("Error creating response")
  +    );
   
  -    if (parts.isNotEmpty && parts.first == root) {
  -      parts.removeAt(0);
  -    }
  -
  -    parts.removeWhere((e) => e.isEmpty);
  -    String path;
  -    if (!parts.isEmpty) {
  -      var paths = [];
  -      paths.add(builder.root);
  -      paths.addAll(parts);
  -      path = joinAll(paths);
  -    } else {
  -      path = builder.root;
  -    }
  -
  -    return path;
  -  }
  -
  -  /**
  -   * Handles the HttpRequest [request]
  -   */
  -  void handleRequest(HttpRequest request) {
  -    request.response.done.catchError(_errorHandler);
  -
  -    if (split(request.uri.path).contains('..')) {
  -      // Invalid path.
  -      request.response.statusCode = HttpStatus.FORBIDDEN;
  -      request.response.close();
  -      return;
  -    }
  -
  -    String path = _resolvePath(request.uri.path);
  +    //TODO check format, consider using Builder
  +    String path = documentRoot + relativePath;
   
       FileSystemEntity.type(path)
       .then((type) {
  
positive.code:   void addMIMETypes(Map<String, String> types){
      _extToContentType.addAll(types);
    }
    
    /**
     * Serve the file [file] to the [request]. The content of the file will be
     * streamed to the response. If a supported [:Range:] header is received, only
  
negative.code:         response.close();
          return;
        }
  
        file.length().then((length) {
          // Always set Accept-Ranges and Last-Modified headers.
  