Rolify Koral::Query

Change-Id: Id7474fa963e0d74efd1ced416592d66cef8b1a18
diff --git a/lib/Krawfish/Koral/Query.pm b/lib/Krawfish/Koral/Query.pm
index 8e406db..57bf876 100644
--- a/lib/Krawfish/Koral/Query.pm
+++ b/lib/Krawfish/Koral/Query.pm
@@ -1,8 +1,7 @@
 package Krawfish::Koral::Query;
 use Role::Tiny;
-# TODO: Use the same parent as Koral::Corpus
-use Krawfish::Koral::Query::Builder;
-use Krawfish::Koral::Query::Importer;
+# use Krawfish::Koral::Query::Builder;
+# use Krawfish::Koral::Query::Importer;
 use Krawfish::Log;
 use Mojo::Util qw/md5_sum/;
 use warnings;
@@ -10,6 +9,38 @@
 
 with 'Krawfish::Koral::Report';
 
+# TODO:
+#   Share a role with Koral::Corpus
+requires qw/normalize
+            optimize
+            identify
+            type
+            operands
+            operand
+            finalize
+
+            uses_classes
+
+            is_anywhere
+            is_optional
+            is_null
+            is_nowhere
+            is_leaf
+            is_extended_right
+            is_extended_left
+            is_negative
+
+            maybe_anchor
+            maybe_unsorted
+
+            min_span
+            max_span
+
+            from_koral
+
+            to_koral_fragment
+            to_string
+            to_signature/;
 # Base class for span queries
 
 # TODO:
@@ -37,7 +68,7 @@
     negative => 0,
     extended => 0,
     extended_left => 0,
-    extended_right => 0
+   extended_right => 0
   }, $class;
 
   if ($_[0]) {
@@ -48,29 +79,16 @@
 };
 
 
-# Override type
-sub type {
-  warn 'override';
-};
-
-
 #########################################
 # Query Planning methods and attributes #
 #########################################
 
 
-# Normalize the query
-sub normalize {
-  warn 'override';
-};
-
-
 # Refer to common subqueries
 sub refer {
   $_[0];
 };
 
-
 # Translate to ids
 # TODO:
 #   If "nowhere" returns, optimize away
@@ -93,12 +111,6 @@
 };
 
 
-# Optimize for an index
-sub optimize {
-  ...
-};
-
-
 # This is the class to be overwritten
 # by subclasses
 sub _finalize {
@@ -163,13 +175,6 @@
 };
 
 
-# Returns a list of classes used by the query,
-# e.g. in a focus() context.
-sub uses_classes {
-  warn 'override';
-};
-
-
 sub remove_unused_classes {
   my ($self, $classes) = @_;
   my $used = $self->uses_classes;
@@ -179,6 +184,10 @@
   # gather all classes and then can remove them.
 };
 
+sub uses_classes {
+  warn 'Not yet implemented';
+};
+
 
 # Remove classes passed as an array references
 sub remove_classes {
@@ -215,10 +224,12 @@
 
 # Get and set first and only operand
 sub operand {
-  if (@_ == 2) {
-    $_[0]->{operands} = [$_[1]];
+  my $self = shift;
+
+  if (@_ == 1) {
+    $self->{operands} = [shift];
   };
-  $_[0]->{operands}->[0];
+  return $self->{operands}->[0];
 };
 
 
@@ -326,19 +337,6 @@
 };
 
 
-# Get the minimum tokens the query spans
-sub min_span {
-  warn 'override';
-};
-
-
-# Get the maximum tokens the query spans
-# -1 means arbitrary
-sub max_span {
-  warn 'override';
-};
-
-
 #############################
 # Query Application methods #
 #############################
@@ -376,12 +374,6 @@
 
 
 # Serialize
-sub to_koral_fragment {
-  warn 'override';
-};
-
-
-# Serialize
 sub to_koral_query {
   my $self = shift;
   my $koral = $self->to_koral_fragment;
@@ -390,12 +382,6 @@
 };
 
 
-# Stringification
-sub to_string {
-  warn 'override';
-};
-
-
 sub to_neutral {
   $_[0]->to_string;
 };
@@ -422,9 +408,9 @@
 
 
 # Create KoralQuery builder
-sub importer {
-  return Krawfish::Koral::Query::Importer->new;
-};
+#sub importer {
+#  return Krawfish::Koral::Query::Importer->new;
+#};
 
 
 # Serialization helper
diff --git a/lib/Krawfish/Koral/Query/Builder.pm b/lib/Krawfish/Koral/Query/Builder.pm
index 4e713c5..f213993 100644
--- a/lib/Krawfish/Koral/Query/Builder.pm
+++ b/lib/Krawfish/Koral/Query/Builder.pm
@@ -1,7 +1,4 @@
 package Krawfish::Koral::Query::Builder;
-use strict;
-use warnings;
-
 use Krawfish::Util::Constants qw/:PREFIX/;
 
 use Krawfish::Koral::Query::Term;
@@ -31,6 +28,8 @@
 use Krawfish::Koral::Corpus::Builder;
 
 use Scalar::Util qw/blessed/;
+use strict;
+use warnings;
 
 use constant DOC_IDENTIFIER => 'id';
 
@@ -40,10 +39,27 @@
   bless [$text_span], $class;
 };
 
+
 #########################
 # KoralQuery constructs #
 #########################
 
+
+# Token construct
+# Should probably be like:
+# ->token('Der') or
+# ->token(->term_or('Der', 'Die', 'Das'))
+sub token {
+  shift;
+  return Krawfish::Koral::Query::Token->new(@_);
+};
+
+
+sub class {
+  shift;
+  Krawfish::Koral::Query::Class->new(@_);
+};
+
 # Sequence construct
 sub seq {
   shift;
@@ -57,15 +73,6 @@
 };
 
 
-# Token construct
-# Should probably be like:
-# ->token('Der') or
-# ->token(->term_or('Der', 'Die', 'Das'))
-sub token {
-  shift;
-  Krawfish::Koral::Query::Token->new(@_);
-};
-
 sub term {
   shift;
   return Krawfish::Koral::Query::Term->new(TOKEN_PREF . shift);
@@ -199,10 +206,6 @@
   Krawfish::Koral::Query::Length->new(@_);
 };
 
-sub class {
-  shift;
-  Krawfish::Koral::Query::Class->new(@_);
-};
 
 # Extension to the left
 sub ext_left {
diff --git a/lib/Krawfish/Koral/Query/Class.pm b/lib/Krawfish/Koral/Query/Class.pm
index 6c8fcbf..3aae2dd 100644
--- a/lib/Krawfish/Koral/Query/Class.pm
+++ b/lib/Krawfish/Koral/Query/Class.pm
@@ -1,20 +1,22 @@
 package Krawfish::Koral::Query::Class;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::Class;
 use Krawfish::Log;
-use strict;
-use warnings;
-use Memoize;
-memoize('min_span');
-memoize('max_span');
-
 
 use constant DEBUG => 0;
 
+with 'Krawfish::Koral::Query';
+
+use Memoize;
+
+memoize('min_span');
+memoize('max_span');
+
 
 # Constructor
 sub new {
   my $class = shift;
+
   bless {
     operands => [shift],
     number => shift // 1
diff --git a/lib/Krawfish/Koral/Query/Constraint.pm b/lib/Krawfish/Koral/Query/Constraint.pm
index e6c89df..ce3c04c 100644
--- a/lib/Krawfish/Koral/Query/Constraint.pm
+++ b/lib/Krawfish/Koral/Query/Constraint.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Constraint;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use List::Util qw/min max/;
 use Krawfish::Query::Constraint;
 use Krawfish::Query::Constraint::Position;
@@ -8,6 +8,10 @@
 use v5.10;
 use strict;
 use warnings;
+
+with 'Krawfish::Koral::Query';
+
+
 use Memoize;
 memoize('min_span');
 memoize('max_span');
diff --git a/lib/Krawfish/Koral/Query/Exclusion.pm b/lib/Krawfish/Koral/Query/Exclusion.pm
index 0de469e..d4ae164 100644
--- a/lib/Krawfish/Koral/Query/Exclusion.pm
+++ b/lib/Krawfish/Koral/Query/Exclusion.pm
@@ -1,16 +1,18 @@
 package Krawfish::Koral::Query::Exclusion;
-use parent 'Krawfish::Koral::Query';
+use strict;
+use warnings;
+use Role::Tiny::With;
 # Exports to_frame:
 use Krawfish::Koral::Query::Constraint::Position;
 use Krawfish::Query::Exclusion;
 use Krawfish::Log;
 use Mojo::JSON;
-use strict;
-use warnings;
 use Memoize;
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Query';
+
 use constant DEBUG => 0;
 
 sub new {
diff --git a/lib/Krawfish/Koral/Query/Extension.pm b/lib/Krawfish/Koral/Query/Extension.pm
index d6a9394..77e5630 100644
--- a/lib/Krawfish/Koral/Query/Extension.pm
+++ b/lib/Krawfish/Koral/Query/Extension.pm
@@ -1,8 +1,10 @@
 package Krawfish::Koral::Query::Extension;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 
 # TODO:
 #   An extension with a negative part will
@@ -71,6 +73,22 @@
   ...
 };
 
+sub optimize {
+  ...;
+};
+
+sub type {
+  'extension';
+};
+
+sub to_koral_fragment {
+  ...
+};
+
+sub uses_classes {
+  ...
+};
+
 sub to_string {
   my $self = shift;
   my $string = 'ext(';
diff --git a/lib/Krawfish/Koral/Query/Filter.pm b/lib/Krawfish/Koral/Query/Filter.pm
index 03b733b..e9927b2 100644
--- a/lib/Krawfish/Koral/Query/Filter.pm
+++ b/lib/Krawfish/Koral/Query/Filter.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Filter;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Log;
 use Krawfish::Query::Nowhere;
 use strict;
@@ -8,6 +8,8 @@
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Query';
+
 # The filter will filter a query based on a virtual corpus.
 # First the filter is always on the root of the query.
 #
diff --git a/lib/Krawfish/Koral/Query/Focus.pm b/lib/Krawfish/Koral/Query/Focus.pm
index 1b3e1bc..1fbd5f3 100644
--- a/lib/Krawfish/Koral/Query/Focus.pm
+++ b/lib/Krawfish/Koral/Query/Focus.pm
@@ -1,12 +1,14 @@
 package Krawfish::Koral::Query::Focus;
-use parent 'Krawfish::Koral::Query';
-use Krawfish::Query::Base::Sorted;
 use strict;
 use warnings;
+use Role::Tiny::With;
+use Krawfish::Query::Base::Sorted;
 use Memoize;
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Query';
+
 # TODO:
 #   If span is maybe_unsorted, use a sorted focus,
 #   otherwise an unsorted focus.
diff --git a/lib/Krawfish/Koral/Query/Importer.pm b/lib/Krawfish/Koral/Query/Importer.pm
index bc196c6..e1eb6ce 100644
--- a/lib/Krawfish/Koral/Query/Importer.pm
+++ b/lib/Krawfish/Koral/Query/Importer.pm
@@ -1,11 +1,11 @@
 package Krawfish::Koral::Query::Importer;
+use warnings;
+use strict;
 use Krawfish::Koral::Query;
 use Krawfish::Koral::Query::Sequence;
 use Krawfish::Koral::Query::Token;
 use Krawfish::Koral::Query::Term;
 use Krawfish::Koral::Query::Class;
-use warnings;
-use strict;
 
 sub new {
   my $var;
diff --git a/lib/Krawfish/Koral/Query/InCorpus.pm b/lib/Krawfish/Koral/Query/InCorpus.pm
index a1e4833..0bc6c0b 100644
--- a/lib/Krawfish/Koral/Query/InCorpus.pm
+++ b/lib/Krawfish/Koral/Query/InCorpus.pm
@@ -1,10 +1,12 @@
 package Krawfish::Koral::Query::InCorpus;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Util::Bits;
 use Krawfish::Query::InCorpus;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 # Create a query that will check if a certain
 # match is associated to certain classes.
 
diff --git a/lib/Krawfish/Koral/Query/Length.pm b/lib/Krawfish/Koral/Query/Length.pm
index d1fdf0b..29a3ce0 100644
--- a/lib/Krawfish/Koral/Query/Length.pm
+++ b/lib/Krawfish/Koral/Query/Length.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Length;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Scalar::Util qw/looks_like_number/;
 use List::Util;
 use Krawfish::Query::Length;
@@ -9,6 +9,8 @@
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Query';
+
 # TODO:
 #   Normalize chained length queries
 #   length(0-3,length(1-3,query))
diff --git a/lib/Krawfish/Koral/Query/Match.pm b/lib/Krawfish/Koral/Query/Match.pm
index 81b8967..5cddb43 100644
--- a/lib/Krawfish/Koral/Query/Match.pm
+++ b/lib/Krawfish/Koral/Query/Match.pm
@@ -1,9 +1,11 @@
 package Krawfish::Koral::Query::Match;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::Match;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 # This Query does not search segment data, but
 # returns the data it is passed to.
 # It is used to fetch enriched match data.
@@ -176,10 +178,4 @@
 };
 
 
-sub from_koral {
-  my ($class, $kq) = @_;
-  ...
-};
-
-
 1;
diff --git a/lib/Krawfish/Koral/Query/Nowhere.pm b/lib/Krawfish/Koral/Query/Nowhere.pm
index 9dd140a..b2c75a5 100644
--- a/lib/Krawfish/Koral/Query/Nowhere.pm
+++ b/lib/Krawfish/Koral/Query/Nowhere.pm
@@ -1,9 +1,11 @@
 package Krawfish::Koral::Query::Nowhere;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::Nowhere;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 sub new {
   my $class = shift;
   bless {
@@ -59,4 +61,8 @@
   -1;
 };
 
+sub to_koral_fragment {
+  ...
+};
+
 1;
diff --git a/lib/Krawfish/Koral/Query/Or.pm b/lib/Krawfish/Koral/Query/Or.pm
index c88befa..14d20b9 100644
--- a/lib/Krawfish/Koral/Query/Or.pm
+++ b/lib/Krawfish/Koral/Query/Or.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Or;
-use parent ('Krawfish::Koral::Util::Boolean','Krawfish::Koral::Query');
+use Role::Tiny::With;
 use Krawfish::Log;
 use Krawfish::Query::Or;
 use strict;
@@ -8,6 +8,9 @@
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Util::Boolean';
+with 'Krawfish::Koral::Query';
+
 # Or-Construct on spans
 
 # TODO:
@@ -54,7 +57,7 @@
 # so this has to be resolved as well.
 sub normalize {
   my $self = shift;
-  return $self->SUPER::normalize
+  return Krawfish::Koral::Util::Boolean::normalize($self)
     ->_resolve_optionality;
 };
 
@@ -142,4 +145,10 @@
   return $max;
 };
 
+
+sub to_koral_fragment {
+  ...
+};
+
+
 1;
diff --git a/lib/Krawfish/Koral/Query/Repetition.pm b/lib/Krawfish/Koral/Query/Repetition.pm
index 378e818..3c439a6 100644
--- a/lib/Krawfish/Koral/Query/Repetition.pm
+++ b/lib/Krawfish/Koral/Query/Repetition.pm
@@ -1,9 +1,11 @@
 package Krawfish::Koral::Query::Repetition;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::Repetition;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 our $MAX = 100;
 
 sub new {
diff --git a/lib/Krawfish/Koral/Query/Sequence.pm b/lib/Krawfish/Koral/Query/Sequence.pm
index 2535f9f..92934d7 100644
--- a/lib/Krawfish/Koral/Query/Sequence.pm
+++ b/lib/Krawfish/Koral/Query/Sequence.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Sequence;
-use parent ('Krawfish::Koral::Util::Sequential','Krawfish::Koral::Query');
+use Role::Tiny::With;
 use Krawfish::Log;
 use strict;
 use warnings;
@@ -7,6 +7,9 @@
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Util::Sequential';
+with 'Krawfish::Koral::Query';
+
 # TODO:
 #   Check for queries like "Der {[pos!=ADJ]*} Mann"
 
@@ -28,7 +31,7 @@
 
 sub new {
   my $class = shift;
-  my $self = $class->SUPER::new;
+  my $self = Krawfish::Koral::Query::new($class);
   $self->{operands} = [@_];
   $self->{info} = undef;
   $self->{_checked} = 0;
diff --git a/lib/Krawfish/Koral/Query/Span.pm b/lib/Krawfish/Koral/Query/Span.pm
index 43d5314..ea63a2e 100644
--- a/lib/Krawfish/Koral/Query/Span.pm
+++ b/lib/Krawfish/Koral/Query/Span.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Span;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Util::Constants ':PREFIX';
 use Krawfish::Koral::Query::TermID;
 use Krawfish::Koral::Query::Term;
@@ -8,6 +8,8 @@
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 use constant DEBUG => 0;
 
 sub new {
diff --git a/lib/Krawfish/Koral/Query/Term.pm b/lib/Krawfish/Koral/Query/Term.pm
index a2300ed..29ce8ac 100644
--- a/lib/Krawfish/Koral/Query/Term.pm
+++ b/lib/Krawfish/Koral/Query/Term.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Term;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Util::Constants qw/:PREFIX/;
 use Krawfish::Koral::Query::TermID;
 use Krawfish::Query::Nowhere;
@@ -7,6 +7,8 @@
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 # TODO:
 #   Probably join this with TermID
 #   and make it inflatable
diff --git a/lib/Krawfish/Koral/Query/TermGroup.pm b/lib/Krawfish/Koral/Query/TermGroup.pm
index dd46014..7a65643 100644
--- a/lib/Krawfish/Koral/Query/TermGroup.pm
+++ b/lib/Krawfish/Koral/Query/TermGroup.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::TermGroup;
-use parent ('Krawfish::Koral::Util::Boolean','Krawfish::Koral::Query');
+use Role::Tiny::With;
 use Krawfish::Koral::Query::Term;
 use Krawfish::Query::Or;
 use Krawfish::Query::Constraint;
@@ -9,6 +9,9 @@
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Util::Boolean';
+with 'Krawfish::Koral::Query';
+
 # TODO:
 #   Preparation should be:
 #   -> normalize()
diff --git a/lib/Krawfish/Koral/Query/TermID.pm b/lib/Krawfish/Koral/Query/TermID.pm
index 7f68d2e..c8b717a 100644
--- a/lib/Krawfish/Koral/Query/TermID.pm
+++ b/lib/Krawfish/Koral/Query/TermID.pm
@@ -1,9 +1,11 @@
 package Krawfish::Koral::Query::TermID;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::TermID;
 use strict;
 use warnings;
 
+with 'Krawfish::Koral::Query';
+
 sub new {
   my ($class, $term_id) = @_;
   bless {
diff --git a/lib/Krawfish/Koral/Query/Token.pm b/lib/Krawfish/Koral/Query/Token.pm
index 7da6893..fc3145f 100644
--- a/lib/Krawfish/Koral/Query/Token.pm
+++ b/lib/Krawfish/Koral/Query/Token.pm
@@ -1,14 +1,14 @@
 package Krawfish::Koral::Query::Token;
-use parent 'Krawfish::Koral::Query';
-# use Krawfish::Koral::Query::Token;
+use Role::Tiny::With;
 use Krawfish::Util::Constants qw/:PREFIX/;
 use Krawfish::Koral::Query::Term;
-# use Krawfish::Query::Term;
 use Krawfish::Log;
 use strict;
 use warnings;
 use Scalar::Util qw/blessed/;
 
+with 'Krawfish::Koral::Query';
+
 use constant DEBUG => 0;
 
 # Token based query containing boolean definition of terms.
diff --git a/lib/Krawfish/Koral/Query/Unique.pm b/lib/Krawfish/Koral/Query/Unique.pm
index 9828bf8..fcb52da 100644
--- a/lib/Krawfish/Koral/Query/Unique.pm
+++ b/lib/Krawfish/Koral/Query/Unique.pm
@@ -1,5 +1,5 @@
 package Krawfish::Koral::Query::Unique;
-use parent 'Krawfish::Koral::Query';
+use Role::Tiny::With;
 use Krawfish::Query::Unique;
 use strict;
 use warnings;
@@ -7,6 +7,8 @@
 memoize('min_span');
 memoize('max_span');
 
+with 'Krawfish::Koral::Query';
+
 sub new {
   my $class = shift;
   bless {
diff --git a/lib/Krawfish/Koral/Report.pm b/lib/Krawfish/Koral/Report.pm
index 67f9e49..646c4e6 100644
--- a/lib/Krawfish/Koral/Report.pm
+++ b/lib/Krawfish/Koral/Report.pm
@@ -1,14 +1,16 @@
 package Krawfish::Koral::Report;
+use strict;
+use warnings;
 use Role::Tiny;
+use Krawfish::Log;
+
+
 requires qw/error
             warning
             message
             has_error
             has_warning
             has_message/;
-use Krawfish::Log;
-use strict;
-use warnings;
 
 # Report on errors, warnings an anything else
 
diff --git a/lib/Krawfish/Koral/Util/Sequential.pm b/lib/Krawfish/Koral/Util/Sequential.pm
index 9b42efc..d1415e6 100644
--- a/lib/Krawfish/Koral/Util/Sequential.pm
+++ b/lib/Krawfish/Koral/Util/Sequential.pm
@@ -1,12 +1,13 @@
 package Krawfish::Koral::Util::Sequential;
+use strict;
+use warnings;
+use Role::Tiny;
 use Krawfish::Log;
 use Krawfish::Query::Nowhere;
 use Krawfish::Query::Constraint::Position;
 use Krawfish::Query::Constraint::InBetween;
 use Krawfish::Query::Constraint;
 use List::MoreUtils qw!uniq!;
-use strict;
-use warnings;
 
 use constant {
   DEBUG  => 0,
@@ -21,6 +22,8 @@
   KQUERY => 3
 };
 
+with 'Krawfish::Koral::Report';
+
 # TODO:
 #   Resolve optionality!
 # The filter is only necessary at the top element of one anchor
@@ -1174,73 +1177,3 @@
 
 
 __END__
-
-
-  my $last_type;
-  my @consecutives;
-
-  for (my $i = ($self->size - 1); $i >= -1; $i--) {
-
-    # Initialize last type
-    unless (defined $last_type) {
-      $last_type = $query_types[$i]->[0];
-      CORE::next;
-    };
-
-    if (($i >= 0) && ($query_types[$i]->[0] == $last_type)) {
-
-      # Initialize consecutives
-      unless (@consecutives) {
-        unshift @consecutives, $i+1;
-      };
-      unshift @consecutives, $i;
-    }
-
-    # Types differ - flush
-    elsif (scalar @consecutives > 1) {
-
-      # The group consists of positives
-      if ($query_types[$consecutives[0]]->[0] == POS) {
-
-        my $first_i = shift @consecutives;
-        my $query = $queries[$first_i];
-
-        print_log('kq_sequtil', 'Create query for consecutive positive ops') if DEBUG;
-
-        # Iterate as long as there are consecutives
-        while (@consecutives) {
-
-          # Get next from list
-          my $next_i = shift @consecutives;
-
-          # Create a precedes directly
-          if ($query->max_freq <= $queries[$next_i]->max_freq) {
-
-            print_log(
-              'kq_sequtil',
-              'Freq is '. $query->to_string . ' <= ' .$queries[$next_i]->to_string
-            ) if DEBUG;
-
-            $query = _precedes_directly($query, $queries[$next_i]);
-          }
-
-          # Reverse the order due to frequency optimization
-          else {
-            $query = _succeeds_directly($queries[$next_i], $query);
-          };
-
-          $queries[$next_i] = undef;
-          $query_types[$next_i] = [NULL, 0];
-        };
-
-        # Store the newly build query at the first position.
-        $queries[$first_i] = $query;
-
-        @consecutives = ();
-        $last_type = $i;
-      }
-      else {
-        warn 'Types not supported yet';
-      };
-    };
-  };
diff --git a/lib/Krawfish/Log.pm b/lib/Krawfish/Log.pm
index 9958de2..dbb2b65 100644
--- a/lib/Krawfish/Log.pm
+++ b/lib/Krawfish/Log.pm
@@ -1,7 +1,7 @@
 package Krawfish::Log;
-use parent 'Exporter';
 use strict;
 use warnings;
+use parent 'Exporter';
 
 # Simple log mechanism