var HCard = Microformat.create();
with(HCard) {
container('vcard');

one('fn', 'bday', 'tz', 'sort_string', 'uid', 'class');
many('label', 'sound', 'title', 'role', 'key',
'mailer', 'rev', 'nickname', 'category', 'note',
{logo: 'url', url: 'url', photo: 'url'});

one('n', function(mf){with(mf){
one('family_name', 'given_name', 'additional_name');
many('honorific_prefix', 'honorific_suffix');
}});

many('email', function(mf){with(mf){
many('type');
many('value');
}});

many('tel', function(mf){with(mf){
many('type');
many('value');
}});

many('adr', function(mf){with(mf){
one('post_office_box', 'extended_address', 'street_address',
'locality', 'region', 'postal_code', 'country_name', 'value');
many('type');
}});

one('geo', function(mf){with(mf){
one('latitude', 'longitude');
}});

many('org', function(mf){with(mf){
one('organization_name', 'organization_unit');
}});
};