completed ex17 and add extra field to address struct