%rules = ( _default => sub { if (scalar(keys %{$_[1]}) == 1) { return $_[0] => $_[1]->{_content} } else { return $_[0] => $_[1] } }, phone => sub {$_[1]->{type} => $_[1]->{content}}, phones => sub {delete $_[1]->{_content}; 'phones' => $_[1]}, );