anchor.diff:    response.close();
   }
   
  -
   // Create HTML response to the request.
  -StringBuffer createHtmlResponse(HttpRequest request) {
  -  final session = new Session(request);
  +StringBuffer createHtmlResponse(HttpRequest request, Session session) {
     if (session.isNew || request.uri.query == null) {
       return createMenuPage();
     }
  -  else if (request.uri.queryParameters.containsKey("menuPage")) {
  -    return createConfirmPage(request);
  -  }
  -  else if (request.uri.queryParameters["confirmPage"].trim() == "confirmed") {
  +  if (request.uri.queryParameters.containsKey("menuPage")) {
  +    StringBuffer sb = createConfirmPage(request, session);
  +    if (sb.isNotEmpty)
  +      return sb;
  +    return createMenuPage();
  +  }
  +  if (request.uri.queryParameters["confirmPage"].trim() == "confirmed") {
       StringBuffer sb = createThankYouPage(session);
       session.invalidate();
       return sb;
     }
  -  else if (request.uri.queryParameters["confirmPage"].trim() == "no, re-order") {
  +  if (request.uri.queryParameters["confirmPage"].trim() == "no, re-order") {
       return createMenuPage(cart : session.getAttribute("cart"));
     }
  -  else {
  -    session.invalidate();
  -    return createErrorPage("Invalid request received.");
  -  }
  -}
  -
  -
  -/*
  - * Session class is a wrapper of the HttpSession
  - * Makes it easier to transport Java server code to Dart server
  - */
  -class Session{
  -  HttpSession _session;
  -  String _id;
  -  bool _isNew;
  -
  -  Session(HttpRequest request){
  -    _session = request.session;
  -    _id = request.session.id;
  -    _isNew = request.session.isNew;
  -    request.session.onTimeout = (){
  -      print("${new DateTime.now().toString().substring(0, 19)} : "
  -       "timeout occurred for session ${_id}");
  -    };
  -  }
  -
  -  // getters
  -  HttpSession get session => _session;
  -  String get id => _id;
  -  bool get isNew => _isNew;
  -
  -  // getAttribute(String name)
  -  dynamic getAttribute(String name) => _session[name];
  -
  -  // setAttribute(String name, dynamic value)
  -  setAttribute(String name, dynamic value) { _session[name] = value; }
  -
  -  // getAttributes()
  -  Map getAttributes() {
  -    Map attributes = {};
  -    for(String x in _session.keys) attributes[x] = _session[x];
  -    return attributes;
  -  }
  -
  -  // getAttributeNames()
  -  List getAttributeNames() {
  -    List names = [];
  -    for(String x in _session.keys) names.add(x);
  -    return names;
  -  }
  -
  -  // removeAttribute()
  -  removeAttribute(String name) { _session.remove(name); }
  -
  -  // invalidate()
  -  invalidate() { _session.destroy(); }
  -}
  -
  +  session.invalidate();
  +  return createErrorPage("Invalid request received.");
  +}
   
   /*
    * Shopping cart class.
  
positive.code: 
    Map<int, ShoppingCartItem> get items => _items;
  
    final todaysMenu = [
      300, "Tai (Japanese red sea bream)", 360,
      290, "Maguro (Tuna)", 360,
      280, "Sake (Salmon)", 360,
      270, "Hamachi (Yellowtail)", 360,
      260, "Kanpachi (Great amberjack)", 360,
      150, "Tobiko (Flying Fish Roe)", 520,
      160, "Ebi (Shrimp)", 240,
      170, "Unagi (Eel)", 520,
      180, "Anago (Conger Eal)", 360,
      190, "Ika (Squid)", 200
    ];
  
    // constructor
    TodaysMenu() {
      for (var i = 0; i < todaysMenu.length ~/ 3; i++) {
        var cartItem = new ShoppingCartItem();
        cartItem.itemCode=todaysMenu[i * 3];
        cartItem.itemName = todaysMenu[i * 3 + 1];
        cartItem.perItemCost = todaysMenu[i * 3 + 2].toDouble();
        cartItem.qty = 0;
        cartItem.subTotal = 0.0;
        _items[cartItem.itemCode] = cartItem;
      }
    }
  }
  
  
  
  // Create menu page HTML text.
  StringBuffer createMenuPage({ShoppingCart cart: null}) {
  
negative.code:     sortedItemCodes.sort();
      return sortedItemCodes;
    }
  }
  
    /*
     * Bean like class to set and get information about items in the shopping cart.
  