Ako ste pokrenuli program u sadašnjem obliku, mogli ste primetiti da se dijalog za unos novih zapisa u adresar ne pojavljuje ponovo - ako ste ga pre toga ugasili. To je posledica koriščenja metode requestFocus() koja samo prebacuje fokus onoj komponenti koja ga je tražila. Zbog toga se requestFocus() koristi samo za prebacivanje fokusa između vidljivih komponenti, a u ovakvom slučaju se koristi metoda show(). Time se rešava jedan problem, ali se treba rešiti drugi, mnogo veći, a to je manja preglednost programa i teža modifikacija u slučaju ubacivanja novih opcija.
MVC
Model/View/Controller arhitektura omogućava lakše promene programa, i logički grupi{e funkcionalnosti aplikacije. Po ovoj arhitekturi potrebno je podeliti aplikaciju na tri dela: Model sadrži osnovnu funkcionalnost nezavisnu od bilo kog korisničkog interfejsa, View je prezentacija Modela koja se koristi za komunikaciju s korisnikom, dok Controller definiše način komunikacije Modela i View-a. U ovoj arhitekturi Model samo prima poruke i uzvraća podacima, potpuno bez ikakve informacije o načinu funkcionisanja preostala dva dela aplikacije. Ovakva struktura aplikacije omogućava i lakšu modifikaciju u distribuiranu aplikaciju, jer se Model i View mogu nalaziti odvojeno (Model na server strani aplikacije, a View na klijent strani), dok se Controller deo prilago|ava.
U ovakvoj arhitekturi bi Model trebao sadržavati podatke i definisati način pristupa tim podacima. Za početak, metoda init() bi bila prebačena u novu klasu, AddressBookModel: