@Override
 public void setValue(PersonProxy value) {
   createMutablePerson(value);
   addressPresenter.setValue(person.getAddress());
   display.getName().setValue(person.getName());
   display.getNote().setValue(person.getNote());
   display.getDescription().setValue(person.getDescription());
   mentorSelector.setValue(person.getMentor());
   scheduleEditor.setValue(person.getClassSchedule());
 }
 @Override
 public PersonProxy getValue() {
   if (person == null) return person;
   person.setAddress(addressPresenter.getValue());
   person.setName(display.getName().getValue());
   person.setNote(display.getNote().getValue());
   person.setDescription(display.getDescription().getValue());
   person.setMentor(mentorSelector.getValue());
   person.setClassSchedule(scheduleEditor.getValue());
   return person;
 }
 @Override
 public void go(HasWidgets container) {
   addressPresenter.go(container);
   mentorSelector.go(container);
   scheduleEditor.go(container);
   eventBus.addHandler(
       ChooseMentorEvent.TYPE,
       new ChooseMentorEvent.Handler() {
         @Override
         public void onChooseMentor(ChooseMentorEvent event) {
           PersonProxy mentor = personContext.edit(event.getPerson());
           mentorSelector.setValue(mentor);
         }
       });
 }