done with some error handling for cities,  and states