Introduced stored fields
diff --git a/lib/Krawfish/Index/Fields/Doc.pm b/lib/Krawfish/Index/Fields/Doc.pm
index 1ae47a9..e6d0d37 100644
--- a/lib/Krawfish/Index/Fields/Doc.pm
+++ b/lib/Krawfish/Index/Fields/Doc.pm
@@ -45,8 +45,8 @@
     push @data, $_->key_id;     # Key data
     push @data, $_->type;       # Key type marker
                                 # Store term or value!
-    push @data, $_->term_id;
-    push @data, $_->value if $_->type eq 'int';;
+    push @data, $_->term_id unless $_->type eq 'store';
+    push @data, $_->value if $_->type eq 'int' || $_->type eq 'store';
   };
 
   push @data, 'EOF';
diff --git a/lib/Krawfish/Index/Fields/Pointer.pm b/lib/Krawfish/Index/Fields/Pointer.pm
index 7527858..5ac97b1 100644
--- a/lib/Krawfish/Index/Fields/Pointer.pm
+++ b/lib/Krawfish/Index/Fields/Pointer.pm
@@ -1,4 +1,7 @@
 package Krawfish::Index::Fields::Pointer;
+use Krawfish::Koral::Document::FieldInt;
+use Krawfish::Koral::Document::FieldStore;
+use Krawfish::Koral::Document::FieldString;
 use Krawfish::Log;
 use warnings;
 use strict;
@@ -72,6 +75,7 @@
 };
 
 
+# This returns only int-values - so it may need to be renamed
 sub values {
   my $self = shift;
   my @key_ids = @_;  # Need to be sorted in order!
@@ -99,7 +103,7 @@
       $key_id = $doc->[$self->{pos}++];
       $type = $doc->[$self->{pos}++];
 
-      # Skip key term
+      # Skip key term or value (in case of store)
       $self->{pos}++;
 
       # There is a value to aggregate
@@ -107,7 +111,10 @@
         if (DEBUG) {
           print_log('f_point', "Found value for " . $key_ids[$key_pos] . ' at ' . $key_pos);
         };
-        push @values, [$key_id, $doc->[$self->{pos}++]];
+        push @values, Krawfish::Koral::Document::FieldInt->new(
+          key_id => $key_id,
+          value => $doc->[$self->{pos}++]
+        );
       };
 
       $key_pos++;
@@ -125,7 +132,7 @@
       $self->{pos}++;
       $type = $doc->[$self->{pos}++];
       $self->{pos}++;
-      $self->{pos}++ if $type eq 'int'
+      $self->{pos}++ if $type eq 'int' || $type eq 'store'
     };
 
     # Remember the current field
@@ -135,6 +142,7 @@
   return @values;
 };
 
+
 # Get all field term ids.
 # If key ids are passed, they need to be in numerical order!
 sub fields {
@@ -149,15 +157,7 @@
   unless (@_ > 0) {
     while ($current && $current ne 'EOF') {
 
-      # The structure [key_id, key] is necessary for multivalued fields!
-      $key_id = $self->{pos}++;
-
-      $type = $doc->[$self->{pos}++];
-
-      push @fields, [$key_id, $doc->[$self->{pos}++]];
-
-      # Skip value
-      $self->{pos}++ if $type eq 'int';
+      push @fields, $self->_get_by_type($doc);
       $current = $doc->[$self->{pos}];
     };
   }
@@ -186,14 +186,12 @@
 
       # The key id matches the first id
       if ($current == $key_ids[$key_pos]) {
-        # The structure [key_id, key] is necessary for multivalued fields!
-        $self->{pos}++;
-        $type = $doc->[$self->{pos}++];
-        my $field = $doc->[$self->{pos}++];
-        push @fields, [$current, $field];
+        push @fields, $self->_get_by_type($doc);
 
         if (DEBUG) {
-          print_log('f_point', "Found field_id $field for " . $key_ids[$key_pos] . ' at ' . $key_pos);
+          print_log('f_point', 'Found field ' .
+                      $fields[-1]->to_string .
+                      ' for ' . $key_ids[$key_pos]);
         };
 
         $key_pos++;
@@ -210,11 +208,10 @@
       else {
         $self->{pos}++;
         $type = $doc->[$self->{pos}++];
-        $self->{pos}++;
+        $self->{pos}++ if $type ne 'store';
+        $self->{pos}++ if $type eq 'int' || $type eq 'store';
       };
 
-      # Skip value
-      $self->{pos}++ if $type eq 'int';
 
       # Remember the current field
       $current = $doc->[$self->{pos}];
@@ -225,9 +222,44 @@
 };
 
 
+sub _get_by_type {
+  my ($self, $doc) = @_;
+
+  my $key_id = $doc->[$self->{pos}++];
+
+  my $type = $doc->[$self->{pos}++];
+
+  # Read integer
+  if ($type eq 'int') {
+    return Krawfish::Koral::Document::FieldInt->new(
+      key_id => $key_id,
+      key_value_id => $doc->[$self->{pos}++],
+      value => $doc->[$self->{pos}++]
+    );
+  }
+
+  # read string
+  elsif ($type eq 'string') {
+    return Krawfish::Koral::Document::FieldString->new(
+      key_id => $key_id,
+      key_value_id => $doc->[$self->{pos}++]
+    );
+  }
+
+  # read store
+  elsif ($type eq 'store') {
+    return Krawfish::Koral::Document::FieldStore->new(
+      key_id => $key_id,
+      value => $doc->[$self->{pos}++]
+    );
+  };
+};
+
+
 sub field_terms {
   my $self = shift;
-  return map { $_->[1] } $self->fields(@_);
+  warn 'probably wrong!';
+  return map { $_->term_id } $self->fields(@_);
 };
 
 
diff --git a/lib/Krawfish/Index/Merge.pm b/lib/Krawfish/Index/Merge.pm
index 4ef971b..f6881de 100644
--- a/lib/Krawfish/Index/Merge.pm
+++ b/lib/Krawfish/Index/Merge.pm
@@ -17,10 +17,10 @@
 
 
 sub new {
-  my ($class, $index_a, $index_b) = @_;
+  my ($class, $segment_a, $segment_b) = @_;
   bless {
-    index_a => $index_a,
-    index_b => $index_b
+    segment_a => $segment_a,
+    segment_b => $segment_b
   }, $class;
 };
 
@@ -64,6 +64,7 @@
   $self->_launch;
 };
 
+
 sub _launch {
   # TODO:
   #   - If the dictionary is new
diff --git a/lib/Krawfish/Index/Segment.pm b/lib/Krawfish/Index/Segment.pm
index e23dcaf..0a0a2dd 100644
--- a/lib/Krawfish/Index/Segment.pm
+++ b/lib/Krawfish/Index/Segment.pm
@@ -165,6 +165,7 @@
   # Create term index for fields
   my $fields = $doc->fields;
   foreach (@$fields) {
+    next if $_->type eq 'store';
     if (DEBUG) {
       print_log('seg', 'Added field #' . $_->term_id . ' for doc_id=' . $doc_id);
     };