diff --git a/lib/KorAP/VirtualCorpus/Doc.pm b/lib/KorAP/VirtualCorpus/Doc.pm
index e635d3d..dff1ee4 100644
--- a/lib/KorAP/VirtualCorpus/Doc.pm
+++ b/lib/KorAP/VirtualCorpus/Doc.pm
@@ -3,6 +3,9 @@
 use warnings;
 use base 'KorAP::VirtualCorpus';
 
+# TODO:
+# Maybe replaceble with DocVec
+
 # Constructor
 sub new {
   my $class = shift;
@@ -76,7 +79,6 @@
   return $self->{value};
 };
 
-
 # Stringify fragment
 sub _to_fragment {
   my $self = shift;
diff --git a/lib/KorAP/VirtualCorpus/DocVec.pm b/lib/KorAP/VirtualCorpus/DocVec.pm
index 49fefb8..ae7aefb 100644
--- a/lib/KorAP/VirtualCorpus/DocVec.pm
+++ b/lib/KorAP/VirtualCorpus/DocVec.pm
@@ -29,6 +29,12 @@
   return $self->{value};
 };
 
+# Add value;
+sub add {
+  my $self = shift;
+  push @{$self->{value}}, shift;
+};
+
 # Stringify fragment
 sub _to_fragment {
   my $self = shift;
@@ -37,8 +43,12 @@
   $json .= '"type":"type:' . $self->type . '",';
   $json .= '"match":"match:' . $self->match . '",';
   $json .= '"key":"' . $self->key . '",';
-  $json .= '"value":[' . join(',', map { $self->quote($_) } @{$self->value}) . ']';
-
+  if (@{$self->value} == 1) {
+    $json .= '"value":'.$self->quote($self->value->[0]);
+  }
+  else {
+    $json .= '"value":[' . join(',', map { $self->quote($_) } @{$self->value}) . ']';
+  };
   # Set at the end, when all comments are done
   $json .= $self->_commentparam_to_string;
   return $json . '}';
diff --git a/lib/KorAP/VirtualCorpus/Group.pm b/lib/KorAP/VirtualCorpus/Group.pm
index 4062cf9..bcdc95c 100644
--- a/lib/KorAP/VirtualCorpus/Group.pm
+++ b/lib/KorAP/VirtualCorpus/Group.pm
@@ -14,7 +14,8 @@
   bless {
     # New try
     ops => undef,
-    type => undef
+    type => undef,
+    field_ops => {}
   }, $class;
 };
 
@@ -26,6 +27,7 @@
   $clone->{ops} = [@{$self->{ops}}] if $self->{ops};
   $clone->{type} = $self->{type};
   $clone->{name} = $self->{name};
+  $clone->{field_ops} = {};
   bless $clone, __PACKAGE__;
 };
 
@@ -105,11 +107,20 @@
 # Define a field that should be "or"ed
 sub union_field {
   my $self = shift;
-  my $field = shift;
+  my $key = shift;
   my $value = shift;
-  $self->union(
-    KorAP::VirtualCorpus::Doc->new($field)->value($value)
-  );
+
+  my $field = $self->{field_ops}->{$key};
+
+  if ($field) {
+    $field->add($value)
+  } else {
+    my $vec = KorAP::VirtualCorpus::DocVec
+      ->new($key)
+      ->value($value);
+    $self->union($vec);
+    $self->{field_ops}->{$key} = $vec;
+  };
 };
 
 # Define an operand to be "and"ed
@@ -153,6 +164,12 @@
   $self->joint($doc);
 };
 
+sub DESTROY {
+  my $self = shift;
+  foreach (keys %{$self->{field_ops}}) {
+    delete $self->{field_ops}->{$_};
+  };
+};
 
 1;
 
