anchor.diff:        titleDiv.text = "$artist - $album";
       }
       
  +    // Get all the songs.
       HttpRequest.request(requestStr)
         .then((HttpRequest request) {
  +        // Add them to the table and show the table.
           List songs = JSON.decode(request.responseText);
           createSongTable(songs);
           songsTable.style.display = "block";
  
positive.code:       }
      });
      
      titleDiv.onClick.listen((MouseEvent e) {
        getAllAlbums(currentArtist);
      });
      
      artistsButton.onClick.listen((Event e) {
        dataList.style.display = "block";
        songsTable.style.display = "none";
        titleDiv.style.display = "none";
        
        clearAllData();
        getAllArtists();
        
        artistsButton.classes.add("active");
        albumsButton.classes.remove("active");
        songsButton.classes.remove("active");
      });
      
      albumsButton.onClick.listen((Event e) {
        dataList.style.display = "block";
        songsTable.style.display = "none";
        titleDiv.style.display = "none";
  
        clearAllData();
        getAllAlbums();
        
        albumsButton.classes.add("active");
        artistsButton.classes.remove("active");
        songsButton.classes.remove("active");
      });
      
      songsButton.onClick.listen((Event e) {
        songsTable.style.display = "block";
        dataList.style.display = "none";
        titleDiv.style.display = "none";
        
        clearAllData();
        getAllSongs();
        
        songsButton.classes.add("active");
        artistsButton.classes.remove("active");
        albumsButton.classes.remove("active");
      });
    }
    
    void clearAllData() {
      dataList.children.clear();
      tableBody.children.clear();
    }
    
    void getAllArtists() {
      HttpRequest.request("/artists")
        .then((HttpRequest request) {
          dataList.attributes['class'] = "artists";
          List<String> artists = JSON.decode(request.responseText);
          artists.sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase()));
          
          artists.forEach((String artist) {
            DivElement artistImgCrop = new DivElement();
            artistImgCrop.attributes['class'] = "artistCrop";
            ImageElement artistImg = new ImageElement();
            artistImgCrop.append(artistImg);
            
            if (artistUrls.containsKey(artist)) {
              artistImg.src = artistUrls[artist];
            }
            else {
              HttpRequest.request("https://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=9327f98028a6c8bc780c8a4896404274&artist=${Uri.encodeComponent(artist)}&format=json")
                .then((HttpRequest request) {
                  try {
                    Map obj = JSON.decode(request.responseText);
                    Map artistJson = obj["artist"];
                    for (Map img in artistJson['image']) {
                      if (img['size'] == "extralarge") {
                        artistImg.src = img['#text'];
                        artistUrls[artist] = img["#text"];
                        break;
                      }
                    }
                    
                    if (artistImg.src.length == 0)
                      throw new Exception("");
                  } catch(exception, stackTrace) {
                    artistImg.src = "../img/wookie.jpg";
                    artistUrls[artist] = "../img/wookie.jpg";
                  }
                });
            }
            
            
            LIElement artistElement = new LIElement()
              ..append(artistImgCrop)
              ..append(new DivElement()
  
negative.code: library LibraryList;
  import "dart:async";
  import "dart:convert";
  import "dart:html";
  import "package:polymer/polymer.dart";
  