@Override
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
   super.onCreateContextMenu(menu, v, menuInfo);
   AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
   menu.setHeaderTitle(songs.get(info.position));
   Song s = this.library.getSong(songs.get(info.position));
   if (s.getClef() == 0) {
     menu.add(Menu.NONE, 0, Menu.NONE, "Clef: Bass");
   } else {
     menu.add(Menu.NONE, 0, Menu.NONE, "Clef: Treble");
   }
   menu.add(Menu.NONE, 1, Menu.NONE, "Meter: " + s.getMeterTop() + "/" + s.getMeterBottom());
   menu.add(Menu.NONE, 2, Menu.NONE, "Tempo: " + s.getTempo());
   menu.add(Menu.NONE, 2, Menu.NONE, "Length: " + s.size() + " (notes)");
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (resultCode == 0) {
     if (data == null) {
       return;
     }
     Song s = (Song) data.getSerializableExtra("song object");
     library.remove(s.getTitle());
     library.addSong(s);
     Log.d("", "updating song, length: " + s.size());
     Log.d("", "should have updated song");
     updateView();
   } else if (resultCode == 1) {
     // delete
     if (data == null) {
       return;
     }
     Song s = (Song) data.getSerializableExtra("song object");
     library.remove(s.getTitle());
     updateView();
   }
 }