Introduced stored fields
diff --git a/lib/Krawfish/Koral/Document.pm b/lib/Krawfish/Koral/Document.pm
index a2d81ec..aa96468 100644
--- a/lib/Krawfish/Koral/Document.pm
+++ b/lib/Krawfish/Koral/Document.pm
@@ -33,7 +33,6 @@
   my $class = shift;
 
   my $self = bless {
-    primary => '',
     sortable => {},
     stream => Krawfish::Koral::Document::Stream->new,
     fields => Krawfish::Koral::Document::Fields->new
@@ -52,12 +51,6 @@
 };
 
 
-# Get the primary data
-sub primary_data {
-  $_[0]->{primary};
-};
-
-
 # Get the stream object
 sub stream {
   $_[0]->{stream};
@@ -110,8 +103,6 @@
     $primary = $doc->{primaryData};
   };
 
-  $self->{primary} = $primary;
-
   # Add metadata fields
   my $pos = 0;
   my %sortable;
@@ -132,11 +123,17 @@
 
 
     # Prepare for summarization
-    if ($field->{type} && $field->{type} eq 'type:integer') {
+    if (!$field->{type} || $field->{type} eq 'type:string') {
+      $fields->add_string($field->{key}, $field->{value});
+    }
+    elsif ($field->{type} eq 'type:integer') {
       $fields->add_int($field->{key}, $field->{value});
     }
+    elsif ($field->{type} eq 'type:store') {
+      $fields->add_store($field->{key}, $field->{value});
+    }
     else {
-      $fields->add_string($field->{key}, $field->{value});
+      warn 'unknown field type: ' . $field->{type};
     };
 
     # This will later be indexed for search as well as retrieval in
diff --git a/lib/Krawfish/Koral/Document/FieldInt.pm b/lib/Krawfish/Koral/Document/FieldInt.pm
index c7ebe6f..71f4967 100644
--- a/lib/Krawfish/Koral/Document/FieldInt.pm
+++ b/lib/Krawfish/Koral/Document/FieldInt.pm
@@ -1,14 +1,15 @@
 package Krawfish::Koral::Document::FieldInt;
 use Krawfish::Util::String qw/squote/;
+# TODO:
+#   Probably use Krawfish::Koral::Meta::Type::KeyID and
+#   Krawfish::Koral::Meta::Type::Key.
 use warnings;
 use strict;
 
 sub new {
   my $class = shift;
-  bless {
-    key => shift,
-    value => shift
-  }, $class;
+  # key, value, key_id, key_value_id
+  bless { @_ }, $class;
 };
 
 sub type {
@@ -35,6 +36,8 @@
 sub identify {
   my ($self, $dict) = @_;
 
+  return if $self->{key_id};
+
   my $key  = '!' . $self->{key};
   my $term = '+' . $self->{key} . ':' . $self->{value};
 
@@ -67,12 +70,16 @@
 };
 
 
+sub inflate {
+  ...
+};
+
 sub to_string {
   my $self = shift;
   unless ($self->{key_id}) {
     return squote($self->{key}) . '=' . $self->{value};
   };
-  return $self->{key_id} . '=' . $self->{key_value_id} . '(' . $self->{value} . ')';
+  return '#' . $self->{key_id} . '=' . '#' . $self->{key_value_id} . '(' . $self->{value} . ')';
 };
 
 
diff --git a/lib/Krawfish/Koral/Document/FieldStore.pm b/lib/Krawfish/Koral/Document/FieldStore.pm
new file mode 100644
index 0000000..76c8c97
--- /dev/null
+++ b/lib/Krawfish/Koral/Document/FieldStore.pm
@@ -0,0 +1,67 @@
+package Krawfish::Koral::Document::FieldStore;
+use Krawfish::Util::String qw/squote/;
+use warnings;
+use strict;
+
+# Class for store-only fields
+# (not indexed in the dictionary)
+
+sub new {
+  my $class = shift;
+  # key, value
+  bless { @_ }, $class;
+};
+
+sub type {
+  'store'
+};
+
+
+sub key {
+  $_[0]->{key};
+};
+
+sub key_id {
+  $_[0]->{key_id};
+};
+
+sub term_id {
+  # There is no term_id, but it's required for sorting
+  undef;
+};
+
+sub value {
+  $_[0]->{value};
+};
+
+sub identify {
+  my ($self, $dict) = @_;
+
+  my $key  = '!' . $self->{key};
+
+  # Get key term_id
+  # TODO:
+  #   Add new method that introduces the term
+  #   in case it doesn't exist
+  my $key_id = $dict->term_id_by_term($key);
+
+  # Not given yet
+  if (defined $key_id) {
+    $self->{key_id} = $key_id;
+  }
+
+  else {
+    $self->{key_id} = $dict->add_term($key);
+  };
+  return $self;
+};
+
+
+sub to_string {
+  my $self = shift;
+  my $str = $self->{key_id} ? '#' . $self->{key_id} : squote($self->{key});
+  return $str . '=' . squote($self->{value});
+};
+
+
+1;
diff --git a/lib/Krawfish/Koral/Document/FieldString.pm b/lib/Krawfish/Koral/Document/FieldString.pm
index a93035a..1a1c296 100644
--- a/lib/Krawfish/Koral/Document/FieldString.pm
+++ b/lib/Krawfish/Koral/Document/FieldString.pm
@@ -3,12 +3,12 @@
 use warnings;
 use strict;
 
+# Class for string fields
+
 sub new {
   my $class = shift;
-  bless {
-    key => shift,
-    value => shift
-  }, $class;
+  # key, value
+  bless { @_ }, $class;
 };
 
 
@@ -68,7 +68,7 @@
   unless ($self->{key_id}) {
     return squote($self->{key}) . '=' . squote($self->{value});
   };
-  return $self->{key_id} . '=' . $self->{key_value_id};
+  return '#' . $self->{key_id} . '=' . '#' . $self->{key_value_id};
 };
 
 1;
diff --git a/lib/Krawfish/Koral/Document/Fields.pm b/lib/Krawfish/Koral/Document/Fields.pm
index 0cdb964..4c13c57 100644
--- a/lib/Krawfish/Koral/Document/Fields.pm
+++ b/lib/Krawfish/Koral/Document/Fields.pm
@@ -1,6 +1,7 @@
 package Krawfish::Koral::Document::Fields;
 use Krawfish::Koral::Document::FieldString;
 use Krawfish::Koral::Document::FieldInt;
+use Krawfish::Koral::Document::FieldStore;
 use warnings;
 use strict;
 
@@ -14,7 +15,10 @@
   my ($key, $value) = @_;
 
   # This may be an integer value
-  push @$self, Krawfish::Koral::Document::FieldString->new($key, $value);
+  push @$self, Krawfish::Koral::Document::FieldString->new(
+    key => $key,
+    value => $value
+  );
 };
 
 
@@ -23,7 +27,22 @@
   my ($key, $value) = @_;
 
   # This may be an integer value
-  push @$self, Krawfish::Koral::Document::FieldInt->new($key, $value);
+  push @$self, Krawfish::Koral::Document::FieldInt->new(
+    key => $key,
+    value => $value
+  );
+};
+
+
+sub add_store {
+  my $self = shift;
+  my ($key, $value) = @_;
+
+  # This may be an integer value
+  push @$self, Krawfish::Koral::Document::FieldStore->new(
+    key => $key,
+    value => $value
+  );
 };