Actually this seems like work the Address should be doing. I'd expect it would be able to assign a hash of attributes in its constructor.