use factory method for AddressBookLoader
add exception documentation