diff --git a/algebricks/algebricks-common/pom.xml b/algebricks/algebricks-common/pom.xml
index ad2e8f7..13f879b 100644
--- a/algebricks/algebricks-common/pom.xml
+++ b/algebricks/algebricks-common/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,7 +27,7 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-api</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-compiler/pom.xml b/algebricks/algebricks-compiler/pom.xml
index 9d2a115..9527512 100644
--- a/algebricks/algebricks-compiler/pom.xml
+++ b/algebricks/algebricks-compiler/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,12 +27,12 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-rewriter</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-core</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-core/pom.xml b/algebricks/algebricks-core/pom.xml
index 1166842..27ce778 100644
--- a/algebricks/algebricks-core/pom.xml
+++ b/algebricks/algebricks-core/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,27 +27,27 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-storage-am-btree</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-storage-am-rtree</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-dataflow-std</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-runtime</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-common</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java b/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
index c18d554..530d19c 100644
--- a/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
+++ b/algebricks/algebricks-core/src/main/java/edu/uci/ics/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
@@ -44,7 +44,7 @@
 
     @SuppressWarnings("rawtypes")
     public static RecordDescriptor mkRecordDescriptor(IVariableTypeEnvironment env, IOperatorSchema opSchema,
-            JobGenContext context) throws AlgebricksException {        
+            JobGenContext context) throws AlgebricksException {
         ISerializerDeserializer[] fields = new ISerializerDeserializer[opSchema.getSize()];
         ITypeTraits[] typeTraits = new ITypeTraits[opSchema.getSize()];
         ISerializerDeserializerProvider sdp = context.getSerializerDeserializerProvider();
diff --git a/algebricks/algebricks-data/pom.xml b/algebricks/algebricks-data/pom.xml
index 04fc66f..9d42a5c 100644
--- a/algebricks/algebricks-data/pom.xml
+++ b/algebricks/algebricks-data/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,12 +27,12 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-common</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-data-std</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-examples/piglet-example/pom.xml b/algebricks/algebricks-examples/piglet-example/pom.xml
index 0cf1bab..d4d6c89 100644
--- a/algebricks/algebricks-examples/piglet-example/pom.xml
+++ b/algebricks/algebricks-examples/piglet-example/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>algebricks-examples</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -16,8 +16,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -54,7 +54,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>junit</groupId>
diff --git a/algebricks/algebricks-examples/pom.xml b/algebricks/algebricks-examples/pom.xml
index e538712..fc8188d 100644
--- a/algebricks/algebricks-examples/pom.xml
+++ b/algebricks/algebricks-examples/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/algebricks/algebricks-rewriter/pom.xml b/algebricks/algebricks-rewriter/pom.xml
index 9ba1603..e40f1fe 100644
--- a/algebricks/algebricks-rewriter/pom.xml
+++ b/algebricks/algebricks-rewriter/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,7 +27,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>algebricks-core</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-runtime/pom.xml b/algebricks/algebricks-runtime/pom.xml
index 458b5ee..3ddde0f 100644
--- a/algebricks/algebricks-runtime/pom.xml
+++ b/algebricks/algebricks-runtime/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,27 +27,27 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-storage-am-btree</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-storage-am-rtree</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-dataflow-std</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-common</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-data</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-tests/pom.xml b/algebricks/algebricks-tests/pom.xml
index a62398c..0a139fa 100644
--- a/algebricks/algebricks-tests/pom.xml
+++ b/algebricks/algebricks-tests/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>algebricks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
 	  <encoding>UTF-8</encoding>
 	</configuration>
@@ -85,7 +85,7 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>algebricks-compiler</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>junit</groupId>
@@ -96,17 +96,17 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-control-cc</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-control-nc</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-data-std</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/pom.xml b/algebricks/pom.xml
index ebb8332..aa8446a 100644
--- a/algebricks/pom.xml
+++ b/algebricks/pom.xml
@@ -2,7 +2,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>algebricks</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>algebricks</name>
 
diff --git a/hivesterix/hivesterix-common/pom.xml b/hivesterix/hivesterix-common/pom.xml
index 33d8fb3..597de1b 100644
--- a/hivesterix/hivesterix-common/pom.xml
+++ b/hivesterix/hivesterix-common/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>hivesterix-common</artifactId>
 	<name>hivesterix-common</name>
@@ -9,7 +7,7 @@
 	<parent>
 		<artifactId>hivesterix</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -32,21 +30,21 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-hdfs-core</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hivesterix/hivesterix-dist/pom.xml b/hivesterix/hivesterix-dist/pom.xml
index ce61422..910d2d2 100644
--- a/hivesterix/hivesterix-dist/pom.xml
+++ b/hivesterix/hivesterix-dist/pom.xml
@@ -1,517 +1,518 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>edu.uci.ics.hyracks</groupId>
-	<artifactId>hivesterix-dist</artifactId>
-	<version>0.2.3-SNAPSHOT</version>
-	<name>hivesterix-dist</name>
-	<dependencies>
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<version>2.5</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>4.8.1</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>args4j</groupId>
-			<artifactId>args4j</artifactId>
-			<version>2.0.12</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.json</groupId>
-			<artifactId>json</artifactId>
-			<version>20090211</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.jetty</groupId>
-			<artifactId>jetty-server</artifactId>
-			<version>8.0.0.M1</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.jetty</groupId>
-			<artifactId>jetty-servlet</artifactId>
-			<version>8.0.0.M1</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop</groupId>
-			<artifactId>hadoop-core</artifactId>
-			<version>0.20.2</version>
-		</dependency>
-		<dependency>
-			<groupId>jline</groupId>
-			<artifactId>jline</artifactId>
-			<version>0.9.94</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.datanucleus</groupId>
-			<artifactId>datanucleus-core</artifactId>
-			<version>2.0.3</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.datanucleus</groupId>
-			<artifactId>datanucleus-connectionpool</artifactId>
-			<version>2.0.3</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.datanucleus</groupId>
-			<artifactId>datanucleus-enhancer</artifactId>
-			<version>2.0.3</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.datanucleus</groupId>
-			<artifactId>datanucleus-rdbms</artifactId>
-			<version>2.0.3</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-dbcp</groupId>
-			<artifactId>commons-dbcp</artifactId>
-			<version>1.4</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-pool</groupId>
-			<artifactId>commons-pool</artifactId>
-			<version>1.5.4</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-collections</groupId>
-			<artifactId>commons-collections</artifactId>
-			<version>3.2.1</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-lang</groupId>
-			<artifactId>commons-lang</artifactId>
-			<version>2.4</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>javax</groupId>
-			<artifactId>jdo2-api</artifactId>
-			<version>2.3-ec</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>com.facebook</groupId>
-			<artifactId>libfb303</artifactId>
-			<version>0.5.0</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.thrift</groupId>
-			<artifactId>libthrift</artifactId>
-			<version>0.5.0</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>cli</artifactId>
-			<version>1.2</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache</groupId>
-			<artifactId>log4j</artifactId>
-			<version>1.2.15</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.antlr</groupId>
-			<artifactId>antlr-runtime</artifactId>
-			<version>3.0.1</version>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-cli</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-common</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-exec</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-hwi</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-jdbc</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-metastore</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-service</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-shims</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop.hive</groupId>
-			<artifactId>hive-serde</artifactId>
-			<version>0.7.0</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-api</artifactId>
-			<version>1.6.1</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-cli</groupId>
-			<artifactId>commons-cli</artifactId>
-			<version>1.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-log4j12</artifactId>
-			<version>1.6.1</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hadoop</groupId>
-			<artifactId>hadoop-test</artifactId>
-			<version>0.20.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>commons-logging</groupId>
-			<artifactId>commons-logging</artifactId>
-			<version>1.1.1</version>
-			<type>jar</type>
-			<classifier>api</classifier>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>com.google.guava</groupId>
-			<artifactId>guava</artifactId>
-			<version>r06</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.antlr</groupId>
-			<artifactId>stringtemplate</artifactId>
-			<version>3.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.derby</groupId>
-			<artifactId>derby</artifactId>
-			<version>10.8.1.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hbase</groupId>
-			<artifactId>hbase</artifactId>
-			<version>0.90.3</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>hivesterix-translator</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>hivesterix-optimizer</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-	</dependencies>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>2.0.2</version>
-				<configuration>
-					<source>1.7</source>
-					<target>1.7</target>
-					<encoding>UTF-8</encoding>
-					<fork>true</fork>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>patch</id>
-						<goals>
-							<goal>jar</goal>
-						</goals>
-						<phase>package</phase>
-						<configuration>
-							<classifier>patch</classifier>
-							<finalName>a-hive</finalName>
-							<includes>
-								<include>**/org/apache/**</include>
-							</includes>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>appassembler-maven-plugin</artifactId>
-				<version>1.3</version>
-				<executions>
-					<execution>
-						<configuration>
-							<programs>
-								<program>
-									<mainClass>edu.uci.ics.asterix.hive.cli.CliDriver</mainClass>
-									<name>algebricks-hivesterix-cmd</name>
-								</program>
-							</programs>
-							<repositoryLayout>flat</repositoryLayout>
-							<repositoryName>lib</repositoryName>
-						</configuration>
-						<phase>package</phase>
-						<goals>
-							<goal>assemble</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-assembly-plugin</artifactId>
-				<version>2.2-beta-5</version>
-				<executions>
-					<execution>
-						<configuration>
-							<descriptors>
-								<descriptor>src/main/assembly/binary-assembly.xml</descriptor>
-							</descriptors>
-						</configuration>
-						<phase>package</phase>
-						<goals>
-							<goal>attached</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>2.13</version>
-				<configuration>
-					<forkMode>pertest</forkMode>
-					<argLine>-enableassertions -Xmx2047m -Dfile.encoding=UTF-8
-						-Djava.util.logging.config.file=src/test/resources/logging.properties</argLine>
-					<includes>
-						<include>**/test/optimizer/*TestSuite.java</include>
-						<include>**/test/optimizer/*Test.java</include>
-						<include>**/test/runtimefunction/*TestSuite.java</include>
-						<include>**/test/runtimefunction/*Test.java</include>
-					</includes>
-				</configuration>
-			</plugin>
-			<plugin>
-				<artifactId>maven-resources-plugin</artifactId>
-				<version>2.5</version>
-				<executions>
-					<execution>
-						<id>copy-scripts</id>
-						<!-- here the phase you need -->
-						<phase>package</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>target/appassembler/bin</outputDirectory>
-							<resources>
-								<resource>
-									<directory>src/main/resources/scripts</directory>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-					<execution>
-						<id>copy-conf</id>
-						<!-- here the phase you need -->
-						<phase>package</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>target/appassembler/conf</outputDirectory>
-							<resources>
-								<resource>
-									<directory>src/main/resources/conf</directory>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-					<execution>
-						<id>copy-jar</id>
-						<!-- here the phase you need -->
-						<phase>package</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>target/appassembler/lib</outputDirectory>
-							<resources>
-								<resource>
-									<directory>target</directory>
-									<includes>
-										<include>*patch.jar</include>
-									</includes>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-clean-plugin</artifactId>
-				<version>2.5</version>
-				<configuration>
-					<filesets>
-						<fileset>
-							<directory>.</directory>
-							<includes>
-								<include>metastore*</include>
-								<include>hadoop*</include>
-								<include>edu*</include>
-								<include>tmp*</include>
-								<include>build*</include>
-								<include>target*</include>
-								<include>log*</include>
-								<include>derby.log</include>
-								<include>ClusterController*</include>
-							</includes>
-						</fileset>
-					</filesets>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<repositories>
-		<repository>
-			<releases>
-				<enabled>true</enabled>
-				<updatePolicy>always</updatePolicy>
-				<checksumPolicy>warn</checksumPolicy>
-			</releases>
-			<snapshots>
-				<enabled>true</enabled>
-				<updatePolicy>always</updatePolicy>
-				<checksumPolicy>fail</checksumPolicy>
-			</snapshots>
-			<id>third-party</id>
-			<url>http://obelix.ics.uci.edu/nexus/content/repositories/third-party</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>true</enabled>
-				<updatePolicy>always</updatePolicy>
-				<checksumPolicy>warn</checksumPolicy>
-			</releases>
-			<snapshots>
-				<enabled>true</enabled>
-				<updatePolicy>always</updatePolicy>
-				<checksumPolicy>fail</checksumPolicy>
-			</snapshots>
-			<id>hyracks-public-release</id>
-			<url>http://obelix.ics.uci.edu/nexus/content/repositories/hyracks-public-releases</url>
-		</repository>
-	</repositories>
-</project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>edu.uci.ics.hyracks</groupId>
+	<artifactId>hivesterix-dist</artifactId>
+	<version>0.2.4-SNAPSHOT</version>
+	<name>hivesterix-dist</name>
+
+	<parent>
+                <groupId>edu.uci.ics.hyracks</groupId>
+                <artifactId>hivesterix</artifactId>
+                <version>0.2.4-SNAPSHOT</version>
+        </parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.8.1</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>args4j</groupId>
+			<artifactId>args4j</artifactId>
+			<version>2.0.12</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20090211</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-server</artifactId>
+			<version>8.0.0.M1</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-servlet</artifactId>
+			<version>8.0.0.M1</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>jline</groupId>
+			<artifactId>jline</artifactId>
+			<version>0.9.94</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.datanucleus</groupId>
+			<artifactId>datanucleus-core</artifactId>
+			<version>2.0.3</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.datanucleus</groupId>
+			<artifactId>datanucleus-connectionpool</artifactId>
+			<version>2.0.3</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.datanucleus</groupId>
+			<artifactId>datanucleus-enhancer</artifactId>
+			<version>2.0.3</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.datanucleus</groupId>
+			<artifactId>datanucleus-rdbms</artifactId>
+			<version>2.0.3</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>1.4</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-pool</groupId>
+			<artifactId>commons-pool</artifactId>
+			<version>1.5.4</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-collections</groupId>
+			<artifactId>commons-collections</artifactId>
+			<version>3.2.1</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-lang</groupId>
+			<artifactId>commons-lang</artifactId>
+			<version>2.4</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax</groupId>
+			<artifactId>jdo2-api</artifactId>
+			<version>2.3-ec</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.facebook</groupId>
+			<artifactId>libfb303</artifactId>
+			<version>0.5.0</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.thrift</groupId>
+			<artifactId>libthrift</artifactId>
+			<version>0.5.0</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>cli</artifactId>
+			<version>1.2</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.15</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.antlr</groupId>
+			<artifactId>antlr-runtime</artifactId>
+			<version>3.0.1</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-cli</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-common</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-exec</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-hwi</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-jdbc</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-metastore</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-service</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-shims</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop.hive</groupId>
+			<artifactId>hive-serde</artifactId>
+			<version>0.7.0</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.6.1</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-cli</groupId>
+			<artifactId>commons-cli</artifactId>
+			<version>1.2</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>1.6.1</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.1.1</version>
+			<type>jar</type>
+			<classifier>api</classifier>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.google.guava</groupId>
+			<artifactId>guava</artifactId>
+			<version>r06</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.antlr</groupId>
+			<artifactId>stringtemplate</artifactId>
+			<version>3.2</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derby</artifactId>
+			<version>10.8.1.2</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hadoop</groupId>
+			<artifactId>hadoop-core</artifactId>
+			<version>0.20.2</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>edu.uci.ics.hyracks</groupId>
+			<artifactId>hivesterix-translator</artifactId>
+			<version>0.2.4-SNAPSHOT</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>edu.uci.ics.hyracks</groupId>
+			<artifactId>hivesterix-optimizer</artifactId>
+			<version>0.2.4-SNAPSHOT</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hbase</groupId>
+			<artifactId>hbase</artifactId>
+			<version>0.90.3</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>edu.uci.ics.hyracks</groupId>
+			<artifactId>algebricks-compiler</artifactId>
+			<version>0.2.4-SNAPSHOT</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>edu.uci.ics.hyracks</groupId>
+			<artifactId>hyracks-control-cc</artifactId>
+			<version>0.2.4-SNAPSHOT</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>edu.uci.ics.hyracks</groupId>
+			<artifactId>hyracks-control-nc</artifactId>
+			<version>0.2.4-SNAPSHOT</version>
+			<type>jar</type>
+			<scope>compile</scope>
+		</dependency>
+	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.0.2</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+					<encoding>UTF-8</encoding>
+					<fork>true</fork>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-jar-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>patch</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<classifier>patch</classifier>
+							<finalName>a-hive</finalName>
+							<includes>
+								<include>**/org/apache/**</include>
+							</includes>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>appassembler-maven-plugin</artifactId>
+				<version>1.3</version>
+				<executions>
+					<execution>
+						<configuration>
+							<programs>
+								<program>
+									<mainClass>edu.uci.ics.asterix.hive.cli.CliDriver</mainClass>
+									<name>algebricks-hivesterix-cmd</name>
+								</program>
+							</programs>
+							<repositoryLayout>flat</repositoryLayout>
+							<repositoryName>lib</repositoryName>
+						</configuration>
+						<phase>package</phase>
+						<goals>
+							<goal>assemble</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-5</version>
+				<executions>
+					<execution>
+						<configuration>
+							<descriptors>
+								<descriptor>src/main/assembly/binary-assembly.xml</descriptor>
+							</descriptors>
+						</configuration>
+						<phase>package</phase>
+						<goals>
+							<goal>attached</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.13</version>
+				<configuration>
+					<forkMode>pertest</forkMode>
+					<argLine>-enableassertions -Xmx2047m -Dfile.encoding=UTF-8
+						-Djava.util.logging.config.file=src/test/resources/logging.properties</argLine>
+					<includes>
+						<include>**/test/optimizer/*TestSuite.java</include>
+						<include>**/test/optimizer/*Test.java</include>
+						<include>**/test/runtimefunction/*TestSuite.java</include>
+						<include>**/test/runtimefunction/*Test.java</include>
+					</includes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>2.5</version>
+				<executions>
+					<execution>
+						<id>copy-scripts</id>
+						<!-- here the phase you need -->
+						<phase>package</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>target/appassembler/bin</outputDirectory>
+							<resources>
+								<resource>
+									<directory>src/main/resources/scripts</directory>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+					<execution>
+						<id>copy-conf</id>
+						<!-- here the phase you need -->
+						<phase>package</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>target/appassembler/conf</outputDirectory>
+							<resources>
+								<resource>
+									<directory>src/main/resources/conf</directory>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+					<execution>
+						<id>copy-jar</id>
+						<!-- here the phase you need -->
+						<phase>package</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>target/appassembler/lib</outputDirectory>
+							<resources>
+								<resource>
+									<directory>target</directory>
+									<includes>
+										<include>*patch.jar</include>
+									</includes>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<version>2.5</version>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>.</directory>
+							<includes>
+								<include>metastore*</include>
+								<include>hadoop*</include>
+								<include>edu*</include>
+								<include>tmp*</include>
+								<include>build*</include>
+								<include>target*</include>
+								<include>log*</include>
+								<include>derby.log</include>
+								<include>ClusterController*</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<repositories>
+		<repository>
+			<releases>
+				<enabled>true</enabled>
+				<updatePolicy>always</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+				<updatePolicy>always</updatePolicy>
+				<checksumPolicy>fail</checksumPolicy>
+			</snapshots>
+			<id>third-party</id>
+			<url>http://obelix.ics.uci.edu/nexus/content/repositories/third-party</url>
+		</repository>
+		<repository>
+			<releases>
+				<enabled>true</enabled>
+				<updatePolicy>always</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+				<updatePolicy>always</updatePolicy>
+				<checksumPolicy>fail</checksumPolicy>
+			</snapshots>
+			<id>hyracks-public-release</id>
+			<url>http://obelix.ics.uci.edu/nexus/content/repositories/hyracks-public-releases</url>
+		</repository>
+	</repositories>
+</project>
diff --git a/hivesterix/hivesterix-dist/src/main/resources/conf/topology-template.xml b/hivesterix/hivesterix-dist/src/main/resources/conf/topology-template.xml
new file mode 100755
index 0000000..4710706
--- /dev/null
+++ b/hivesterix/hivesterix-dist/src/main/resources/conf/topology-template.xml
@@ -0,0 +1,7 @@
+<cluster-topology>
+    <network-switch name="Global">
+        <network-switch name="local">
+            <terminal name="127.0.0.1"/>
+        </network-switch>
+    </network-switch>
+</cluster-topology>
\ No newline at end of file
diff --git a/hivesterix/hivesterix-dist/src/main/resources/scripts/startcc.sh b/hivesterix/hivesterix-dist/src/main/resources/scripts/startcc.sh
index efb79ce..484ecac 100644
--- a/hivesterix/hivesterix-dist/src/main/resources/scripts/startcc.sh
+++ b/hivesterix/hivesterix-dist/src/main/resources/scripts/startcc.sh
@@ -22,4 +22,10 @@
 
 #Launch hyracks cc script
 chmod -R 755 $HYRACKS_HOME
+if [ -f "conf/topology.xml"  ]; then
+#Launch hyracks cc script with topology
+$HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 -cluster-topology "conf/topology.xml" &> $CCLOGS_DIR/cc.log &
+else
+#Launch hyracks cc script without toplogy
 $HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 &> $CCLOGS_DIR/cc.log &
+fi
diff --git a/hivesterix/hivesterix-dist/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java b/hivesterix/hivesterix-dist/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
index 72c406f..5e2e64e 100644
--- a/hivesterix/hivesterix-dist/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
+++ b/hivesterix/hivesterix-dist/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
@@ -25,7 +25,6 @@
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MiniMRCluster;
 
 import edu.uci.ics.hivesterix.common.config.ConfUtil;
 import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
@@ -47,7 +46,6 @@
 
     private Properties clusterProps;
     private MiniDFSCluster dfsCluster;
-    private MiniMRCluster mrCluster;
 
     private JobConf conf = new JobConf();
     protected FileSystem dfs;
@@ -80,10 +78,6 @@
         System.setProperty("hadoop.log.dir", "logs");
         dfsCluster = new MiniDFSCluster(hconf, numberOfNC, true, null);
         dfs = dfsCluster.getFileSystem();
-
-        mrCluster = new MiniMRCluster(2, dfs.getUri().toString(), 1);
-        hconf.setVar(HiveConf.ConfVars.HADOOPJT, "localhost:" + mrCluster.getJobTrackerPort());
-
         conf = new JobConf(hconf);
         ConfUtil.setJobConf(conf);
 
diff --git a/hivesterix/hivesterix-optimizer/pom.xml b/hivesterix/hivesterix-optimizer/pom.xml
index 4e6032e..84c299f 100644
--- a/hivesterix/hivesterix-optimizer/pom.xml
+++ b/hivesterix/hivesterix-optimizer/pom.xml
@@ -1,12 +1,10 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<artifactId>hivesterix</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>hivesterix-optimizer</artifactId>
@@ -32,14 +30,14 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-translator</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hivesterix/hivesterix-runtime/pom.xml b/hivesterix/hivesterix-runtime/pom.xml
index 77db0d4..9c66cf4 100644
--- a/hivesterix/hivesterix-runtime/pom.xml
+++ b/hivesterix/hivesterix-runtime/pom.xml
@@ -1,13 +1,18 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>edu.uci.ics.hyracks</groupId>
 	<artifactId>hivesterix-runtime</artifactId>
-	<version>0.2.3-SNAPSHOT</version>
+	<version>0.2.4-SNAPSHOT</version>
 	<name>hivesterix-runtime</name>
 
+	<parent>
+                <groupId>edu.uci.ics.hyracks</groupId>
+                <artifactId>hivesterix</artifactId>
+                <version>0.2.4-SNAPSHOT</version>
+        </parent>
+
 	<dependencies>
-		<dependency>
+        <dependency>
 			<groupId>javax.servlet</groupId>
 			<artifactId>servlet-api</artifactId>
 			<version>2.5</version>
@@ -49,11 +54,6 @@
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.hadoop</groupId>
-			<artifactId>hadoop-core</artifactId>
-			<version>0.20.2</version>
-		</dependency>
-		<dependency>
 			<groupId>jline</groupId>
 			<artifactId>jline</artifactId>
 			<version>0.9.94</version>
@@ -238,13 +238,6 @@
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.hadoop</groupId>
-			<artifactId>hadoop-test</artifactId>
-			<version>0.20.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
 			<groupId>commons-logging</groupId>
 			<artifactId>commons-logging</artifactId>
 			<version>1.1.1</version>
@@ -283,35 +276,35 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-serde</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java b/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
index 282bfb8..daf6a7f 100644
--- a/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
+++ b/hivesterix/hivesterix-runtime/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
@@ -71,13 +71,6 @@
     }
 
     @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
-            JobSpecification spec) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
     public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
             int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc) {
 
@@ -102,6 +95,13 @@
     }
 
     @Override
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
+            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
+            JobSpecification spec) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> arg0,
             IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, JobGenContext arg4,
             JobSpecification arg5) throws AlgebricksException {
diff --git a/hivesterix/hivesterix-serde/pom.xml b/hivesterix/hivesterix-serde/pom.xml
index 0ba73bd..b5e8fe1 100644
--- a/hivesterix/hivesterix-serde/pom.xml
+++ b/hivesterix/hivesterix-serde/pom.xml
@@ -1,12 +1,10 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<artifactId>hivesterix</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>hivesterix-serde</artifactId>
@@ -46,17 +44,17 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.hadoop</groupId>
-			<artifactId>hadoop-core</artifactId>
-			<version>0.20.2</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
+                        <groupId>edu.uci.ics.hyracks</groupId>
+                        <artifactId>hivesterix-common</artifactId>
+                        <version>0.2.4-SNAPSHOT</version>
+                        <type>jar</type>
+                        <scope>compile</scope>
+                </dependency>
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
diff --git a/hivesterix/hivesterix-translator/pom.xml b/hivesterix/hivesterix-translator/pom.xml
index b99d652..2a93722 100644
--- a/hivesterix/hivesterix-translator/pom.xml
+++ b/hivesterix/hivesterix-translator/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>hivesterix-translator</artifactId>
 	<name>hivesterix-translator</name>
@@ -9,7 +7,7 @@
 	<parent>
 		<artifactId>hivesterix</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -39,21 +37,21 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>algebricks-compiler</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hivesterix-runtime</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hivesterix/pom.xml b/hivesterix/pom.xml
index a8ef4ee..00d008a 100644
--- a/hivesterix/pom.xml
+++ b/hivesterix/pom.xml
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>edu.uci.ics.hyracks</groupId>
 	<artifactId>hivesterix</artifactId>
-	<version>0.2.3-SNAPSHOT</version>
+	<version>0.2.4-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>hivesterix</name>
 
diff --git a/hivesterix/src/main/assembly/binary-assembly.xml b/hivesterix/src/main/assembly/binary-assembly.xml
deleted file mode 100755
index de3757f..0000000
--- a/hivesterix/src/main/assembly/binary-assembly.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<assembly>
-	<id>binary-assembly</id>
-	<formats>
-		<format>zip</format>
-		<format>dir</format>
-	</formats>
-	<includeBaseDirectory>false</includeBaseDirectory>
-	<fileSets>
-		<fileSet>
-			<directory>target/appassembler/bin</directory>
-			<outputDirectory>bin</outputDirectory>
-			<fileMode>0755</fileMode>
-		</fileSet>
-		<fileSet>
-			<directory>target/appassembler/lib</directory>
-			<outputDirectory>lib</outputDirectory>
-		</fileSet>
-		<fileSet>
-			<directory>target</directory>
-			<outputDirectory>lib</outputDirectory>
-			<includes>
-				<include>*.jar</include>
-			</includes>
-		</fileSet>
-	</fileSets>
-</assembly>
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java
deleted file mode 100644
index 3c84566..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/ExpressionConstant.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-/**
- * some constants for expression
- * 
- * @author yingyib
- * 
- */
-public class ExpressionConstant {
-
-	/**
-	 * name space for function identifier
-	 */
-	public static String NAMESPACE = "hive";
-
-	/**
-	 * field expression: modeled as function in Algebricks
-	 */
-	public static String FIELDACCESS = "fieldaccess";
-
-	/**
-	 * null string: modeled as null in Algebricks
-	 */
-	public static String NULL = "null";
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java
deleted file mode 100644
index 18380f7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveAlgebricksBuiltInFunctionMap.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.HashMap;
-
-import org.apache.hadoop.hive.ql.exec.Description;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-
-public class HiveAlgebricksBuiltInFunctionMap {
-
-	/**
-	 * hive auqa builtin function map instance
-	 */
-	public static HiveAlgebricksBuiltInFunctionMap INSTANCE = new HiveAlgebricksBuiltInFunctionMap();
-
-	/**
-	 * hive to Algebricks function name mapping
-	 */
-	private HashMap<String, FunctionIdentifier> hiveToAlgebricksMap = new HashMap<String, FunctionIdentifier>();
-
-	/**
-	 * Algebricks to hive function name mapping
-	 */
-	private HashMap<FunctionIdentifier, String> AlgebricksToHiveMap = new HashMap<FunctionIdentifier, String>();
-
-	/**
-	 * the bi-directional mapping between hive functions and Algebricks
-	 * functions
-	 */
-	private HiveAlgebricksBuiltInFunctionMap() {
-		hiveToAlgebricksMap.put("and", AlgebricksBuiltinFunctions.AND);
-		hiveToAlgebricksMap.put("or", AlgebricksBuiltinFunctions.OR);
-		hiveToAlgebricksMap.put("!", AlgebricksBuiltinFunctions.NOT);
-		hiveToAlgebricksMap.put("not", AlgebricksBuiltinFunctions.NOT);
-		hiveToAlgebricksMap.put("=", AlgebricksBuiltinFunctions.EQ);
-		hiveToAlgebricksMap.put("<>", AlgebricksBuiltinFunctions.NEQ);
-		hiveToAlgebricksMap.put(">", AlgebricksBuiltinFunctions.GT);
-		hiveToAlgebricksMap.put("<", AlgebricksBuiltinFunctions.LT);
-		hiveToAlgebricksMap.put(">=", AlgebricksBuiltinFunctions.GE);
-		hiveToAlgebricksMap.put("<=", AlgebricksBuiltinFunctions.LE);
-
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.AND, "and");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.OR, "or");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NOT, "!");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NOT, "not");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.EQ, "=");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.NEQ, "<>");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.GT, ">");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.LT, "<");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.GE, ">=");
-		AlgebricksToHiveMap.put(AlgebricksBuiltinFunctions.LE, "<=");
-	}
-
-	/**
-	 * get hive function name from Algebricks function identifier
-	 * 
-	 * @param AlgebricksId
-	 * @return hive
-	 */
-	public String getHiveFunctionName(FunctionIdentifier AlgebricksId) {
-		return AlgebricksToHiveMap.get(AlgebricksId);
-	}
-
-	/**
-	 * get hive UDF or Generic class's corresponding built-in functions
-	 * 
-	 * @param funcClass
-	 * @return function identifier
-	 */
-	public FunctionIdentifier getAlgebricksFunctionId(Class<?> funcClass) {
-		Description annotation = (Description) funcClass
-				.getAnnotation(Description.class);
-		String hiveUDFName = "";
-		if (annotation == null) {
-			hiveUDFName = null;
-			return null;
-		} else {
-			hiveUDFName = annotation.name();
-			return hiveToAlgebricksMap.get(hiveUDFName);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java
deleted file mode 100644
index afb7d39..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveExpressionTypeComputer.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.FunctionInfo;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-public class HiveExpressionTypeComputer implements IExpressionTypeComputer {
-
-	public static IExpressionTypeComputer INSTANCE = new HiveExpressionTypeComputer();
-
-	@Override
-	public Object getType(ILogicalExpression expr,
-			IMetadataProvider<?, ?> metadataProvider,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-			IFunctionInfo funcInfo = funcExpr.getFunctionInfo();
-
-			/**
-			 * argument expressions, types, object inspectors
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<TypeInfo> argumentTypes = new ArrayList<TypeInfo>();
-
-			/**
-			 * get types of argument
-			 */
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				TypeInfo type = (TypeInfo) getType(argument.getValue(),
-						metadataProvider, env);
-				argumentTypes.add(type);
-			}
-
-			ObjectInspector[] childrenOIs = new ObjectInspector[argumentTypes
-					.size()];
-
-			/**
-			 * get object inspector
-			 */
-			for (int i = 0; i < argumentTypes.size(); i++) {
-				childrenOIs[i] = TypeInfoUtils
-						.getStandardWritableObjectInspectorFromTypeInfo(argumentTypes
-								.get(i));
-			}
-
-			/**
-			 * type inference for scalar function
-			 */
-			if (funcExpr instanceof ScalarFunctionCallExpression) {
-
-				FunctionIdentifier AlgebricksId = funcInfo
-						.getFunctionIdentifier();
-				Object functionInfo = ((HiveFunctionInfo) funcInfo).getInfo();
-				String udfName = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-						.getHiveFunctionName(AlgebricksId);
-				GenericUDF udf;
-				if (udfName != null) {
-					/**
-					 * get corresponding function info for built-in functions
-					 */
-					FunctionInfo fInfo = FunctionRegistry
-							.getFunctionInfo(udfName);
-					udf = fInfo.getGenericUDF();
-				} else if (functionInfo != null) {
-					/**
-					 * for GenericUDFBridge: we should not call get type of this
-					 * hive expression, because parameters may have been
-					 * changed!
-					 */
-					ExprNodeGenericFuncDesc hiveExpr = (ExprNodeGenericFuncDesc) functionInfo;
-					udf = hiveExpr.getGenericUDF();
-				} else {
-					/**
-					 * for other generic UDF
-					 */
-					Class<?> udfClass;
-					try {
-						udfClass = Class.forName(AlgebricksId.getName());
-						udf = (GenericUDF) udfClass.newInstance();
-					} catch (Exception e) {
-						e.printStackTrace();
-						throw new AlgebricksException(e.getMessage());
-					}
-				}
-				/**
-				 * doing the actual type inference
-				 */
-				ObjectInspector oi = null;
-				try {
-					oi = udf.initialize(childrenOIs);
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(oi);
-				return exprType;
-
-			} else if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * type inference for aggregation function
-				 */
-				GenericUDAFEvaluator result = aggregateDesc
-						.getGenericUDAFEvaluator();
-
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = result
-							.init(aggregateDesc.getMode(), childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else if (funcExpr instanceof UnnestingFunctionCallExpression) {
-				/**
-				 * type inference for UDTF function
-				 */
-				UDTFDesc hiveDesc = (UDTFDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				GenericUDTF udtf = hiveDesc.getGenericUDTF();
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = udtf.initialize(childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else {
-				throw new IllegalStateException(
-						"unrecognized function expression "
-								+ expr.getClass().getName());
-			}
-		} else if (expr.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
-			/**
-			 * get type for variable in the environment
-			 */
-			VariableReferenceExpression varExpr = (VariableReferenceExpression) expr;
-			LogicalVariable var = varExpr.getVariableReference();
-			TypeInfo type = (TypeInfo) env.getVarType(var);
-			return type;
-		} else if (expr.getExpressionTag() == LogicalExpressionTag.CONSTANT) {
-			/**
-			 * get type for constant, from its java class
-			 */
-			ConstantExpression constExpr = (ConstantExpression) expr;
-			HivesterixConstantValue value = (HivesterixConstantValue) constExpr
-					.getValue();
-			TypeInfo type = TypeInfoFactory
-					.getPrimitiveTypeInfoFromJavaPrimitive(value.getObject()
-							.getClass());
-			return type;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java
deleted file mode 100644
index 220bd00..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveFunctionInfo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.io.Serializable;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-
-public class HiveFunctionInfo implements IFunctionInfo, Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * primary function identifier
-	 */
-	private transient FunctionIdentifier fid;
-
-	/**
-	 * secondary function identifier: function name
-	 */
-	private transient Object secondaryFid;
-
-	public HiveFunctionInfo(FunctionIdentifier fid, Object secondFid) {
-		this.fid = fid;
-		this.secondaryFid = secondFid;
-	}
-
-	@Override
-	public FunctionIdentifier getFunctionIdentifier() {
-		return fid;
-	}
-
-	public Object getInfo() {
-		return secondaryFid;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java
deleted file mode 100644
index 8dea691..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveMergeAggregationExpressionFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-
-/**
- * generate merge aggregation expression from an aggregation expression
- * 
- * @author yingyib
- * 
- */
-public class HiveMergeAggregationExpressionFactory implements
-		IMergeAggregationExpressionFactory {
-
-	public static IMergeAggregationExpressionFactory INSTANCE = new HiveMergeAggregationExpressionFactory();
-
-	@Override
-	public ILogicalExpression createMergeAggregation(ILogicalExpression expr,
-			IOptimizationContext context) throws AlgebricksException {
-		/**
-		 * type inference for scalar function
-		 */
-		if (expr instanceof AggregateFunctionCallExpression) {
-			AggregateFunctionCallExpression funcExpr = (AggregateFunctionCallExpression) expr;
-			/**
-			 * hive aggregation info
-			 */
-			AggregationDesc aggregator = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-					.getFunctionInfo()).getInfo();
-			LogicalVariable inputVar = context.newVar();
-			ExprNodeDesc col = new ExprNodeColumnDesc(
-					TypeInfoFactory.voidTypeInfo, inputVar.toString(), null,
-					false);
-			ArrayList<ExprNodeDesc> parameters = new ArrayList<ExprNodeDesc>();
-			parameters.add(col);
-
-			GenericUDAFEvaluator.Mode mergeMode;
-			if (aggregator.getMode() == GenericUDAFEvaluator.Mode.PARTIAL1)
-				mergeMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else if (aggregator.getMode() == GenericUDAFEvaluator.Mode.COMPLETE)
-				mergeMode = GenericUDAFEvaluator.Mode.FINAL;
-			else
-				mergeMode = aggregator.getMode();
-			AggregationDesc mergeDesc = new AggregationDesc(
-					aggregator.getGenericUDAFName(),
-					aggregator.getGenericUDAFEvaluator(), parameters,
-					aggregator.getDistinct(), mergeMode);
-
-			String UDAFName = mergeDesc.getGenericUDAFName();
-			List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-			arguments.add(new MutableObject<ILogicalExpression>(
-					new VariableReferenceExpression(inputVar)));
-
-			FunctionIdentifier funcId = new FunctionIdentifier(
-					ExpressionConstant.NAMESPACE, UDAFName + "("
-							+ mergeDesc.getMode() + ")");
-			HiveFunctionInfo funcInfo = new HiveFunctionInfo(funcId, mergeDesc);
-			AggregateFunctionCallExpression aggregationExpression = new AggregateFunctionCallExpression(
-					funcInfo, false, arguments);
-			return aggregationExpression;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java
deleted file mode 100644
index 10c9b8a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HiveNullableTypeComputer.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
-
-public class HiveNullableTypeComputer implements INullableTypeComputer {
-
-	public static INullableTypeComputer INSTANCE = new HiveNullableTypeComputer();
-
-	@Override
-	public Object makeNullableType(Object type) throws AlgebricksException {
-		return type;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java
deleted file mode 100644
index 7062e26..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivePartialAggregationTypeComputer.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IPartialAggregationTypeComputer;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-public class HivePartialAggregationTypeComputer implements
-		IPartialAggregationTypeComputer {
-
-	public static IPartialAggregationTypeComputer INSTANCE = new HivePartialAggregationTypeComputer();
-
-	@Override
-	public Object getType(ILogicalExpression expr,
-			IVariableTypeEnvironment env,
-			IMetadataProvider<?, ?> metadataProvider)
-			throws AlgebricksException {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			IExpressionTypeComputer tc = HiveExpressionTypeComputer.INSTANCE;
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-
-			/**
-			 * argument expressions, types, object inspectors
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<TypeInfo> argumentTypes = new ArrayList<TypeInfo>();
-
-			/**
-			 * get types of argument
-			 */
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				TypeInfo type = (TypeInfo) tc.getType(argument.getValue(),
-						metadataProvider, env);
-				argumentTypes.add(type);
-			}
-
-			ObjectInspector[] childrenOIs = new ObjectInspector[argumentTypes
-					.size()];
-
-			/**
-			 * get object inspector
-			 */
-			for (int i = 0; i < argumentTypes.size(); i++) {
-				childrenOIs[i] = TypeInfoUtils
-						.getStandardWritableObjectInspectorFromTypeInfo(argumentTypes
-								.get(i));
-			}
-
-			/**
-			 * type inference for scalar function
-			 */
-			if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * type inference for aggregation function
-				 */
-				GenericUDAFEvaluator result = aggregateDesc
-						.getGenericUDAFEvaluator();
-
-				ObjectInspector returnOI = null;
-				try {
-					returnOI = result.init(
-							getPartialMode(aggregateDesc.getMode()),
-							childrenOIs);
-				} catch (HiveException e) {
-					e.printStackTrace();
-				}
-				TypeInfo exprType = TypeInfoUtils
-						.getTypeInfoFromObjectInspector(returnOI);
-				return exprType;
-			} else {
-				throw new IllegalStateException("illegal expressions "
-						+ expr.getClass().getName());
-			}
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-
-	private Mode getPartialMode(Mode mode) {
-		Mode partialMode;
-		if (mode == Mode.FINAL)
-			partialMode = Mode.PARTIAL2;
-		else if (mode == Mode.COMPLETE)
-			partialMode = Mode.PARTIAL1;
-		else
-			partialMode = mode;
-		return partialMode;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java
deleted file mode 100644
index de9cea6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/HivesterixConstantValue.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IAlgebricksConstantValue;
-
-public class HivesterixConstantValue implements IAlgebricksConstantValue {
-
-	private Object object;
-
-	public HivesterixConstantValue(Object object) {
-		this.setObject(object);
-	}
-
-	@Override
-	public boolean isFalse() {
-		return object == Boolean.FALSE;
-	}
-
-	@Override
-	public boolean isNull() {
-		return object == null;
-	}
-
-	@Override
-	public boolean isTrue() {
-		return object == Boolean.TRUE;
-	}
-
-	public void setObject(Object object) {
-		this.object = object;
-	}
-
-	public Object getObject() {
-		return object;
-	}
-
-	@Override
-	public String toString() {
-		return object.toString();
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		if (!(o instanceof HivesterixConstantValue)) {
-			return false;
-		}
-		HivesterixConstantValue v2 = (HivesterixConstantValue) o;
-		return object.equals(v2.getObject());
-	}
-
-	@Override
-	public int hashCode() {
-		return object.hashCode();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java
deleted file mode 100644
index 2b1d191..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/expression/Schema.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.logical.expression;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-
-public class Schema implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	private List<String> fieldNames;
-
-	private List<TypeInfo> fieldTypes;
-
-	public Schema(List<String> fieldNames, List<TypeInfo> fieldTypes) {
-		this.fieldNames = fieldNames;
-		this.fieldTypes = fieldTypes;
-	}
-
-	public ObjectInspector toObjectInspector() {
-		return LazyUtils.getLazyObjectInspector(fieldNames, fieldTypes);
-	}
-
-	public List<String> getNames() {
-		return fieldNames;
-	}
-
-	public List<TypeInfo> getTypes() {
-		return fieldTypes;
-	}
-
-	public Object[] getSchema() {
-		return fieldTypes.toArray();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java
deleted file mode 100644
index 2765e44..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveAlgebricksTranslator.java
+++ /dev/null
@@ -1,849 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDF;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.plan.api.OperatorType;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.HiveAlgebricksBuiltInFunctionMap;
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.ExtractVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.FilterVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.GroupByVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.JoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.LateralViewJoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.LimitVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.MapJoinVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.ProjectVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.SortVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.TableScanWriteVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.UnionVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Visitor;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-
-@SuppressWarnings("rawtypes")
-public class HiveAlgebricksTranslator implements Translator {
-
-	private int currentVariable = 0;
-
-	private List<Mutable<ILogicalOperator>> logicalOp = new ArrayList<Mutable<ILogicalOperator>>();
-
-	private boolean continueTraverse = true;
-
-	private IMetadataProvider<PartitionDesc, Object> metaData;
-
-	/**
-	 * map variable name to the logical variable
-	 */
-	private HashMap<String, LogicalVariable> nameToLogicalVariableMap = new HashMap<String, LogicalVariable>();
-
-	/**
-	 * map field name to LogicalVariable
-	 */
-	private HashMap<String, LogicalVariable> fieldToLogicalVariableMap = new HashMap<String, LogicalVariable>();
-
-	/**
-	 * map logical variable to name
-	 */
-	private HashMap<LogicalVariable, String> logicalVariableToFieldMap = new HashMap<LogicalVariable, String>();
-
-	/**
-	 * asterix root operators
-	 */
-	private List<Mutable<ILogicalOperator>> rootOperators = new ArrayList<Mutable<ILogicalOperator>>();
-
-	/**
-	 * a list of visitors
-	 */
-	private List<Visitor> visitors = new ArrayList<Visitor>();
-
-	/**
-	 * output writer to print things out
-	 */
-	private static PrintWriter outputWriter = new PrintWriter(
-			new OutputStreamWriter(System.out));
-
-	/**
-	 * map a logical variable to type info
-	 */
-	private HashMap<LogicalVariable, TypeInfo> variableToType = new HashMap<LogicalVariable, TypeInfo>();
-
-	@Override
-	public LogicalVariable getVariable(String fieldName, TypeInfo type) {
-		LogicalVariable var = fieldToLogicalVariableMap.get(fieldName);
-		if (var == null) {
-			currentVariable++;
-			var = new LogicalVariable(currentVariable);
-			fieldToLogicalVariableMap.put(fieldName, var);
-			nameToLogicalVariableMap.put(var.toString(), var);
-			variableToType.put(var, type);
-			logicalVariableToFieldMap.put(var, fieldName);
-		}
-		return var;
-	}
-
-	@Override
-	public LogicalVariable getNewVariable(String fieldName, TypeInfo type) {
-		currentVariable++;
-		LogicalVariable var = new LogicalVariable(currentVariable);
-		fieldToLogicalVariableMap.put(fieldName, var);
-		nameToLogicalVariableMap.put(var.toString(), var);
-		variableToType.put(var, type);
-		logicalVariableToFieldMap.put(var, fieldName);
-		return var;
-	}
-
-	@Override
-	public void replaceVariable(LogicalVariable oldVar, LogicalVariable newVar) {
-		String name = this.logicalVariableToFieldMap.get(oldVar);
-		if (name != null) {
-			fieldToLogicalVariableMap.put(name, newVar);
-			nameToLogicalVariableMap.put(newVar.toString(), newVar);
-			nameToLogicalVariableMap.put(oldVar.toString(), newVar);
-			logicalVariableToFieldMap.put(newVar, name);
-		}
-	}
-
-	@Override
-	public IMetadataProvider<PartitionDesc, Object> getMetadataProvider() {
-		return metaData;
-	}
-
-	/**
-	 * only get an variable, without rewriting it
-	 * 
-	 * @param fieldName
-	 * @return
-	 */
-	private LogicalVariable getVariableOnly(String fieldName) {
-		return fieldToLogicalVariableMap.get(fieldName);
-	}
-
-	private void updateVariable(String fieldName, LogicalVariable variable) {
-		LogicalVariable var = fieldToLogicalVariableMap.get(fieldName);
-		if (var == null) {
-			fieldToLogicalVariableMap.put(fieldName, variable);
-			nameToLogicalVariableMap.put(fieldName, variable);
-		} else if (!var.equals(variable)) {
-			fieldToLogicalVariableMap.put(fieldName, variable);
-			nameToLogicalVariableMap.put(fieldName, variable);
-		}
-	}
-
-	/**
-	 * get a list of logical variables from the schema
-	 * 
-	 * @param schema
-	 * @return
-	 */
-	@Override
-	public List<LogicalVariable> getVariablesFromSchema(Schema schema) {
-		List<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		List<String> names = schema.getNames();
-
-		for (String name : names)
-			variables.add(nameToLogicalVariableMap.get(name));
-		return variables;
-	}
-
-	/**
-	 * get variable to typeinfo map
-	 * 
-	 * @return
-	 */
-	public HashMap<LogicalVariable, TypeInfo> getVariableContext() {
-		return this.variableToType;
-	}
-
-	/**
-	 * get the number of variables s
-	 * 
-	 * @return
-	 */
-	public int getVariableCounter() {
-		return currentVariable + 1;
-	}
-
-	/**
-	 * translate from hive operator tree to asterix operator tree
-	 * 
-	 * @param hive
-	 *            roots
-	 * @return Algebricks roots
-	 */
-	public void translate(List<Operator> hiveRoot,
-			ILogicalOperator parentOperator,
-			HashMap<String, PartitionDesc> aliasToPathMap)
-			throws AlgebricksException {
-		/**
-		 * register visitors
-		 */
-		visitors.add(new FilterVisitor());
-		visitors.add(new GroupByVisitor());
-		visitors.add(new JoinVisitor());
-		visitors.add(new LateralViewJoinVisitor());
-		visitors.add(new UnionVisitor());
-		visitors.add(new LimitVisitor());
-		visitors.add(new MapJoinVisitor());
-		visitors.add(new ProjectVisitor());
-		visitors.add(new SortVisitor());
-		visitors.add(new ExtractVisitor());
-		visitors.add(new TableScanWriteVisitor(aliasToPathMap));
-
-		List<Mutable<ILogicalOperator>> refList = translate(hiveRoot,
-				new MutableObject<ILogicalOperator>(parentOperator));
-		insertReplicateOperator(refList);
-		if (refList != null)
-			rootOperators.addAll(refList);
-	}
-
-	/**
-	 * translate operator DAG
-	 * 
-	 * @param hiveRoot
-	 * @param AlgebricksParentOperator
-	 * @return
-	 */
-	private List<Mutable<ILogicalOperator>> translate(List<Operator> hiveRoot,
-			Mutable<ILogicalOperator> AlgebricksParentOperator)
-			throws AlgebricksException {
-
-		for (Operator hiveOperator : hiveRoot) {
-			continueTraverse = true;
-			Mutable<ILogicalOperator> currentOperatorRef = null;
-			if (hiveOperator.getType() == OperatorType.FILTER) {
-				FilterOperator fop = (FilterOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.REDUCESINK) {
-				ReduceSinkOperator fop = (ReduceSinkOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.JOIN) {
-				JoinOperator fop = (JoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.LATERALVIEWJOIN) {
-				LateralViewJoinOperator fop = (LateralViewJoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.MAPJOIN) {
-				MapJoinOperator fop = (MapJoinOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-				if (currentOperatorRef == null)
-					return null;
-			} else if (hiveOperator.getType() == OperatorType.SELECT) {
-				SelectOperator fop = (SelectOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.EXTRACT) {
-				ExtractOperator fop = (ExtractOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.GROUPBY) {
-				GroupByOperator fop = (GroupByOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.TABLESCAN) {
-				TableScanOperator fop = (TableScanOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.FILESINK) {
-				FileSinkOperator fop = (FileSinkOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(fop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.LIMIT) {
-				LimitOperator lop = (LimitOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.UDTF) {
-				UDTFOperator lop = (UDTFOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null)
-						break;
-				}
-			} else if (hiveOperator.getType() == OperatorType.UNION) {
-				UnionOperator lop = (UnionOperator) hiveOperator;
-				for (Visitor visitor : visitors) {
-					currentOperatorRef = visitor.visit(lop,
-							AlgebricksParentOperator, this);
-					if (currentOperatorRef != null) {
-						continueTraverse = true;
-						break;
-					} else
-						continueTraverse = false;
-				}
-			} else
-				;
-			if (hiveOperator.getChildOperators() != null
-					&& hiveOperator.getChildOperators().size() > 0
-					&& continueTraverse) {
-				@SuppressWarnings("unchecked")
-				List<Operator> children = hiveOperator.getChildOperators();
-				if (currentOperatorRef == null)
-					currentOperatorRef = AlgebricksParentOperator;
-				translate(children, currentOperatorRef);
-			}
-			if (hiveOperator.getChildOperators() == null
-					|| hiveOperator.getChildOperators().size() == 0)
-				logicalOp.add(currentOperatorRef);
-		}
-		return logicalOp;
-	}
-
-	/**
-	 * used in select, group by to get no-column-expression columns
-	 * 
-	 * @param cols
-	 * @return
-	 */
-	public ILogicalOperator getAssignOperator(Mutable<ILogicalOperator> parent,
-			List<ExprNodeDesc> cols, ArrayList<LogicalVariable> variables) {
-
-		ArrayList<Mutable<ILogicalExpression>> expressions = new ArrayList<Mutable<ILogicalExpression>>();
-
-		/**
-		 * variables to be appended in the assign operator
-		 */
-		ArrayList<LogicalVariable> appendedVariables = new ArrayList<LogicalVariable>();
-
-		// one variable can only be assigned once
-		for (ExprNodeDesc hiveExpr : cols) {
-			rewriteExpression(hiveExpr);
-
-			if (hiveExpr instanceof ExprNodeColumnDesc) {
-				ExprNodeColumnDesc desc2 = (ExprNodeColumnDesc) hiveExpr;
-				String fieldName = desc2.getTabAlias() + "."
-						+ desc2.getColumn();
-
-				// System.out.println("project expr: " + fieldName);
-
-				if (fieldName.indexOf("$$") < 0) {
-					LogicalVariable var = getVariable(fieldName,
-							hiveExpr.getTypeInfo());
-					desc2.setColumn(var.toString());
-					desc2.setTabAlias("");
-					variables.add(var);
-				} else {
-					LogicalVariable var = nameToLogicalVariableMap.get(desc2
-							.getColumn());
-					String name = this.logicalVariableToFieldMap.get(var);
-					var = this.getVariableOnly(name);
-					variables.add(var);
-				}
-			} else {
-				Mutable<ILogicalExpression> asterixExpr = translateScalarFucntion(hiveExpr);
-				expressions.add(asterixExpr);
-				LogicalVariable var = getVariable(hiveExpr.getExprString()
-						+ asterixExpr.hashCode(), hiveExpr.getTypeInfo());
-				variables.add(var);
-				appendedVariables.add(var);
-			}
-		}
-
-		/**
-		 * create an assign operator to deal with appending
-		 */
-		ILogicalOperator assignOp = null;
-		if (appendedVariables.size() > 0) {
-			assignOp = new AssignOperator(appendedVariables, expressions);
-			assignOp.getInputs().add(parent);
-		}
-		return assignOp;
-	}
-
-	private ILogicalPlan plan;
-
-	public ILogicalPlan genLogicalPlan() {
-		plan = new ALogicalPlanImpl(rootOperators);
-		return plan;
-	}
-
-	public void printOperators() throws AlgebricksException {
-		LogicalOperatorPrettyPrintVisitor pvisitor = new LogicalOperatorPrettyPrintVisitor();
-		StringBuilder buffer = new StringBuilder();
-		PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
-		outputWriter.println(buffer);
-		outputWriter.println("rewritten variables: ");
-		outputWriter.flush();
-		printVariables();
-
-	}
-
-	public static void setOutputPrinter(PrintWriter writer) {
-		outputWriter = writer;
-	}
-
-	private void printVariables() {
-		Set<Entry<String, LogicalVariable>> entries = fieldToLogicalVariableMap
-				.entrySet();
-
-		for (Entry<String, LogicalVariable> entry : entries) {
-			outputWriter.println(entry.getKey() + " -> " + entry.getValue());
-		}
-		outputWriter.flush();
-	}
-
-	/**
-	 * generate the object inspector for the output of an operator
-	 * 
-	 * @param operator
-	 *            The Hive operator
-	 * @return an ObjectInspector object
-	 */
-	public Schema generateInputSchema(Operator operator) {
-		List<String> variableNames = new ArrayList<String>();
-		List<TypeInfo> typeList = new ArrayList<TypeInfo>();
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-
-		for (ColumnInfo col : columns) {
-			// typeList.add();
-			TypeInfo type = col.getType();
-			typeList.add(type);
-
-			String fieldName = col.getInternalName();
-			variableNames.add(fieldName);
-		}
-
-		return new Schema(variableNames, typeList);
-	}
-
-	/**
-	 * rewrite the names of output columns for feature expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(Operator operator) {
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-
-		for (ColumnInfo column : columns) {
-			String columnName = column.getTabAlias() + "."
-					+ column.getInternalName();
-			if (columnName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariable(columnName, column.getType());
-				column.setInternalName(var.toString());
-			}
-		}
-	}
-
-	@Override
-	public void rewriteOperatorOutputSchema(List<LogicalVariable> variables,
-			Operator operator) {
-
-		//printOperatorSchema(operator);
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-		if (variables.size() != columns.size()) {
-			throw new IllegalStateException("output cardinality error "
-					+ operator.getName() + " variable size: "
-					+ variables.size() + " expected " + columns.size());
-		}
-
-		for (int i = 0; i < variables.size(); i++) {
-			LogicalVariable var = variables.get(i);
-			ColumnInfo column = columns.get(i);
-			String fieldName = column.getTabAlias() + "."
-					+ column.getInternalName();
-			if (fieldName.indexOf("$$") < 0) {
-				updateVariable(fieldName, var);
-				column.setInternalName(var.toString());
-			}
-		}
-		//printOperatorSchema(operator);
-	}
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpression(ExprNodeDesc expr) {
-		if (expr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc desc = (ExprNodeColumnDesc) expr;
-			String fieldName = desc.getTabAlias() + "." + desc.getColumn();
-			if (fieldName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariableOnly(fieldName);
-				if (var == null) {
-					fieldName = "." + desc.getColumn();
-					var = getVariableOnly(fieldName);
-					if (var == null) {
-						fieldName = "null." + desc.getColumn();
-						var = getVariableOnly(fieldName);
-						if (var == null) {
-							throw new IllegalStateException(fieldName
-									+ " is wrong!!! ");
-						}
-					}
-				}
-				String name = this.logicalVariableToFieldMap.get(var);
-				var = getVariableOnly(name);
-				desc.setColumn(var.toString());
-			}
-		} else {
-			if (expr.getChildren() != null && expr.getChildren().size() > 0) {
-				List<ExprNodeDesc> children = expr.getChildren();
-				for (ExprNodeDesc desc : children)
-					rewriteExpression(desc);
-			}
-		}
-	}
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpressionPartial(ExprNodeDesc expr) {
-		if (expr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc desc = (ExprNodeColumnDesc) expr;
-			String fieldName = desc.getTabAlias() + "." + desc.getColumn();
-			if (fieldName.indexOf("$$") < 0) {
-				LogicalVariable var = getVariableOnly(fieldName);
-				desc.setColumn(var.toString());
-			}
-		} else {
-			if (expr.getChildren() != null && expr.getChildren().size() > 0) {
-				List<ExprNodeDesc> children = expr.getChildren();
-				for (ExprNodeDesc desc : children)
-					rewriteExpressionPartial(desc);
-			}
-		}
-	}
-
-	// private void printOperatorSchema(Operator operator) {
-	// // System.out.println(operator.getName());
-	// // List<ColumnInfo> columns = operator.getSchema().getSignature();
-	// // for (ColumnInfo column : columns) {
-	// // System.out.print(column.getTabAlias() + "." +
-	// // column.getInternalName() + "  ");
-	// // }
-	// // System.out.println();
-	// }
-
-	/**
-	 * translate scalar function expression
-	 * 
-	 * @param hiveExpr
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateScalarFucntion(
-			ExprNodeDesc hiveExpr) {
-		ILogicalExpression AlgebricksExpr;
-
-		if (hiveExpr instanceof ExprNodeGenericFuncDesc) {
-			List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-			List<ExprNodeDesc> children = hiveExpr.getChildren();
-
-			for (ExprNodeDesc child : children)
-				arguments.add(translateScalarFucntion(child));
-
-			ExprNodeGenericFuncDesc funcExpr = (ExprNodeGenericFuncDesc) hiveExpr;
-			GenericUDF genericUdf = funcExpr.getGenericUDF();
-			UDF udf = null;
-			if (genericUdf instanceof GenericUDFBridge) {
-				GenericUDFBridge bridge = (GenericUDFBridge) genericUdf;
-				try {
-					udf = bridge.getUdfClass().newInstance();
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-
-			/**
-			 * set up the hive function
-			 */
-			Object hiveFunction = genericUdf;
-			if (udf != null)
-				hiveFunction = udf;
-
-			FunctionIdentifier funcId = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-					.getAlgebricksFunctionId(hiveFunction.getClass());
-			if (funcId == null) {
-				funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-						hiveFunction.getClass().getName());
-			}
-
-			Object functionInfo = null;
-			if (genericUdf instanceof GenericUDFBridge) {
-				functionInfo = funcExpr;
-			}
-
-			/**
-			 * generate the function call expression
-			 */
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, functionInfo), arguments);
-			AlgebricksExpr = AlgebricksFuncExpr;
-
-		} else if (hiveExpr instanceof ExprNodeColumnDesc) {
-			ExprNodeColumnDesc column = (ExprNodeColumnDesc) hiveExpr;
-			LogicalVariable var = this.getVariable(column.getColumn());
-			AlgebricksExpr = new VariableReferenceExpression(var);
-
-		} else if (hiveExpr instanceof ExprNodeFieldDesc) {
-			FunctionIdentifier funcId;
-			funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-					ExpressionConstant.FIELDACCESS);
-
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, hiveExpr));
-			AlgebricksExpr = AlgebricksFuncExpr;
-		} else if (hiveExpr instanceof ExprNodeConstantDesc) {
-			ExprNodeConstantDesc hiveConst = (ExprNodeConstantDesc) hiveExpr;
-			Object value = hiveConst.getValue();
-			AlgebricksExpr = new ConstantExpression(
-					new HivesterixConstantValue(value));
-		} else if (hiveExpr instanceof ExprNodeNullDesc) {
-			FunctionIdentifier funcId;
-			funcId = new FunctionIdentifier(ExpressionConstant.NAMESPACE,
-					ExpressionConstant.NULL);
-
-			ScalarFunctionCallExpression AlgebricksFuncExpr = new ScalarFunctionCallExpression(
-					new HiveFunctionInfo(funcId, hiveExpr));
-
-			AlgebricksExpr = AlgebricksFuncExpr;
-		} else {
-			throw new IllegalStateException("unknown hive expression");
-		}
-		return new MutableObject<ILogicalExpression>(AlgebricksExpr);
-	}
-
-	/**
-	 * translate aggregation function expression
-	 * 
-	 * @param aggregateDesc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateAggregation(
-			AggregationDesc aggregateDesc) {
-
-		String UDAFName = aggregateDesc.getGenericUDAFName();
-
-		List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
-		List<ExprNodeDesc> children = aggregateDesc.getParameters();
-
-		for (ExprNodeDesc child : children)
-			arguments.add(translateScalarFucntion(child));
-
-		FunctionIdentifier funcId = new FunctionIdentifier(
-				ExpressionConstant.NAMESPACE, UDAFName + "("
-						+ aggregateDesc.getMode() + ")");
-		HiveFunctionInfo funcInfo = new HiveFunctionInfo(funcId, aggregateDesc);
-		AggregateFunctionCallExpression aggregationExpression = new AggregateFunctionCallExpression(
-				funcInfo, false, arguments);
-		return new MutableObject<ILogicalExpression>(aggregationExpression);
-	}
-
-	/**
-	 * translate aggregation function expression
-	 * 
-	 * @param aggregator
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateUnnestFunction(
-			UDTFDesc udtfDesc, Mutable<ILogicalExpression> argument) {
-
-		String UDTFName = udtfDesc.getUDTFName();
-
-		FunctionIdentifier funcId = new FunctionIdentifier(
-				ExpressionConstant.NAMESPACE, UDTFName);
-		UnnestingFunctionCallExpression unnestingExpression = new UnnestingFunctionCallExpression(
-				new HiveFunctionInfo(funcId, udtfDesc));
-		unnestingExpression.getArguments().add(argument);
-		return new MutableObject<ILogicalExpression>(unnestingExpression);
-	}
-
-	/**
-	 * get typeinfo
-	 */
-	@Override
-	public TypeInfo getType(LogicalVariable var) {
-		return variableToType.get(var);
-	}
-
-	/**
-	 * get variable from variable name
-	 */
-	@Override
-	public LogicalVariable getVariable(String name) {
-		return nameToLogicalVariableMap.get(name);
-	}
-
-	@Override
-	public LogicalVariable getVariableFromFieldName(String fieldName) {
-		return this.getVariableOnly(fieldName);
-	}
-
-	/**
-	 * set the metadata provider
-	 */
-	@Override
-	public void setMetadataProvider(
-			IMetadataProvider<PartitionDesc, Object> metadata) {
-		this.metaData = metadata;
-	}
-
-	/**
-	 * insert ReplicateOperator when necessary
-	 */
-	private void insertReplicateOperator(List<Mutable<ILogicalOperator>> roots) {
-		Map<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> childToParentsMap = new HashMap<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>>();
-		buildChildToParentsMapping(roots, childToParentsMap);
-		for (Entry<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> entry : childToParentsMap
-				.entrySet()) {
-			List<Mutable<ILogicalOperator>> pList = entry.getValue();
-			if (pList.size() > 1) {
-				ILogicalOperator rop = new ReplicateOperator(pList.size());
-				Mutable<ILogicalOperator> ropRef = new MutableObject<ILogicalOperator>(
-						rop);
-				Mutable<ILogicalOperator> childRef = entry.getKey();
-				rop.getInputs().add(childRef);
-				for (Mutable<ILogicalOperator> parentRef : pList) {
-					ILogicalOperator parentOp = parentRef.getValue();
-					int index = parentOp.getInputs().indexOf(childRef);
-					parentOp.getInputs().set(index, ropRef);
-				}
-			}
-		}
-	}
-
-	/**
-	 * build the mapping from child to Parents
-	 * 
-	 * @param roots
-	 * @param childToParentsMap
-	 */
-	private void buildChildToParentsMapping(
-			List<Mutable<ILogicalOperator>> roots,
-			Map<Mutable<ILogicalOperator>, List<Mutable<ILogicalOperator>>> map) {
-		for (Mutable<ILogicalOperator> opRef : roots) {
-			List<Mutable<ILogicalOperator>> childRefs = opRef.getValue()
-					.getInputs();
-			for (Mutable<ILogicalOperator> childRef : childRefs) {
-				List<Mutable<ILogicalOperator>> parentList = map.get(childRef);
-				if (parentList == null) {
-					parentList = new ArrayList<Mutable<ILogicalOperator>>();
-					map.put(childRef, parentList);
-				}
-				if (!parentList.contains(opRef))
-					parentList.add(opRef);
-			}
-			buildChildToParentsMapping(childRefs, map);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java
deleted file mode 100644
index 494e796..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveLogicalPlanAndMetaData.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlanAndMetadata;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class HiveLogicalPlanAndMetaData implements ILogicalPlanAndMetadata {
-
-	IMetadataProvider metadata;
-	ILogicalPlan plan;
-
-	public HiveLogicalPlanAndMetaData(ILogicalPlan plan,
-			IMetadataProvider metadata) {
-		this.plan = plan;
-		this.metadata = metadata;
-	}
-
-	@Override
-	public IMetadataProvider getMetadataProvider() {
-		return metadata;
-	}
-
-	@Override
-	public ILogicalPlan getPlan() {
-		return plan;
-	}
-
-	@Override
-	public AlgebricksPartitionConstraint getClusterLocations() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java
deleted file mode 100644
index 0d234fb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/HiveOperatorAnnotations.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan;
-
-public class HiveOperatorAnnotations {
-
-	// hints
-	public static final String LOCAL_GROUP_BY = "LOCAL_GROUP_BY";
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java
deleted file mode 100644
index 9a84164..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ExtractVisitor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-
-public class ExtractVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ExtractOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java
deleted file mode 100644
index b276ba9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/FilterVisitor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.FilterDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
-
-public class FilterVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FilterOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-
-		FilterDesc desc = (FilterDesc) operator.getConf();
-		ExprNodeDesc predicate = desc.getPredicate();
-		t.rewriteExpression(predicate);
-
-		Mutable<ILogicalExpression> exprs = t.translateScalarFucntion(desc
-				.getPredicate());
-		ILogicalOperator currentOperator = new SelectOperator(exprs);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-
-		// populate the schema from upstream operator
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java
deleted file mode 100644
index d2180a3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/GroupByVisitor.java
+++ /dev/null
@@ -1,291 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.GroupByDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-import org.apache.hadoop.hive.ql.plan.api.OperatorType;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.Mode;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.HiveOperatorAnnotations;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class GroupByVisitor extends DefaultVisitor {
-
-	private List<Mutable<ILogicalExpression>> AlgebricksAggs = new ArrayList<Mutable<ILogicalExpression>>();
-	private List<IFunctionInfo> localAggs = new ArrayList<IFunctionInfo>();
-	private boolean isDistinct = false;
-	private boolean gbyKeyNotRedKey = false;
-
-	@Override
-	public Mutable<ILogicalOperator> visit(GroupByOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-
-		// get descriptors
-		GroupByDesc desc = (GroupByDesc) operator.getConf();
-		GroupByDesc.Mode mode = desc.getMode();
-
-		List<ExprNodeDesc> keys = desc.getKeys();
-		List<AggregationDesc> aggregators = desc.getAggregators();
-
-		Operator child = operator.getChildOperators().get(0);
-
-		if (child.getType() == OperatorType.REDUCESINK) {
-			List<ExprNodeDesc> partKeys = ((ReduceSinkDesc) child.getConf())
-					.getPartitionCols();
-			if (keys.size() != partKeys.size())
-				gbyKeyNotRedKey = true;
-		}
-
-		if (mode == GroupByDesc.Mode.PARTIAL1 || mode == GroupByDesc.Mode.HASH
-				|| mode == GroupByDesc.Mode.COMPLETE
-				|| (aggregators.size() == 0 && isDistinct == false)
-				|| gbyKeyNotRedKey) {
-			AlgebricksAggs.clear();
-			// add an assign operator if the key is not a column expression
-			ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-			ILogicalOperator currentOperator = null;
-			ILogicalOperator assignOperator = t.getAssignOperator(
-					AlgebricksParentOperatorRef, keys, keyVariables);
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-
-			// get key variable expression list
-			List<Mutable<ILogicalExpression>> keyExprs = new ArrayList<Mutable<ILogicalExpression>>();
-			for (LogicalVariable var : keyVariables) {
-				keyExprs.add(t.translateScalarFucntion(new ExprNodeColumnDesc(
-						TypeInfoFactory.intTypeInfo, var.toString(), "", false)));
-			}
-
-			if (aggregators.size() == 0) {
-				List<Mutable<ILogicalExpression>> distinctExprs = new ArrayList<Mutable<ILogicalExpression>>();
-				for (LogicalVariable var : keyVariables) {
-					Mutable<ILogicalExpression> varExpr = new MutableObject<ILogicalExpression>(
-							new VariableReferenceExpression(var));
-					distinctExprs.add(varExpr);
-				}
-				t.rewriteOperatorOutputSchema(keyVariables, operator);
-				isDistinct = true;
-				ILogicalOperator lop = new DistinctOperator(distinctExprs);
-				lop.getInputs().add(AlgebricksParentOperatorRef);
-				return new MutableObject<ILogicalOperator>(lop);
-			}
-
-			// get the pair<LogicalVariable, ILogicalExpression> list
-			List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> keyParameters = new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
-			keyVariables.clear();
-			for (Mutable<ILogicalExpression> expr : keyExprs) {
-				LogicalVariable keyVar = t.getVariable(expr.getValue()
-						.toString(), TypeInfoFactory.unknownTypeInfo);
-				keyParameters.add(new Pair(keyVar, expr));
-				keyVariables.add(keyVar);
-			}
-
-			// get the parameters for the aggregator operator
-			ArrayList<LogicalVariable> aggVariables = new ArrayList<LogicalVariable>();
-			ArrayList<Mutable<ILogicalExpression>> aggExprs = new ArrayList<Mutable<ILogicalExpression>>();
-
-			// get the type of each aggregation function
-			HashMap<AggregationDesc, TypeInfo> aggToType = new HashMap<AggregationDesc, TypeInfo>();
-			List<ColumnInfo> columns = operator.getSchema().getSignature();
-			int offset = keys.size();
-			for (int i = offset; i < columns.size(); i++) {
-				aggToType.put(aggregators.get(i - offset), columns.get(i)
-						.getType());
-			}
-
-			localAggs.clear();
-			// rewrite parameter expressions for all aggregators
-			for (AggregationDesc aggregator : aggregators) {
-				for (ExprNodeDesc parameter : aggregator.getParameters()) {
-					t.rewriteExpression(parameter);
-				}
-				Mutable<ILogicalExpression> aggExpr = t
-						.translateAggregation(aggregator);
-				AbstractFunctionCallExpression localAggExpr = (AbstractFunctionCallExpression) aggExpr
-						.getValue();
-				localAggs.add(localAggExpr.getFunctionInfo());
-
-				AggregationDesc logicalAgg = new AggregationDesc(
-						aggregator.getGenericUDAFName(),
-						aggregator.getGenericUDAFEvaluator(),
-						aggregator.getParameters(), aggregator.getDistinct(),
-						Mode.COMPLETE);
-				Mutable<ILogicalExpression> logicalAggExpr = t
-						.translateAggregation(logicalAgg);
-
-				AlgebricksAggs.add(logicalAggExpr);
-				if (!gbyKeyNotRedKey)
-					aggExprs.add(logicalAggExpr);
-				else
-					aggExprs.add(aggExpr);
-
-				aggVariables.add(t.getVariable(aggregator.getExprString()
-						+ aggregator.getMode(), aggToType.get(aggregator)));
-			}
-
-			if (child.getType() != OperatorType.REDUCESINK)
-				gbyKeyNotRedKey = false;
-
-			// get the sub plan list
-			AggregateOperator aggOperator = new AggregateOperator(aggVariables,
-					aggExprs);
-			NestedTupleSourceOperator nestedTupleSource = new NestedTupleSourceOperator(
-					new MutableObject<ILogicalOperator>());
-			aggOperator.getInputs().add(
-					new MutableObject<ILogicalOperator>(nestedTupleSource));
-
-			List<Mutable<ILogicalOperator>> subRoots = new ArrayList<Mutable<ILogicalOperator>>();
-			subRoots.add(new MutableObject<ILogicalOperator>(aggOperator));
-			ILogicalPlan subPlan = new ALogicalPlanImpl(subRoots);
-			List<ILogicalPlan> subPlans = new ArrayList<ILogicalPlan>();
-			subPlans.add(subPlan);
-
-			// create the group by operator
-			currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator(
-					keyParameters,
-					new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>(),
-					subPlans);
-			currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-			nestedTupleSource.getDataSourceReference()
-					.setValue(currentOperator);
-
-			List<LogicalVariable> outputVariables = new ArrayList<LogicalVariable>();
-			outputVariables.addAll(keyVariables);
-			outputVariables.addAll(aggVariables);
-			t.rewriteOperatorOutputSchema(outputVariables, operator);
-
-			if (gbyKeyNotRedKey) {
-				currentOperator.getAnnotations().put(
-						HiveOperatorAnnotations.LOCAL_GROUP_BY, Boolean.TRUE);
-			}
-
-			HiveConf conf = ConfUtil.getHiveConf();
-			Boolean extGby = conf.getBoolean(
-					"hive.algebricks.groupby.external", false);
-
-			if (extGby && isSerializable(aggregators)) {
-				currentOperator.getAnnotations()
-						.put(OperatorAnnotations.USE_EXTERNAL_GROUP_BY,
-								Boolean.TRUE);
-			}
-			return new MutableObject<ILogicalOperator>(currentOperator);
-		} else {
-			isDistinct = false;
-			// rewrite parameter expressions for all aggregators
-			int i = 0;
-			for (AggregationDesc aggregator : aggregators) {
-				for (ExprNodeDesc parameter : aggregator.getParameters()) {
-					t.rewriteExpression(parameter);
-				}
-				Mutable<ILogicalExpression> agg = t
-						.translateAggregation(aggregator);
-				AggregateFunctionCallExpression originalAgg = (AggregateFunctionCallExpression) AlgebricksAggs
-						.get(i).getValue();
-				originalAgg.setStepOneAggregate(localAggs.get(i));
-				AggregateFunctionCallExpression currentAgg = (AggregateFunctionCallExpression) agg
-						.getValue();
-				if (currentAgg.getFunctionInfo() != null) {
-					originalAgg.setTwoStep(true);
-					originalAgg.setStepTwoAggregate(currentAgg
-							.getFunctionInfo());
-				}
-				i++;
-			}
-			return null;
-		}
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		if (!(downStream instanceof GroupByOperator)) {
-			return null;
-		}
-
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		List<ExprNodeDesc> values = desc.getValueCols();
-
-		// insert assign for keys
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		t.getAssignOperator(AlgebricksParentOperatorRef, keys, keyVariables);
-
-		// insert assign for values
-		ArrayList<LogicalVariable> valueVariables = new ArrayList<LogicalVariable>();
-		t.getAssignOperator(AlgebricksParentOperatorRef, values, valueVariables);
-
-		ArrayList<LogicalVariable> columns = new ArrayList<LogicalVariable>();
-		columns.addAll(keyVariables);
-		columns.addAll(valueVariables);
-
-		t.rewriteOperatorOutputSchema(columns, operator);
-		return null;
-	}
-
-	private boolean isSerializable(List<AggregationDesc> descs)
-			throws AlgebricksException {
-		try {
-			for (AggregationDesc desc : descs) {
-				GenericUDAFEvaluator udaf = desc.getGenericUDAFEvaluator();
-				AggregationBuffer buf = udaf.getNewAggregationBuffer();
-				Class<?> bufferClass = buf.getClass();
-				Field[] fields = bufferClass.getDeclaredFields();
-				for (Field field : fields) {
-					field.setAccessible(true);
-					String type = field.getType().toString();
-					if (!(type.equals("int") || type.equals("long")
-							|| type.equals("float") || type.equals("double") || type
-								.equals("boolean"))) {
-						return false;
-					}
-				}
-
-			}
-			return true;
-		} catch (Exception e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java
deleted file mode 100644
index aea4be5..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/JoinVisitor.java
+++ /dev/null
@@ -1,445 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.JoinCondDesc;
-import org.apache.hadoop.hive.ql.plan.JoinDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-@SuppressWarnings("rawtypes")
-public class JoinVisitor extends DefaultVisitor {
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<LogicalVariable>> reduceSinkToKeyVariables = new HashMap<Operator, List<LogicalVariable>>();
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<String>> reduceSinkToFieldNames = new HashMap<Operator, List<String>>();
-
-	/**
-	 * reduce sink operator to variables
-	 */
-	private HashMap<Operator, List<TypeInfo>> reduceSinkToTypes = new HashMap<Operator, List<TypeInfo>>();
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in hive)
-	 */
-	private HashMap<Operator, List<Operator>> operatorToHiveParents = new HashMap<Operator, List<Operator>>();
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in asterix)
-	 */
-	private HashMap<Operator, List<ILogicalOperator>> operatorToAsterixParents = new HashMap<Operator, List<ILogicalOperator>>();
-
-	/**
-	 * the latest traversed reduce sink operator
-	 */
-	private Operator latestReduceSink = null;
-
-	/**
-	 * the latest generated parent for join
-	 */
-	private ILogicalOperator latestAlgebricksOperator = null;
-
-	/**
-	 * process a join operator
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(JoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-		latestAlgebricksOperator = AlgebricksParentOperator.getValue();
-		translateJoinOperatorPreprocess(operator, t);
-		List<Operator> parents = operatorToHiveParents.get(operator);
-		if (parents.size() < operator.getParentOperators().size()) {
-			return null;
-		} else {
-			ILogicalOperator joinOp = translateJoinOperator(operator,
-					AlgebricksParentOperator, t);
-			// clearStatus();
-			return new MutableObject<ILogicalOperator>(joinOp);
-		}
-	}
-
-	private void reorder(Byte[] order, List<ILogicalOperator> parents,
-			List<Operator> hiveParents) {
-		ILogicalOperator[] lops = new ILogicalOperator[parents.size()];
-		Operator[] ops = new Operator[hiveParents.size()];
-
-		for (Operator op : hiveParents) {
-			ReduceSinkOperator rop = (ReduceSinkOperator) op;
-			ReduceSinkDesc rdesc = rop.getConf();
-			int tag = rdesc.getTag();
-
-			int index = -1;
-			for (int i = 0; i < order.length; i++)
-				if (order[i] == tag) {
-					index = i;
-					break;
-				}
-			lops[index] = parents.get(hiveParents.indexOf(op));
-			ops[index] = op;
-		}
-
-		parents.clear();
-		hiveParents.clear();
-
-		for (int i = 0; i < lops.length; i++) {
-			parents.add(lops[i]);
-			hiveParents.add(ops[i]);
-		}
-	}
-
-	/**
-	 * translate a hive join operator to asterix join operator->assign
-	 * operator->project operator
-	 * 
-	 * @param parentOperator
-	 * @param operator
-	 * @return
-	 */
-	private ILogicalOperator translateJoinOperator(Operator operator,
-			Mutable<ILogicalOperator> parentOperator, Translator t) {
-
-		JoinDesc joinDesc = (JoinDesc) operator.getConf();
-
-		// get the projection expression (already re-written) from each source
-		// table
-		Map<Byte, List<ExprNodeDesc>> exprMap = joinDesc.getExprs();
-		reorder(joinDesc.getTagOrder(), operatorToAsterixParents.get(operator),
-				operatorToHiveParents.get(operator));
-
-		// make an reduce join operator
-		ILogicalOperator currentOperator = generateJoinTree(
-				joinDesc.getCondsList(),
-				operatorToAsterixParents.get(operator),
-				operatorToHiveParents.get(operator), 0, t);
-		parentOperator = new MutableObject<ILogicalOperator>(currentOperator);
-
-		// add assign and project operator on top of a join
-		// output variables
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		Set<Entry<Byte, List<ExprNodeDesc>>> entries = exprMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> iterator = entries.iterator();
-		while (iterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = iterator.next().getValue();
-			ILogicalOperator assignOperator = t.getAssignOperator(
-					parentOperator, outputExprs, variables);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				parentOperator = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-		}
-
-		ILogicalOperator po = new ProjectOperator(variables);
-		po.getInputs().add(parentOperator);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return po;
-	}
-
-	/**
-	 * deal with reduce sink operator for the case of join
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> parentOperator, Translator t) {
-
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		if (!(downStream instanceof JoinOperator))
-			return null;
-
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		List<ExprNodeDesc> values = desc.getValueCols();
-		List<ExprNodeDesc> partitionCols = desc.getPartitionCols();
-
-		/**
-		 * rewrite key, value, paritioncol expressions
-		 */
-		for (ExprNodeDesc key : keys)
-			t.rewriteExpression(key);
-		for (ExprNodeDesc value : values)
-			t.rewriteExpression(value);
-		for (ExprNodeDesc col : partitionCols)
-			t.rewriteExpression(col);
-
-		ILogicalOperator currentOperator = null;
-
-		// add assign operator for keys if necessary
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		ILogicalOperator assignOperator = t.getAssignOperator(parentOperator,
-				keys, keyVariables);
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			parentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		// add assign operator for values if necessary
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		assignOperator = t.getAssignOperator(parentOperator, values, variables);
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			parentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		// unified schema: key, value
-		ArrayList<LogicalVariable> unifiedKeyValues = new ArrayList<LogicalVariable>();
-		unifiedKeyValues.addAll(keyVariables);
-		for (LogicalVariable value : variables)
-			if (keyVariables.indexOf(value) < 0)
-				unifiedKeyValues.add(value);
-
-		// insert projection operator, it is a *must*,
-		// in hive, reduce sink sometimes also do the projection operator's
-		// task
-		currentOperator = new ProjectOperator(unifiedKeyValues);
-		currentOperator.getInputs().add(parentOperator);
-		parentOperator = new MutableObject<ILogicalOperator>(currentOperator);
-
-		reduceSinkToKeyVariables.put(operator, keyVariables);
-		List<String> fieldNames = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (LogicalVariable var : unifiedKeyValues) {
-			fieldNames.add(var.toString());
-			types.add(t.getType(var));
-		}
-		reduceSinkToFieldNames.put(operator, fieldNames);
-		reduceSinkToTypes.put(operator, types);
-		t.rewriteOperatorOutputSchema(variables, operator);
-
-		latestAlgebricksOperator = currentOperator;
-		latestReduceSink = operator;
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	/**
-	 * partial rewrite a join operator
-	 * 
-	 * @param operator
-	 * @param t
-	 */
-	private void translateJoinOperatorPreprocess(Operator operator, Translator t) {
-		JoinDesc desc = (JoinDesc) operator.getConf();
-		ReduceSinkDesc reduceSinkDesc = (ReduceSinkDesc) latestReduceSink
-				.getConf();
-		int tag = reduceSinkDesc.getTag();
-
-		Map<Byte, List<ExprNodeDesc>> exprMap = desc.getExprs();
-		List<ExprNodeDesc> exprs = exprMap.get(Byte.valueOf((byte) tag));
-
-		for (ExprNodeDesc expr : exprs)
-			t.rewriteExpression(expr);
-
-		List<Operator> parents = operatorToHiveParents.get(operator);
-		if (parents == null) {
-			parents = new ArrayList<Operator>();
-			operatorToHiveParents.put(operator, parents);
-		}
-		parents.add(latestReduceSink);
-
-		List<ILogicalOperator> asterixParents = operatorToAsterixParents
-				.get(operator);
-		if (asterixParents == null) {
-			asterixParents = new ArrayList<ILogicalOperator>();
-			operatorToAsterixParents.put(operator, asterixParents);
-		}
-		asterixParents.add(latestAlgebricksOperator);
-	}
-
-	// generate a join tree from a list of exchange/reducesink operator
-	// both exchanges and reduce sinks have the same order
-	private ILogicalOperator generateJoinTree(List<JoinCondDesc> conds,
-			List<ILogicalOperator> exchanges, List<Operator> reduceSinks,
-			int offset, Translator t) {
-		// get a list of reduce sink descs (input descs)
-		int inputSize = reduceSinks.size() - offset;
-
-		if (inputSize == 2) {
-			ILogicalOperator currentRoot;
-
-			List<ReduceSinkDesc> reduceSinkDescs = new ArrayList<ReduceSinkDesc>();
-			for (int i = reduceSinks.size() - 1; i >= offset; i--)
-				reduceSinkDescs.add((ReduceSinkDesc) reduceSinks.get(i)
-						.getConf());
-
-			// get the object inspector for the join
-			List<String> fieldNames = new ArrayList<String>();
-			List<TypeInfo> types = new ArrayList<TypeInfo>();
-			for (int i = reduceSinks.size() - 1; i >= offset; i--) {
-				fieldNames
-						.addAll(reduceSinkToFieldNames.get(reduceSinks.get(i)));
-				types.addAll(reduceSinkToTypes.get(reduceSinks.get(i)));
-			}
-
-			// get number of equality conjunctions in the final join condition
-			int size = reduceSinkDescs.get(0).getKeyCols().size();
-
-			// make up the join conditon expression
-			List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-			for (int i = 0; i < size; i++) {
-				// create a join key pair
-				List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-				for (ReduceSinkDesc sink : reduceSinkDescs) {
-					keyPair.add(sink.getKeyCols().get(i));
-				}
-				// create a hive equal condition
-				ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo,
-						new GenericUDFOPEqual(), keyPair);
-				// add the equal condition to the conjunction list
-				joinConditionChildren.add(equality);
-			}
-			// get final conjunction expression
-			ExprNodeDesc conjunct = null;
-
-			if (joinConditionChildren.size() > 1)
-				conjunct = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-						joinConditionChildren);
-			else if (joinConditionChildren.size() == 1)
-				conjunct = joinConditionChildren.get(0);
-			else {
-				// there is no join equality condition, equal-join
-				conjunct = new ExprNodeConstantDesc(
-						TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-			}
-			// get an ILogicalExpression from hive's expression
-			Mutable<ILogicalExpression> expression = t
-					.translateScalarFucntion(conjunct);
-
-			Mutable<ILogicalOperator> leftBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(exchanges.size() - 1));
-			Mutable<ILogicalOperator> rightBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(exchanges.size() - 2));
-			// get the join operator
-			if (conds.get(offset).getType() == JoinDesc.LEFT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-				Mutable<ILogicalOperator> temp = leftBranch;
-				leftBranch = rightBranch;
-				rightBranch = temp;
-			} else if (conds.get(offset).getType() == JoinDesc.RIGHT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-			} else
-				currentRoot = new InnerJoinOperator(expression);
-
-			currentRoot.getInputs().add(leftBranch);
-			currentRoot.getInputs().add(rightBranch);
-
-			// rewriteOperatorOutputSchema(variables, operator);
-			return currentRoot;
-		} else {
-			// get the child join operator and insert and one-to-one exchange
-			ILogicalOperator joinSrcOne = generateJoinTree(conds, exchanges,
-					reduceSinks, offset + 1, t);
-			// joinSrcOne.addInput(childJoin);
-
-			ILogicalOperator currentRoot;
-
-			List<ReduceSinkDesc> reduceSinkDescs = new ArrayList<ReduceSinkDesc>();
-			for (int i = offset; i < offset + 2; i++)
-				reduceSinkDescs.add((ReduceSinkDesc) reduceSinks.get(i)
-						.getConf());
-
-			// get the object inspector for the join
-			List<String> fieldNames = new ArrayList<String>();
-			List<TypeInfo> types = new ArrayList<TypeInfo>();
-			for (int i = offset; i < reduceSinks.size(); i++) {
-				fieldNames
-						.addAll(reduceSinkToFieldNames.get(reduceSinks.get(i)));
-				types.addAll(reduceSinkToTypes.get(reduceSinks.get(i)));
-			}
-
-			// get number of equality conjunctions in the final join condition
-			int size = reduceSinkDescs.get(0).getKeyCols().size();
-
-			// make up the join condition expression
-			List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-			for (int i = 0; i < size; i++) {
-				// create a join key pair
-				List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-				for (ReduceSinkDesc sink : reduceSinkDescs) {
-					keyPair.add(sink.getKeyCols().get(i));
-				}
-				// create a hive equal condition
-				ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo,
-						new GenericUDFOPEqual(), keyPair);
-				// add the equal condition to the conjunction list
-				joinConditionChildren.add(equality);
-			}
-			// get final conjunction expression
-			ExprNodeDesc conjunct = null;
-
-			if (joinConditionChildren.size() > 1)
-				conjunct = new ExprNodeGenericFuncDesc(
-						TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-						joinConditionChildren);
-			else if (joinConditionChildren.size() == 1)
-				conjunct = joinConditionChildren.get(0);
-			else {
-				// there is no join equality condition, full outer join
-				conjunct = new ExprNodeConstantDesc(
-						TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-			}
-			// get an ILogicalExpression from hive's expression
-			Mutable<ILogicalExpression> expression = t
-					.translateScalarFucntion(conjunct);
-
-			Mutable<ILogicalOperator> leftBranch = new MutableObject<ILogicalOperator>(
-					joinSrcOne);
-			Mutable<ILogicalOperator> rightBranch = new MutableObject<ILogicalOperator>(
-					exchanges.get(offset));
-
-			// get the join operator
-			if (conds.get(offset).getType() == JoinDesc.LEFT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-				Mutable<ILogicalOperator> temp = leftBranch;
-				leftBranch = rightBranch;
-				rightBranch = temp;
-			} else if (conds.get(offset).getType() == JoinDesc.RIGHT_OUTER_JOIN) {
-				currentRoot = new LeftOuterJoinOperator(expression);
-			} else
-				currentRoot = new InnerJoinOperator(expression);
-
-			// set the inputs from Algebricks join operator
-			// add the current table
-			currentRoot.getInputs().add(leftBranch);
-			currentRoot.getInputs().add(rightBranch);
-
-			return currentRoot;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java
deleted file mode 100644
index 004a8c2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LateralViewJoinVisitor.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-/**
- * The lateral view join operator is used for FROM src LATERAL VIEW udtf()...
- * This operator was implemented with the following operator DAG in mind.
- * 
- * For a query such as
- * 
- * SELECT pageid, adid.* FROM example_table LATERAL VIEW explode(adid_list) AS
- * adid
- * 
- * The top of the operator DAG will look similar to
- * 
- * [Table Scan] | [Lateral View Forward] / \ [Select](*) [Select](adid_list) | |
- * | [UDTF] (explode) \ / [Lateral View Join] | | [Select] (pageid, adid.*) |
- * ....
- * 
- * Rows from the table scan operator are first to a lateral view forward
- * operator that just forwards the row and marks the start of a LV. The select
- * operator on the left picks all the columns while the select operator on the
- * right picks only the columns needed by the UDTF.
- * 
- * The output of select in the left branch and output of the UDTF in the right
- * branch are then sent to the lateral view join (LVJ). In most cases, the UDTF
- * will generate > 1 row for every row received from the TS, while the left
- * select operator will generate only one. For each row output from the TS, the
- * LVJ outputs all possible rows that can be created by joining the row from the
- * left select and one of the rows output from the UDTF.
- * 
- * Additional lateral views can be supported by adding a similar DAG after the
- * previous LVJ operator.
- */
-
-@SuppressWarnings("rawtypes")
-public class LateralViewJoinVisitor extends DefaultVisitor {
-
-	private UDTFDesc udtf;
-
-	private List<Mutable<ILogicalOperator>> parents = new ArrayList<Mutable<ILogicalOperator>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LateralViewJoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-
-		parents.add(AlgebricksParentOperatorRef);
-		if (operator.getParentOperators().size() > parents.size()) {
-			return null;
-		}
-
-		Operator parent0 = operator.getParentOperators().get(0);
-		ILogicalOperator parentOperator;
-		ILogicalExpression unnestArg;
-		if (parent0 instanceof UDTFOperator) {
-			List<LogicalVariable> unnestVars = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(parents.get(1).getValue(),
-					unnestVars);
-			unnestArg = new VariableReferenceExpression(unnestVars.get(0));
-			parentOperator = parents.get(1).getValue();
-		} else {
-			List<LogicalVariable> unnestVars = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(parents.get(0).getValue(),
-					unnestVars);
-			unnestArg = new VariableReferenceExpression(unnestVars.get(0));
-			parentOperator = parents.get(0).getValue();
-		}
-
-		LogicalVariable var = t.getVariable(udtf.toString(),
-				TypeInfoFactory.unknownTypeInfo);
-
-		Mutable<ILogicalExpression> unnestExpr = t.translateUnnestFunction(
-				udtf, new MutableObject<ILogicalExpression>(unnestArg));
-		ILogicalOperator currentOperator = new UnnestOperator(var, unnestExpr);
-
-		List<LogicalVariable> outputVars = new ArrayList<LogicalVariable>();
-		VariableUtilities.getLiveVariables(parentOperator, outputVars);
-		outputVars.add(var);
-		currentOperator.getInputs().add(
-				new MutableObject<ILogicalOperator>(parentOperator));
-
-		parents.clear();
-		udtf = null;
-		t.rewriteOperatorOutputSchema(outputVars, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-		udtf = (UDTFDesc) operator.getConf();
-
-		// populate the schema from upstream operator
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java
deleted file mode 100644
index 84cdf00..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/LimitVisitor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.plan.LimitDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-
-public class LimitVisitor extends DefaultVisitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LimitOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		Schema currentSchema = t.generateInputSchema(operator
-				.getParentOperators().get(0));
-
-		LimitDesc desc = (LimitDesc) operator.getConf();
-		int limit = desc.getLimit();
-		Integer limitValue = new Integer(limit);
-
-		ILogicalExpression expr = new ConstantExpression(
-				new HivesterixConstantValue(limitValue));
-		ILogicalOperator currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.LimitOperator(
-				expr, true);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-
-		operator.setSchema(operator.getParentOperators().get(0).getSchema());
-		List<LogicalVariable> latestOutputSchema = t
-				.getVariablesFromSchema(currentSchema);
-		t.rewriteOperatorOutputSchema(latestOutputSchema, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java
deleted file mode 100644
index fa5d014..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/MapJoinVisitor.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-@SuppressWarnings("rawtypes")
-public class MapJoinVisitor extends DefaultVisitor {
-
-	/**
-	 * map a join operator (in hive) to its parent operators (in asterix)
-	 */
-	private HashMap<Operator, List<Mutable<ILogicalOperator>>> opMap = new HashMap<Operator, List<Mutable<ILogicalOperator>>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapJoinOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t) {
-		List<Operator<? extends Serializable>> joinSrc = operator
-				.getParentOperators();
-		List<Mutable<ILogicalOperator>> parents = opMap.get(operator);
-		if (parents == null) {
-			parents = new ArrayList<Mutable<ILogicalOperator>>();
-			opMap.put(operator, parents);
-		}
-		parents.add(AlgebricksParentOperatorRef);
-		if (joinSrc.size() != parents.size())
-			return null;
-
-		ILogicalOperator currentOperator;
-		// make an map join operator
-		// TODO: will have trouble for n-way joins
-		MapJoinDesc joinDesc = (MapJoinDesc) operator.getConf();
-
-		Map<Byte, List<ExprNodeDesc>> keyMap = joinDesc.getKeys();
-		// get the projection expression (already re-written) from each source
-		// table
-		Map<Byte, List<ExprNodeDesc>> exprMap = joinDesc.getExprs();
-
-		int inputSize = operator.getParentOperators().size();
-		// get a list of reduce sink descs (input descs)
-
-		// get the parent operator
-		List<Mutable<ILogicalOperator>> parentOps = parents;
-
-		List<String> fieldNames = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (Operator ts : joinSrc) {
-			List<ColumnInfo> columns = ts.getSchema().getSignature();
-			for (ColumnInfo col : columns) {
-				fieldNames.add(col.getInternalName());
-				types.add(col.getType());
-			}
-		}
-
-		// get number of equality conjunctions in the final join condition
-		Set<Entry<Byte, List<ExprNodeDesc>>> keyEntries = keyMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> entry = keyEntries.iterator();
-
-		int size = 0;
-		if (entry.hasNext())
-			size = entry.next().getValue().size();
-
-		// make up the join conditon expression
-		List<ExprNodeDesc> joinConditionChildren = new ArrayList<ExprNodeDesc>();
-		for (int i = 0; i < size; i++) {
-			// create a join key pair
-			List<ExprNodeDesc> keyPair = new ArrayList<ExprNodeDesc>();
-			for (int j = 0; j < inputSize; j++) {
-				keyPair.add(keyMap.get(Byte.valueOf((byte) j)).get(i));
-			}
-			// create a hive equal condition
-			ExprNodeDesc equality = new ExprNodeGenericFuncDesc(
-					TypeInfoFactory.booleanTypeInfo, new GenericUDFOPEqual(),
-					keyPair);
-			// add the equal condition to the conjunction list
-			joinConditionChildren.add(equality);
-		}
-		// get final conjunction expression
-		ExprNodeDesc conjunct = null;
-
-		if (joinConditionChildren.size() > 1)
-			conjunct = new ExprNodeGenericFuncDesc(
-					TypeInfoFactory.booleanTypeInfo, new GenericUDFOPAnd(),
-					joinConditionChildren);
-		else if (joinConditionChildren.size() == 1)
-			conjunct = joinConditionChildren.get(0);
-		else {
-			// there is no join equality condition, full outer join
-			conjunct = new ExprNodeConstantDesc(
-					TypeInfoFactory.booleanTypeInfo, new Boolean(true));
-		}
-		// get an ILogicalExpression from hive's expression
-		Mutable<ILogicalExpression> expression = t
-				.translateScalarFucntion(conjunct);
-
-		ArrayList<LogicalVariable> left = new ArrayList<LogicalVariable>();
-		ArrayList<LogicalVariable> right = new ArrayList<LogicalVariable>();
-
-		Set<Entry<Byte, List<ExprNodeDesc>>> kentries = keyMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> kiterator = kentries
-				.iterator();
-		int iteration = 0;
-		ILogicalOperator assignOperator = null;
-		while (kiterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = kiterator.next().getValue();
-
-			if (iteration == 0)
-				assignOperator = t.getAssignOperator(
-						AlgebricksParentOperatorRef, outputExprs, left);
-			else
-				assignOperator = t.getAssignOperator(
-						AlgebricksParentOperatorRef, outputExprs, right);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-			iteration++;
-		}
-
-		List<Mutable<ILogicalOperator>> inputs = parentOps;
-
-		// get the join operator
-		currentOperator = new InnerJoinOperator(expression);
-
-		// set the inputs from asterix join operator
-		for (Mutable<ILogicalOperator> input : inputs)
-			currentOperator.getInputs().add(input);
-		AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-				currentOperator);
-
-		// add assign and project operator
-		// output variables
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		Set<Entry<Byte, List<ExprNodeDesc>>> entries = exprMap.entrySet();
-		Iterator<Entry<Byte, List<ExprNodeDesc>>> iterator = entries.iterator();
-		while (iterator.hasNext()) {
-			List<ExprNodeDesc> outputExprs = iterator.next().getValue();
-			assignOperator = t.getAssignOperator(AlgebricksParentOperatorRef,
-					outputExprs, variables);
-
-			if (assignOperator != null) {
-				currentOperator = assignOperator;
-				AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-						currentOperator);
-			}
-		}
-
-		currentOperator = new ProjectOperator(variables);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		// opMap.clear();
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java
deleted file mode 100644
index 0d2067c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/ProjectVisitor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.SelectDesc;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-
-public class ProjectVisitor extends DefaultVisitor {
-
-	/**
-	 * translate project operator
-	 */
-	@Override
-	public Mutable<ILogicalOperator> visit(SelectOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-
-		SelectDesc desc = (SelectDesc) operator.getConf();
-
-		if (desc == null)
-			return null;
-
-		List<ExprNodeDesc> cols = desc.getColList();
-
-		if (cols == null)
-			return null;
-
-		// insert assign operator if necessary
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-
-		for (ExprNodeDesc expr : cols)
-			t.rewriteExpression(expr);
-
-		ILogicalOperator assignOp = t.getAssignOperator(
-				AlgebricksParentOperator, cols, variables);
-		ILogicalOperator currentOperator = null;
-		if (assignOp != null) {
-			currentOperator = assignOp;
-			AlgebricksParentOperator = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		currentOperator = new ProjectOperator(variables);
-		currentOperator.getInputs().add(AlgebricksParentOperator);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java
deleted file mode 100644
index a2c0d03..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/SortVisitor.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.OrderColumn;
-
-public class SortVisitor extends DefaultVisitor {
-
-	@SuppressWarnings("rawtypes")
-	@Override
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException {
-		ReduceSinkDesc desc = (ReduceSinkDesc) operator.getConf();
-		Operator downStream = (Operator) operator.getChildOperators().get(0);
-		List<ExprNodeDesc> keys = desc.getKeyCols();
-		if (!(downStream instanceof ExtractOperator
-				&& desc.getNumReducers() == 1 && keys.size() > 0)) {
-			return null;
-		}
-
-		List<ExprNodeDesc> schema = new ArrayList<ExprNodeDesc>();
-		List<ExprNodeDesc> values = desc.getValueCols();
-		List<ExprNodeDesc> partitionCols = desc.getPartitionCols();
-		for (ExprNodeDesc key : keys) {
-			t.rewriteExpression(key);
-		}
-		for (ExprNodeDesc value : values) {
-			t.rewriteExpression(value);
-		}
-		for (ExprNodeDesc col : partitionCols) {
-			t.rewriteExpression(col);
-		}
-
-		// add a order-by operator and limit if any
-		List<Pair<IOrder, Mutable<ILogicalExpression>>> pairs = new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>();
-		char[] orders = desc.getOrder().toCharArray();
-		int i = 0;
-		for (ExprNodeDesc key : keys) {
-			Mutable<ILogicalExpression> expr = t.translateScalarFucntion(key);
-			IOrder order = orders[i] == '+' ? OrderOperator.ASC_ORDER
-					: OrderOperator.DESC_ORDER;
-
-			Pair<IOrder, Mutable<ILogicalExpression>> pair = new Pair<IOrder, Mutable<ILogicalExpression>>(
-					order, expr);
-			pairs.add(pair);
-			i++;
-		}
-
-		// get input variables
-		ArrayList<LogicalVariable> inputVariables = new ArrayList<LogicalVariable>();
-		VariableUtilities.getProducedVariables(
-				AlgebricksParentOperatorRef.getValue(), inputVariables);
-
-		ArrayList<LogicalVariable> keyVariables = new ArrayList<LogicalVariable>();
-		ILogicalOperator currentOperator;
-		ILogicalOperator assignOp = t.getAssignOperator(
-				AlgebricksParentOperatorRef, keys, keyVariables);
-		if (assignOp != null) {
-			currentOperator = assignOp;
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		OrderColumn[] keyColumns = new OrderColumn[keyVariables.size()];
-
-		for (int j = 0; j < keyColumns.length; j++)
-			keyColumns[j] = new OrderColumn(keyVariables.get(j),
-					pairs.get(j).first.getKind());
-
-		// handle order operator
-		currentOperator = new OrderOperator(pairs);
-		currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-		AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-				currentOperator);
-
-		// project back, remove generated sort-key columns if any
-		if (assignOp != null) {
-			currentOperator = new ProjectOperator(inputVariables);
-			currentOperator.getInputs().add(AlgebricksParentOperatorRef);
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-
-		/**
-		 * a special rule for hive's order by output schema of reduce sink
-		 * operator only contains the columns
-		 */
-		for (ExprNodeDesc value : values) {
-			schema.add(value);
-		}
-
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		ILogicalOperator assignOperator = t.getAssignOperator(
-				AlgebricksParentOperatorRef, schema, variables);
-		t.rewriteOperatorOutputSchema(variables, operator);
-
-		if (assignOperator != null) {
-			currentOperator = assignOperator;
-			AlgebricksParentOperatorRef = new MutableObject<ILogicalOperator>(
-					currentOperator);
-		}
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java
deleted file mode 100644
index 3e12bb9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/TableScanWriteVisitor.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.ColumnInfo;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.TableScanDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveDataSink;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveDataSource;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveMetaDataProvider;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-public class TableScanWriteVisitor extends DefaultVisitor {
-
-	/**
-	 * map from alias to partition desc
-	 */
-	private HashMap<String, PartitionDesc> aliasToPathMap;
-
-	/**
-	 * map from partition desc to data source
-	 */
-	private HashMap<PartitionDesc, IDataSource<PartitionDesc>> dataSourceMap = new HashMap<PartitionDesc, IDataSource<PartitionDesc>>();
-
-	/**
-	 * constructor
-	 * 
-	 * @param aliasToPathMap
-	 */
-	public TableScanWriteVisitor(HashMap<String, PartitionDesc> aliasToPathMap) {
-		this.aliasToPathMap = aliasToPathMap;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(TableScanOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		TableScanDesc desc = (TableScanDesc) operator.getConf();
-		if (desc == null) {
-			List<LogicalVariable> schema = new ArrayList<LogicalVariable>();
-			VariableUtilities.getLiveVariables(
-					AlgebricksParentOperator.getValue(), schema);
-			t.rewriteOperatorOutputSchema(schema, operator);
-			return null;
-		}
-
-		List<ColumnInfo> columns = operator.getSchema().getSignature();
-		for (int i = columns.size() - 1; i >= 0; i--)
-			if (columns.get(i).getIsVirtualCol() == true)
-				columns.remove(i);
-
-		// start with empty tuple operator
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		ArrayList<LogicalVariable> variables = new ArrayList<LogicalVariable>();
-		List<String> names = new ArrayList<String>();
-		for (ColumnInfo column : columns) {
-			types.add(column.getType());
-
-			LogicalVariable var = t.getVariableFromFieldName(column
-					.getTabAlias() + "." + column.getInternalName());
-			LogicalVariable varNew;
-
-			if (var != null) {
-				varNew = t.getVariable(
-						column.getTabAlias() + "." + column.getInternalName()
-								+ operator.toString(), column.getType());
-				t.replaceVariable(var, varNew);
-				var = varNew;
-			} else
-				var = t.getNewVariable(
-						column.getTabAlias() + "." + column.getInternalName(),
-						column.getType());
-
-			variables.add(var);
-			names.add(column.getInternalName());
-		}
-		Schema currentSchema = new Schema(names, types);
-
-		String alias = desc.getAlias();
-		PartitionDesc partDesc = aliasToPathMap.get(alias);
-		IDataSource<PartitionDesc> dataSource = new HiveDataSource<PartitionDesc>(
-				partDesc, currentSchema.getSchema());
-		ILogicalOperator currentOperator = new DataSourceScanOperator(
-				variables, dataSource);
-
-		// set empty tuple source operator
-		ILogicalOperator ets = new EmptyTupleSourceOperator();
-		currentOperator.getInputs().add(
-				new MutableObject<ILogicalOperator>(ets));
-
-		// setup data source
-		dataSourceMap.put(partDesc, dataSource);
-		t.rewriteOperatorOutputSchema(variables, operator);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t) {
-
-		if (hiveOperator.getChildOperators() != null
-				&& hiveOperator.getChildOperators().size() > 0)
-			return null;
-
-		Schema currentSchema = t.generateInputSchema(hiveOperator
-				.getParentOperators().get(0));
-
-		IDataSink sink = new HiveDataSink(hiveOperator,
-				currentSchema.getSchema());
-		List<Mutable<ILogicalExpression>> exprList = new ArrayList<Mutable<ILogicalExpression>>();
-		for (String column : currentSchema.getNames()) {
-			exprList.add(new MutableObject<ILogicalExpression>(
-					new VariableReferenceExpression(t.getVariable(column))));
-		}
-
-		ILogicalOperator currentOperator = new WriteOperator(exprList, sink);
-		if (AlgebricksParentOperator != null) {
-			currentOperator.getInputs().add(AlgebricksParentOperator);
-		}
-
-		IMetadataProvider<PartitionDesc, Object> metaData = new HiveMetaDataProvider<PartitionDesc, Object>(
-				hiveOperator, currentSchema, dataSourceMap);
-		t.setMetadataProvider(metaData);
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java
deleted file mode 100644
index f4e74f6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/UnionVisitor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.DefaultVisitor;
-import edu.uci.ics.hivesterix.logical.plan.visitor.base.Translator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Triple;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-
-public class UnionVisitor extends DefaultVisitor {
-
-	List<Mutable<ILogicalOperator>> parents = new ArrayList<Mutable<ILogicalOperator>>();
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-
-		parents.add(AlgebricksParentOperator);
-		if (operator.getParentOperators().size() > parents.size()) {
-			return null;
-		}
-
-		List<LogicalVariable> leftVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> rightVars = new ArrayList<LogicalVariable>();
-
-		VariableUtilities.getUsedVariables(parents.get(0).getValue(), leftVars);
-		VariableUtilities
-				.getUsedVariables(parents.get(1).getValue(), rightVars);
-
-		List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> triples = new ArrayList<Triple<LogicalVariable, LogicalVariable, LogicalVariable>>();
-		List<LogicalVariable> unionVars = new ArrayList<LogicalVariable>();
-
-		for (int i = 0; i < leftVars.size(); i++) {
-			LogicalVariable unionVar = t.getVariable(leftVars.get(i).getId()
-					+ "union" + AlgebricksParentOperator.hashCode(),
-					TypeInfoFactory.unknownTypeInfo);
-			unionVars.add(unionVar);
-			Triple<LogicalVariable, LogicalVariable, LogicalVariable> triple = new Triple<LogicalVariable, LogicalVariable, LogicalVariable>(
-					leftVars.get(i), rightVars.get(i), unionVar);
-			t.replaceVariable(leftVars.get(i), unionVar);
-			t.replaceVariable(rightVars.get(i), unionVar);
-			triples.add(triple);
-		}
-		ILogicalOperator currentOperator = new edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator(
-				triples);
-		for (Mutable<ILogicalOperator> parent : parents)
-			currentOperator.getInputs().add(parent);
-
-		t.rewriteOperatorOutputSchema(unionVars, operator);
-		parents.clear();
-		return new MutableObject<ILogicalOperator>(currentOperator);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java
deleted file mode 100644
index 20013e3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/DefaultVisitor.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.CollectOperator;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.ForwardOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.ScriptOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-
-/**
- * a default empty implementation of visitor
- * 
- * @author yingyib
- */
-public class DefaultVisitor implements Visitor {
-
-	@Override
-	public Mutable<ILogicalOperator> visit(CollectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(JoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ExtractOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(SMBMapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(FilterOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(GroupByOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(
-			LateralViewForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(
-			LateralViewJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(LimitOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(MapOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(ScriptOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(SelectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(TableScanOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperator, Translator t)
-			throws AlgebricksException {
-		return null;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java
deleted file mode 100644
index 9165386..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Translator.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-
-@SuppressWarnings("rawtypes")
-public interface Translator {
-
-	/**
-	 * generate input schema
-	 * 
-	 * @param operator
-	 * @return
-	 */
-	public Schema generateInputSchema(Operator operator);
-
-	/**
-	 * rewrite the names of output columns for feture expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(List<LogicalVariable> vars,
-			Operator operator);
-
-	/**
-	 * rewrite the names of output columns for feture expression evaluators to
-	 * use
-	 * 
-	 * @param operator
-	 */
-	public void rewriteOperatorOutputSchema(Operator operator);
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpression(ExprNodeDesc expr);
-
-	/**
-	 * rewrite an expression and substitute variables
-	 * 
-	 * @param expr
-	 *            hive expression
-	 */
-	public void rewriteExpressionPartial(ExprNodeDesc expr);
-
-	/**
-	 * get an assign operator as a child of parent
-	 * 
-	 * @param parent
-	 * @param cols
-	 * @param variables
-	 * @return
-	 */
-	public ILogicalOperator getAssignOperator(Mutable<ILogicalOperator> parent,
-			List<ExprNodeDesc> cols, ArrayList<LogicalVariable> variables);
-
-	/**
-	 * get type for a logical variable
-	 * 
-	 * @param var
-	 * @return type info
-	 */
-	public TypeInfo getType(LogicalVariable var);
-
-	/**
-	 * translate an expression from hive to Algebricks
-	 * 
-	 * @param desc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateScalarFucntion(ExprNodeDesc desc);
-
-	/**
-	 * translate an aggregation from hive to Algebricks
-	 * 
-	 * @param aggregateDesc
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateAggregation(
-			AggregationDesc aggregateDesc);
-
-	/**
-	 * translate unnesting (UDTF) function expression
-	 * 
-	 * @param aggregator
-	 * @return
-	 */
-	public Mutable<ILogicalExpression> translateUnnestFunction(
-			UDTFDesc udtfDesc, Mutable<ILogicalExpression> argument);
-
-	/**
-	 * get variable from a schema
-	 * 
-	 * @param schema
-	 * @return
-	 */
-	public List<LogicalVariable> getVariablesFromSchema(Schema schema);
-
-	/**
-	 * get variable from name
-	 * 
-	 * @param name
-	 * @return
-	 */
-	public LogicalVariable getVariable(String name);
-
-	/**
-	 * get variable from field name
-	 * 
-	 * @param name
-	 * @return
-	 */
-	public LogicalVariable getVariableFromFieldName(String name);
-
-	/**
-	 * get variable from name, type
-	 * 
-	 * @param fieldName
-	 * @param type
-	 * @return
-	 */
-	public LogicalVariable getVariable(String fieldName, TypeInfo type);
-
-	/**
-	 * get new variable from name, type
-	 * 
-	 * @param fieldName
-	 * @param type
-	 * @return
-	 */
-	public LogicalVariable getNewVariable(String fieldName, TypeInfo type);
-
-	/**
-	 * set the metadata provider
-	 * 
-	 * @param metadata
-	 */
-	public void setMetadataProvider(
-			IMetadataProvider<PartitionDesc, Object> metadata);
-
-	/**
-	 * get the metadata provider
-	 * 
-	 * @param metadata
-	 */
-	public IMetadataProvider<PartitionDesc, Object> getMetadataProvider();
-
-	/**
-	 * replace the variable
-	 * 
-	 * @param oldVar
-	 * @param newVar
-	 */
-	public void replaceVariable(LogicalVariable oldVar, LogicalVariable newVar);
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java
deleted file mode 100644
index 745f93e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/logical/plan/visitor/base/Visitor.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package edu.uci.ics.hivesterix.logical.plan.visitor.base;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.CollectOperator;
-import org.apache.hadoop.hive.ql.exec.ExtractOperator;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.FilterOperator;
-import org.apache.hadoop.hive.ql.exec.ForwardOperator;
-import org.apache.hadoop.hive.ql.exec.GroupByOperator;
-import org.apache.hadoop.hive.ql.exec.JoinOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
-import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
-import org.apache.hadoop.hive.ql.exec.LimitOperator;
-import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
-import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
-import org.apache.hadoop.hive.ql.exec.SMBMapJoinOperator;
-import org.apache.hadoop.hive.ql.exec.ScriptOperator;
-import org.apache.hadoop.hive.ql.exec.SelectOperator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.UDTFOperator;
-import org.apache.hadoop.hive.ql.exec.UnionOperator;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-
-public interface Visitor {
-
-	public Mutable<ILogicalOperator> visit(CollectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(JoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ExtractOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(MapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(SMBMapJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(FilterOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(GroupByOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(
-			LateralViewForwardOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(
-			LateralViewJoinOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(LimitOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(MapOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ScriptOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(SelectOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(TableScanOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(FileSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(ReduceSinkOperator hiveOperator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(UDTFOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-
-	public Mutable<ILogicalOperator> visit(UnionOperator operator,
-			Mutable<ILogicalOperator> AlgebricksParentOperatorRef, Translator t)
-			throws AlgebricksException;
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java
deleted file mode 100644
index 4ebea0a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rulecollections/HiveRuleCollections.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rulecollections;
-
-import java.util.LinkedList;
-
-import edu.uci.ics.hivesterix.optimizer.rules.InsertProjectBeforeWriteRule;
-import edu.uci.ics.hivesterix.optimizer.rules.IntroduceEarlyProjectRule;
-import edu.uci.ics.hivesterix.optimizer.rules.LocalGroupByRule;
-import edu.uci.ics.hivesterix.optimizer.rules.RemoveRedundantSelectRule;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ComplexJoinInferenceRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateSelectsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateSubplanRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.EnforceStructuralPropertiesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.FactorRedundantGroupAndDecorVarsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InferTypesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.InsertProjectBeforeUnionRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceAggregateCombinerRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByCombinerRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PullSelectOutOfEqJoin;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushLimitDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectIntoDataSourceScanRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectDownRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectIntoJoinRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.ReinferAllTypesRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveRedundantProjectionRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveUnusedAssignAndAggregateRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetAlgebricksPhysicalOperatorsRule;
-import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetExecutionModeRule;
-
-public final class HiveRuleCollections {
-
-	public final static LinkedList<IAlgebraicRewriteRule> NORMALIZATION = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		NORMALIZATION.add(new EliminateSubplanRule());
-		NORMALIZATION.add(new IntroduceAggregateCombinerRule());
-		NORMALIZATION.add(new BreakSelectIntoConjunctsRule());
-		NORMALIZATION.add(new IntroduceAggregateCombinerRule());
-		NORMALIZATION.add(new PushSelectIntoJoinRule());
-		NORMALIZATION.add(new ExtractGbyExpressionsRule());
-		NORMALIZATION.add(new RemoveRedundantSelectRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> COND_PUSHDOWN_AND_JOIN_INFERENCE = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new PushSelectDownRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new InlineVariablesRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE
-				.add(new FactorRedundantGroupAndDecorVarsRule());
-		COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new EliminateSubplanRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> LOAD_FIELDS = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		// should LoadRecordFieldsRule be applied in only one pass over the
-		// plan?
-		LOAD_FIELDS.add(new InlineVariablesRule());
-		// LOAD_FIELDS.add(new RemoveUnusedAssignAndAggregateRule());
-		LOAD_FIELDS.add(new ComplexJoinInferenceRule());
-		LOAD_FIELDS.add(new InferTypesRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> OP_PUSHDOWN = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		OP_PUSHDOWN.add(new PushProjectDownRule());
-		OP_PUSHDOWN.add(new PushSelectDownRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> DATA_EXCHANGE = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		DATA_EXCHANGE.add(new SetExecutionModeRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> CONSOLIDATION = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		CONSOLIDATION.add(new RemoveRedundantProjectionRule());
-		CONSOLIDATION.add(new ConsolidateSelectsRule());
-		CONSOLIDATION.add(new IntroduceEarlyProjectRule());
-		CONSOLIDATION.add(new ConsolidateAssignsRule());
-		CONSOLIDATION.add(new IntroduceGroupByCombinerRule());
-		CONSOLIDATION.add(new RemoveUnusedAssignAndAggregateRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> PHYSICAL_PLAN_REWRITES = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		PHYSICAL_PLAN_REWRITES.add(new PullSelectOutOfEqJoin());
-		PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule());
-		PHYSICAL_PLAN_REWRITES.add(new EnforceStructuralPropertiesRule());
-		PHYSICAL_PLAN_REWRITES.add(new PushProjectDownRule());
-		PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule());
-		PHYSICAL_PLAN_REWRITES.add(new PushLimitDownRule());
-		PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeWriteRule());
-		PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeUnionRule());
-	}
-
-	public final static LinkedList<IAlgebraicRewriteRule> prepareJobGenRules = new LinkedList<IAlgebraicRewriteRule>();
-	static {
-		prepareJobGenRules.add(new ReinferAllTypesRule());
-		prepareJobGenRules.add(new IsolateHyracksOperatorsRule(
-				HeuristicOptimizer.hyraxOperatorsBelowWhichJobGenIsDisabled));
-		prepareJobGenRules.add(new ExtractCommonOperatorsRule());
-		prepareJobGenRules.add(new LocalGroupByRule());
-		prepareJobGenRules.add(new PushProjectIntoDataSourceScanRule());
-		prepareJobGenRules.add(new ReinferAllTypesRule());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java
deleted file mode 100644
index c58982e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/InsertProjectBeforeWriteRule.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.ExecutionMode;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.StreamProjectPOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class InsertProjectBeforeWriteRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) {
-		return false;
-	}
-
-	/**
-	 * When the input schema to WriteOperator is different from the output
-	 * schema in terms of variable order, add a project operator to get the
-	 * write order
-	 */
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.WRITE) {
-			return false;
-		}
-		WriteOperator opWrite = (WriteOperator) op;
-		ArrayList<LogicalVariable> finalSchema = new ArrayList<LogicalVariable>();
-		VariableUtilities.getUsedVariables(opWrite, finalSchema);
-		ArrayList<LogicalVariable> inputSchema = new ArrayList<LogicalVariable>();
-		VariableUtilities.getLiveVariables(opWrite, inputSchema);
-		if (!isIdentical(finalSchema, inputSchema)) {
-			ProjectOperator projectOp = new ProjectOperator(finalSchema);
-			Mutable<ILogicalOperator> parentOpRef = opWrite.getInputs().get(0);
-			projectOp.getInputs().add(parentOpRef);
-			opWrite.getInputs().clear();
-			opWrite.getInputs().add(
-					new MutableObject<ILogicalOperator>(projectOp));
-			projectOp.setPhysicalOperator(new StreamProjectPOperator());
-			projectOp.setExecutionMode(ExecutionMode.PARTITIONED);
-
-			AbstractLogicalOperator op2 = (AbstractLogicalOperator) parentOpRef
-					.getValue();
-			if (op2.getOperatorTag() == LogicalOperatorTag.PROJECT) {
-				ProjectOperator pi2 = (ProjectOperator) op2;
-				parentOpRef.setValue(pi2.getInputs().get(0).getValue());
-			}
-			context.computeAndSetTypeEnvironmentForOperator(projectOp);
-			return true;
-		} else
-			return false;
-
-	}
-
-	private boolean isIdentical(List<LogicalVariable> finalSchema,
-			List<LogicalVariable> inputSchema) {
-		int finalSchemaSize = finalSchema.size();
-		int inputSchemaSize = inputSchema.size();
-		if (finalSchemaSize != inputSchemaSize)
-			throw new IllegalStateException(
-					"final output schema variables missing!");
-		for (int i = 0; i < finalSchemaSize; i++) {
-			LogicalVariable var1 = finalSchema.get(i);
-			LogicalVariable var2 = inputSchema.get(i);
-			if (!var1.equals(var2))
-				return false;
-		}
-		return true;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java
deleted file mode 100644
index 2bebe81..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/IntroduceEarlyProjectRule.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class IntroduceEarlyProjectRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.PROJECT) {
-			return false;
-		}
-		AbstractLogicalOperator middleOp = (AbstractLogicalOperator) op
-				.getInputs().get(0).getValue();
-		List<LogicalVariable> deliveredVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
-		List<LogicalVariable> producedVars = new ArrayList<LogicalVariable>();
-
-		VariableUtilities.getUsedVariables(op, deliveredVars);
-		VariableUtilities.getUsedVariables(middleOp, usedVars);
-		VariableUtilities.getProducedVariables(middleOp, producedVars);
-
-		Set<LogicalVariable> requiredVariables = new HashSet<LogicalVariable>();
-		requiredVariables.addAll(deliveredVars);
-		requiredVariables.addAll(usedVars);
-		requiredVariables.removeAll(producedVars);
-
-		if (middleOp.getInputs().size() <= 0 || middleOp.getInputs().size() > 1)
-			return false;
-
-		AbstractLogicalOperator targetOp = (AbstractLogicalOperator) middleOp
-				.getInputs().get(0).getValue();
-		if (targetOp.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN)
-			return false;
-
-		Set<LogicalVariable> deliveredEarlyVars = new HashSet<LogicalVariable>();
-		VariableUtilities.getLiveVariables(targetOp, deliveredEarlyVars);
-
-		deliveredEarlyVars.removeAll(requiredVariables);
-		if (deliveredEarlyVars.size() > 0) {
-			ArrayList<LogicalVariable> requiredVars = new ArrayList<LogicalVariable>();
-			requiredVars.addAll(requiredVariables);
-			ILogicalOperator earlyProjectOp = new ProjectOperator(requiredVars);
-			Mutable<ILogicalOperator> earlyProjectOpRef = new MutableObject<ILogicalOperator>(
-					earlyProjectOp);
-			Mutable<ILogicalOperator> targetRef = middleOp.getInputs().get(0);
-			middleOp.getInputs().set(0, earlyProjectOpRef);
-			earlyProjectOp.getInputs().add(targetRef);
-			context.computeAndSetTypeEnvironmentForOperator(earlyProjectOp);
-			return true;
-		}
-		return false;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java
deleted file mode 100644
index 72cbe21..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/LocalGroupByRule.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import edu.uci.ics.hivesterix.logical.plan.HiveOperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class LocalGroupByRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.GROUP) {
-			return false;
-		}
-		Boolean localGby = (Boolean) op.getAnnotations().get(
-				HiveOperatorAnnotations.LOCAL_GROUP_BY);
-		if (localGby != null && localGby.equals(Boolean.TRUE)) {
-			Boolean hashGby = (Boolean) op.getAnnotations().get(
-					OperatorAnnotations.USE_HASH_GROUP_BY);
-			Boolean externalGby = (Boolean) op.getAnnotations().get(
-					OperatorAnnotations.USE_EXTERNAL_GROUP_BY);
-			if ((hashGby != null && (hashGby.equals(Boolean.TRUE)) || (externalGby != null && externalGby
-					.equals(Boolean.TRUE)))) {
-				reviseExchange(op);
-			} else {
-				ILogicalOperator child = op.getInputs().get(0).getValue();
-				AbstractLogicalOperator childOp = (AbstractLogicalOperator) child;
-				while (child.getInputs().size() > 0) {
-					if (childOp.getOperatorTag() == LogicalOperatorTag.ORDER)
-						break;
-					else {
-						child = child.getInputs().get(0).getValue();
-						childOp = (AbstractLogicalOperator) child;
-					}
-				}
-				if (childOp.getOperatorTag() == LogicalOperatorTag.ORDER)
-					reviseExchange(childOp);
-			}
-			return true;
-		}
-		return false;
-	}
-
-	private void reviseExchange(AbstractLogicalOperator op) {
-		ExchangeOperator exchange = (ExchangeOperator) op.getInputs().get(0)
-				.getValue();
-		IPhysicalOperator physicalOp = exchange.getPhysicalOperator();
-		if (physicalOp.getOperatorTag() == PhysicalOperatorTag.HASH_PARTITION_EXCHANGE) {
-			exchange.setPhysicalOperator(new OneToOneExchangePOperator());
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java
deleted file mode 100644
index 9958ba8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/optimizer/rules/RemoveRedundantSelectRule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.optimizer.rules;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class RemoveRedundantSelectRule implements IAlgebraicRewriteRule {
-
-	@Override
-	public boolean rewritePre(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		return false;
-	}
-
-	@Override
-	public boolean rewritePost(Mutable<ILogicalOperator> opRef,
-			IOptimizationContext context) throws AlgebricksException {
-		AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-		if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
-			return false;
-		}
-		AbstractLogicalOperator inputOp = (AbstractLogicalOperator) op
-				.getInputs().get(0).getValue();
-		if (inputOp.getOperatorTag() != LogicalOperatorTag.SELECT) {
-			return false;
-		}
-		SelectOperator selectOp = (SelectOperator) op;
-		SelectOperator inputSelectOp = (SelectOperator) inputOp;
-		ILogicalExpression expr1 = selectOp.getCondition().getValue();
-		ILogicalExpression expr2 = inputSelectOp.getCondition().getValue();
-
-		if (expr1.equals(expr2)) {
-			selectOp.getInputs().set(0, inputSelectOp.getInputs().get(0));
-			return true;
-		}
-		return false;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java
deleted file mode 100644
index 6b4d697..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/config/ConfUtil.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.config;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.FileInputFormat;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.api.client.NodeControllerInfo;
-import edu.uci.ics.hyracks.api.topology.ClusterTopology;
-
-@SuppressWarnings({ "rawtypes", "deprecation" })
-public class ConfUtil {
-
-	private static JobConf job;
-	private static HiveConf hconf;
-	private static String[] NCs;
-	private static Map<String, List<String>> ncMapping;
-	private static IHyracksClientConnection hcc = null;
-	private static ClusterTopology topology = null;
-
-	public static JobConf getJobConf(Class<? extends InputFormat> format,
-			Path path) {
-		JobConf conf = new JobConf();
-		if (job != null)
-			conf = job;
-
-		String hadoopPath = System.getProperty("HADOOP_HOME", "/hadoop");
-		Path pathCore = new Path(hadoopPath + "/conf/core-site.xml");
-		conf.addResource(pathCore);
-		Path pathMapRed = new Path(hadoopPath + "/conf/mapred-site.xml");
-		conf.addResource(pathMapRed);
-		Path pathHDFS = new Path(hadoopPath + "/conf/hdfs-site.xml");
-		conf.addResource(pathHDFS);
-
-		conf.setInputFormat(format);
-		FileInputFormat.setInputPaths(conf, path);
-		return conf;
-	}
-
-	public static JobConf getJobConf() {
-		JobConf conf = new JobConf();
-		if (job != null)
-			conf = job;
-
-		String hadoopPath = System.getProperty("HADOOP_HOME", "/hadoop");
-		Path pathCore = new Path(hadoopPath + "/conf/core-site.xml");
-		conf.addResource(pathCore);
-		Path pathMapRed = new Path(hadoopPath + "/conf/mapred-site.xml");
-		conf.addResource(pathMapRed);
-		Path pathHDFS = new Path(hadoopPath + "/conf/hdfs-site.xml");
-		conf.addResource(pathHDFS);
-
-		return conf;
-	}
-
-	public static void setJobConf(JobConf conf) {
-		job = conf;
-	}
-
-	public static void setHiveConf(HiveConf hiveConf) {
-		hconf = hiveConf;
-	}
-
-	public static HiveConf getHiveConf() {
-		if (hconf == null) {
-			hconf = new HiveConf(SessionState.class);
-			hconf.addResource(new Path("conf/hive-default.xml"));
-		}
-		return hconf;
-	}
-
-	public static String[] getNCs() throws AlgebricksException {
-		if (NCs == null) {
-			try {
-				loadClusterConfig();
-			} catch (Exception e) {
-				throw new AlgebricksException(e);
-			}
-		}
-		return NCs;
-	}
-
-	public static Map<String, List<String>> getNCMapping()
-			throws AlgebricksException {
-		if (ncMapping == null) {
-			try {
-				loadClusterConfig();
-			} catch (Exception e) {
-				throw new AlgebricksException(e);
-			}
-		}
-		return ncMapping;
-	}
-
-	private static void loadClusterConfig() {
-		try {
-			getHiveConf();
-			String ipAddress = hconf.get("hive.hyracks.host");
-			int port = Integer.parseInt(hconf.get("hive.hyracks.port"));
-			int mpl = Integer.parseInt(hconf.get("hive.hyracks.parrallelism"));
-			hcc = new HyracksConnection(ipAddress, port);
-			topology = hcc.getClusterTopology();
-			Map<String, NodeControllerInfo> ncNameToNcInfos = hcc
-					.getNodeControllerInfos();
-			NCs = new String[ncNameToNcInfos.size() * mpl];
-			ncMapping = new HashMap<String, List<String>>();
-			int i = 0;
-			for (Map.Entry<String, NodeControllerInfo> entry : ncNameToNcInfos
-					.entrySet()) {
-				String ipAddr = InetAddress.getByAddress(
-						entry.getValue().getNetworkAddress().getIpAddress())
-						.getHostAddress();
-				List<String> matchedNCs = ncMapping.get(ipAddr);
-				if (matchedNCs == null) {
-					matchedNCs = new ArrayList<String>();
-					ncMapping.put(ipAddr, matchedNCs);
-				}
-				matchedNCs.add(entry.getKey());
-				for (int j = i * mpl; j < i * mpl + mpl; j++)
-					NCs[j] = entry.getKey();
-				i++;
-			}
-		} catch (Exception e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-	public static ClusterTopology getClusterTopology() {
-		if (topology == null)
-			loadClusterConfig();
-		return topology;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java
deleted file mode 100644
index 8f6d9ca..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AbstractExpressionEvaluator.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public abstract class AbstractExpressionEvaluator implements ICopyEvaluator {
-
-	private List<ICopyEvaluator> children;
-
-	private ExprNodeEvaluator evaluator;
-
-	private IDataOutputProvider out;
-
-	private ObjectInspector inspector;
-
-	/**
-	 * output object inspector
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * cached row object
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * serializer/derialzer for lazy object
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * data output
-	 */
-	DataOutput dataOutput;
-
-	public AbstractExpressionEvaluator(ExprNodeEvaluator hiveEvaluator,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		evaluator = hiveEvaluator;
-		out = output;
-		inspector = oi;
-		dataOutput = out.getDataOutput();
-	}
-
-	protected ObjectInspector getRowInspector() {
-		return null;
-	}
-
-	protected IDataOutputProvider getIDataOutputProvider() {
-		return out;
-	}
-
-	protected ExprNodeEvaluator getHiveEvaluator() {
-		return evaluator;
-	}
-
-	public ObjectInspector getObjectInspector() {
-		return inspector;
-	}
-
-	@Override
-	public void evaluate(IFrameTupleReference r) throws AlgebricksException {
-		// initialize hive evaluator
-		try {
-			if (outputInspector == null)
-				outputInspector = evaluator.initialize(inspector);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-
-		readIntoCache(r);
-		try {
-			Object result = evaluator.evaluate(cachedRowObject);
-
-			// if (result == null) {
-			// result = evaluator.evaluate(cachedRowObject);
-			//
-			// // check if result is null
-			//
-			// String errorMsg = "serialize null object in  \n output " +
-			// outputInspector.toString() + " \n input "
-			// + inspector.toString() + "\n ";
-			// errorMsg += "";
-			// List<Object> columns = ((StructObjectInspector)
-			// inspector).getStructFieldsDataAsList(cachedRowObject);
-			// for (Object column : columns) {
-			// errorMsg += column.toString() + " ";
-			// }
-			// errorMsg += "\n";
-			// Log.info(errorMsg);
-			// System.out.println(errorMsg);
-			// // result = new BooleanWritable(true);
-			// throw new IllegalStateException(errorMsg);
-			// }
-
-			serializeResult(result);
-		} catch (HiveException e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		} catch (IOException e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result) throws IOException,
-			AlgebricksException {
-		if (lazySer == null)
-			lazySer = new LazySerDe();
-
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, outputInspector);
-			dataOutput.write(outputWritable.getBytes(), 0,
-					outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		if (cachedRowObject == null)
-			cachedRowObject = (LazyObject<? extends ObjectInspector>) LazyFactory
-					.createLazyObject(inspector);
-		cachedRowObject.init(r);
-	}
-
-	/**
-	 * set a list of children of this evaluator
-	 * 
-	 * @param children
-	 */
-	public void setChildren(List<ICopyEvaluator> children) {
-		this.children = children;
-	}
-
-	public void addChild(ICopyEvaluator child) {
-		if (children == null)
-			children = new ArrayList<ICopyEvaluator>();
-		children.add(child);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java
deleted file mode 100644
index 271b5e4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregationFunctionEvaluator.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFCount;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AggregationFunctionEvaluator implements ICopyAggregateFunction {
-
-	/**
-	 * the mode of aggregation function
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * an array of evaluators
-	 */
-	private ExprNodeEvaluator[] evaluators;
-
-	/**
-	 * udaf evaluator partial
-	 */
-	private GenericUDAFEvaluator udafPartial;
-
-	/**
-	 * udaf evaluator complete
-	 */
-	private GenericUDAFEvaluator udafComplete;
-
-	/**
-	 * cached parameter objects
-	 */
-	private Object[] cachedParameters;
-
-	/**
-	 * cached row objects
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * the output channel
-	 */
-	private DataOutput out;
-
-	/**
-	 * aggregation buffer
-	 */
-	private AggregationBuffer aggBuffer;
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspectorPartial;
-
-	/**
-	 * parameter inspectors
-	 */
-	private ObjectInspector[] parameterInspectors;
-
-	/**
-	 * output make sure the aggregation functio has least object creation
-	 * 
-	 * @param desc
-	 * @param oi
-	 * @param output
-	 */
-	public AggregationFunctionEvaluator(List<ExprNodeDesc> inputs,
-			List<TypeInfo> inputTypes, String genericUDAFName,
-			GenericUDAFEvaluator.Mode aggMode, boolean distinct,
-			ObjectInspector oi, DataOutput output, ExprNodeEvaluator[] evals,
-			ObjectInspector[] pInspectors, Object[] parameterCache,
-			SerDe serde, LazyObject<? extends ObjectInspector> row,
-			GenericUDAFEvaluator udafunctionPartial,
-			GenericUDAFEvaluator udafunctionComplete, ObjectInspector outputOi,
-			ObjectInspector outputOiPartial) {
-		// shared object across threads
-		this.out = output;
-		this.mode = aggMode;
-		this.parameterInspectors = pInspectors;
-
-		// thread local objects
-		this.evaluators = evals;
-		this.cachedParameters = parameterCache;
-		this.cachedRowObject = row;
-		this.lazySer = serde;
-		this.udafPartial = udafunctionPartial;
-		this.udafComplete = udafunctionComplete;
-		this.outputInspector = outputOi;
-		this.outputInspectorPartial = outputOiPartial;
-	}
-
-	@Override
-	public void init() throws AlgebricksException {
-		try {
-			aggBuffer = udafPartial.getNewAggregationBuffer();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void step(IFrameTupleReference tuple) throws AlgebricksException {
-		readIntoCache(tuple);
-		processRow();
-	}
-
-	private void processRow() throws AlgebricksException {
-		try {
-			// get values by evaluating them
-			for (int i = 0; i < cachedParameters.length; i++) {
-				cachedParameters[i] = evaluators[i].evaluate(cachedRowObject);
-			}
-			processAggregate();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void processAggregate() throws HiveException {
-		/**
-		 * accumulate the aggregation function
-		 */
-		switch (mode) {
-		case PARTIAL1:
-		case COMPLETE:
-			udafPartial.iterate(aggBuffer, cachedParameters);
-			break;
-		case PARTIAL2:
-		case FINAL:
-			if (udafPartial instanceof GenericUDAFCount.GenericUDAFCountEvaluator) {
-				Object parameter = ((PrimitiveObjectInspector) parameterInspectors[0])
-						.getPrimitiveWritableObject(cachedParameters[0]);
-				udafPartial.merge(aggBuffer, parameter);
-			} else
-				udafPartial.merge(aggBuffer, cachedParameters[0]);
-			break;
-		default:
-			break;
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result, ObjectInspector oi)
-			throws IOException, AlgebricksException {
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, oi);
-			out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-	}
-
-	@Override
-	public void finish() throws AlgebricksException {
-		// aggregator
-		try {
-			Object result = null;
-			result = udafPartial.terminatePartial(aggBuffer);
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE
-					|| mode == GenericUDAFEvaluator.Mode.FINAL) {
-				result = udafComplete.terminate(aggBuffer);
-				serializeResult(result, outputInspector);
-			} else {
-				serializeResult(result, outputInspectorPartial);
-			}
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void finishPartial() throws AlgebricksException {
-		// aggregator.
-		try {
-			Object result = null;
-			// get aggregations
-			result = udafPartial.terminatePartial(aggBuffer);
-			serializeResult(result, outputInspectorPartial);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java
deleted file mode 100644
index 032437b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/AggregatuibFunctionSerializableEvaluator.java
+++ /dev/null
@@ -1,259 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFCount;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class AggregatuibFunctionSerializableEvaluator implements
-		ICopySerializableAggregateFunction {
-
-	/**
-	 * the mode of aggregation function
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * an array of evaluators
-	 */
-	private ExprNodeEvaluator[] evaluators;
-
-	/**
-	 * udaf evaluator partial
-	 */
-	private GenericUDAFEvaluator udafPartial;
-
-	/**
-	 * udaf evaluator complete
-	 */
-	private GenericUDAFEvaluator udafComplete;
-
-	/**
-	 * cached parameter objects
-	 */
-	private Object[] cachedParameters;
-
-	/**
-	 * cached row objects
-	 */
-	private LazyObject<? extends ObjectInspector> cachedRowObject;
-
-	/**
-	 * aggregation buffer
-	 */
-	private SerializableBuffer aggBuffer;
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private SerDe lazySer;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * the output object inspector for this aggregation function
-	 */
-	private ObjectInspector outputInspectorPartial;
-
-	/**
-	 * parameter inspectors
-	 */
-	private ObjectInspector[] parameterInspectors;
-
-	/**
-	 * output make sure the aggregation functio has least object creation
-	 * 
-	 * @param desc
-	 * @param oi
-	 * @param output
-	 */
-	public AggregatuibFunctionSerializableEvaluator(List<ExprNodeDesc> inputs,
-			List<TypeInfo> inputTypes, String genericUDAFName,
-			GenericUDAFEvaluator.Mode aggMode, boolean distinct,
-			ObjectInspector oi, ExprNodeEvaluator[] evals,
-			ObjectInspector[] pInspectors, Object[] parameterCache,
-			SerDe serde, LazyObject<? extends ObjectInspector> row,
-			GenericUDAFEvaluator udafunctionPartial,
-			GenericUDAFEvaluator udafunctionComplete, ObjectInspector outputOi,
-			ObjectInspector outputOiPartial) throws AlgebricksException {
-		// shared object across threads
-		this.mode = aggMode;
-		this.parameterInspectors = pInspectors;
-
-		// thread local objects
-		this.evaluators = evals;
-		this.cachedParameters = parameterCache;
-		this.cachedRowObject = row;
-		this.lazySer = serde;
-		this.udafPartial = udafunctionPartial;
-		this.udafComplete = udafunctionComplete;
-		this.outputInspector = outputOi;
-		this.outputInspectorPartial = outputOiPartial;
-
-		try {
-			aggBuffer = (SerializableBuffer) udafPartial
-					.getNewAggregationBuffer();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void init(DataOutput output) throws AlgebricksException {
-		try {
-			udafPartial.reset(aggBuffer);
-			outputAggBuffer(aggBuffer, output);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void step(IFrameTupleReference tuple, byte[] data, int start, int len)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		readIntoCache(tuple);
-		processRow();
-		serializeAggBuffer(aggBuffer, data, start, len);
-	}
-
-	private void processRow() throws AlgebricksException {
-		try {
-			// get values by evaluating them
-			for (int i = 0; i < cachedParameters.length; i++) {
-				cachedParameters[i] = evaluators[i].evaluate(cachedRowObject);
-			}
-			processAggregate();
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void processAggregate() throws HiveException {
-		/**
-		 * accumulate the aggregation function
-		 */
-		switch (mode) {
-		case PARTIAL1:
-		case COMPLETE:
-			udafPartial.iterate(aggBuffer, cachedParameters);
-			break;
-		case PARTIAL2:
-		case FINAL:
-			if (udafPartial instanceof GenericUDAFCount.GenericUDAFCountEvaluator) {
-				Object parameter = ((PrimitiveObjectInspector) parameterInspectors[0])
-						.getPrimitiveWritableObject(cachedParameters[0]);
-				udafPartial.merge(aggBuffer, parameter);
-			} else
-				udafPartial.merge(aggBuffer, cachedParameters[0]);
-			break;
-		default:
-			break;
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result, ObjectInspector oi,
-			DataOutput out) throws IOException, AlgebricksException {
-		try {
-			BytesWritable outputWritable = (BytesWritable) lazySer.serialize(
-					result, oi);
-			out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-		} catch (SerDeException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-	}
-
-	@Override
-	public void finish(byte[] data, int start, int len, DataOutput output)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		// aggregator
-		try {
-			Object result = null;
-			result = udafPartial.terminatePartial(aggBuffer);
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE
-					|| mode == GenericUDAFEvaluator.Mode.FINAL) {
-				result = udafComplete.terminate(aggBuffer);
-				serializeResult(result, outputInspector, output);
-			} else {
-				serializeResult(result, outputInspectorPartial, output);
-			}
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	@Override
-	public void finishPartial(byte[] data, int start, int len, DataOutput output)
-			throws AlgebricksException {
-		deSerializeAggBuffer(aggBuffer, data, start, len);
-		// aggregator.
-		try {
-			Object result = null;
-			// get aggregations
-			result = udafPartial.terminatePartial(aggBuffer);
-			serializeResult(result, outputInspectorPartial, output);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	private void serializeAggBuffer(SerializableBuffer buffer, byte[] data,
-			int start, int len) throws AlgebricksException {
-		buffer.serializeAggBuffer(data, start, len);
-	}
-
-	private void deSerializeAggBuffer(SerializableBuffer buffer, byte[] data,
-			int start, int len) throws AlgebricksException {
-		buffer.deSerializeAggBuffer(data, start, len);
-	}
-
-	private void outputAggBuffer(SerializableBuffer buffer, DataOutput out)
-			throws AlgebricksException {
-		try {
-			buffer.serializeAggBuffer(out);
-		} catch (IOException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java
deleted file mode 100644
index d73be93..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/BufferSerDeUtil.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-public class BufferSerDeUtil {
-
-	public static double getDouble(byte[] bytes, int offset) {
-		return Double.longBitsToDouble(getLong(bytes, offset));
-	}
-
-	public static float getFloat(byte[] bytes, int offset) {
-		return Float.intBitsToFloat(getInt(bytes, offset));
-	}
-
-	public static boolean getBoolean(byte[] bytes, int offset) {
-		if (bytes[offset] == 0)
-			return false;
-		else
-			return true;
-	}
-
-	public static int getInt(byte[] bytes, int offset) {
-		return ((bytes[offset] & 0xff) << 24)
-				+ ((bytes[offset + 1] & 0xff) << 16)
-				+ ((bytes[offset + 2] & 0xff) << 8)
-				+ ((bytes[offset + 3] & 0xff) << 0);
-	}
-
-	public static long getLong(byte[] bytes, int offset) {
-		return (((long) (bytes[offset] & 0xff)) << 56)
-				+ (((long) (bytes[offset + 1] & 0xff)) << 48)
-				+ (((long) (bytes[offset + 2] & 0xff)) << 40)
-				+ (((long) (bytes[offset + 3] & 0xff)) << 32)
-				+ (((long) (bytes[offset + 4] & 0xff)) << 24)
-				+ (((long) (bytes[offset + 5] & 0xff)) << 16)
-				+ (((long) (bytes[offset + 6] & 0xff)) << 8)
-				+ (((long) (bytes[offset + 7] & 0xff)) << 0);
-	}
-
-	public static void writeBoolean(boolean value, byte[] bytes, int offset) {
-		if (value)
-			bytes[offset] = (byte) 1;
-		else
-			bytes[offset] = (byte) 0;
-	}
-
-	public static void writeInt(int value, byte[] bytes, int offset) {
-		bytes[offset++] = (byte) (value >> 24);
-		bytes[offset++] = (byte) (value >> 16);
-		bytes[offset++] = (byte) (value >> 8);
-		bytes[offset++] = (byte) (value);
-	}
-
-	public static void writeLong(long value, byte[] bytes, int offset) {
-		bytes[offset++] = (byte) (value >> 56);
-		bytes[offset++] = (byte) (value >> 48);
-		bytes[offset++] = (byte) (value >> 40);
-		bytes[offset++] = (byte) (value >> 32);
-		bytes[offset++] = (byte) (value >> 24);
-		bytes[offset++] = (byte) (value >> 16);
-		bytes[offset++] = (byte) (value >> 8);
-		bytes[offset++] = (byte) (value);
-	}
-
-	public static void writeDouble(double value, byte[] bytes, int offset) {
-		long lValue = Double.doubleToLongBits(value);
-		writeLong(lValue, bytes, offset);
-	}
-
-	public static void writeFloat(float value, byte[] bytes, int offset) {
-		int iValue = Float.floatToIntBits(value);
-		writeInt(iValue, bytes, offset);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java
deleted file mode 100644
index 3296e19..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ColumnExpressionEvaluator.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeColumnEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ColumnExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public ColumnExpressionEvaluator(ExprNodeColumnDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeColumnEvaluator(expr), oi, output);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java
deleted file mode 100644
index 62928e6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ConstantExpressionEvaluator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeConstantEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ConstantExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public ConstantExpressionEvaluator(ExprNodeConstantDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeConstantEvaluator(expr), oi, output);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java
deleted file mode 100644
index 2180910..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/ExpressionTranslator.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.hadoop.hive.ql.exec.FunctionInfo;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.HiveAlgebricksBuiltInFunctionMap;
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.HivesterixConstantValue;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-
-public class ExpressionTranslator {
-
-	public static Object getHiveExpression(ILogicalExpression expr,
-			IVariableTypeEnvironment env) throws Exception {
-		if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
-			/**
-			 * function expression
-			 */
-			AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-			IFunctionInfo funcInfo = funcExpr.getFunctionInfo();
-			FunctionIdentifier fid = funcInfo.getFunctionIdentifier();
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				Object info = ((HiveFunctionInfo) funcInfo).getInfo();
-				ExprNodeFieldDesc desc = (ExprNodeFieldDesc) info;
-				return new ExprNodeFieldDesc(desc.getTypeInfo(),
-						desc.getDesc(), desc.getFieldName(), desc.getIsList());
-			}
-
-			if (fid.getName().equals(ExpressionConstant.NULL)) {
-				return new ExprNodeNullDesc();
-			}
-
-			/**
-			 * argument expressions: translate argument expressions recursively
-			 * first, this logic is shared in scalar, aggregation and unnesting
-			 * function
-			 */
-			List<Mutable<ILogicalExpression>> arguments = funcExpr
-					.getArguments();
-			List<ExprNodeDesc> parameters = new ArrayList<ExprNodeDesc>();
-			for (Mutable<ILogicalExpression> argument : arguments) {
-				/**
-				 * parameters could not be aggregate function desc
-				 */
-				ExprNodeDesc parameter = (ExprNodeDesc) getHiveExpression(
-						argument.getValue(), env);
-				parameters.add(parameter);
-			}
-
-			/**
-			 * get expression
-			 */
-			if (funcExpr instanceof ScalarFunctionCallExpression) {
-				String udfName = HiveAlgebricksBuiltInFunctionMap.INSTANCE
-						.getHiveFunctionName(fid);
-				GenericUDF udf;
-				if (udfName != null) {
-					/**
-					 * get corresponding function info for built-in functions
-					 */
-					FunctionInfo fInfo = FunctionRegistry
-							.getFunctionInfo(udfName);
-					udf = fInfo.getGenericUDF();
-
-					int inputSize = parameters.size();
-					List<ExprNodeDesc> currentDescs = new ArrayList<ExprNodeDesc>();
-
-					// generate expression tree if necessary
-					while (inputSize > 2) {
-						int pairs = inputSize / 2;
-						for (int i = 0; i < pairs; i++) {
-							List<ExprNodeDesc> descs = new ArrayList<ExprNodeDesc>();
-							descs.add(parameters.get(2 * i));
-							descs.add(parameters.get(2 * i + 1));
-							ExprNodeDesc desc = ExprNodeGenericFuncDesc
-									.newInstance(udf, descs);
-							currentDescs.add(desc);
-						}
-
-						if (inputSize % 2 != 0) {
-							// List<ExprNodeDesc> descs = new
-							// ArrayList<ExprNodeDesc>();
-							// ExprNodeDesc lastExpr =
-							// currentDescs.remove(currentDescs.size() - 1);
-							// descs.add(lastExpr);
-							currentDescs.add(parameters.get(inputSize - 1));
-							// ExprNodeDesc desc =
-							// ExprNodeGenericFuncDesc.newInstance(udf, descs);
-							// currentDescs.add(desc);
-						}
-						inputSize = currentDescs.size();
-						parameters.clear();
-						parameters.addAll(currentDescs);
-						currentDescs.clear();
-					}
-
-				} else {
-					Object secondInfo = ((HiveFunctionInfo) funcInfo).getInfo();
-					if (secondInfo != null) {
-
-						/**
-						 * for GenericUDFBridge: we should not call get type of
-						 * this hive expression, because parameters may have
-						 * been changed!
-						 */
-						ExprNodeGenericFuncDesc hiveExpr = (ExprNodeGenericFuncDesc) ((HiveFunctionInfo) funcInfo)
-								.getInfo();
-						udf = hiveExpr.getGenericUDF();
-					} else {
-						/**
-						 * for other generic UDF
-						 */
-						Class<?> udfClass;
-						try {
-							udfClass = Class.forName(fid.getName());
-							udf = (GenericUDF) udfClass.newInstance();
-						} catch (Exception e) {
-							e.printStackTrace();
-							throw new AlgebricksException(e.getMessage());
-						}
-					}
-				}
-				/**
-				 * get hive generic function expression
-				 */
-				ExprNodeDesc desc = ExprNodeGenericFuncDesc.newInstance(udf,
-						parameters);
-				return desc;
-			} else if (funcExpr instanceof AggregateFunctionCallExpression) {
-				/**
-				 * hive aggregation info
-				 */
-				AggregationDesc aggregateDesc = (AggregationDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				/**
-				 * set parameters
-				 */
-				aggregateDesc
-						.setParameters((ArrayList<ExprNodeDesc>) parameters);
-
-				List<TypeInfo> originalParameterTypeInfos = new ArrayList<TypeInfo>();
-				for (ExprNodeDesc parameter : parameters) {
-					if (parameter.getTypeInfo() instanceof StructTypeInfo) {
-						originalParameterTypeInfos
-								.add(TypeInfoFactory.doubleTypeInfo);
-					} else
-						originalParameterTypeInfos.add(parameter.getTypeInfo());
-				}
-
-				GenericUDAFEvaluator eval = FunctionRegistry
-						.getGenericUDAFEvaluator(
-								aggregateDesc.getGenericUDAFName(),
-								originalParameterTypeInfos,
-								aggregateDesc.getDistinct(), false);
-
-				AggregationDesc newAggregateDesc = new AggregationDesc(
-						aggregateDesc.getGenericUDAFName(), eval,
-						aggregateDesc.getParameters(),
-						aggregateDesc.getDistinct(), aggregateDesc.getMode());
-				return newAggregateDesc;
-			} else if (funcExpr instanceof UnnestingFunctionCallExpression) {
-				/**
-				 * type inference for UDTF function
-				 */
-				UDTFDesc hiveDesc = (UDTFDesc) ((HiveFunctionInfo) funcExpr
-						.getFunctionInfo()).getInfo();
-				String funcName = hiveDesc.getUDTFName();
-				FunctionInfo fi = FunctionRegistry.getFunctionInfo(funcName);
-				GenericUDTF udtf = fi.getGenericUDTF();
-				UDTFDesc desc = new UDTFDesc(udtf);
-				return desc;
-			} else {
-				throw new IllegalStateException(
-						"unrecognized function expression "
-								+ expr.getClass().getName());
-			}
-		} else if ((expr.getExpressionTag() == LogicalExpressionTag.VARIABLE)) {
-			/**
-			 * get type for variable in the environment
-			 */
-			VariableReferenceExpression varExpr = (VariableReferenceExpression) expr;
-			LogicalVariable var = varExpr.getVariableReference();
-			TypeInfo typeInfo = (TypeInfo) env.getVarType(var);
-			ExprNodeDesc desc = new ExprNodeColumnDesc(typeInfo,
-					var.toString(), "", false);
-			return desc;
-		} else if ((expr.getExpressionTag() == LogicalExpressionTag.CONSTANT)) {
-			/**
-			 * get expression for constant in the environment
-			 */
-			ConstantExpression varExpr = (ConstantExpression) expr;
-			Object value = ((HivesterixConstantValue) varExpr.getValue())
-					.getObject();
-			ExprNodeDesc desc = new ExprNodeConstantDesc(value);
-			return desc;
-		} else {
-			throw new IllegalStateException("illegal expressions "
-					+ expr.getClass().getName());
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java
deleted file mode 100644
index 5f6a5dc..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FieldExpressionEvaluator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeFieldEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FieldExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public FieldExpressionEvaluator(ExprNodeFieldDesc expr, ObjectInspector oi,
-			IDataOutputProvider output) throws AlgebricksException {
-		super(new ExprNodeFieldEvaluator(expr), oi, output);
-	}
-
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java
deleted file mode 100644
index c3f3c93..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/FunctionExpressionEvaluator.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeGenericFuncEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FunctionExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public FunctionExpressionEvaluator(ExprNodeGenericFuncDesc expr,
-			ObjectInspector oi, IDataOutputProvider output)
-			throws AlgebricksException {
-		super(new ExprNodeGenericFuncEvaluator(expr), oi, output);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java
deleted file mode 100644
index cbe5561..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/NullExpressionEvaluator.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import org.apache.hadoop.hive.ql.exec.ExprNodeNullEvaluator;
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class NullExpressionEvaluator extends AbstractExpressionEvaluator {
-
-	public NullExpressionEvaluator(ExprNodeNullDesc expr, ObjectInspector oi,
-			IDataOutputProvider output) throws AlgebricksException {
-		super(new ExprNodeNullEvaluator(expr), oi, output);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java
deleted file mode 100644
index 328b384..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/SerializableBuffer.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AggregationBuffer;
-
-public interface SerializableBuffer extends AggregationBuffer {
-
-	public void deSerializeAggBuffer(byte[] data, int start, int len);
-
-	public void serializeAggBuffer(byte[] data, int start, int len);
-
-	public void serializeAggBuffer(DataOutput output) throws IOException;
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java
deleted file mode 100644
index de0141b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/evaluator/UDTFFunctionEvaluator.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.evaluator;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-import org.apache.hadoop.hive.ql.udf.generic.Collector;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunction;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class UDTFFunctionEvaluator implements ICopyUnnestingFunction, Collector {
-
-	/**
-	 * udtf function
-	 */
-	private UDTFDesc func;
-
-	/**
-	 * input object inspector
-	 */
-	private ObjectInspector inputInspector;
-
-	/**
-	 * output object inspector
-	 */
-	private ObjectInspector outputInspector;
-
-	/**
-	 * object inspector for udtf
-	 */
-	private ObjectInspector[] udtfInputOIs;
-
-	/**
-	 * generic udtf
-	 */
-	private GenericUDTF udtf;
-
-	/**
-	 * data output
-	 */
-	private DataOutput out;
-
-	/**
-	 * the input row object
-	 */
-	private LazyColumnar cachedRowObject;
-
-	/**
-	 * cached row object (input)
-	 */
-	private Object[] cachedInputObjects;
-
-	/**
-	 * serialization/deserialization
-	 */
-	private SerDe lazySerDe;
-
-	/**
-	 * columns feed into UDTF
-	 */
-	private int[] columns;
-
-	public UDTFFunctionEvaluator(UDTFDesc desc, Schema schema, int[] cols,
-			DataOutput output) {
-		this.func = desc;
-		this.inputInspector = schema.toObjectInspector();
-		udtf = func.getGenericUDTF();
-		out = output;
-		columns = cols;
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) throws AlgebricksException {
-		cachedInputObjects = new LazyObject[columns.length];
-		try {
-			cachedRowObject = (LazyColumnar) LazyFactory
-					.createLazyObject(inputInspector);
-			outputInspector = udtf.initialize(udtfInputOIs);
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-		udtf.setCollector(this);
-		lazySerDe = new LazySerDe();
-		readIntoCache(tuple);
-	}
-
-	@Override
-	public boolean step() throws AlgebricksException {
-		try {
-			udtf.process(cachedInputObjects);
-			return true;
-		} catch (HiveException e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * bind the tuple reference to the cached row object
-	 * 
-	 * @param r
-	 */
-	private void readIntoCache(IFrameTupleReference r) {
-		cachedRowObject.init(r);
-		for (int i = 0; i < cachedInputObjects.length; i++) {
-			cachedInputObjects[i] = cachedRowObject.getField(columns[i]);
-		}
-	}
-
-	/**
-	 * serialize the result
-	 * 
-	 * @param result
-	 *            the evaluation result
-	 * @throws IOException
-	 * @throws AlgebricksException
-	 */
-	private void serializeResult(Object result) throws SerDeException,
-			IOException {
-		BytesWritable outputWritable = (BytesWritable) lazySerDe.serialize(
-				result, outputInspector);
-		out.write(outputWritable.getBytes(), 0, outputWritable.getLength());
-	}
-
-	@Override
-	public void collect(Object input) throws HiveException {
-		try {
-			serializeResult(input);
-		} catch (IOException e) {
-			throw new HiveException(e);
-		} catch (SerDeException e) {
-			throw new HiveException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java
deleted file mode 100644
index ed5ab70..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/HyracksExecutionEngine.java
+++ /dev/null
@@ -1,551 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.exec;
-
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.exec.ConditionalTask;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.MapRedTask;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.Task;
-import org.apache.hadoop.hive.ql.plan.DynamicPartitionCtx;
-import org.apache.hadoop.hive.ql.plan.FetchWork;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.hive.ql.plan.MapredLocalWork;
-import org.apache.hadoop.hive.ql.plan.MapredWork;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.hive.ql.plan.TableScanDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HiveExpressionTypeComputer;
-import edu.uci.ics.hivesterix.logical.expression.HiveMergeAggregationExpressionFactory;
-import edu.uci.ics.hivesterix.logical.expression.HiveNullableTypeComputer;
-import edu.uci.ics.hivesterix.logical.expression.HivePartialAggregationTypeComputer;
-import edu.uci.ics.hivesterix.logical.plan.HiveAlgebricksTranslator;
-import edu.uci.ics.hivesterix.logical.plan.HiveLogicalPlanAndMetaData;
-import edu.uci.ics.hivesterix.optimizer.rulecollections.HiveRuleCollections;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.factory.evaluator.HiveExpressionRuntimeProvider;
-import edu.uci.ics.hivesterix.runtime.factory.nullwriter.HiveNullWriterFactory;
-import edu.uci.ics.hivesterix.runtime.inspector.HiveBinaryBooleanInspectorFactory;
-import edu.uci.ics.hivesterix.runtime.inspector.HiveBinaryIntegerInspectorFactory;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveConnectorPolicyAssignmentPolicy;
-import edu.uci.ics.hivesterix.runtime.jobgen.HiveConnectorPolicyAssignmentPolicy.Policy;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryComparatorFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryHashFunctionFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveBinaryHashFunctionFamilyProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveNormalizedKeyComputerFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HivePrinterFactoryProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveSerializerDeserializerProvider;
-import edu.uci.ics.hivesterix.runtime.provider.HiveTypeTraitProvider;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder;
-import edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder.DefaultOptimizationContextFactory;
-import edu.uci.ics.hyracks.algebricks.compiler.api.ICompiler;
-import edu.uci.ics.hyracks.algebricks.compiler.api.ICompilerFactory;
-import edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialFixpointRuleController;
-import edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalPlanAndMetadata;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
-import edu.uci.ics.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-import edu.uci.ics.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.api.job.JobId;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class HyracksExecutionEngine implements IExecutionEngine {
-
-    private static final Log LOG = LogFactory.getLog(HyracksExecutionEngine.class.getName());
-
-    private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> DEFAULT_LOGICAL_REWRITES = new ArrayList<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>();
-    private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> DEFAULT_PHYSICAL_REWRITES = new ArrayList<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>>();
-    static {
-        SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(false);
-        SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true);
-        SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true);
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlFullDfs,
-                HiveRuleCollections.NORMALIZATION));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.COND_PUSHDOWN_AND_JOIN_INFERENCE));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlFullDfs,
-                HiveRuleCollections.LOAD_FIELDS));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.OP_PUSHDOWN));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.DATA_EXCHANGE));
-        DEFAULT_LOGICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqCtrlNoDfs,
-                HiveRuleCollections.CONSOLIDATION));
-
-        DEFAULT_PHYSICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.PHYSICAL_PLAN_REWRITES));
-        DEFAULT_PHYSICAL_REWRITES.add(new Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>(seqOnceCtrl,
-                HiveRuleCollections.prepareJobGenRules));
-    }
-
-    /**
-     * static configurations for compiler
-     */
-    private HeuristicCompilerFactoryBuilder builder;
-
-    /**
-     * compiler
-     */
-    private ICompiler compiler;
-
-    /**
-     * physical optimization config
-     */
-    private PhysicalOptimizationConfig physicalOptimizationConfig;
-
-    /**
-     * final ending operators
-     */
-    private List<Operator> leaveOps = new ArrayList<Operator>();
-
-    /**
-     * tasks that are already visited
-     */
-    private Map<Task<? extends Serializable>, Boolean> tasksVisited = new HashMap<Task<? extends Serializable>, Boolean>();
-
-    /**
-     * hyracks job spec
-     */
-    private JobSpecification jobSpec;
-
-    /**
-     * hive configuration
-     */
-    private HiveConf conf;
-
-    /**
-     * plan printer
-     */
-    private PrintWriter planPrinter;
-
-    public HyracksExecutionEngine(HiveConf conf) {
-        this.conf = conf;
-        init(conf);
-    }
-
-    public HyracksExecutionEngine(HiveConf conf, PrintWriter planPrinter) {
-        this.conf = conf;
-        this.planPrinter = planPrinter;
-        init(conf);
-    }
-
-    private void init(HiveConf conf) {
-        builder = new HeuristicCompilerFactoryBuilder(DefaultOptimizationContextFactory.INSTANCE);
-        builder.setLogicalRewrites(DEFAULT_LOGICAL_REWRITES);
-        builder.setPhysicalRewrites(DEFAULT_PHYSICAL_REWRITES);
-        builder.setIMergeAggregationExpressionFactory(HiveMergeAggregationExpressionFactory.INSTANCE);
-        builder.setExpressionTypeComputer(HiveExpressionTypeComputer.INSTANCE);
-        builder.setNullableTypeComputer(HiveNullableTypeComputer.INSTANCE);
-
-        long memSizeExternalGby = conf.getLong("hive.algebricks.groupby.external.memory", 268435456);
-        long memSizeExternalSort = conf.getLong("hive.algebricks.sort.memory", 536870912);
-        int frameSize = conf.getInt("hive.algebricks.framesize", 32768);
-
-        physicalOptimizationConfig = new PhysicalOptimizationConfig();
-        int frameLimitExtGby = (int) (memSizeExternalGby / frameSize);
-        physicalOptimizationConfig.setMaxFramesExternalGroupBy(frameLimitExtGby);
-        int frameLimitExtSort = (int) (memSizeExternalSort / frameSize);
-        physicalOptimizationConfig.setMaxFramesExternalSort(frameLimitExtSort);
-        builder.setPhysicalOptimizationConfig(physicalOptimizationConfig);
-    }
-
-    @Override
-    public int compileJob(List<Task<? extends Serializable>> rootTasks) {
-        // clean up
-        leaveOps.clear();
-        tasksVisited.clear();
-        jobSpec = null;
-
-        HashMap<String, PartitionDesc> aliasToPath = new HashMap<String, PartitionDesc>();
-        List<Operator> rootOps = generateRootOperatorDAG(rootTasks, aliasToPath);
-
-        // get all leave Ops
-        getLeaves(rootOps, leaveOps);
-
-        HiveAlgebricksTranslator translator = new HiveAlgebricksTranslator();
-        try {
-            translator.translate(rootOps, null, aliasToPath);
-
-            ILogicalPlan plan = translator.genLogicalPlan();
-
-            if (plan.getRoots() != null && plan.getRoots().size() > 0 && plan.getRoots().get(0).getValue() != null) {
-                translator.printOperators();
-                ILogicalPlanAndMetadata planAndMetadata = new HiveLogicalPlanAndMetaData(plan,
-                        translator.getMetadataProvider());
-
-                ICompilerFactory compilerFactory = builder.create();
-                compiler = compilerFactory.createCompiler(planAndMetadata.getPlan(),
-                        planAndMetadata.getMetadataProvider(), translator.getVariableCounter());
-
-                // run optimization and re-writing rules for Hive plan
-                compiler.optimize();
-
-                // print optimized plan
-                LogicalOperatorPrettyPrintVisitor pvisitor = new LogicalOperatorPrettyPrintVisitor();
-                StringBuilder buffer = new StringBuilder();
-                PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
-                String planStr = buffer.toString();
-                System.out.println(planStr);
-
-                if (planPrinter != null)
-                    planPrinter.print(planStr);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return 1;
-        }
-
-        return 0;
-    }
-
-    private void codeGen() throws AlgebricksException {
-        // number of cpu cores in the cluster
-        builder.setClusterLocations(new AlgebricksAbsolutePartitionConstraint(ConfUtil.getNCs()));
-        // builder.setClusterTopology(ConfUtil.getClusterTopology());
-        builder.setBinaryBooleanInspectorFactory(HiveBinaryBooleanInspectorFactory.INSTANCE);
-        builder.setBinaryIntegerInspectorFactory(HiveBinaryIntegerInspectorFactory.INSTANCE);
-        builder.setComparatorFactoryProvider(HiveBinaryComparatorFactoryProvider.INSTANCE);
-        builder.setExpressionRuntimeProvider(HiveExpressionRuntimeProvider.INSTANCE);
-        builder.setHashFunctionFactoryProvider(HiveBinaryHashFunctionFactoryProvider.INSTANCE);
-        builder.setPrinterProvider(HivePrinterFactoryProvider.INSTANCE);
-        builder.setSerializerDeserializerProvider(HiveSerializerDeserializerProvider.INSTANCE);
-        builder.setNullWriterFactory(HiveNullWriterFactory.INSTANCE);
-        builder.setNormalizedKeyComputerFactoryProvider(HiveNormalizedKeyComputerFactoryProvider.INSTANCE);
-        builder.setPartialAggregationTypeComputer(HivePartialAggregationTypeComputer.INSTANCE);
-        builder.setTypeTraitProvider(HiveTypeTraitProvider.INSTANCE);
-        builder.setHashFunctionFamilyProvider(HiveBinaryHashFunctionFamilyProvider.INSTANCE);
-
-        jobSpec = compiler.createJob(null);
-
-        // set the policy
-        String policyStr = conf.get("hive.hyracks.connectorpolicy");
-        if (policyStr == null)
-            policyStr = "PIPELINING";
-        Policy policyValue = Policy.valueOf(policyStr);
-        jobSpec.setConnectorPolicyAssignmentPolicy(new HiveConnectorPolicyAssignmentPolicy(policyValue));
-        jobSpec.setUseConnectorPolicyForScheduling(false);
-    }
-
-    @Override
-    public int executeJob() {
-        try {
-            codeGen();
-            executeHyraxJob(jobSpec);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return 1;
-        }
-        return 0;
-    }
-
-    private List<Operator> generateRootOperatorDAG(List<Task<? extends Serializable>> rootTasks,
-            HashMap<String, PartitionDesc> aliasToPath) {
-
-        List<Operator> rootOps = new ArrayList<Operator>();
-        List<Task<? extends Serializable>> toDelete = new ArrayList<Task<? extends Serializable>>();
-        tasksVisited.clear();
-
-        for (int i = rootTasks.size() - 1; i >= 0; i--) {
-            /**
-             * list of map-reduce tasks
-             */
-            Task<? extends Serializable> task = rootTasks.get(i);
-
-            if (task instanceof MapRedTask) {
-                List<Operator> mapRootOps = articulateMapReduceOperators(task, rootOps, aliasToPath, rootTasks);
-                if (i == 0)
-                    rootOps.addAll(mapRootOps);
-                else {
-                    List<Operator> leaves = new ArrayList<Operator>();
-                    getLeaves(rootOps, leaves);
-
-                    List<Operator> mapChildren = new ArrayList<Operator>();
-                    for (Operator childMap : mapRootOps) {
-                        if (childMap instanceof TableScanOperator) {
-                            TableScanDesc topDesc = (TableScanDesc) childMap.getConf();
-                            if (topDesc == null)
-                                mapChildren.add(childMap);
-                            else {
-                                rootOps.add(childMap);
-                            }
-                        } else
-                            mapChildren.add(childMap);
-                    }
-
-                    if (mapChildren.size() > 0) {
-                        for (Operator leaf : leaves)
-                            leaf.setChildOperators(mapChildren);
-                        for (Operator child : mapChildren)
-                            child.setParentOperators(leaves);
-                    }
-                }
-
-                MapredWork mr = (MapredWork) task.getWork();
-                HashMap<String, PartitionDesc> map = mr.getAliasToPartnInfo();
-
-                addAliasToPartition(aliasToPath, map);
-                toDelete.add(task);
-            }
-        }
-
-        for (Task<? extends Serializable> task : toDelete)
-            rootTasks.remove(task);
-
-        return rootOps;
-    }
-
-    private void addAliasToPartition(HashMap<String, PartitionDesc> aliasToPath, HashMap<String, PartitionDesc> map) {
-        Iterator<String> keys = map.keySet().iterator();
-        while (keys.hasNext()) {
-            String key = keys.next();
-            PartitionDesc part = map.get(key);
-            String[] names = key.split(":");
-            for (String name : names) {
-                aliasToPath.put(name, part);
-            }
-        }
-    }
-
-    private List<Operator> articulateMapReduceOperators(Task task, List<Operator> rootOps,
-            HashMap<String, PartitionDesc> aliasToPath, List<Task<? extends Serializable>> rootTasks) {
-        // System.out.println("!"+task.getName());
-        if (!(task instanceof MapRedTask)) {
-            if (!(task instanceof ConditionalTask)) {
-                rootTasks.add(task);
-                return null;
-            } else {
-                // remove map-reduce branches in condition task
-                ConditionalTask condition = (ConditionalTask) task;
-                List<Task<? extends Serializable>> branches = condition.getListTasks();
-                for (int i = branches.size() - 1; i >= 0; i--) {
-                    Task branch = branches.get(i);
-                    if (branch instanceof MapRedTask) {
-                        return articulateMapReduceOperators(branch, rootOps, aliasToPath, rootTasks);
-                    }
-                }
-                rootTasks.add(task);
-                return null;
-            }
-        }
-
-        MapredWork mr = (MapredWork) task.getWork();
-        HashMap<String, PartitionDesc> map = mr.getAliasToPartnInfo();
-
-        // put all aliasToParitionDesc mapping into the map
-        addAliasToPartition(aliasToPath, map);
-
-        MapRedTask mrtask = (MapRedTask) task;
-        MapredWork work = (MapredWork) mrtask.getWork();
-        HashMap<String, Operator<? extends Serializable>> operators = work.getAliasToWork();
-
-        Set entries = operators.entrySet();
-        Iterator<Entry<String, Operator>> iterator = entries.iterator();
-        List<Operator> mapRootOps = new ArrayList<Operator>();
-
-        // get map root operators
-        while (iterator.hasNext()) {
-            Operator next = iterator.next().getValue();
-            if (!mapRootOps.contains(next)) {
-                // clear that only for the case of union
-                mapRootOps.add(next);
-            }
-        }
-
-        // get map local work
-        MapredLocalWork localWork = work.getMapLocalWork();
-        if (localWork != null) {
-            HashMap<String, Operator<? extends Serializable>> localOperators = localWork.getAliasToWork();
-
-            Set localEntries = localOperators.entrySet();
-            Iterator<Entry<String, Operator>> localIterator = localEntries.iterator();
-            while (localIterator.hasNext()) {
-                mapRootOps.add(localIterator.next().getValue());
-            }
-
-            HashMap<String, FetchWork> localFetch = localWork.getAliasToFetchWork();
-            Set localFetchEntries = localFetch.entrySet();
-            Iterator<Entry<String, FetchWork>> localFetchIterator = localFetchEntries.iterator();
-            while (localFetchIterator.hasNext()) {
-                Entry<String, FetchWork> fetchMap = localFetchIterator.next();
-                FetchWork fetch = fetchMap.getValue();
-                String alias = fetchMap.getKey();
-                List<PartitionDesc> dirPart = fetch.getPartDesc();
-
-                // temporary hack: put the first partitionDesc into the map
-                aliasToPath.put(alias, dirPart.get(0));
-            }
-        }
-
-        Boolean visited = tasksVisited.get(task);
-        if (visited != null && visited.booleanValue() == true) {
-            return mapRootOps;
-        }
-
-        // do that only for union operator
-        for (Operator op : mapRootOps)
-            if (op.getParentOperators() != null)
-                op.getParentOperators().clear();
-
-        List<Operator> mapLeaves = new ArrayList<Operator>();
-        downToLeaves(mapRootOps, mapLeaves);
-        List<Operator> reduceOps = new ArrayList<Operator>();
-
-        if (work.getReducer() != null)
-            reduceOps.add(work.getReducer());
-
-        for (Operator mapLeaf : mapLeaves) {
-            mapLeaf.setChildOperators(reduceOps);
-        }
-
-        for (Operator reduceOp : reduceOps) {
-            if (reduceOp != null)
-                reduceOp.setParentOperators(mapLeaves);
-        }
-
-        List<Operator> leafs = new ArrayList<Operator>();
-        if (reduceOps.size() > 0) {
-            downToLeaves(reduceOps, leafs);
-        } else {
-            leafs = mapLeaves;
-        }
-
-        List<Operator> mapChildren = new ArrayList<Operator>();
-        if (task.getChildTasks() != null && task.getChildTasks().size() > 0) {
-            for (Object child : task.getChildTasks()) {
-                List<Operator> childMapOps = articulateMapReduceOperators((Task) child, rootOps, aliasToPath, rootTasks);
-                if (childMapOps == null)
-                    continue;
-
-                for (Operator childMap : childMapOps) {
-                    if (childMap instanceof TableScanOperator) {
-                        TableScanDesc topDesc = (TableScanDesc) childMap.getConf();
-                        if (topDesc == null)
-                            mapChildren.add(childMap);
-                        else {
-                            rootOps.add(childMap);
-                        }
-                    } else {
-                        // if not table scan, add the child
-                        mapChildren.add(childMap);
-                    }
-                }
-            }
-
-            if (mapChildren.size() > 0) {
-                int i = 0;
-                for (Operator leaf : leafs) {
-                    if (leaf.getChildOperators() == null || leaf.getChildOperators().size() == 0)
-                        leaf.setChildOperators(new ArrayList<Operator>());
-                    leaf.getChildOperators().add(mapChildren.get(i));
-                    i++;
-                }
-                i = 0;
-                for (Operator child : mapChildren) {
-                    if (child.getParentOperators() == null || child.getParentOperators().size() == 0)
-                        child.setParentOperators(new ArrayList<Operator>());
-                    child.getParentOperators().add(leafs.get(i));
-                    i++;
-                }
-            }
-        }
-
-        // mark this task as visited
-        this.tasksVisited.put(task, true);
-        return mapRootOps;
-    }
-
-    /**
-     * down to leaf nodes
-     * 
-     * @param ops
-     * @param leaves
-     */
-    private void downToLeaves(List<Operator> ops, List<Operator> leaves) {
-
-        // Operator currentOp;
-        for (Operator op : ops) {
-            if (op != null && op.getChildOperators() != null && op.getChildOperators().size() > 0) {
-                downToLeaves(op.getChildOperators(), leaves);
-            } else {
-                if (op != null && leaves.indexOf(op) < 0)
-                    leaves.add(op);
-            }
-        }
-    }
-
-    private void getLeaves(List<Operator> roots, List<Operator> currentLeaves) {
-        for (Operator op : roots) {
-            List<Operator> children = op.getChildOperators();
-            if (children == null || children.size() <= 0) {
-                currentLeaves.add(op);
-            } else {
-                getLeaves(children, currentLeaves);
-            }
-        }
-    }
-
-    private void executeHyraxJob(JobSpecification job) throws Exception {
-        String ipAddress = conf.get("hive.hyracks.host");
-        int port = Integer.parseInt(conf.get("hive.hyracks.port"));
-        String applicationName = conf.get("hive.hyracks.app");
-        //System.out.println("connect to " + ipAddress + " " + port);
-
-        IHyracksClientConnection hcc = new HyracksConnection(ipAddress, port);
-
-        //System.out.println("get connected");
-        long start = System.currentTimeMillis();
-        JobId jobId = hcc.startJob(applicationName, job);
-        hcc.waitForCompletion(jobId);
-
-        //System.out.println("job finished: " + jobId.toString());
-        // call all leave nodes to end
-        for (Operator leaf : leaveOps) {
-            jobClose(leaf);
-        }
-
-        long end = System.currentTimeMillis();
-        System.err.println(start + " " + end + " " + (end - start));
-    }
-
-    /**
-     * mv to final directory on hdfs (not real final)
-     * 
-     * @param leaf
-     * @throws Exception
-     */
-    private void jobClose(Operator leaf) throws Exception {
-        FileSinkOperator fsOp = (FileSinkOperator) leaf;
-        FileSinkDesc desc = fsOp.getConf();
-        boolean isNativeTable = !desc.getTableInfo().isNonNative();
-        if ((conf != null) && isNativeTable) {
-            String specPath = desc.getDirName();
-            DynamicPartitionCtx dpCtx = desc.getDynPartCtx();
-            // for 0.7.0
-            fsOp.mvFileToFinalPath(specPath, conf, true, LOG, dpCtx);
-            // for 0.8.0
-            // Utilities.mvFileToFinalPath(specPath, conf, true, LOG, dpCtx,
-            // desc);
-        }
-    }
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java
deleted file mode 100644
index 8f4c471..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/exec/IExecutionEngine.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.exec;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.Task;
-
-public interface IExecutionEngine {
-
-	/**
-	 * compile the job
-	 * 
-	 * @param rootTasks
-	 *            : Hive MapReduce plan
-	 * @return 0 pass, 1 fail
-	 */
-	public int compileJob(List<Task<? extends Serializable>> rootTasks);
-
-	/**
-	 * execute the job with latest compiled plan
-	 * 
-	 * @return
-	 */
-	public int executeJob();
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java
deleted file mode 100644
index 9c2d463..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveByteBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveByteBinaryAscComparatorFactory INSTANCE = new HiveByteBinaryAscComparatorFactory();
-
-	private HiveByteBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private byte left;
-			private byte right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = b1[s1];
-				right = b2[s2];
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java
deleted file mode 100644
index ee71655..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveByteBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveByteBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveByteBinaryDescComparatorFactory INSTANCE = new HiveByteBinaryDescComparatorFactory();
-
-	private HiveByteBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private byte left;
-			private byte right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = b1[s1];
-				right = b2[s2];
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java
deleted file mode 100644
index 739e417..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveDoubleBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryAscComparatorFactory INSTANCE = new HiveDoubleBinaryAscComparatorFactory();
-
-	private HiveDoubleBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private double left;
-			private double right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Double.longBitsToDouble(LazyUtils
-						.byteArrayToLong(b1, s1));
-				right = Double.longBitsToDouble(LazyUtils.byteArrayToLong(b2,
-						s2));
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java
deleted file mode 100644
index 0424c9f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveDoubleBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveDoubleBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryDescComparatorFactory INSTANCE = new HiveDoubleBinaryDescComparatorFactory();
-
-	private HiveDoubleBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private double left;
-			private double right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Double.longBitsToDouble(LazyUtils
-						.byteArrayToLong(b1, s1));
-				right = Double.longBitsToDouble(LazyUtils.byteArrayToLong(b2,
-						s2));
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java
deleted file mode 100644
index 08542a7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveFloatBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveFloatBinaryAscComparatorFactory INSTANCE = new HiveFloatBinaryAscComparatorFactory();
-
-	private HiveFloatBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private float left;
-			private float right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b1, s1));
-				right = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b2, s2));
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java
deleted file mode 100644
index 513512e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveFloatBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveFloatBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveFloatBinaryDescComparatorFactory INSTANCE = new HiveFloatBinaryDescComparatorFactory();
-
-	private HiveFloatBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private float left;
-			private float right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b1, s1));
-				right = Float.intBitsToFloat(LazyUtils.byteArrayToInt(b2, s2));
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java
deleted file mode 100644
index 947f30f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveIntegerBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveIntegerBinaryAscComparatorFactory INSTANCE = new HiveIntegerBinaryAscComparatorFactory();
-
-	private HiveIntegerBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt left = new VInt();
-			private VInt right = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, left);
-				LazyUtils.readVInt(b2, s2, right);
-
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + "," + right.length
-									+ " expected " + l1 + "," + l2);
-
-				if (left.value > right.value)
-					return 1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java
deleted file mode 100644
index 7614aa1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveIntegerBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveIntegerBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveIntegerBinaryDescComparatorFactory INSTANCE = new HiveIntegerBinaryDescComparatorFactory();
-
-	private HiveIntegerBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt left = new VInt();
-			private VInt right = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, left);
-				LazyUtils.readVInt(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return -1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java
deleted file mode 100644
index f5f3473..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveLongBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveLongBinaryAscComparatorFactory INSTANCE = new HiveLongBinaryAscComparatorFactory();
-
-	private HiveLongBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VLong left = new VLong();
-			private VLong right = new VLong();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVLong(b1, s1, left);
-				LazyUtils.readVLong(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return 1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java
deleted file mode 100644
index b878b22..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveLongBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveLongBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static final HiveLongBinaryDescComparatorFactory INSTANCE = new HiveLongBinaryDescComparatorFactory();
-
-	private HiveLongBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VLong left = new VLong();
-			private VLong right = new VLong();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVLong(b1, s1, left);
-				LazyUtils.readVLong(b2, s2, right);
-				if (left.length != l1 || right.length != l2)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ left.length + " expected " + l1);
-				if (left.value > right.value)
-					return -1;
-				else if (left.value == right.value)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java
deleted file mode 100644
index 8d55cdb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveShortBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveShortBinaryAscComparatorFactory INSTANCE = new HiveShortBinaryAscComparatorFactory();
-
-	private HiveShortBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private short left;
-			private short right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = LazyUtils.byteArrayToShort(b1, s1);
-				right = LazyUtils.byteArrayToShort(b2, s2);
-				if (left > right)
-					return 1;
-				else if (left == right)
-					return 0;
-				else
-					return -1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java
deleted file mode 100644
index 4e8dde6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveShortBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveShortBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveShortBinaryDescComparatorFactory INSTANCE = new HiveShortBinaryDescComparatorFactory();
-
-	private HiveShortBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private short left;
-			private short right;
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				left = LazyUtils.byteArrayToShort(b1, s1);
-				right = LazyUtils.byteArrayToShort(b2, s2);
-				if (left > right)
-					return -1;
-				else if (left == right)
-					return 0;
-				else
-					return 1;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java
deleted file mode 100644
index a334ecf..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryAscComparatorFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveStringBinaryAscComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStringBinaryAscComparatorFactory INSTANCE = new HiveStringBinaryAscComparatorFactory();
-
-	private HiveStringBinaryAscComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt leftLen = new VInt();
-			private VInt rightLen = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, leftLen);
-				LazyUtils.readVInt(b2, s2, rightLen);
-
-				if (leftLen.value + leftLen.length != l1
-						|| rightLen.value + rightLen.length != l2)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (leftLen.value + leftLen.length) + ", "
-									+ (rightLen.value + rightLen.length)
-									+ " but get " + l1 + ", " + l2);
-
-				return Text.Comparator.compareBytes(b1, s1 + leftLen.length, l1
-						- leftLen.length, b2, s2 + rightLen.length, l2
-						- rightLen.length);
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java
deleted file mode 100644
index e00b58e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/comparator/HiveStringBinaryDescComparatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.comparator;
-
-import org.apache.hadoop.io.WritableComparator;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveStringBinaryDescComparatorFactory implements
-		IBinaryComparatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStringBinaryDescComparatorFactory INSTANCE = new HiveStringBinaryDescComparatorFactory();
-
-	private HiveStringBinaryDescComparatorFactory() {
-	}
-
-	@Override
-	public IBinaryComparator createBinaryComparator() {
-		return new IBinaryComparator() {
-			private VInt leftLen = new VInt();
-			private VInt rightLen = new VInt();
-
-			@Override
-			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
-					int l2) {
-				LazyUtils.readVInt(b1, s1, leftLen);
-				LazyUtils.readVInt(b2, s2, rightLen);
-
-				if (leftLen.value + leftLen.length != l1
-						|| rightLen.value + rightLen.length != l2)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (leftLen.value + leftLen.length) + ", "
-									+ (rightLen.value + rightLen.length)
-									+ " but get " + l1 + ", " + l2);
-
-				return -WritableComparator.compareBytes(b1,
-						s1 + leftLen.length, l1 - leftLen.length, b2, s2
-								+ rightLen.length, l2 - rightLen.length);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java
deleted file mode 100644
index c6078ca..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionFactory.java
+++ /dev/null
@@ -1,381 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.AggregationFunctionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class AggregationFunctionFactory implements
-		ICopyAggregateFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * list of parameters' serialization
-	 */
-	private List<String> parametersSerialization = new ArrayList<String>();
-
-	/**
-	 * the name of the udf
-	 */
-	private String genericUDAFName;
-
-	/**
-	 * aggregation mode
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * list of type info
-	 */
-	private List<TypeInfo> types = new ArrayList<TypeInfo>();
-
-	/**
-	 * distinct or not
-	 */
-	private boolean distinct;
-
-	/**
-	 * the schema of incoming rows
-	 */
-	private Schema rowSchema;
-
-	/**
-	 * list of parameters
-	 */
-	private transient List<ExprNodeDesc> parametersOrigin;
-
-	/**
-	 * row inspector
-	 */
-	private transient ObjectInspector rowInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspectorPartial = null;
-
-	/**
-	 * parameter inspectors
-	 */
-	private transient ObjectInspector[] parameterInspectors = null;
-
-	/**
-	 * expression desc
-	 */
-	private transient HashMap<Long, List<ExprNodeDesc>> parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-	/**
-	 * evaluators
-	 */
-	private transient HashMap<Long, ExprNodeEvaluator[]> evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-	/**
-	 * cached parameter objects
-	 */
-	private transient HashMap<Long, Object[]> cachedParameters = new HashMap<Long, Object[]>();
-
-	/**
-	 * cached row object: one per thread
-	 */
-	private transient HashMap<Long, LazyObject<? extends ObjectInspector>> cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private transient HashMap<Long, SerDe> serDe = new HashMap<Long, SerDe>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * aggregation function desc
-	 */
-	private transient AggregationDesc aggregator;
-
-	/**
-	 * 
-	 * @param aggregator
-	 *            Algebricks function call expression
-	 * @param oi
-	 *            schema
-	 */
-	public AggregationFunctionFactory(
-			AggregateFunctionCallExpression expression, Schema oi,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-
-		try {
-			aggregator = (AggregationDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		init(aggregator.getParameters(), aggregator.getGenericUDAFName(),
-				aggregator.getMode(), aggregator.getDistinct(), oi);
-	}
-
-	/**
-	 * constructor of aggregation function factory
-	 * 
-	 * @param inputs
-	 * @param name
-	 * @param udafMode
-	 * @param distinct
-	 * @param oi
-	 */
-	private void init(List<ExprNodeDesc> inputs, String name,
-			GenericUDAFEvaluator.Mode udafMode, boolean distinct, Schema oi) {
-		parametersOrigin = inputs;
-		genericUDAFName = name;
-		mode = udafMode;
-		this.distinct = distinct;
-		rowSchema = oi;
-
-		for (ExprNodeDesc input : inputs) {
-			TypeInfo type = input.getTypeInfo();
-			if (type instanceof StructTypeInfo) {
-				types.add(TypeInfoFactory.doubleTypeInfo);
-			} else
-				types.add(type);
-
-			String s = Utilities.serializeExpression(input);
-			parametersSerialization.add(s);
-		}
-	}
-
-	@Override
-	public synchronized ICopyAggregateFunction createAggregateFunction(
-			IDataOutputProvider provider) throws AlgebricksException {
-		if (parametersOrigin == null) {
-			Configuration config = new Configuration();
-			config.setClassLoader(this.getClass().getClassLoader());
-			/**
-			 * in case of class.forname(...) call in hive code
-			 */
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-
-			parametersOrigin = new ArrayList<ExprNodeDesc>();
-			for (String serialization : parametersSerialization) {
-				parametersOrigin.add(Utilities.deserializeExpression(
-						serialization, config));
-			}
-		}
-
-		/**
-		 * exprs
-		 */
-		if (parameterExprs == null)
-			parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-		/**
-		 * evaluators
-		 */
-		if (evaluators == null)
-			evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-		/**
-		 * cached parameter objects
-		 */
-		if (cachedParameters == null)
-			cachedParameters = new HashMap<Long, Object[]>();
-
-		/**
-		 * cached row object: one per thread
-		 */
-		if (cachedRowObjects == null)
-			cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		if (serDe == null)
-			serDe = new HashMap<Long, SerDe>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsComplete == null)
-			udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsPartial == null)
-			udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-		if (parameterInspectors == null)
-			parameterInspectors = new ObjectInspector[parametersOrigin.size()];
-
-		if (rowInspector == null)
-			rowInspector = rowSchema.toObjectInspector();
-
-		// get current thread id
-		long threadId = Thread.currentThread().getId();
-
-		/**
-		 * expressions, expressions are thread local
-		 */
-		List<ExprNodeDesc> parameters = parameterExprs.get(threadId);
-		if (parameters == null) {
-			parameters = new ArrayList<ExprNodeDesc>();
-			for (ExprNodeDesc parameter : parametersOrigin)
-				parameters.add(parameter.clone());
-			parameterExprs.put(threadId, parameters);
-		}
-
-		/**
-		 * cached parameter objects
-		 */
-		Object[] cachedParas = cachedParameters.get(threadId);
-		if (cachedParas == null) {
-			cachedParas = new Object[parameters.size()];
-			cachedParameters.put(threadId, cachedParas);
-		}
-
-		/**
-		 * cached row object: one per thread
-		 */
-		LazyObject<? extends ObjectInspector> cachedRowObject = cachedRowObjects
-				.get(threadId);
-		if (cachedRowObject == null) {
-			cachedRowObject = LazyFactory.createLazyObject(rowInspector);
-			cachedRowObjects.put(threadId, cachedRowObject);
-		}
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		SerDe lazySer = serDe.get(threadId);
-		if (lazySer == null) {
-			lazySer = new LazySerDe();
-			serDe.put(threadId, lazySer);
-		}
-
-		/**
-		 * evaluators
-		 */
-		ExprNodeEvaluator[] evals = evaluators.get(threadId);
-		if (evals == null) {
-			evals = new ExprNodeEvaluator[parameters.size()];
-			evaluators.put(threadId, evals);
-		}
-
-		GenericUDAFEvaluator udafPartial;
-		GenericUDAFEvaluator udafComplete;
-
-		// initialize object inspectors
-		try {
-			/**
-			 * evaluators, udf, object inpsectors are shared in one thread
-			 */
-			for (int i = 0; i < evals.length; i++) {
-				if (evals[i] == null) {
-					evals[i] = ExprNodeEvaluatorFactory.get(parameters.get(i));
-					if (parameterInspectors[i] == null) {
-						parameterInspectors[i] = evals[i]
-								.initialize(rowInspector);
-					} else {
-						evals[i].initialize(rowInspector);
-					}
-				}
-			}
-
-			udafComplete = udafsComplete.get(threadId);
-			if (udafComplete == null) {
-				try {
-					udafComplete = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafsComplete.put(threadId, udafComplete);
-				udafComplete.init(mode, parameterInspectors);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspector == null)
-				outputInspector = udafComplete.init(mode, parameterInspectors);
-
-			// initial partial gby udaf
-			GenericUDAFEvaluator.Mode partialMode;
-			// adjust mode for external groupby
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL1;
-			else if (mode == GenericUDAFEvaluator.Mode.FINAL)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else
-				partialMode = mode;
-			udafPartial = udafsPartial.get(threadId);
-			if (udafPartial == null) {
-				try {
-					udafPartial = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafPartial.init(partialMode, parameterInspectors);
-				udafsPartial.put(threadId, udafPartial);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspectorPartial == null)
-				outputInspectorPartial = udafPartial.init(partialMode,
-						parameterInspectors);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e);
-		}
-
-		return new AggregationFunctionEvaluator(parameters, types,
-				genericUDAFName, mode, distinct, rowInspector,
-				provider.getDataOutput(), evals, parameterInspectors,
-				cachedParas, lazySer, cachedRowObject, udafPartial,
-				udafComplete, outputInspector, outputInspectorPartial);
-	}
-
-	public String toString() {
-		return "aggregation function expression evaluator factory: "
-				+ this.genericUDAFName;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java
deleted file mode 100644
index 73717a3..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/AggregationFunctionSerializableFactory.java
+++ /dev/null
@@ -1,381 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
-import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory;
-import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.AggregatuibFunctionSerializableEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.serde.lazy.LazyFactory;
-import edu.uci.ics.hivesterix.serde.lazy.LazyObject;
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-
-public class AggregationFunctionSerializableFactory implements
-		ICopySerializableAggregateFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * list of parameters' serialization
-	 */
-	private List<String> parametersSerialization = new ArrayList<String>();
-
-	/**
-	 * the name of the udf
-	 */
-	private String genericUDAFName;
-
-	/**
-	 * aggregation mode
-	 */
-	private GenericUDAFEvaluator.Mode mode;
-
-	/**
-	 * list of type info
-	 */
-	private List<TypeInfo> types = new ArrayList<TypeInfo>();
-
-	/**
-	 * distinct or not
-	 */
-	private boolean distinct;
-
-	/**
-	 * the schema of incoming rows
-	 */
-	private Schema rowSchema;
-
-	/**
-	 * list of parameters
-	 */
-	private transient List<ExprNodeDesc> parametersOrigin;
-
-	/**
-	 * row inspector
-	 */
-	private transient ObjectInspector rowInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspector = null;
-
-	/**
-	 * output object inspector
-	 */
-	private transient ObjectInspector outputInspectorPartial = null;
-
-	/**
-	 * parameter inspectors
-	 */
-	private transient ObjectInspector[] parameterInspectors = null;
-
-	/**
-	 * expression desc
-	 */
-	private transient HashMap<Long, List<ExprNodeDesc>> parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-	/**
-	 * evaluators
-	 */
-	private transient HashMap<Long, ExprNodeEvaluator[]> evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-	/**
-	 * cached parameter objects
-	 */
-	private transient HashMap<Long, Object[]> cachedParameters = new HashMap<Long, Object[]>();
-
-	/**
-	 * cached row object: one per thread
-	 */
-	private transient HashMap<Long, LazyObject<? extends ObjectInspector>> cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-	/**
-	 * we only use lazy serde to do serialization
-	 */
-	private transient HashMap<Long, SerDe> serDe = new HashMap<Long, SerDe>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * udaf evaluators
-	 */
-	private transient HashMap<Long, GenericUDAFEvaluator> udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-	/**
-	 * aggregation function desc
-	 */
-	private transient AggregationDesc aggregator;
-
-	/**
-	 * 
-	 * @param aggregator
-	 *            Algebricks function call expression
-	 * @param oi
-	 *            schema
-	 */
-	public AggregationFunctionSerializableFactory(
-			AggregateFunctionCallExpression expression, Schema oi,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-
-		try {
-			aggregator = (AggregationDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		init(aggregator.getParameters(), aggregator.getGenericUDAFName(),
-				aggregator.getMode(), aggregator.getDistinct(), oi);
-	}
-
-	/**
-	 * constructor of aggregation function factory
-	 * 
-	 * @param inputs
-	 * @param name
-	 * @param udafMode
-	 * @param distinct
-	 * @param oi
-	 */
-	private void init(List<ExprNodeDesc> inputs, String name,
-			GenericUDAFEvaluator.Mode udafMode, boolean distinct, Schema oi) {
-		parametersOrigin = inputs;
-		genericUDAFName = name;
-		mode = udafMode;
-		this.distinct = distinct;
-		rowSchema = oi;
-
-		for (ExprNodeDesc input : inputs) {
-			TypeInfo type = input.getTypeInfo();
-			if (type instanceof StructTypeInfo) {
-				types.add(TypeInfoFactory.doubleTypeInfo);
-			} else
-				types.add(type);
-
-			String s = Utilities.serializeExpression(input);
-			parametersSerialization.add(s);
-		}
-	}
-
-	@Override
-	public synchronized ICopySerializableAggregateFunction createAggregateFunction()
-			throws AlgebricksException {
-		if (parametersOrigin == null) {
-			Configuration config = new Configuration();
-			config.setClassLoader(this.getClass().getClassLoader());
-			/**
-			 * in case of class.forname(...) call in hive code
-			 */
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-
-			parametersOrigin = new ArrayList<ExprNodeDesc>();
-			for (String serialization : parametersSerialization) {
-				parametersOrigin.add(Utilities.deserializeExpression(
-						serialization, config));
-			}
-		}
-
-		/**
-		 * exprs
-		 */
-		if (parameterExprs == null)
-			parameterExprs = new HashMap<Long, List<ExprNodeDesc>>();
-
-		/**
-		 * evaluators
-		 */
-		if (evaluators == null)
-			evaluators = new HashMap<Long, ExprNodeEvaluator[]>();
-
-		/**
-		 * cached parameter objects
-		 */
-		if (cachedParameters == null)
-			cachedParameters = new HashMap<Long, Object[]>();
-
-		/**
-		 * cached row object: one per thread
-		 */
-		if (cachedRowObjects == null)
-			cachedRowObjects = new HashMap<Long, LazyObject<? extends ObjectInspector>>();
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		if (serDe == null)
-			serDe = new HashMap<Long, SerDe>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsComplete == null)
-			udafsComplete = new HashMap<Long, GenericUDAFEvaluator>();
-
-		/**
-		 * UDAF functions
-		 */
-		if (udafsPartial == null)
-			udafsPartial = new HashMap<Long, GenericUDAFEvaluator>();
-
-		if (parameterInspectors == null)
-			parameterInspectors = new ObjectInspector[parametersOrigin.size()];
-
-		if (rowInspector == null)
-			rowInspector = rowSchema.toObjectInspector();
-
-		// get current thread id
-		long threadId = Thread.currentThread().getId();
-
-		/**
-		 * expressions, expressions are thread local
-		 */
-		List<ExprNodeDesc> parameters = parameterExprs.get(threadId);
-		if (parameters == null) {
-			parameters = new ArrayList<ExprNodeDesc>();
-			for (ExprNodeDesc parameter : parametersOrigin)
-				parameters.add(parameter.clone());
-			parameterExprs.put(threadId, parameters);
-		}
-
-		/**
-		 * cached parameter objects
-		 */
-		Object[] cachedParas = cachedParameters.get(threadId);
-		if (cachedParas == null) {
-			cachedParas = new Object[parameters.size()];
-			cachedParameters.put(threadId, cachedParas);
-		}
-
-		/**
-		 * cached row object: one per thread
-		 */
-		LazyObject<? extends ObjectInspector> cachedRowObject = cachedRowObjects
-				.get(threadId);
-		if (cachedRowObject == null) {
-			cachedRowObject = LazyFactory.createLazyObject(rowInspector);
-			cachedRowObjects.put(threadId, cachedRowObject);
-		}
-
-		/**
-		 * we only use lazy serde to do serialization
-		 */
-		SerDe lazySer = serDe.get(threadId);
-		if (lazySer == null) {
-			lazySer = new LazySerDe();
-			serDe.put(threadId, lazySer);
-		}
-
-		/**
-		 * evaluators
-		 */
-		ExprNodeEvaluator[] evals = evaluators.get(threadId);
-		if (evals == null) {
-			evals = new ExprNodeEvaluator[parameters.size()];
-			evaluators.put(threadId, evals);
-		}
-
-		GenericUDAFEvaluator udafPartial;
-		GenericUDAFEvaluator udafComplete;
-
-		// initialize object inspectors
-		try {
-			/**
-			 * evaluators, udf, object inpsectors are shared in one thread
-			 */
-			for (int i = 0; i < evals.length; i++) {
-				if (evals[i] == null) {
-					evals[i] = ExprNodeEvaluatorFactory.get(parameters.get(i));
-					if (parameterInspectors[i] == null) {
-						parameterInspectors[i] = evals[i]
-								.initialize(rowInspector);
-					} else {
-						evals[i].initialize(rowInspector);
-					}
-				}
-			}
-
-			udafComplete = udafsComplete.get(threadId);
-			if (udafComplete == null) {
-				try {
-					udafComplete = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafsComplete.put(threadId, udafComplete);
-				udafComplete.init(mode, parameterInspectors);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspector == null)
-				outputInspector = udafComplete.init(mode, parameterInspectors);
-
-			// initial partial gby udaf
-			GenericUDAFEvaluator.Mode partialMode;
-			// adjust mode for external groupby
-			if (mode == GenericUDAFEvaluator.Mode.COMPLETE)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL1;
-			else if (mode == GenericUDAFEvaluator.Mode.FINAL)
-				partialMode = GenericUDAFEvaluator.Mode.PARTIAL2;
-			else
-				partialMode = mode;
-			udafPartial = udafsPartial.get(threadId);
-			if (udafPartial == null) {
-				try {
-					udafPartial = FunctionRegistry.getGenericUDAFEvaluator(
-							genericUDAFName, types, distinct, false);
-				} catch (HiveException e) {
-					throw new AlgebricksException(e);
-				}
-				udafPartial.init(partialMode, parameterInspectors);
-				udafsPartial.put(threadId, udafPartial);
-			}
-
-			// multiple stage group by, determined by the mode parameter
-			if (outputInspectorPartial == null)
-				outputInspectorPartial = udafPartial.init(partialMode,
-						parameterInspectors);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e);
-		}
-
-		return new AggregatuibFunctionSerializableEvaluator(parameters, types,
-				genericUDAFName, mode, distinct, rowInspector, evals,
-				parameterInspectors, cachedParas, lazySer, cachedRowObject,
-				udafPartial, udafComplete, outputInspector,
-				outputInspectorPartial);
-	}
-
-	public String toString() {
-		return "aggregation function expression evaluator factory: "
-				+ this.genericUDAFName;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java
deleted file mode 100644
index 68bf408..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ColumnExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ColumnExpressionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ColumnExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeColumnDesc expr;
-
-	private Schema inputSchema;
-
-	public ColumnExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeColumnDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new ColumnExpressionEvaluator(expr,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "column expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java
deleted file mode 100644
index e0241a1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ConstantExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ConstantExpressionEvaluator;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ConstantExpressionEvaluatorFactory implements
-		ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeConstantDesc expr;
-
-	private Schema schema;
-
-	public ConstantExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema inputSchema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeConstantDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		schema = inputSchema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new ConstantExpressionEvaluator(expr,
-				schema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "constant expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java
deleted file mode 100644
index 4b5f906..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/FieldExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.FieldExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class FieldExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeFieldDesc expr;
-
-	private Schema inputSchema;
-
-	public FieldExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeFieldDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new FieldExpressionEvaluator(expr,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	public String toString() {
-		return "field access expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java
deleted file mode 100644
index 387ca72..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/HiveExpressionRuntimeProvider.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-
-import edu.uci.ics.hivesterix.logical.expression.ExpressionConstant;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression.FunctionKind;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionRuntimeProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.AggregateFunctionFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.ScalarEvaluatorFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.UnnestingFunctionFactoryAdapter;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
-
-public class HiveExpressionRuntimeProvider implements
-		IExpressionRuntimeProvider {
-
-	public static final IExpressionRuntimeProvider INSTANCE = new HiveExpressionRuntimeProvider();
-
-	@Override
-	public IAggregateEvaluatorFactory createAggregateFunctionFactory(
-			AggregateFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new AggregateFunctionFactoryAdapter(
-				new AggregationFunctionFactory(expr, schema, env));
-	}
-
-	@Override
-	public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
-			AggregateFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new AggregationFunctionSerializableFactory(expr, schema, env);
-	}
-
-	@Override
-	public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(
-			StatefulFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		return null;
-	}
-
-	@Override
-	public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(
-			UnnestingFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new UnnestingFunctionFactoryAdapter(
-				new UnnestingFunctionFactory(expr, schema, env));
-	}
-
-	public IScalarEvaluatorFactory createEvaluatorFactory(
-			ILogicalExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		switch (expr.getExpressionTag()) {
-		case VARIABLE: {
-			VariableReferenceExpression v = (VariableReferenceExpression) expr;
-			return new ScalarEvaluatorFactoryAdapter(
-					createVariableEvaluatorFactory(v, env, inputSchemas,
-							context));
-		}
-		case CONSTANT: {
-			ConstantExpression c = (ConstantExpression) expr;
-			return new ScalarEvaluatorFactoryAdapter(
-					createConstantEvaluatorFactory(c, env, inputSchemas,
-							context));
-		}
-		case FUNCTION_CALL: {
-			AbstractFunctionCallExpression fun = (AbstractFunctionCallExpression) expr;
-			FunctionIdentifier fid = fun.getFunctionIdentifier();
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				return new ScalarEvaluatorFactoryAdapter(
-						createFieldExpressionEvaluatorFactory(fun, env,
-								inputSchemas, context));
-			}
-
-			if (fid.getName().equals(ExpressionConstant.FIELDACCESS)) {
-				return new ScalarEvaluatorFactoryAdapter(
-						createNullExpressionEvaluatorFactory(fun, env,
-								inputSchemas, context));
-			}
-
-			if (fun.getKind() == FunctionKind.SCALAR) {
-				ScalarFunctionCallExpression scalar = (ScalarFunctionCallExpression) fun;
-				return new ScalarEvaluatorFactoryAdapter(
-						createScalarFunctionEvaluatorFactory(scalar, env,
-								inputSchemas, context));
-			} else {
-				throw new AlgebricksException(
-						"Cannot create evaluator for function " + fun
-								+ " of kind " + fun.getKind());
-			}
-		}
-		default: {
-			throw new IllegalStateException();
-		}
-		}
-	}
-
-	private ICopyEvaluatorFactory createVariableEvaluatorFactory(
-			VariableReferenceExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new ColumnExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createScalarFunctionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		List<String> names = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		for (IOperatorSchema inputSchema : inputSchemas) {
-			Schema schema = this.getSchema(inputSchema, env);
-			names.addAll(schema.getNames());
-			types.addAll(schema.getTypes());
-		}
-		Schema inputSchema = new Schema(names, types);
-		return new ScalarFunctionExpressionEvaluatorFactory(expr, inputSchema,
-				env);
-	}
-
-	private ICopyEvaluatorFactory createFieldExpressionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new FieldExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createNullExpressionEvaluatorFactory(
-			AbstractFunctionCallExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new NullExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private ICopyEvaluatorFactory createConstantEvaluatorFactory(
-			ConstantExpression expr, IVariableTypeEnvironment env,
-			IOperatorSchema[] inputSchemas, JobGenContext context)
-			throws AlgebricksException {
-		Schema schema = this.getSchema(inputSchemas[0], env);
-		return new ConstantExpressionEvaluatorFactory(expr, schema, env);
-	}
-
-	private Schema getSchema(IOperatorSchema inputSchema,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		List<String> names = new ArrayList<String>();
-		List<TypeInfo> types = new ArrayList<TypeInfo>();
-		Iterator<LogicalVariable> variables = inputSchema.iterator();
-		while (variables.hasNext()) {
-			LogicalVariable var = variables.next();
-			names.add(var.toString());
-			types.add((TypeInfo) env.getVarType(var));
-		}
-
-		Schema schema = new Schema(names, types);
-		return schema;
-	}
-
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java
deleted file mode 100644
index 8f516e8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/NullExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.NullExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class NullExpressionEvaluatorFactory implements ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private ExprNodeNullDesc expr;
-
-	private Schema schema;
-
-	public NullExpressionEvaluatorFactory(ILogicalExpression expression,
-			Schema intputSchema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (ExprNodeNullDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		schema = intputSchema;
-	}
-
-	public ICopyEvaluator createEvaluator(IDataOutputProvider output)
-			throws AlgebricksException {
-		return new NullExpressionEvaluator(expr, schema.toObjectInspector(),
-				output);
-	}
-
-	public String toString() {
-		return "null expression evaluator factory: " + expr.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java
deleted file mode 100644
index 262758e..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/ScalarFunctionExpressionEvaluatorFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.FunctionExpressionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class ScalarFunctionExpressionEvaluatorFactory implements
-		ICopyEvaluatorFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private transient ExprNodeGenericFuncDesc expr;
-
-	private String exprSerialization;
-
-	private Schema inputSchema;
-
-	private transient Configuration config;
-
-	public ScalarFunctionExpressionEvaluatorFactory(
-			ILogicalExpression expression, Schema schema,
-			IVariableTypeEnvironment env) throws AlgebricksException {
-		try {
-			expr = (ExprNodeGenericFuncDesc) ExpressionTranslator
-					.getHiveExpression(expression, env);
-
-			exprSerialization = Utilities.serializeExpression(expr);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	public synchronized ICopyEvaluator createEvaluator(
-			IDataOutputProvider output) throws AlgebricksException {
-		if (expr == null) {
-			configClassLoader();
-			expr = (ExprNodeGenericFuncDesc) Utilities.deserializeExpression(
-					exprSerialization, config);
-		}
-
-		ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) expr
-				.clone();
-		return new FunctionExpressionEvaluator(funcDesc,
-				inputSchema.toObjectInspector(), output);
-	}
-
-	private void configClassLoader() {
-		config = new Configuration();
-		ClassLoader loader = this.getClass().getClassLoader();
-		config.setClassLoader(loader);
-		Thread.currentThread().setContextClassLoader(loader);
-	}
-
-	public String toString() {
-		if (expr == null) {
-			configClassLoader();
-			expr = (ExprNodeGenericFuncDesc) Utilities.deserializeExpression(
-					exprSerialization, new Configuration());
-		}
-
-		return "function expression evaluator factory: " + expr.getExprString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java
deleted file mode 100644
index 1d77737..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/evaluator/UnnestingFunctionFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.evaluator;
-
-import org.apache.hadoop.hive.ql.plan.UDTFDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.evaluator.ExpressionTranslator;
-import edu.uci.ics.hivesterix.runtime.evaluator.UDTFFunctionEvaluator;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunction;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
-import edu.uci.ics.hyracks.data.std.api.IDataOutputProvider;
-
-public class UnnestingFunctionFactory implements ICopyUnnestingFunctionFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private UDTFDesc expr;
-
-	private Schema inputSchema;
-
-	private int[] columns;
-
-	public UnnestingFunctionFactory(ILogicalExpression expression,
-			Schema schema, IVariableTypeEnvironment env)
-			throws AlgebricksException {
-		try {
-			expr = (UDTFDesc) ExpressionTranslator.getHiveExpression(
-					expression, env);
-		} catch (Exception e) {
-			throw new AlgebricksException(e.getMessage());
-		}
-		inputSchema = schema;
-	}
-
-	@Override
-	public ICopyUnnestingFunction createUnnestingFunction(
-			IDataOutputProvider provider) throws AlgebricksException {
-		return new UDTFFunctionEvaluator(expr, inputSchema, columns,
-				provider.getDataOutput());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java
deleted file mode 100644
index fc302e1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveDoubleBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveDoubleBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveDoubleBinaryHashFunctionFactory INSTANCE = new HiveDoubleBinaryHashFunctionFactory();
-
-	private HiveDoubleBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-		// TODO Auto-generated method stub
-		return new IBinaryHashFunction() {
-			private Double value;
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				value = Double.longBitsToDouble(LazyUtils.byteArrayToLong(
-						bytes, offset));
-				return value.hashCode();
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java
deleted file mode 100644
index e1a9994..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveIntegerBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveIntegerBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveIntegerBinaryHashFunctionFactory();
-
-	private HiveIntegerBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-			private VInt value = new VInt();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVInt(bytes, offset, value);
-				if (value.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int hash function actual: "
-									+ length + " expected " + value.length);
-				return value.value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java
deleted file mode 100644
index 6f7c6f2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveLongBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveLongBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveLongBinaryHashFunctionFactory();
-
-	private HiveLongBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-			private VLong value = new VLong();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVLong(bytes, offset, value);
-				return (int) value.value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java
deleted file mode 100644
index e03dde0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveRawBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveRawBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static IBinaryHashFunctionFactory INSTANCE = new HiveRawBinaryHashFunctionFactory();
-
-	private HiveRawBinaryHashFunctionFactory() {
-
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-
-		return new IBinaryHashFunction() {
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				int value = 1;
-				int end = offset + length;
-				for (int i = offset; i < end; i++)
-					value = value * 31 + (int) bytes[i];
-				return value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java
deleted file mode 100644
index 055c077..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/HiveStingBinaryHashFunctionFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveStingBinaryHashFunctionFactory implements
-		IBinaryHashFunctionFactory {
-	private static final long serialVersionUID = 1L;
-
-	public static HiveStingBinaryHashFunctionFactory INSTANCE = new HiveStingBinaryHashFunctionFactory();
-
-	private HiveStingBinaryHashFunctionFactory() {
-	}
-
-	@Override
-	public IBinaryHashFunction createBinaryHashFunction() {
-		// TODO Auto-generated method stub
-		return new IBinaryHashFunction() {
-			private VInt len = new VInt();
-
-			@Override
-			public int hash(byte[] bytes, int offset, int length) {
-				LazyUtils.readVInt(bytes, offset, len);
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				return hashBytes(bytes, offset + len.length, length
-						- len.length);
-			}
-
-			public int hashBytes(byte[] bytes, int offset, int length) {
-				int value = 1;
-				int end = offset + length;
-				for (int i = offset; i < end; i++)
-					value = value * 31 + (int) bytes[i];
-				return value;
-			}
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java
deleted file mode 100644
index 760a614..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/hashfunction/MurmurHash3BinaryHashFunctionFamily.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.hashfunction;
-
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunction;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
-
-public class MurmurHash3BinaryHashFunctionFamily implements IBinaryHashFunctionFamily {
-
-    public static final IBinaryHashFunctionFamily INSTANCE = new MurmurHash3BinaryHashFunctionFamily();
-
-    private static final long serialVersionUID = 1L;
-
-    private MurmurHash3BinaryHashFunctionFamily() {
-    }
-
-    private static final int C1 = 0xcc9e2d51;
-    private static final int C2 = 0x1b873593;
-    private static final int C3 = 5;
-    private static final int C4 = 0xe6546b64;
-    private static final int C5 = 0x85ebca6b;
-    private static final int C6 = 0xc2b2ae35;
-
-    @Override
-    public IBinaryHashFunction createBinaryHashFunction(final int seed) {
-        return new IBinaryHashFunction() {
-            @Override
-            public int hash(byte[] bytes, int offset, int length) {
-                int h = seed;
-                int p = offset;
-                int remain = length;
-                while (remain >= 4) {
-                    int k = (bytes[p] & 0xff) | ((bytes[p + 1] & 0xff) << 8) | ((bytes[p + 2] & 0xff) << 16)
-                            | ((bytes[p + 3] & 0xff) << 24);
-                    k *= C1;
-                    k = Integer.rotateLeft(k, 15);
-                    k *= C2;
-                    h ^= k;
-                    h = Integer.rotateLeft(h, 13);
-                    h = h * C3 + C4;
-                    p += 4;
-                    remain -= 4;
-                }
-                if (remain > 0) {
-                    int k = 0;
-                    for (int i = 0; remain > 0; i += 8) {
-                        k ^= (bytes[p++] & 0xff) << i;
-                        remain--;
-                    }
-                    k *= C1;
-                    k = Integer.rotateLeft(k, 15);
-                    k *= C2;
-                    h ^= k;
-                }
-                h ^= length;
-                h ^= (h >>> 16);
-                h *= C5;
-                h ^= (h >>> 13);
-                h *= C6;
-                h ^= (h >>> 16);
-                return h;
-            }
-        };
-    }
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 5f03962..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveDoubleAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int header = LazyUtils.byteArrayToInt(bytes, start);
-				long unsignedValue = (long) header;
-				return (int) ((unsignedValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index e4587a2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveDoubleDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveDoubleDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-	private final INormalizedKeyComputerFactory ascNormalizedKeyComputerFactory = new HiveDoubleAscNormalizedKeyComputerFactory();
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private INormalizedKeyComputer nmkComputer = ascNormalizedKeyComputerFactory
-					.createNormalizedKeyComputer();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int nk = nmkComputer.normalize(bytes, start, length);
-				return (int) ((long) Integer.MAX_VALUE - (long) (nk - Integer.MIN_VALUE));
-			}
-
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 2ff390a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveIntegerAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt vint = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, vint);
-				if (vint.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vint.length + " expected " + length);
-				long unsignedValue = (long) vint.value;
-				return (int) ((unsignedValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index 8eff1f8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveIntegerDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveIntegerDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt vint = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, vint);
-				if (vint.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vint.length + " expected " + length);
-				long unsignedValue = (long) vint.value;
-				return (int) ((long) 0xffffffff - unsignedValue);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index 768eec2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveLongAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private static final int POSTIVE_LONG_MASK = (3 << 30);
-			private static final int NON_NEGATIVE_INT_MASK = (2 << 30);
-			private static final int NEGATIVE_LONG_MASK = (0 << 30);
-			private VLong vlong = new VLong();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVLong(bytes, start, vlong);
-				if (vlong.length != length)
-					throw new IllegalArgumentException(
-							"length mismatch in int comparator function actual: "
-									+ vlong.length + " expected " + length);
-				long value = (long) vlong.value;
-				int highValue = (int) (value >> 32);
-				if (highValue > 0) {
-					/**
-					 * larger than Integer.MAX
-					 */
-					int highNmk = getKey(highValue);
-					highNmk >>= 2;
-					highNmk |= POSTIVE_LONG_MASK;
-					return highNmk;
-				} else if (highValue == 0) {
-					/**
-					 * smaller than Integer.MAX but >=0
-					 */
-					int lowNmk = (int) value;
-					lowNmk >>= 2;
-					lowNmk |= NON_NEGATIVE_INT_MASK;
-					return lowNmk;
-				} else {
-					/**
-					 * less than 0; TODO: have not optimized for that
-					 */
-					int highNmk = getKey(highValue);
-					highNmk >>= 2;
-					highNmk |= NEGATIVE_LONG_MASK;
-					return highNmk;
-				}
-			}
-
-			private int getKey(int value) {
-				long unsignedFirstValue = (long) value;
-				int nmk = (int) ((unsignedFirstValue - ((long) Integer.MIN_VALUE)) & 0xffffffffL);
-				return nmk;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index 20ae56a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveLongDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveLongDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-	private final INormalizedKeyComputerFactory ascNormalizedKeyComputerFactory = new HiveIntegerAscNormalizedKeyComputerFactory();
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private INormalizedKeyComputer nmkComputer = ascNormalizedKeyComputerFactory
-					.createNormalizedKeyComputer();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				int nk = nmkComputer.normalize(bytes, start, length);
-				return (int) ((long) Integer.MAX_VALUE - (long) (nk - Integer.MIN_VALUE));
-			}
-
-		};
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java
deleted file mode 100644
index b16ccba..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringAscNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
-public class HiveStringAscNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-
-		return new INormalizedKeyComputer() {
-			private VInt len = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, len);
-
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				int nk = 0;
-				int offset = start + len.length;
-				for (int i = 0; i < 2; ++i) {
-					nk <<= 16;
-					if (i < len.value) {
-						char character = UTF8StringPointable.charAt(bytes,
-								offset);
-						nk += ((int) character) & 0xffff;
-						offset += UTF8StringPointable.charSize(bytes, offset);
-					}
-				}
-				return nk;
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java
deleted file mode 100644
index e8978c6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/normalize/HiveStringDescNormalizedKeyComputerFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.normalize;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
-
-public class HiveStringDescNormalizedKeyComputerFactory implements
-		INormalizedKeyComputerFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public INormalizedKeyComputer createNormalizedKeyComputer() {
-		return new INormalizedKeyComputer() {
-			private VInt len = new VInt();
-
-			@Override
-			public int normalize(byte[] bytes, int start, int length) {
-				LazyUtils.readVInt(bytes, start, len);
-				if (len.value + len.length != length)
-					throw new IllegalStateException(
-							"parse string: length mismatch, expected "
-									+ (len.value + len.length) + " but get "
-									+ length);
-				int nk = 0;
-				int offset = start + len.length;
-				for (int i = 0; i < 2; ++i) {
-					nk <<= 16;
-					if (i < len.value) {
-						nk += ((int) UTF8StringPointable.charAt(bytes, offset)) & 0xffff;
-						offset += UTF8StringPointable.charSize(bytes, offset);
-					}
-				}
-				return (int) ((long) 0xffffffff - (long) nk);
-			}
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java
deleted file mode 100644
index 91d08c6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/factory/nullwriter/HiveNullWriterFactory.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.factory.nullwriter;
-
-import java.io.DataOutput;
-
-import edu.uci.ics.hyracks.api.dataflow.value.INullWriter;
-import edu.uci.ics.hyracks.api.dataflow.value.INullWriterFactory;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-
-public class HiveNullWriterFactory implements INullWriterFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	public static HiveNullWriterFactory INSTANCE = new HiveNullWriterFactory();
-
-	@Override
-	public INullWriter createNullWriter() {
-		return new HiveNullWriter();
-	}
-}
-
-class HiveNullWriter implements INullWriter {
-
-	@Override
-	public void writeNull(DataOutput out) throws HyracksDataException {
-		// do nothing
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java
deleted file mode 100644
index 3d2b141..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspector.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspector;
-
-public class HiveBinaryBooleanInspector implements IBinaryBooleanInspector {
-
-	HiveBinaryBooleanInspector() {
-	}
-
-	@Override
-	public boolean getBooleanValue(byte[] bytes, int offset, int length) {
-		if (length == 0)
-			return false;
-		if (length != 1)
-			throw new IllegalStateException("boolean field error: with length "
-					+ length);
-		return bytes[0] == 1;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java
deleted file mode 100644
index 86afbee..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryBooleanInspectorFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspector;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspectorFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-
-public class HiveBinaryBooleanInspectorFactory implements
-		IBinaryBooleanInspectorFactory {
-	private static final long serialVersionUID = 1L;
-	public static HiveBinaryBooleanInspectorFactory INSTANCE = new HiveBinaryBooleanInspectorFactory();
-
-	private HiveBinaryBooleanInspectorFactory() {
-
-	}
-
-	@Override
-	public IBinaryBooleanInspector createBinaryBooleanInspector(
-			IHyracksTaskContext arg0) {
-		return new HiveBinaryBooleanInspector();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java
deleted file mode 100644
index e82e501..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspector.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspector;
-
-public class HiveBinaryIntegerInspector implements IBinaryIntegerInspector {
-	private VInt value = new VInt();
-
-	HiveBinaryIntegerInspector() {
-	}
-
-	@Override
-	public int getIntegerValue(byte[] bytes, int offset, int length) {
-		LazyUtils.readVInt(bytes, offset, value);
-		if (value.length != length)
-			throw new IllegalArgumentException(
-					"length mismatch in int hash function actual: " + length
-							+ " expected " + value.length);
-		return value.value;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java
deleted file mode 100644
index b44e610..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/inspector/HiveBinaryIntegerInspectorFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.inspector;
-
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspector;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspectorFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-
-public class HiveBinaryIntegerInspectorFactory implements
-		IBinaryIntegerInspectorFactory {
-	private static final long serialVersionUID = 1L;
-	public static HiveBinaryIntegerInspectorFactory INSTANCE = new HiveBinaryIntegerInspectorFactory();
-
-	private HiveBinaryIntegerInspectorFactory() {
-
-	}
-
-	@Override
-	public IBinaryIntegerInspector createBinaryIntegerInspector(
-			IHyracksTaskContext arg0) {
-		return new HiveBinaryIntegerInspector();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java
deleted file mode 100644
index 8f559e2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveConnectorPolicyAssignmentPolicy.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.api.dataflow.IConnectorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.connectors.IConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.IConnectorPolicyAssignmentPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.PipeliningConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedBlockingConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedPipeliningConnectorPolicy;
-import edu.uci.ics.hyracks.api.dataflow.connectors.SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy;
-import edu.uci.ics.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
-import edu.uci.ics.hyracks.dataflow.std.connectors.MToNPartitioningMergingConnectorDescriptor;
-
-public class HiveConnectorPolicyAssignmentPolicy implements
-		IConnectorPolicyAssignmentPolicy {
-	public enum Policy {
-		PIPELINING, SEND_SIDE_MAT_PIPELINING, SEND_SIDE_MAT_BLOCKING, SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING;
-	};
-
-	private static final long serialVersionUID = 1L;
-
-	private final IConnectorPolicy pipeliningPolicy = new PipeliningConnectorPolicy();
-	private final IConnectorPolicy sendSideMatPipeliningPolicy = new SendSideMaterializedPipeliningConnectorPolicy();
-	private final IConnectorPolicy sendSideMatBlockingPolicy = new SendSideMaterializedBlockingConnectorPolicy();
-	private final IConnectorPolicy sendSideMatReceiveSideMatBlockingPolicy = new SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy();
-	private final Policy policy;
-
-	public HiveConnectorPolicyAssignmentPolicy(Policy policy) {
-		this.policy = policy;
-	}
-
-	@Override
-	public IConnectorPolicy getConnectorPolicyAssignment(
-			IConnectorDescriptor c, int nProducers, int nConsumers,
-			int[] fanouts) {
-		if (c instanceof MToNPartitioningMergingConnectorDescriptor) {
-			// avoid deadlocks
-			switch (policy) {
-			case PIPELINING:
-			case SEND_SIDE_MAT_PIPELINING:
-				return sendSideMatPipeliningPolicy;
-			case SEND_SIDE_MAT_BLOCKING:
-				return sendSideMatBlockingPolicy;
-			case SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING:
-				return sendSideMatReceiveSideMatBlockingPolicy;
-			default:
-				return sendSideMatPipeliningPolicy;
-			}
-		} else if (c instanceof MToNPartitioningConnectorDescriptor) {
-			// support different repartitioning policies
-			switch (policy) {
-			case PIPELINING:
-				return pipeliningPolicy;
-			case SEND_SIDE_MAT_PIPELINING:
-				return sendSideMatPipeliningPolicy;
-			case SEND_SIDE_MAT_BLOCKING:
-				return sendSideMatBlockingPolicy;
-			case SEND_SIDE_MAT_RECEIVE_SIDE_MAT_BLOCKING:
-				return sendSideMatReceiveSideMatBlockingPolicy;
-			default:
-				return pipeliningPolicy;
-			}
-		} else {
-			// pipelining for other connectors
-			return pipeliningPolicy;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java
deleted file mode 100644
index e4fbca5..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSink.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
-
-public class HiveDataSink implements IDataSink {
-
-	private Object[] schema;
-
-	private Object fsOperator;
-
-	public HiveDataSink(Object sink, Object[] sourceSchema) {
-		schema = sourceSchema;
-		fsOperator = sink;
-	}
-
-	@Override
-	public Object getId() {
-		return fsOperator;
-	}
-
-	@Override
-	public Object[] getSchemaTypes() {
-		return schema;
-	}
-
-	public IPartitioningProperty getPartitioningProperty() {
-		return new RandomPartitioningProperty(new HiveDomain());
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java
deleted file mode 100644
index edff056..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSource.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
-
-public class HiveDataSource<P> implements IDataSource<P> {
-
-	private P source;
-
-	private Object[] schema;
-
-	public HiveDataSource(P dataSource, Object[] sourceSchema) {
-		source = dataSource;
-		schema = sourceSchema;
-	}
-
-	@Override
-	public P getId() {
-		return source;
-	}
-
-	@Override
-	public Object[] getSchemaTypes() {
-		return schema;
-	}
-
-	@Override
-	public void computeFDs(List<LogicalVariable> scanVariables,
-			List<FunctionalDependency> fdList) {
-	}
-
-	@Override
-	public IDataSourcePropertiesProvider getPropertiesProvider() {
-		return new HiveDataSourcePartitioningProvider();
-	}
-
-	@Override
-	public String toString() {
-		PartitionDesc desc = (PartitionDesc) source;
-		return desc.getTableName();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java
deleted file mode 100644
index 08dd684..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDataSourcePartitioningProvider.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
-
-public class HiveDataSourcePartitioningProvider implements
-		IDataSourcePropertiesProvider {
-
-	@Override
-	public IPhysicalPropertiesVector computePropertiesVector(
-			List<LogicalVariable> scanVariables) {
-		IPartitioningProperty property = new RandomPartitioningProperty(
-				new HiveDomain());
-		IPhysicalPropertiesVector vector = new StructuralPropertiesVector(
-				property, new LinkedList<ILocalStructuralProperty>());
-		return vector;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java
deleted file mode 100644
index 0af253a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveDomain.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.properties.INodeDomain;
-
-public class HiveDomain implements INodeDomain {
-
-	@Override
-	public boolean sameAs(INodeDomain domain) {
-		return true;
-	}
-
-	@Override
-	public Integer cardinality() {
-		return 0;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
deleted file mode 100644
index 6948769..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveMetaDataProvider.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-
-import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo;
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-
-@SuppressWarnings("rawtypes")
-public class HiveMetaDataProvider<S, T> implements IMetadataProvider<S, T> {
-
-    private Operator fileSink;
-    private Schema outputSchema;
-    private HashMap<S, IDataSource<S>> dataSourceMap;
-
-    public HiveMetaDataProvider(Operator fsOp, Schema oi, HashMap<S, IDataSource<S>> map) {
-        fileSink = fsOp;
-        outputSchema = oi;
-        dataSourceMap = map;
-    }
-
-    @Override
-    public IDataSourceIndex<T, S> findDataSourceIndex(T indexId, S dataSourceId) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
-    public IDataSource<S> findDataSource(S id) throws AlgebricksException {
-        return dataSourceMap.get(id);
-    }
-
-    @Override
-    public boolean scannerOperatorIsLeaf(IDataSource<S> dataSource) {
-        return true;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getScannerRuntime(IDataSource<S> dataSource,
-            List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
-            IOperatorSchema opSchema, IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec)
-            throws AlgebricksException {
-
-        S desc = dataSource.getId();
-        HiveScanRuntimeGenerator generator = new HiveScanRuntimeGenerator((PartitionDesc) desc);
-        return generator.getRuntimeOperatorAndConstraint(dataSource, scanVariables, projectVariables, projectPushed,
-                context, jobSpec);
-    }
-
-    @Override
-    public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc) {
-
-        HiveWriteRuntimeGenerator generator = new HiveWriteRuntimeGenerator((FileSinkOperator) fileSink, outputSchema);
-        return generator.getWriterRuntime(inputDesc);
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, RecordDescriptor arg4,
-            JobGenContext arg5, JobSpecification arg6) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, RecordDescriptor arg4,
-            JobGenContext arg5, JobSpecification arg6) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> arg0,
-            IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, JobGenContext arg4,
-            JobSpecification arg5) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
-            int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
-            JobSpecification spec) throws AlgebricksException {
-        return null;
-    }
-
-    @Override
-    public IFunctionInfo lookupFunction(FunctionIdentifier arg0) {
-        return new HiveFunctionInfo(arg0, null);
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexInsertRuntime(
-            IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
-            ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec)
-            throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexDeleteRuntime(
-            IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
-            ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec)
-            throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java
deleted file mode 100644
index 83382f0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveOperatorSchema.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-
-public class HiveOperatorSchema implements IOperatorSchema {
-
-	private final Map<LogicalVariable, Integer> varMap;
-
-	private final List<LogicalVariable> varList;
-
-	public HiveOperatorSchema() {
-		varMap = new HashMap<LogicalVariable, Integer>();
-		varList = new ArrayList<LogicalVariable>();
-	}
-
-	@Override
-	public void addAllVariables(IOperatorSchema source) {
-		for (LogicalVariable v : source) {
-			varMap.put(v, varList.size());
-			varList.add(v);
-		}
-	}
-
-	@Override
-	public void addAllNewVariables(IOperatorSchema source) {
-		for (LogicalVariable v : source) {
-			if (varMap.get(v) == null) {
-				varMap.put(v, varList.size());
-				varList.add(v);
-			}
-		}
-	}
-
-	@Override
-	public int addVariable(LogicalVariable var) {
-		int idx = varList.size();
-		varMap.put(var, idx);
-		varList.add(var);
-		return idx;
-	}
-
-	@Override
-	public void clear() {
-		varMap.clear();
-		varList.clear();
-	}
-
-	@Override
-	public int findVariable(LogicalVariable var) {
-		Integer i = varMap.get(var);
-		if (i == null) {
-			return -1;
-		}
-		return i;
-	}
-
-	@Override
-	public int getSize() {
-		return varList.size();
-	}
-
-	@Override
-	public LogicalVariable getVariable(int index) {
-		return varList.get(index);
-	}
-
-	@Override
-	public Iterator<LogicalVariable> iterator() {
-		return varList.iterator();
-	}
-
-	@Override
-	public String toString() {
-		return varMap.toString();
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java
deleted file mode 100644
index 9c8aee4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveScanRuntimeGenerator.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveFileScanOperatorDescriptor;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveFileSplitProvider;
-import edu.uci.ics.hivesterix.runtime.operator.filescan.HiveTupleParserFactory;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings({ "rawtypes", "deprecation" })
-public class HiveScanRuntimeGenerator {
-
-	private PartitionDesc fileDesc;
-
-	private transient Path filePath;
-
-	private String filePathName;
-
-	private Properties properties;
-
-	public HiveScanRuntimeGenerator(PartitionDesc path) {
-		fileDesc = path;
-		properties = fileDesc.getProperties();
-
-		String inputPath = (String) properties.getProperty("location");
-
-		if (inputPath.startsWith("file:")) {
-			// Windows
-			String[] strs = inputPath.split(":");
-			filePathName = strs[strs.length - 1];
-		} else {
-			// Linux
-			filePathName = inputPath;
-		}
-
-		filePath = new Path(filePathName);
-	}
-
-	public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getRuntimeOperatorAndConstraint(
-			IDataSource dataSource, List<LogicalVariable> scanVariables,
-			List<LogicalVariable> projectVariables, boolean projectPushed,
-			JobGenContext context, JobSpecification jobSpec)
-			throws AlgebricksException {
-		// get the correct delimiter from Hive metastore or other data
-		// structures
-		IOperatorSchema propagatedSchema = new HiveOperatorSchema();
-
-		List<LogicalVariable> outputVariables = projectPushed ? projectVariables
-				: scanVariables;
-		for (LogicalVariable var : outputVariables)
-			propagatedSchema.addVariable(var);
-
-		int[] outputColumnsOffset = new int[scanVariables.size()];
-		int i = 0;
-		for (LogicalVariable var : scanVariables)
-			if (outputVariables.contains(var)) {
-				int offset = outputVariables.indexOf(var);
-				outputColumnsOffset[i++] = offset;
-			} else
-				outputColumnsOffset[i++] = -1;
-
-		Object[] schemaTypes = dataSource.getSchemaTypes();
-		// get record descriptor
-		RecordDescriptor recDescriptor = mkRecordDescriptor(propagatedSchema,
-				schemaTypes, context);
-
-		// setup the run time operator
-		JobConf conf = ConfUtil.getJobConf(fileDesc.getInputFileFormatClass(),
-				filePath);
-		int clusterSize = ConfUtil.getNCs().length;
-		IFileSplitProvider fsprovider = new HiveFileSplitProvider(conf,
-				filePathName, clusterSize);
-		ITupleParserFactory tupleParserFactory = new HiveTupleParserFactory(
-				fileDesc, conf, outputColumnsOffset);
-		HiveFileScanOperatorDescriptor opDesc = new HiveFileScanOperatorDescriptor(
-				jobSpec, fsprovider, tupleParserFactory, recDescriptor);
-
-		return new Pair<IOperatorDescriptor, AlgebricksPartitionConstraint>(
-				opDesc, opDesc.getPartitionConstraint());
-	}
-
-	private static RecordDescriptor mkRecordDescriptor(
-			IOperatorSchema opSchema, Object[] types, JobGenContext context)
-			throws AlgebricksException {
-		ISerializerDeserializer[] fields = new ISerializerDeserializer[opSchema
-				.getSize()];
-		ISerializerDeserializerProvider sdp = context
-				.getSerializerDeserializerProvider();
-		int size = opSchema.getSize();
-		for (int i = 0; i < size; i++) {
-			Object t = types[i];
-			fields[i] = sdp.getSerializerDeserializer(t);
-			i++;
-		}
-		return new RecordDescriptor(fields);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java
deleted file mode 100644
index d372868..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/jobgen/HiveWriteRuntimeGenerator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.jobgen;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.runtime.operator.filewrite.HivePushRuntimeFactory;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-
-@SuppressWarnings("deprecation")
-public class HiveWriteRuntimeGenerator {
-	private FileSinkOperator fileSink;
-
-	private Schema inputSchema;
-
-	public HiveWriteRuntimeGenerator(FileSinkOperator fsOp, Schema oi) {
-		fileSink = fsOp;
-		inputSchema = oi;
-	}
-
-	/**
-	 * get the write runtime
-	 * 
-	 * @param inputDesc
-	 * @return
-	 */
-	public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriterRuntime(
-			RecordDescriptor inputDesc) {
-		JobConf conf = ConfUtil.getJobConf();
-		IPushRuntimeFactory factory = new HivePushRuntimeFactory(inputDesc,
-				conf, fileSink, inputSchema);
-		Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> pair = new Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint>(
-				factory, null);
-		return pair;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java
deleted file mode 100644
index 2f988f8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveFileSplitProvider.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import edu.uci.ics.hyracks.dataflow.std.file.FileSplit;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-
-public abstract class AbstractHiveFileSplitProvider implements
-		IFileSplitProvider {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public FileSplit[] getFileSplits() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@SuppressWarnings("deprecation")
-	public abstract org.apache.hadoop.mapred.FileSplit[] getFileSplitArray();
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java
deleted file mode 100644
index a8addeb..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/AbstractHiveTupleParser.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.InputStream;
-
-import org.apache.hadoop.mapred.FileSplit;
-
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractHiveTupleParser implements ITupleParser {
-
-	@Override
-	public void parse(InputStream in, IFrameWriter writer)
-			throws HyracksDataException {
-		// empty implementation
-	}
-
-	/**
-	 * method for parsing HDFS file split
-	 * 
-	 * @param split
-	 * @param writer
-	 */
-	abstract public void parse(FileSplit split, IFrameWriter writer)
-			throws HyracksDataException;
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java
deleted file mode 100644
index 9e62c73..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileScanOperatorDescriptor.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.hadoop.mapred.FileSplit;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.IOperatorNodePushable;
-import edu.uci.ics.hyracks.api.dataflow.value.IRecordDescriptorProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.api.job.JobSpecification;
-import edu.uci.ics.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
-import edu.uci.ics.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
-import edu.uci.ics.hyracks.dataflow.std.file.IFileSplitProvider;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings("deprecation")
-public class HiveFileScanOperatorDescriptor extends
-		AbstractSingleActivityOperatorDescriptor {
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * tuple parser factory
-	 */
-	private final ITupleParserFactory tupleParserFactory;
-
-	/**
-	 * Hive file split
-	 */
-	private Partition[] parts;
-
-	/**
-	 * IFileSplitProvider
-	 */
-	private IFileSplitProvider fileSplitProvider;
-
-	/**
-	 * constrains in the form of host DNS names
-	 */
-	private String[] constraintsByHostNames;
-
-	/**
-	 * ip-to-node controller mapping
-	 */
-	private Map<String, List<String>> ncMapping;
-
-	/**
-	 * an array of NCs
-	 */
-	private String[] NCs;
-
-	/**
-	 * 
-	 * @param spec
-	 * @param fsProvider
-	 */
-	public HiveFileScanOperatorDescriptor(JobSpecification spec,
-			IFileSplitProvider fsProvider,
-			ITupleParserFactory tupleParserFactory, RecordDescriptor rDesc) {
-		super(spec, 0, 1);
-		this.tupleParserFactory = tupleParserFactory;
-		recordDescriptors[0] = rDesc;
-		fileSplitProvider = fsProvider;
-	}
-
-	/**
-	 * set partition constraint at the first time it is called the number of
-	 * partitions is obtained from HDFS name node
-	 */
-	public AlgebricksAbsolutePartitionConstraint getPartitionConstraint()
-			throws AlgebricksException {
-		FileSplit[] returnedSplits = ((AbstractHiveFileSplitProvider) fileSplitProvider)
-				.getFileSplitArray();
-		Random random = new Random(System.currentTimeMillis());
-		ncMapping = ConfUtil.getNCMapping();
-		NCs = ConfUtil.getNCs();
-
-		int size = 0;
-		for (FileSplit split : returnedSplits)
-			if (split != null)
-				size++;
-
-		FileSplit[] splits = new FileSplit[size];
-		for (int i = 0; i < returnedSplits.length; i++)
-			if (returnedSplits[i] != null)
-				splits[i] = returnedSplits[i];
-
-		System.out.println("number of splits: " + splits.length);
-		constraintsByHostNames = new String[splits.length];
-		for (int i = 0; i < splits.length; i++) {
-			try {
-				String[] loc = splits[i].getLocations();
-				Collections.shuffle(Arrays.asList(loc), random);
-				if (loc.length > 0) {
-					InetAddress[] allIps = InetAddress.getAllByName(loc[0]);
-					for (InetAddress ip : allIps) {
-						if (ncMapping.get(ip.getHostAddress()) != null) {
-							List<String> ncs = ncMapping.get(ip
-									.getHostAddress());
-							int pos = random.nextInt(ncs.size());
-							constraintsByHostNames[i] = ncs.get(pos);
-						} else {
-							int pos = random.nextInt(NCs.length);
-							constraintsByHostNames[i] = NCs[pos];
-						}
-					}
-				} else {
-					int pos = random.nextInt(NCs.length);
-					constraintsByHostNames[i] = NCs[pos];
-					if (splits[i].getLength() > 0)
-						throw new IllegalStateException(
-								"non local scanner non locations!!");
-				}
-			} catch (IOException e) {
-				throw new AlgebricksException(e);
-			}
-		}
-
-		parts = new Partition[splits.length];
-		for (int i = 0; i < splits.length; i++) {
-			parts[i] = new Partition(splits[i]);
-		}
-		return new AlgebricksAbsolutePartitionConstraint(constraintsByHostNames);
-	}
-
-	@Override
-	public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
-			IRecordDescriptorProvider recordDescProvider, int partition,
-			int nPartitions) {
-
-		final ITupleParser tp = tupleParserFactory.createTupleParser(ctx);
-		final int partitionId = partition;
-
-		return new AbstractUnaryOutputSourceOperatorNodePushable() {
-
-			@Override
-			public void initialize() throws HyracksDataException {
-				writer.open();
-				FileSplit split = parts[partitionId].toFileSplit();
-				if (split == null)
-					throw new HyracksDataException("partition " + partitionId
-							+ " is null!");
-				((AbstractHiveTupleParser) tp).parse(split, writer);
-				writer.close();
-			}
-		};
-	}
-}
\ No newline at end of file
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java
deleted file mode 100644
index d92d353..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveFileSplitProvider.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.UUID;
-
-import org.apache.hadoop.mapred.FileSplit;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-import org.eclipse.jetty.util.log.Log;
-
-@SuppressWarnings({ "deprecation", "rawtypes" })
-public class HiveFileSplitProvider extends AbstractHiveFileSplitProvider {
-	private static final long serialVersionUID = 1L;
-
-	private transient InputFormat format;
-	private transient JobConf conf;
-	private String confContent;
-	final private int nPartition;
-	private transient FileSplit[] splits;
-
-	public HiveFileSplitProvider(JobConf conf, String filePath, int nPartition) {
-		format = conf.getInputFormat();
-		this.conf = conf;
-		this.nPartition = nPartition;
-		writeConfContent();
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	/**
-	 * get the HDFS file split
-	 */
-	public FileSplit[] getFileSplitArray() {
-		readConfContent();
-		conf.setClassLoader(this.getClass().getClassLoader());
-		format = conf.getInputFormat();
-		// int splitSize = conf.getInt("mapred.min.split.size", 0);
-
-		if (splits == null) {
-			try {
-				splits = (org.apache.hadoop.mapred.FileSplit[]) format
-						.getSplits(conf, nPartition);
-				System.out.println("hdfs split number: " + splits.length);
-			} catch (IOException e) {
-				String inputPath = conf.get("mapred.input.dir");
-				String hdfsURL = conf.get("fs.default.name");
-				String alternatePath = inputPath.replaceAll(hdfsURL, "file:");
-				conf.set("mapred.input.dir", alternatePath);
-				try {
-					splits = (org.apache.hadoop.mapred.FileSplit[]) format
-							.getSplits(conf, nPartition);
-					System.out.println("hdfs split number: " + splits.length);
-				} catch (IOException e1) {
-					e1.printStackTrace();
-					Log.debug(e1.getMessage());
-					return null;
-				}
-			}
-		}
-		return splits;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java
deleted file mode 100644
index 7681bd1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParser.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.mapred.FileSplit;
-import org.apache.hadoop.mapred.InputFormat;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.RecordReader;
-import org.apache.hadoop.mapred.Reporter;
-import org.apache.hadoop.util.ReflectionUtils;
-
-import edu.uci.ics.hivesterix.serde.parser.IHiveParser;
-import edu.uci.ics.hivesterix.serde.parser.TextToBinaryTupleParser;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.comm.util.FrameUtils;
-
-@SuppressWarnings({ "rawtypes", "deprecation", "unchecked" })
-public class HiveTupleParser extends AbstractHiveTupleParser {
-
-	private int[] outputColumnsOffset;
-	/**
-	 * class of input format
-	 */
-	private InputFormat inputFormat;
-
-	/**
-	 * serialization/deserialization object
-	 */
-	private SerDe serDe;
-
-	/**
-	 * the input row object inspector
-	 */
-	private ObjectInspector objectInspector;
-
-	/**
-	 * the hadoop job conf
-	 */
-	private JobConf job;
-
-	/**
-	 * Hyrax context to control resource allocation
-	 */
-	private final IHyracksTaskContext ctx;
-
-	/**
-	 * lazy serde: format flow in between operators
-	 */
-	private final SerDe outputSerDe;
-
-	/**
-	 * the parser from hive data to binary data
-	 */
-	private IHiveParser parser = null;
-
-	/**
-	 * parser for any hive input format
-	 * 
-	 * @param inputFormatClass
-	 * @param serDeClass
-	 * @param tbl
-	 * @param conf
-	 * @throws AlgebricksException
-	 */
-	public HiveTupleParser(String inputFormatClass, String serDeClass,
-			String outputSerDeClass, Properties tbl, JobConf conf,
-			final IHyracksTaskContext ctx, int[] outputColumnsOffset)
-			throws AlgebricksException {
-		try {
-			conf.setClassLoader(this.getClass().getClassLoader());
-
-			inputFormat = (InputFormat) ReflectionUtils.newInstance(
-					Class.forName(inputFormatClass), conf);
-			job = conf;
-
-			// initialize the input serde
-			serDe = (SerDe) ReflectionUtils.newInstance(
-					Class.forName(serDeClass), job);
-			serDe.initialize(job, tbl);
-
-			// initialize the output serde
-			outputSerDe = (SerDe) ReflectionUtils.newInstance(
-					Class.forName(outputSerDeClass), job);
-			outputSerDe.initialize(job, tbl);
-
-			// object inspector of the row
-			objectInspector = serDe.getObjectInspector();
-
-			// hyracks context
-			this.ctx = ctx;
-			this.outputColumnsOffset = outputColumnsOffset;
-
-			if (objectInspector instanceof LazySimpleStructObjectInspector) {
-				LazySimpleStructObjectInspector rowInspector = (LazySimpleStructObjectInspector) objectInspector;
-				List<? extends StructField> fieldRefs = rowInspector
-						.getAllStructFieldRefs();
-				boolean lightWeightParsable = true;
-				for (StructField fieldRef : fieldRefs) {
-					Category category = fieldRef.getFieldObjectInspector()
-							.getCategory();
-					if (!(category == Category.PRIMITIVE)) {
-						lightWeightParsable = false;
-						break;
-					}
-				}
-				if (lightWeightParsable)
-					parser = new TextToBinaryTupleParser(
-							this.outputColumnsOffset, this.objectInspector);
-			}
-		} catch (Exception e) {
-			throw new AlgebricksException(e);
-		}
-	}
-
-	/**
-	 * parse a input HDFS file split, the result is send to the writer
-	 * one-frame-a-time
-	 * 
-	 * @param split
-	 *            the HDFS file split
-	 * @param writer
-	 *            the writer
-	 * @throws HyracksDataException
-	 *             if there is sth. wrong in the ser/de
-	 */
-	@Override
-	public void parse(FileSplit split, IFrameWriter writer)
-			throws HyracksDataException {
-		try {
-			StructObjectInspector structInspector = (StructObjectInspector) objectInspector;
-
-			// create the reader, key, and value
-			RecordReader reader = inputFormat.getRecordReader(split, job,
-					Reporter.NULL);
-			Object key = reader.createKey();
-			Object value = reader.createValue();
-
-			// allocate a new frame
-			ByteBuffer frame = ctx.allocateFrame();
-			FrameTupleAppender appender = new FrameTupleAppender(
-					ctx.getFrameSize());
-			appender.reset(frame, true);
-
-			List<? extends StructField> fieldRefs = structInspector
-					.getAllStructFieldRefs();
-			int size = 0;
-			for (int i = 0; i < outputColumnsOffset.length; i++)
-				if (outputColumnsOffset[i] >= 0)
-					size++;
-
-			ArrayTupleBuilder tb = new ArrayTupleBuilder(size);
-			DataOutput dos = tb.getDataOutput();
-			StructField[] outputFieldRefs = new StructField[size];
-			Object[] outputFields = new Object[size];
-			for (int i = 0; i < outputColumnsOffset.length; i++)
-				if (outputColumnsOffset[i] >= 0)
-					outputFieldRefs[outputColumnsOffset[i]] = fieldRefs.get(i);
-
-			while (reader.next(key, value)) {
-				// reuse the tuple builder
-				tb.reset();
-				if (parser != null) {
-					Text text = (Text) value;
-					parser.parse(text.getBytes(), 0, text.getLength(), tb);
-				} else {
-					Object row = serDe.deserialize((Writable) value);
-					// write fields to the tuple builder one by one
-					int i = 0;
-					for (StructField fieldRef : fieldRefs) {
-						if (outputColumnsOffset[i] >= 0)
-							outputFields[outputColumnsOffset[i]] = structInspector
-									.getStructFieldData(row, fieldRef);
-						i++;
-					}
-
-					i = 0;
-					for (Object field : outputFields) {
-						BytesWritable fieldWritable = (BytesWritable) outputSerDe
-								.serialize(field, outputFieldRefs[i]
-										.getFieldObjectInspector());
-						dos.write(fieldWritable.getBytes(), 0,
-								fieldWritable.getSize());
-						tb.addFieldEndOffset();
-						i++;
-					}
-				}
-
-				if (!appender.append(tb.getFieldEndOffsets(),
-						tb.getByteArray(), 0, tb.getSize())) {
-					if (appender.getTupleCount() <= 0)
-						throw new IllegalStateException(
-								"zero tuples in a frame!");
-					FrameUtils.flushFrame(frame, writer);
-					appender.reset(frame, true);
-					if (!appender.append(tb.getFieldEndOffsets(),
-							tb.getByteArray(), 0, tb.getSize())) {
-						throw new IllegalStateException();
-					}
-				}
-			}
-			reader.close();
-			System.gc();
-
-			// flush the last frame
-			if (appender.getTupleCount() > 0) {
-				FrameUtils.flushFrame(frame, writer);
-			}
-		} catch (IOException e) {
-			throw new HyracksDataException(e);
-		} catch (SerDeException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java
deleted file mode 100644
index 69aa881..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/HiveTupleParserFactory.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.hadoop.hive.ql.plan.PartitionDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParser;
-import edu.uci.ics.hyracks.dataflow.std.file.ITupleParserFactory;
-
-@SuppressWarnings("deprecation")
-public class HiveTupleParserFactory implements ITupleParserFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private int[] outputColumns;
-
-	private String outputSerDeClass = LazySerDe.class.getName();
-
-	private String inputSerDeClass;
-
-	private transient JobConf conf;
-
-	private Properties tbl;
-
-	private String confContent;
-
-	private String inputFormatClass;
-
-	public HiveTupleParserFactory(PartitionDesc desc, JobConf conf,
-			int[] outputColumns) {
-		this.conf = conf;
-		tbl = desc.getProperties();
-		inputFormatClass = (String) tbl.getProperty("file.inputformat");
-		inputSerDeClass = (String) tbl.getProperty("serialization.lib");
-		this.outputColumns = outputColumns;
-
-		writeConfContent();
-	}
-
-	@Override
-	public ITupleParser createTupleParser(IHyracksTaskContext ctx) {
-		readConfContent();
-		try {
-			return new HiveTupleParser(inputFormatClass, inputSerDeClass,
-					outputSerDeClass, tbl, conf, ctx, outputColumns);
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java
deleted file mode 100644
index 1b3dcf2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filescan/Partition.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filescan;
-
-import java.io.IOException;
-import java.io.Serializable;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapred.FileSplit;
-
-@SuppressWarnings("deprecation")
-public class Partition implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	private String uri;
-	private long offset;
-	private long length;
-	private String[] locations;
-
-	public Partition() {
-	}
-
-	public Partition(FileSplit file) {
-		uri = file.getPath().toUri().toString();
-		offset = file.getStart();
-		length = file.getLength();
-		try {
-			locations = file.getLocations();
-		} catch (IOException e) {
-			throw new IllegalStateException(e);
-		}
-	}
-
-	public FileSplit toFileSplit() {
-		return new FileSplit(new Path(uri), offset, length, locations);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java
deleted file mode 100644
index 05e79ea..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HiveFileWritePushRuntime.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filewrite;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.OperatorFactory;
-import org.apache.hadoop.hive.ql.exec.RowSchema;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntime;
-import edu.uci.ics.hyracks.api.comm.IFrameWriter;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-
-@SuppressWarnings("deprecation")
-public class HiveFileWritePushRuntime implements IPushRuntime {
-
-	/**
-	 * frame tuple accessor to access byte buffer
-	 */
-	private final FrameTupleAccessor accessor;
-
-	/**
-	 * input object inspector
-	 */
-	private final ObjectInspector inputInspector;
-
-	/**
-	 * cachedInput
-	 */
-	private final LazyColumnar cachedInput;
-
-	/**
-	 * File sink operator of Hive
-	 */
-	private final FileSinkDesc fileSink;
-
-	/**
-	 * job configuration, which contain name node and other configuration
-	 * information
-	 */
-	private JobConf conf;
-
-	/**
-	 * input object inspector
-	 */
-	private final Schema inputSchema;
-
-	/**
-	 * a copy of hive schema representation
-	 */
-	private RowSchema rowSchema;
-
-	/**
-	 * the Hive file sink operator
-	 */
-	private FileSinkOperator fsOp;
-
-	/**
-	 * cached tuple object reference
-	 */
-	private FrameTupleReference tuple = new FrameTupleReference();
-
-	/**
-	 * @param spec
-	 * @param fsProvider
-	 */
-	public HiveFileWritePushRuntime(IHyracksTaskContext context,
-			RecordDescriptor inputRecordDesc, JobConf job, FileSinkDesc fs,
-			RowSchema schema, Schema oi) {
-		fileSink = fs;
-		fileSink.setGatherStats(false);
-
-		rowSchema = schema;
-		conf = job;
-		inputSchema = oi;
-
-		accessor = new FrameTupleAccessor(context.getFrameSize(),
-				inputRecordDesc);
-		inputInspector = inputSchema.toObjectInspector();
-		cachedInput = new LazyColumnar(
-				(LazyColumnarObjectInspector) inputInspector);
-	}
-
-	@Override
-	public void open() throws HyracksDataException {
-		fsOp = (FileSinkOperator) OperatorFactory.get(fileSink, rowSchema);
-		fsOp.setChildOperators(null);
-		fsOp.setParentOperators(null);
-		conf.setClassLoader(this.getClass().getClassLoader());
-
-		ObjectInspector[] inspectors = new ObjectInspector[1];
-		inspectors[0] = inputInspector;
-		try {
-			fsOp.initialize(conf, inspectors);
-			fsOp.setExecContext(null);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-		accessor.reset(buffer);
-		int n = accessor.getTupleCount();
-		try {
-			for (int i = 0; i < n; ++i) {
-				tuple.reset(accessor, i);
-				cachedInput.init(tuple);
-				fsOp.process(cachedInput, 0);
-			}
-		} catch (HiveException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-
-	@Override
-	public void close() throws HyracksDataException {
-		try {
-			Thread.currentThread().setContextClassLoader(
-					this.getClass().getClassLoader());
-			fsOp.closeOp(false);
-		} catch (HiveException e) {
-			throw new HyracksDataException(e);
-		}
-	}
-
-	@Override
-	public void setFrameWriter(int index, IFrameWriter writer,
-			RecordDescriptor recordDesc) {
-		throw new IllegalStateException();
-	}
-
-	@Override
-	public void setInputRecordDescriptor(int index,
-			RecordDescriptor recordDescriptor) {
-	}
-
-	@Override
-	public void fail() throws HyracksDataException {
-
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java
deleted file mode 100644
index 43e90fa..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/operator/filewrite/HivePushRuntimeFactory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.operator.filewrite;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.UUID;
-
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
-import org.apache.hadoop.hive.ql.exec.RowSchema;
-import org.apache.hadoop.hive.ql.plan.FileSinkDesc;
-import org.apache.hadoop.mapred.JobConf;
-
-import edu.uci.ics.hivesterix.logical.expression.Schema;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntime;
-import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-
-@SuppressWarnings("deprecation")
-public class HivePushRuntimeFactory implements IPushRuntimeFactory {
-
-	private static final long serialVersionUID = 1L;
-
-	private final RecordDescriptor inputRecordDesc;
-	private transient JobConf conf;
-	private final FileSinkDesc fileSink;
-	private final RowSchema outSchema;
-	private final Schema schema;
-
-	/**
-	 * the content of the configuration
-	 */
-	private String confContent;
-
-	public HivePushRuntimeFactory(RecordDescriptor inputRecordDesc,
-			JobConf conf, FileSinkOperator fsp, Schema sch) {
-		this.inputRecordDesc = inputRecordDesc;
-		this.conf = conf;
-		this.fileSink = fsp.getConf();
-		outSchema = fsp.getSchema();
-		this.schema = sch;
-
-		writeConfContent();
-	}
-
-	@Override
-	public String toString() {
-		return "file write";
-	}
-
-	@Override
-	public IPushRuntime createPushRuntime(IHyracksTaskContext context)
-			throws AlgebricksException {
-		if (conf == null)
-			readConfContent();
-
-		return new HiveFileWritePushRuntime(context, inputRecordDesc, conf,
-				fileSink, outSchema, schema);
-	}
-
-	private void readConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			PrintWriter out = new PrintWriter((new OutputStreamWriter(
-					new FileOutputStream(new File(fileName)))));
-			out.write(confContent);
-			out.close();
-			conf = new JobConf(fileName);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private void writeConfContent() {
-		File dir = new File("hadoop-conf-tmp");
-		if (!dir.exists()) {
-			dir.mkdir();
-		}
-
-		String fileName = "hadoop-conf-tmp/" + UUID.randomUUID()
-				+ System.currentTimeMillis() + ".xml";
-		try {
-			DataOutputStream out = new DataOutputStream(new FileOutputStream(
-					new File(fileName)));
-			conf.writeXml(out);
-			out.close();
-
-			DataInputStream in = new DataInputStream(new FileInputStream(
-					fileName));
-			StringBuffer buffer = new StringBuffer();
-			String line;
-			while ((line = in.readLine()) != null) {
-				buffer.append(line + "\n");
-			}
-			in.close();
-			confContent = buffer.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java
deleted file mode 100644
index 5a2e98c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryComparatorFactoryProvider.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryDescComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryAscComparatorFactory;
-import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryDescComparatorFactory;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-
-public class HiveBinaryComparatorFactoryProvider implements
-		IBinaryComparatorFactoryProvider {
-
-	public static final HiveBinaryComparatorFactoryProvider INSTANCE = new HiveBinaryComparatorFactoryProvider();
-
-	private HiveBinaryComparatorFactoryProvider() {
-	}
-
-	@Override
-	public IBinaryComparatorFactory getBinaryComparatorFactory(Object type,
-			boolean ascending) throws AlgebricksException {
-		if (type.equals(TypeInfoFactory.intTypeInfo)) {
-			if (ascending)
-				return HiveIntegerBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveIntegerBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-			if (ascending)
-				return HiveLongBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveLongBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.floatTypeInfo)) {
-			if (ascending)
-				return HiveFloatBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveFloatBinaryDescComparatorFactory.INSTANCE;
-
-		} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-			if (ascending)
-				return HiveDoubleBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveDoubleBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.shortTypeInfo)) {
-			if (ascending)
-				return HiveShortBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveShortBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-			if (ascending)
-				return HiveStringBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveStringBinaryDescComparatorFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.byteTypeInfo)
-				|| type.equals(TypeInfoFactory.booleanTypeInfo)) {
-			if (ascending)
-				return HiveByteBinaryAscComparatorFactory.INSTANCE;
-			else
-				return HiveByteBinaryDescComparatorFactory.INSTANCE;
-		} else
-			throw new NotImplementedException();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java
deleted file mode 100644
index 371d45b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFactoryProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveDoubleBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveIntegerBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveLongBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveRawBinaryHashFunctionFactory;
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.HiveStingBinaryHashFunctionFactory;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-
-public class HiveBinaryHashFunctionFactoryProvider implements
-		IBinaryHashFunctionFactoryProvider {
-
-	public static final HiveBinaryHashFunctionFactoryProvider INSTANCE = new HiveBinaryHashFunctionFactoryProvider();
-
-	private HiveBinaryHashFunctionFactoryProvider() {
-	}
-
-	@Override
-	public IBinaryHashFunctionFactory getBinaryHashFunctionFactory(Object type)
-			throws AlgebricksException {
-		if (type.equals(TypeInfoFactory.intTypeInfo)) {
-			return HiveIntegerBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-			return HiveLongBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-			return HiveStingBinaryHashFunctionFactory.INSTANCE;
-		} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-			return HiveDoubleBinaryHashFunctionFactory.INSTANCE;
-		} else {
-			return HiveRawBinaryHashFunctionFactory.INSTANCE;
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java
deleted file mode 100644
index e7a2e79..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveBinaryHashFunctionFamilyProvider.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hivesterix.runtime.factory.hashfunction.MurmurHash3BinaryHashFunctionFamily;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFamilyProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
-
-public class HiveBinaryHashFunctionFamilyProvider implements IBinaryHashFunctionFamilyProvider {
-
-    public static HiveBinaryHashFunctionFamilyProvider INSTANCE = new HiveBinaryHashFunctionFamilyProvider();
-
-    private HiveBinaryHashFunctionFamilyProvider() {
-
-    }
-
-    @Override
-    public IBinaryHashFunctionFamily getBinaryHashFunctionFamily(Object type) throws AlgebricksException {
-        return MurmurHash3BinaryHashFunctionFamily.INSTANCE;
-    }
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java
deleted file mode 100644
index 9e3a8ae..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveNormalizedKeyComputerFactoryProvider.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveDoubleAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveDoubleDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveIntegerAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveIntegerDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveLongAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveLongDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveStringAscNormalizedKeyComputerFactory;
-import edu.uci.ics.hivesterix.runtime.factory.normalize.HiveStringDescNormalizedKeyComputerFactory;
-import edu.uci.ics.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-
-public class HiveNormalizedKeyComputerFactoryProvider implements
-		INormalizedKeyComputerFactoryProvider {
-
-	public static final HiveNormalizedKeyComputerFactoryProvider INSTANCE = new HiveNormalizedKeyComputerFactoryProvider();
-
-	private HiveNormalizedKeyComputerFactoryProvider() {
-	}
-
-	@Override
-	public INormalizedKeyComputerFactory getNormalizedKeyComputerFactory(
-			Object type, boolean ascending) {
-		if (ascending) {
-			if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-				return new HiveStringAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.intTypeInfo)) {
-				return new HiveIntegerAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-				return new HiveLongAscNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-				return new HiveDoubleAscNormalizedKeyComputerFactory();
-			} else {
-				return null;
-			}
-		} else {
-			if (type.equals(TypeInfoFactory.stringTypeInfo)) {
-				return new HiveStringDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.intTypeInfo)) {
-				return new HiveIntegerDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
-				return new HiveLongDescNormalizedKeyComputerFactory();
-			} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
-				return new HiveDoubleDescNormalizedKeyComputerFactory();
-			} else {
-				return null;
-			}
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java
deleted file mode 100644
index bebb457..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HivePrinterFactoryProvider.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory;
-import edu.uci.ics.hyracks.algebricks.data.IPrinterFactoryProvider;
-
-public class HivePrinterFactoryProvider implements IPrinterFactoryProvider {
-
-	public static IPrinterFactoryProvider INSTANCE = new HivePrinterFactoryProvider();
-
-	@Override
-	public IPrinterFactory getPrinterFactory(Object type)
-			throws AlgebricksException {
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java
deleted file mode 100644
index 7938de8..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveSerializerDeserializerProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-
-public class HiveSerializerDeserializerProvider implements
-		ISerializerDeserializerProvider {
-
-	public static final HiveSerializerDeserializerProvider INSTANCE = new HiveSerializerDeserializerProvider();
-
-	private HiveSerializerDeserializerProvider() {
-	}
-
-	@SuppressWarnings("rawtypes")
-	@Override
-	public ISerializerDeserializer getSerializerDeserializer(Object type)
-			throws AlgebricksException {
-		// return ARecordSerializerDeserializer.SCHEMALESS_INSTANCE;
-		return null;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java
deleted file mode 100644
index 2059128..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/runtime/provider/HiveTypeTraitProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package edu.uci.ics.hivesterix.runtime.provider;
-
-import java.io.Serializable;
-
-import edu.uci.ics.hyracks.algebricks.data.ITypeTraitProvider;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-
-public class HiveTypeTraitProvider implements ITypeTraitProvider, Serializable {
-	private static final long serialVersionUID = 1L;
-	public static HiveTypeTraitProvider INSTANCE = new HiveTypeTraitProvider();
-
-	private HiveTypeTraitProvider() {
-
-	}
-
-	@Override
-	public ITypeTraits getTypeTrait(Object arg0) {
-		return new ITypeTraits() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public int getFixedLength() {
-				return -1;
-			}
-
-			@Override
-			public boolean isFixedLength() {
-				return false;
-			}
-
-		};
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java
deleted file mode 100644
index 673416d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/ByteArrayRef.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-/**
- * ByteArrayRef stores a reference to a byte array.
- * 
- * The LazyObject hierarchy uses a reference to a single ByteArrayRef, so that
- * it's much faster to switch to the next row and release the reference to the
- * old row (so that the system can do garbage collection if needed).
- */
-public class ByteArrayRef {
-
-	/**
-	 * Stores the actual data.
-	 */
-	byte[] data;
-
-	public byte[] getData() {
-		return data;
-	}
-
-	public void setData(byte[] data) {
-		this.data = data;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java
deleted file mode 100644
index 821c03d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyArray.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyListObjectInspector;
-
-/**
- * LazyArray is serialized as follows: start A b b b b b b end bytes[] ->
- * |--------|---|---|---|---| ... |---|---|
- * 
- * Section A is the null-bytes. Suppose the list has N elements, then there are
- * (N+7)/8 bytes used as null-bytes. Each bit corresponds to an element and it
- * indicates whether that element is null (0) or not null (1).
- * 
- * After A, all b(s) represent the elements of the list. Each of them is again a
- * LazyObject.
- * 
- */
-
-public class LazyArray extends LazyNonPrimitive<LazyListObjectInspector> {
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed = false;
-	/**
-	 * The length of the array. Only valid when the data is parsed.
-	 */
-	int arraySize = 0;
-
-	/**
-	 * The start positions and lengths of array elements. Only valid when the
-	 * data is parsed.
-	 */
-	int[] elementStart;
-	int[] elementLength;
-
-	/**
-	 * Whether an element is initialized or not.
-	 */
-	boolean[] elementInited;
-
-	/**
-	 * Whether an element is null or not. Because length is 0 does not means the
-	 * field is null. In particular, a 0-length string is not null.
-	 */
-	boolean[] elementIsNull;
-
-	/**
-	 * The elements of the array. Note that we call arrayElements[i].init(bytes,
-	 * begin, length) only when that element is accessed.
-	 */
-	@SuppressWarnings("rawtypes")
-	LazyObject[] arrayElements;
-
-	/**
-	 * Construct a LazyArray object with the ObjectInspector.
-	 * 
-	 * @param oi
-	 *            the oi representing the type of this LazyArray
-	 */
-	protected LazyArray(LazyListObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyArray.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	/**
-	 * Enlarge the size of arrays storing information for the elements inside
-	 * the array.
-	 */
-	private void adjustArraySize(int newSize) {
-		if (elementStart == null || elementStart.length < newSize) {
-			elementStart = new int[newSize];
-			elementLength = new int[newSize];
-			elementInited = new boolean[newSize];
-			elementIsNull = new boolean[newSize];
-			arrayElements = new LazyObject[newSize];
-		}
-	}
-
-	VInt vInt = new LazyUtils.VInt();
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-
-	/**
-	 * Parse the bytes and fill elementStart, elementLength, elementInited and
-	 * elementIsNull.
-	 */
-	private void parse() {
-
-		// get the vlong that represents the map size
-		LazyUtils.readVInt(bytes, start, vInt);
-		arraySize = vInt.value;
-		if (0 == arraySize) {
-			parsed = true;
-			return;
-		}
-
-		// adjust arrays
-		adjustArraySize(arraySize);
-		// find out the null-bytes
-		int arryByteStart = start + vInt.length;
-		int nullByteCur = arryByteStart;
-		int nullByteEnd = arryByteStart + (arraySize + 7) / 8;
-		// the begin the real elements
-		int lastElementByteEnd = nullByteEnd;
-		// the list element object inspector
-		ObjectInspector listEleObjectInspector = ((ListObjectInspector) oi)
-				.getListElementObjectInspector();
-		// parsing elements one by one
-		for (int i = 0; i < arraySize; i++) {
-			elementIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << (i % 8))) != 0) {
-				elementIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(listEleObjectInspector, bytes,
-						lastElementByteEnd, recordInfo);
-				elementStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				elementLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = elementStart[i] + elementLength[i];
-			}
-			// move onto the next null byte
-			if (7 == (i % 8)) {
-				nullByteCur++;
-			}
-		}
-
-		Arrays.fill(elementInited, 0, arraySize, false);
-		parsed = true;
-	}
-
-	/**
-	 * Returns the actual primitive object at the index position inside the
-	 * array represented by this LazyObject.
-	 */
-	public Object getListElementObject(int index) {
-		if (!parsed) {
-			parse();
-		}
-		if (index < 0 || index >= arraySize) {
-			return null;
-		}
-		return uncheckedGetElement(index);
-	}
-
-	/**
-	 * Get the element without checking out-of-bound index.
-	 * 
-	 * @param index
-	 *            index to the array element
-	 */
-	private Object uncheckedGetElement(int index) {
-
-		if (elementIsNull[index]) {
-			return null;
-		} else {
-			if (!elementInited[index]) {
-				elementInited[index] = true;
-				if (arrayElements[index] == null) {
-					arrayElements[index] = LazyFactory.createLazyObject((oi)
-							.getListElementObjectInspector());
-				}
-				arrayElements[index].init(bytes, elementStart[index],
-						elementLength[index]);
-			}
-		}
-		return arrayElements[index].getObject();
-	}
-
-	/**
-	 * Returns the array size.
-	 */
-	public int getListLength() {
-		if (!parsed) {
-			parse();
-		}
-		return arraySize;
-	}
-
-	/**
-	 * cachedList is reused every time getList is called. Different
-	 * LazyBianryArray instances cannot share the same cachedList.
-	 */
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Returns the List of actual primitive objects. Returns null for null
-	 * array.
-	 */
-	public List<Object> getList() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>(arraySize);
-		} else {
-			cachedList.clear();
-		}
-		for (int index = 0; index < arraySize; index++) {
-			cachedList.add(uncheckedGetElement(index));
-		}
-		return cachedList;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java
deleted file mode 100644
index 83b6254..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyBoolean.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.BooleanWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyBooleanObjectInspector;
-
-/**
- * LazyObject for storing a value of boolean.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyBoolean extends
-		LazyPrimitive<LazyBooleanObjectInspector, BooleanWritable> {
-
-	public LazyBoolean(LazyBooleanObjectInspector oi) {
-		super(oi);
-		data = new BooleanWritable();
-	}
-
-	public LazyBoolean(LazyBoolean copy) {
-		super(copy);
-		data = new BooleanWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		// a temporal hack
-		assert (1 == length);
-		byte val = bytes[start];
-		if (val == 0) {
-			data.set(false);
-		} else if (val == 1) {
-			data.set(true);
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java
deleted file mode 100644
index 264015b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyByte.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.ByteWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyByteObjectInspector;
-
-/**
- * LazyObject for storing a value of Byte.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyByte extends
-		LazyPrimitive<LazyByteObjectInspector, ByteWritable> {
-
-	public LazyByte(LazyByteObjectInspector oi) {
-		super(oi);
-		data = new ByteWritable();
-	}
-
-	public LazyByte(LazyByte copy) {
-		super(copy);
-		data = new ByteWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (1 == length);
-		data.set(bytes[start]);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java
deleted file mode 100644
index a25ae49..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyColumnar.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyObject for storing a struct. The field of a struct can be primitive or
- * non-primitive.
- * 
- * LazyStruct does not deal with the case of a NULL struct. That is handled by
- * the parent LazyObject.
- */
-@SuppressWarnings("rawtypes")
-public class LazyColumnar extends LazyNonPrimitive<LazyColumnarObjectInspector> {
-
-	/**
-	 * IFrameTupleReference: the backend of the struct
-	 */
-	IFrameTupleReference tuple;
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean reset;
-
-	/**
-	 * The fields of the struct.
-	 */
-	LazyObject[] fields;
-
-	/**
-	 * Whether init() has been called on the field or not.
-	 */
-	boolean[] fieldVisited;
-
-	/**
-	 * whether it is the first time initialization
-	 */
-	boolean start = true;
-
-	/**
-	 * Construct a LazyStruct object with the ObjectInspector.
-	 */
-	public LazyColumnar(LazyColumnarObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyStruct.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		reset = false;
-	}
-
-	/**
-	 * Parse the byte[] and fill each field.
-	 */
-	private void parse() {
-
-		if (start) {
-			// initialize field array and reusable objects
-			List<? extends StructField> fieldRefs = ((StructObjectInspector) oi)
-					.getAllStructFieldRefs();
-
-			fields = new LazyObject[fieldRefs.size()];
-			for (int i = 0; i < fields.length; i++) {
-				fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i)
-						.getFieldObjectInspector());
-			}
-			fieldVisited = new boolean[fields.length];
-			start = false;
-		}
-
-		Arrays.fill(fieldVisited, false);
-		reset = true;
-	}
-
-	/**
-	 * Get one field out of the struct.
-	 * 
-	 * If the field is a primitive field, return the actual object. Otherwise
-	 * return the LazyObject. This is because PrimitiveObjectInspector does not
-	 * have control over the object used by the user - the user simply directly
-	 * use the Object instead of going through Object
-	 * PrimitiveObjectInspector.get(Object).
-	 * 
-	 * @param fieldID
-	 *            The field ID
-	 * @return The field as a LazyObject
-	 */
-	public Object getField(int fieldID) {
-		if (!reset) {
-			parse();
-		}
-		return uncheckedGetField(fieldID);
-	}
-
-	/**
-	 * Get the field out of the row without checking parsed. This is called by
-	 * both getField and getFieldsAsList.
-	 * 
-	 * @param fieldID
-	 *            The id of the field starting from 0.
-	 * @param nullSequence
-	 *            The sequence representing NULL value.
-	 * @return The value of the field
-	 */
-	private Object uncheckedGetField(int fieldID) {
-		// get the buffer
-		byte[] buffer = tuple.getFieldData(fieldID);
-		// get the offset of the field
-		int s1 = tuple.getFieldStart(fieldID);
-		int l1 = tuple.getFieldLength(fieldID);
-
-		if (!fieldVisited[fieldID]) {
-			fieldVisited[fieldID] = true;
-			fields[fieldID].init(buffer, s1, l1);
-		}
-		// if (fields[fieldID].getObject() == null) {
-		// throw new IllegalStateException("illegal field " + fieldID);
-		// }
-		return fields[fieldID].getObject();
-	}
-
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Get the values of the fields as an ArrayList.
-	 * 
-	 * @return The values of the fields as an ArrayList.
-	 */
-	public ArrayList<Object> getFieldsAsList() {
-		if (!reset) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>();
-		} else {
-			cachedList.clear();
-		}
-		for (int i = 0; i < fields.length; i++) {
-			cachedList.add(uncheckedGetField(i));
-		}
-		return cachedList;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-
-	protected boolean getParsed() {
-		return reset;
-	}
-
-	protected void setParsed(boolean parsed) {
-		this.reset = parsed;
-	}
-
-	protected LazyObject[] getFields() {
-		return fields;
-	}
-
-	protected void setFields(LazyObject[] fields) {
-		this.fields = fields;
-	}
-
-	protected boolean[] getFieldInited() {
-		return fieldVisited;
-	}
-
-	protected void setFieldInited(boolean[] fieldInited) {
-		this.fieldVisited = fieldInited;
-	}
-
-	/**
-	 * rebind a frametuplereference to the struct
-	 */
-	public void init(IFrameTupleReference r) {
-		this.tuple = r;
-		reset = false;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java
deleted file mode 100644
index d687aa1..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyDouble.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.DoubleWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyDoubleObjectInspector;
-
-/**
- * LazyObject for storing a value of Double.
- * 
- */
-public class LazyDouble extends
-		LazyPrimitive<LazyDoubleObjectInspector, DoubleWritable> {
-
-	public LazyDouble(LazyDoubleObjectInspector oi) {
-		super(oi);
-		data = new DoubleWritable();
-	}
-
-	public LazyDouble(LazyDouble copy) {
-		super(copy);
-		data = new DoubleWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-		assert (8 == length);
-		data.set(Double.longBitsToDouble(LazyUtils
-				.byteArrayToLong(bytes, start)));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java
deleted file mode 100644
index e7593e4..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyColumnarObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyListObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyMapObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyStructObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyBooleanObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyByteObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyDoubleObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyFloatObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyIntObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyLongObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyShortObjectInspector;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyStringObjectInspector;
-
-/**
- * LazyFactory.
- * 
- */
-public final class LazyFactory {
-
-	/**
-	 * Create a lazy binary primitive class given the type name.
-	 */
-	public static LazyPrimitive<?, ?> createLazyPrimitiveClass(
-			PrimitiveObjectInspector oi) {
-		PrimitiveCategory p = oi.getPrimitiveCategory();
-		switch (p) {
-		case BOOLEAN:
-			return new LazyBoolean((LazyBooleanObjectInspector) oi);
-		case BYTE:
-			return new LazyByte((LazyByteObjectInspector) oi);
-		case SHORT:
-			return new LazyShort((LazyShortObjectInspector) oi);
-		case INT:
-			return new LazyInteger((LazyIntObjectInspector) oi);
-		case LONG:
-			return new LazyLong((LazyLongObjectInspector) oi);
-		case FLOAT:
-			return new LazyFloat((LazyFloatObjectInspector) oi);
-		case DOUBLE:
-			return new LazyDouble((LazyDoubleObjectInspector) oi);
-		case STRING:
-			return new LazyString((LazyStringObjectInspector) oi);
-		default:
-			throw new RuntimeException("Internal error: no LazyObject for " + p);
-		}
-	}
-
-	/**
-	 * Create a hierarchical LazyObject based on the given typeInfo.
-	 */
-	public static LazyObject<? extends ObjectInspector> createLazyObject(
-			ObjectInspector oi) {
-		ObjectInspector.Category c = oi.getCategory();
-		switch (c) {
-		case PRIMITIVE:
-			return createLazyPrimitiveClass((PrimitiveObjectInspector) oi);
-		case MAP:
-			return new LazyMap((LazyMapObjectInspector) oi);
-		case LIST:
-			return new LazyArray((LazyListObjectInspector) oi);
-		case STRUCT: // check whether it is a top-level struct
-			if (oi instanceof LazyStructObjectInspector)
-				return new LazyStruct((LazyStructObjectInspector) oi);
-			else
-				return new LazyColumnar((LazyColumnarObjectInspector) oi);
-		default:
-			throw new RuntimeException("Hive LazySerDe Internal error.");
-		}
-	}
-
-	private LazyFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java
deleted file mode 100644
index 303cc67..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyFloat.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.FloatWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyFloatObjectInspector;
-
-/**
- * LazyObject for storing a value of Double.
- * 
- */
-public class LazyFloat extends
-		LazyPrimitive<LazyFloatObjectInspector, FloatWritable> {
-
-	public LazyFloat(LazyFloatObjectInspector oi) {
-		super(oi);
-		data = new FloatWritable();
-	}
-
-	public LazyFloat(LazyFloat copy) {
-		super(copy);
-		data = new FloatWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (4 == length);
-		data.set(Float.intBitsToFloat(LazyUtils.byteArrayToInt(bytes, start)));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java
deleted file mode 100644
index c908c40..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyInteger.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.IntWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyIntObjectInspector;
-
-/**
- * LazyObject for storing a value of Integer.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyInteger extends
-		LazyPrimitive<LazyIntObjectInspector, IntWritable> {
-
-	public LazyInteger(LazyIntObjectInspector oi) {
-		super(oi);
-		data = new IntWritable();
-	}
-
-	public LazyInteger(LazyInteger copy) {
-		super(copy);
-		data = new IntWritable(copy.data.get());
-	}
-
-	/**
-	 * The reusable vInt for decoding the integer.
-	 */
-	VInt vInt = new LazyUtils.VInt();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		LazyUtils.readVInt(bytes, start, vInt);
-		assert (length == vInt.length);
-		if (length != vInt.length)
-			throw new IllegalStateException(
-					"parse int: length mismatch, expected " + vInt.length
-							+ " but get " + length);
-		data.set(vInt.value);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java
deleted file mode 100644
index 38097e6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyLong.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VLong;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyLongObjectInspector;
-
-/**
- * LazyObject for storing a value of Long.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyLong extends
-		LazyPrimitive<LazyLongObjectInspector, LongWritable> {
-
-	public LazyLong(LazyLongObjectInspector oi) {
-		super(oi);
-		data = new LongWritable();
-	}
-
-	public LazyLong(LazyLong copy) {
-		super(copy);
-		data = new LongWritable(copy.data.get());
-	}
-
-	/**
-	 * The reusable vLong for decoding the long.
-	 */
-	VLong vLong = new LazyUtils.VLong();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		LazyUtils.readVLong(bytes, start, vLong);
-		assert (length == vLong.length);
-		if (length != vLong.length)
-			throw new IllegalStateException("parse long: length mismatch");
-		data.set(vLong.value);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java
deleted file mode 100644
index 56bc41b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyMap.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef;
-import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyMapObjectInspector;
-
-/**
- * LazyMap is serialized as follows: start A b c b c b c end bytes[] ->
- * |--------|---|---|---|---| ... |---|---|
- * 
- * Section A is the null-bytes. Suppose the map has N key-value pairs, then
- * there are (N*2+7)/8 bytes used as null-bytes. Each bit corresponds to a key
- * or a value and it indicates whether that key or value is null (0) or not null
- * (1).
- * 
- * After A, all the bytes are actual serialized data of the map, which are
- * key-value pairs. b represent the keys and c represent the values. Each of
- * them is again a LazyObject.
- * 
- */
-
-@SuppressWarnings("rawtypes")
-public class LazyMap extends LazyNonPrimitive<LazyMapObjectInspector> {
-
-	private static Log LOG = LogFactory.getLog(LazyMap.class.getName());
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed;
-
-	/**
-	 * The size of the map. Only valid when the data is parsed. -1 when the map
-	 * is NULL.
-	 */
-	int mapSize = 0;
-
-	/**
-	 * The beginning position and length of key[i] and value[i]. Only valid when
-	 * the data is parsed.
-	 */
-	int[] keyStart;
-	int[] keyLength;
-	int[] valueStart;
-	int[] valueLength;
-	/**
-	 * Whether valueObjects[i]/keyObjects[i] is initialized or not.
-	 */
-	boolean[] keyInited;
-	boolean[] valueInited;
-
-	/**
-	 * Whether valueObjects[i]/keyObjects[i] is null or not This could not be
-	 * inferred from the length of the object. In particular, a 0-length string
-	 * is not null.
-	 */
-	boolean[] keyIsNull;
-	boolean[] valueIsNull;
-
-	/**
-	 * The keys are stored in an array of LazyPrimitives.
-	 */
-	LazyPrimitive<?, ?>[] keyObjects;
-	/**
-	 * The values are stored in an array of LazyObjects. value[index] will start
-	 * from KeyEnd[index] + 1, and ends before KeyStart[index+1] - 1.
-	 */
-	LazyObject[] valueObjects;
-
-	protected LazyMap(LazyMapObjectInspector oi) {
-		super(oi);
-	}
-
-	/**
-	 * Set the row data for this LazyMap.
-	 * 
-	 * @see LazyObject#init(ByteArrayRef, int, int)
-	 */
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	/**
-	 * Adjust the size of arrays: keyStart, keyLength valueStart, valueLength
-	 * keyInited, keyIsNull valueInited, valueIsNull.
-	 */
-	protected void adjustArraySize(int newSize) {
-		if (keyStart == null || keyStart.length < newSize) {
-			keyStart = new int[newSize];
-			keyLength = new int[newSize];
-			valueStart = new int[newSize];
-			valueLength = new int[newSize];
-			keyInited = new boolean[newSize];
-			keyIsNull = new boolean[newSize];
-			valueInited = new boolean[newSize];
-			valueIsNull = new boolean[newSize];
-			keyObjects = new LazyPrimitive<?, ?>[newSize];
-			valueObjects = new LazyObject[newSize];
-		}
-	}
-
-	boolean nullMapKey = false;
-	VInt vInt = new LazyUtils.VInt();
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-
-	/**
-	 * Parse the byte[] and fill keyStart, keyLength, keyIsNull valueStart,
-	 * valueLength and valueIsNull.
-	 */
-	private void parse() {
-
-		// get the VInt that represents the map size
-		LazyUtils.readVInt(bytes, start, vInt);
-		mapSize = vInt.value;
-		if (0 == mapSize) {
-			parsed = true;
-			return;
-		}
-
-		// adjust arrays
-		adjustArraySize(mapSize);
-
-		// find out the null-bytes
-		int mapByteStart = start + vInt.length;
-		int nullByteCur = mapByteStart;
-		int nullByteEnd = mapByteStart + (mapSize * 2 + 7) / 8;
-		int lastElementByteEnd = nullByteEnd;
-
-		// parsing the keys and values one by one
-		for (int i = 0; i < mapSize; i++) {
-			// parse a key
-			keyIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << ((i * 2) % 8))) != 0) {
-				keyIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(
-						((MapObjectInspector) oi).getMapKeyObjectInspector(),
-						bytes, lastElementByteEnd, recordInfo);
-				keyStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				keyLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = keyStart[i] + keyLength[i];
-			} else if (!nullMapKey) {
-				nullMapKey = true;
-				LOG.warn("Null map key encountered! Ignoring similar problems.");
-			}
-
-			// parse a value
-			valueIsNull[i] = true;
-			if ((bytes[nullByteCur] & (1 << ((i * 2 + 1) % 8))) != 0) {
-				valueIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(
-						((MapObjectInspector) oi).getMapValueObjectInspector(),
-						bytes, lastElementByteEnd, recordInfo);
-				valueStart[i] = lastElementByteEnd + recordInfo.elementOffset;
-				valueLength[i] = recordInfo.elementSize;
-				lastElementByteEnd = valueStart[i] + valueLength[i];
-			}
-
-			// move onto the next null byte
-			if (3 == (i % 4)) {
-				nullByteCur++;
-			}
-		}
-
-		Arrays.fill(keyInited, 0, mapSize, false);
-		Arrays.fill(valueInited, 0, mapSize, false);
-		parsed = true;
-	}
-
-	/**
-	 * Get the value object with the index without checking parsed.
-	 * 
-	 * @param index
-	 *            The index into the array starting from 0
-	 */
-	private LazyObject uncheckedGetValue(int index) {
-		if (valueIsNull[index]) {
-			return null;
-		}
-		if (!valueInited[index]) {
-			valueInited[index] = true;
-			if (valueObjects[index] == null) {
-				valueObjects[index] = LazyFactory
-						.createLazyObject(((MapObjectInspector) oi)
-								.getMapValueObjectInspector());
-			}
-			valueObjects[index].init(bytes, valueStart[index],
-					valueLength[index]);
-		}
-		return valueObjects[index];
-	}
-
-	/**
-	 * Get the value in the map for the key.
-	 * 
-	 * If there are multiple matches (which is possible in the serialized
-	 * format), only the first one is returned.
-	 * 
-	 * The most efficient way to get the value for the key is to serialize the
-	 * key and then try to find it in the array. We do linear search because in
-	 * most cases, user only wants to get one or two values out of the map, and
-	 * the cost of building up a HashMap is substantially higher.
-	 * 
-	 * @param key
-	 *            The key object that we are looking for.
-	 * @return The corresponding value object, or NULL if not found
-	 */
-	public Object getMapValueElement(Object key) {
-		if (!parsed) {
-			parse();
-		}
-		// search for the key
-		for (int i = 0; i < mapSize; i++) {
-			LazyPrimitive<?, ?> lazyKeyI = uncheckedGetKey(i);
-			if (lazyKeyI == null) {
-				continue;
-			}
-			// getWritableObject() will convert LazyPrimitive to actual
-			// primitive
-			// writable objects.
-			Object keyI = lazyKeyI.getWritableObject();
-			if (keyI == null) {
-				continue;
-			}
-			if (keyI.equals(key)) {
-				// Got a match, return the value
-				LazyObject v = uncheckedGetValue(i);
-				return v == null ? v : v.getObject();
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Get the key object with the index without checking parsed.
-	 * 
-	 * @param index
-	 *            The index into the array starting from 0
-	 */
-	private LazyPrimitive<?, ?> uncheckedGetKey(int index) {
-		if (keyIsNull[index]) {
-			return null;
-		}
-		if (!keyInited[index]) {
-			keyInited[index] = true;
-			if (keyObjects[index] == null) {
-				// Keys are always primitive
-				keyObjects[index] = LazyFactory
-						.createLazyPrimitiveClass((PrimitiveObjectInspector) ((MapObjectInspector) oi)
-								.getMapKeyObjectInspector());
-			}
-			keyObjects[index].init(bytes, keyStart[index], keyLength[index]);
-		}
-		return keyObjects[index];
-	}
-
-	/**
-	 * cachedMap is reused for different calls to getMap(). But each LazyMap has
-	 * a separate cachedMap so we won't overwrite the data by accident.
-	 */
-	LinkedHashMap<Object, Object> cachedMap;
-
-	/**
-	 * Return the map object representing this LazyMap. Note that the keyObjects
-	 * will be Writable primitive objects.
-	 * 
-	 * @return the map object
-	 */
-	public Map<Object, Object> getMap() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedMap == null) {
-			// Use LinkedHashMap to provide deterministic order
-			cachedMap = new LinkedHashMap<Object, Object>();
-		} else {
-			cachedMap.clear();
-		}
-
-		// go through each element of the map
-		for (int i = 0; i < mapSize; i++) {
-			LazyPrimitive<?, ?> lazyKey = uncheckedGetKey(i);
-			if (lazyKey == null) {
-				continue;
-			}
-			Object key = lazyKey.getObject();
-			// do not overwrite if there are duplicate keys
-			if (key != null && !cachedMap.containsKey(key)) {
-				LazyObject lazyValue = uncheckedGetValue(i);
-				Object value = (lazyValue == null ? null : lazyValue
-						.getObject());
-				cachedMap.put(key, value);
-			}
-		}
-		return cachedMap;
-	}
-
-	/**
-	 * Get the size of the map represented by this LazyMap.
-	 * 
-	 * @return The size of the map
-	 */
-	public int getMapSize() {
-		if (!parsed) {
-			parse();
-		}
-		return mapSize;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java
deleted file mode 100644
index b151f2d..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyNonPrimitive.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyPrimitive stores a primitive Object in a LazyObject.
- */
-public abstract class LazyNonPrimitive<OI extends ObjectInspector> extends
-		LazyObject<OI> {
-
-	protected byte[] bytes;
-	protected int start;
-	protected int length;
-
-	/**
-	 * Create a LazyNonPrimitive object with the specified ObjectInspector.
-	 * 
-	 * @param oi
-	 *            The ObjectInspector would have to have a hierarchy of
-	 *            LazyObjectInspectors with the leaf nodes being
-	 *            WritableObjectInspectors. It's used both for accessing the
-	 *            type hierarchy of the complex object, as well as getting meta
-	 *            information (separator, nullSequence, etc) when parsing the
-	 *            lazy object.
-	 */
-	protected LazyNonPrimitive(OI oi) {
-		super(oi);
-		bytes = null;
-		start = 0;
-		length = 0;
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (bytes == null) {
-			throw new RuntimeException("bytes cannot be null!");
-		}
-		this.bytes = bytes;
-		this.start = start;
-		this.length = length;
-		assert start >= 0;
-		assert start + length <= bytes.length;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-
-	@Override
-	public int hashCode() {
-		return LazyUtils.hashBytes(bytes, start, length);
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) {
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java
deleted file mode 100644
index 9aaaa88..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyObject.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyObject stores an object in a range of bytes in a byte[].
- * 
- * A LazyObject can represent any primitive object or hierarchical object like
- * array, map or struct.
- */
-public abstract class LazyObject<OI extends ObjectInspector> {
-
-	OI oi;
-
-	/**
-	 * Create a LazyObject.
-	 * 
-	 * @param oi
-	 *            Derived classes can access meta information about this Lazy
-	 *            Object (e.g, separator, nullSequence, escaper) from it.
-	 */
-	protected LazyObject(OI oi) {
-		this.oi = oi;
-	}
-
-	/**
-	 * Set the data for this LazyObject. We take ByteArrayRef instead of byte[]
-	 * so that we will be able to drop the reference to byte[] by a single
-	 * assignment. The ByteArrayRef object can be reused across multiple rows.
-	 * 
-	 * @param bytes
-	 *            The wrapper of the byte[].
-	 * @param start
-	 *            The start position inside the bytes.
-	 * @param length
-	 *            The length of the data, starting from "start"
-	 * @see ByteArrayRef
-	 */
-	public abstract void init(byte[] bytes, int start, int length);
-
-	public abstract void init(IFrameTupleReference tuple);
-
-	/**
-	 * If the LazyObject is a primitive Object, then deserialize it and return
-	 * the actual primitive Object. Otherwise (array, map, struct), return this.
-	 */
-	public abstract Object getObject();
-
-	@Override
-	public abstract int hashCode();
-
-	protected OI getInspector() {
-		return oi;
-	}
-
-	protected void setInspector(OI oi) {
-		this.oi = oi;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java
deleted file mode 100644
index 888e5b2..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyPrimitive.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-/**
- * LazyPrimitive stores a primitive Object in a LazyObject.
- */
-public abstract class LazyPrimitive<OI extends ObjectInspector, T extends Writable>
-		extends LazyObject<OI> {
-
-	LazyPrimitive(OI oi) {
-		super(oi);
-	}
-
-	LazyPrimitive(LazyPrimitive<OI, T> copy) {
-		super(copy.oi);
-		isNull = copy.isNull;
-	}
-
-	T data;
-	boolean isNull = false;
-
-	/**
-	 * Returns the primitive object represented by this LazyObject. This is
-	 * useful because it can make sure we have "null" for null objects.
-	 */
-	@Override
-	public Object getObject() {
-		return isNull ? null : this;
-	}
-
-	public T getWritableObject() {
-		return isNull ? null : data;
-	}
-
-	@Override
-	public String toString() {
-		return isNull ? "null" : data.toString();
-	}
-
-	@Override
-	public int hashCode() {
-		return isNull ? 0 : data.hashCode();
-	}
-
-	@Override
-	public void init(IFrameTupleReference tuple) {
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java
deleted file mode 100644
index 4d0dff6..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazySerDe.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.serde.Constants;
-import org.apache.hadoop.hive.serde2.ByteStream;
-import org.apache.hadoop.hive.serde2.ByteStream.Output;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-
-/**
- * The LazySerDe class combines the lazy property of LazySimpleSerDe class and
- * the binary property of BinarySortable class. Lazy means a field is not
- * deserialized until required. Binary means a field is serialized in binary
- * compact format.
- */
-public class LazySerDe implements SerDe {
-
-	public static final Log LOG = LogFactory.getLog(LazySerDe.class.getName());
-
-	public LazySerDe() {
-	}
-
-	List<String> columnNames;
-	List<TypeInfo> columnTypes;
-
-	TypeInfo rowTypeInfo;
-	ObjectInspector cachedObjectInspector;
-
-	// The object for storing row data
-	LazyColumnar cachedLazyStruct;
-
-	/**
-	 * Initialize the SerDe with configuration and table information.
-	 */
-	@Override
-	public void initialize(Configuration conf, Properties tbl)
-			throws SerDeException {
-		// Get column names and types
-		String columnNameProperty = tbl.getProperty(Constants.LIST_COLUMNS);
-		String columnTypeProperty = tbl
-				.getProperty(Constants.LIST_COLUMN_TYPES);
-		if (columnNameProperty.length() == 0) {
-			columnNames = new ArrayList<String>();
-		} else {
-			columnNames = Arrays.asList(columnNameProperty.split(","));
-		}
-		if (columnTypeProperty.length() == 0) {
-			columnTypes = new ArrayList<TypeInfo>();
-		} else {
-			columnTypes = TypeInfoUtils
-					.getTypeInfosFromTypeString(columnTypeProperty);
-		}
-		assert (columnNames.size() == columnTypes.size());
-		// Create row related objects
-		rowTypeInfo = TypeInfoFactory.getStructTypeInfo(columnNames,
-				columnTypes);
-		// Create the object inspector and the lazy binary struct object
-		cachedObjectInspector = LazyUtils.getLazyObjectInspectorFromTypeInfo(
-				rowTypeInfo, true);
-		cachedLazyStruct = (LazyColumnar) LazyFactory
-				.createLazyObject(cachedObjectInspector);
-		// output debug info
-		LOG.debug("LazySerDe initialized with: columnNames=" + columnNames
-				+ " columnTypes=" + columnTypes);
-	}
-
-	/**
-	 * Returns the ObjectInspector for the row.
-	 */
-	@Override
-	public ObjectInspector getObjectInspector() throws SerDeException {
-		return cachedObjectInspector;
-	}
-
-	/**
-	 * Returns the Writable Class after serialization.
-	 */
-	@Override
-	public Class<? extends Writable> getSerializedClass() {
-		return BytesWritable.class;
-	}
-
-	// The wrapper for byte array
-	ByteArrayRef byteArrayRef;
-
-	/**
-	 * Deserialize a table record to a Lazy struct.
-	 */
-	@SuppressWarnings("deprecation")
-	@Override
-	public Object deserialize(Writable field) throws SerDeException {
-		if (byteArrayRef == null) {
-			byteArrayRef = new ByteArrayRef();
-		}
-		if (field instanceof BytesWritable) {
-			BytesWritable b = (BytesWritable) field;
-			if (b.getSize() == 0) {
-				return null;
-			}
-			// For backward-compatibility with hadoop 0.17
-			byteArrayRef.setData(b.get());
-			cachedLazyStruct.init(byteArrayRef.getData(), 0, b.getSize());
-		} else if (field instanceof Text) {
-			Text t = (Text) field;
-			if (t.getLength() == 0) {
-				return null;
-			}
-			byteArrayRef.setData(t.getBytes());
-			cachedLazyStruct.init(byteArrayRef.getData(), 0, t.getLength());
-		} else {
-			throw new SerDeException(getClass().toString()
-					+ ": expects either BytesWritable or Text object!");
-		}
-		return cachedLazyStruct;
-	}
-
-	/**
-	 * The reusable output buffer and serialize byte buffer.
-	 */
-	BytesWritable serializeBytesWritable = new BytesWritable();
-	ByteStream.Output serializeByteStream = new ByteStream.Output();
-
-	/**
-	 * Serialize an object to a byte buffer in a binary compact way.
-	 */
-	@Override
-	public Writable serialize(Object obj, ObjectInspector objInspector)
-			throws SerDeException {
-		// make sure it is a struct record or not
-		serializeByteStream.reset();
-
-		if (objInspector.getCategory() != Category.STRUCT) {
-			// serialize the primitive object
-			serialize(serializeByteStream, obj, objInspector);
-		} else {
-			// serialize the row as a struct
-			serializeStruct(serializeByteStream, obj,
-					(StructObjectInspector) objInspector);
-		}
-		// return the serialized bytes
-		serializeBytesWritable.set(serializeByteStream.getData(), 0,
-				serializeByteStream.getCount());
-		return serializeBytesWritable;
-	}
-
-	boolean nullMapKey = false;
-
-	/**
-	 * Serialize a struct object without writing the byte size. This function is
-	 * shared by both row serialization and struct serialization.
-	 * 
-	 * @param byteStream
-	 *            the byte stream storing the serialization data
-	 * @param obj
-	 *            the struct object to serialize
-	 * @param objInspector
-	 *            the struct object inspector
-	 */
-	private void serializeStruct(Output byteStream, Object obj,
-			StructObjectInspector soi) {
-		// do nothing for null struct
-		if (null == obj) {
-			return;
-		}
-		/*
-		 * Interleave serializing one null byte and 8 struct fields in each
-		 * round, in order to support data deserialization with different table
-		 * schemas
-		 */
-		List<? extends StructField> fields = soi.getAllStructFieldRefs();
-		int size = fields.size();
-		int lasti = 0;
-		byte nullByte = 0;
-		for (int i = 0; i < size; i++) {
-			// set bit to 1 if a field is not null
-			if (null != soi.getStructFieldData(obj, fields.get(i))) {
-				nullByte |= 1 << (i % 8);
-			}
-			// write the null byte every eight elements or
-			// if this is the last element and serialize the
-			// corresponding 8 struct fields at the same time
-			if (7 == i % 8 || i == size - 1) {
-				serializeByteStream.write(nullByte);
-				for (int j = lasti; j <= i; j++) {
-					serialize(serializeByteStream, soi.getStructFieldData(obj,
-							fields.get(j)), fields.get(j)
-							.getFieldObjectInspector());
-				}
-				lasti = i + 1;
-				nullByte = 0;
-			}
-		}
-	}
-
-	/**
-	 * A recursive function that serialize an object to a byte buffer based on
-	 * its object inspector.
-	 * 
-	 * @param byteStream
-	 *            the byte stream storing the serialization data
-	 * @param obj
-	 *            the object to serialize
-	 * @param objInspector
-	 *            the object inspector
-	 */
-	private void serialize(Output byteStream, Object obj,
-			ObjectInspector objInspector) {
-
-		// do nothing for null object
-		if (null == obj) {
-			return;
-		}
-
-		switch (objInspector.getCategory()) {
-		case PRIMITIVE: {
-			PrimitiveObjectInspector poi = (PrimitiveObjectInspector) objInspector;
-			switch (poi.getPrimitiveCategory()) {
-			case VOID: {
-				return;
-			}
-			case BOOLEAN: {
-				boolean v = ((BooleanObjectInspector) poi).get(obj);
-				byteStream.write((byte) (v ? 1 : 0));
-				return;
-			}
-			case BYTE: {
-				ByteObjectInspector boi = (ByteObjectInspector) poi;
-				byte v = boi.get(obj);
-				byteStream.write(v);
-				return;
-			}
-			case SHORT: {
-				ShortObjectInspector spoi = (ShortObjectInspector) poi;
-				short v = spoi.get(obj);
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case INT: {
-				IntObjectInspector ioi = (IntObjectInspector) poi;
-				int v = ioi.get(obj);
-				LazyUtils.writeVInt(byteStream, v);
-				return;
-			}
-			case LONG: {
-				LongObjectInspector loi = (LongObjectInspector) poi;
-				long v = loi.get(obj);
-				LazyUtils.writeVLong(byteStream, v);
-				return;
-			}
-			case FLOAT: {
-				FloatObjectInspector foi = (FloatObjectInspector) poi;
-				int v = Float.floatToIntBits(foi.get(obj));
-				byteStream.write((byte) (v >> 24));
-				byteStream.write((byte) (v >> 16));
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case DOUBLE: {
-				DoubleObjectInspector doi = (DoubleObjectInspector) poi;
-				long v = Double.doubleToLongBits(doi.get(obj));
-				byteStream.write((byte) (v >> 56));
-				byteStream.write((byte) (v >> 48));
-				byteStream.write((byte) (v >> 40));
-				byteStream.write((byte) (v >> 32));
-				byteStream.write((byte) (v >> 24));
-				byteStream.write((byte) (v >> 16));
-				byteStream.write((byte) (v >> 8));
-				byteStream.write((byte) (v));
-				return;
-			}
-			case STRING: {
-				StringObjectInspector soi = (StringObjectInspector) poi;
-				Text t = soi.getPrimitiveWritableObject(obj);
-				/* write byte size of the string which is a vint */
-				int length = t.getLength();
-				LazyUtils.writeVInt(byteStream, length);
-				/* write string itself */
-				byte[] data = t.getBytes();
-				byteStream.write(data, 0, length);
-				return;
-			}
-			default: {
-				throw new RuntimeException("Unrecognized type: "
-						+ poi.getPrimitiveCategory());
-			}
-			}
-		}
-		case LIST: {
-			ListObjectInspector loi = (ListObjectInspector) objInspector;
-			ObjectInspector eoi = loi.getListElementObjectInspector();
-
-			// 1/ reserve spaces for the byte size of the list
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int listStart = byteStream.getCount();
-
-			// 2/ write the size of the list as a VInt
-			int size = loi.getListLength(obj);
-			LazyUtils.writeVInt(byteStream, size);
-
-			// 3/ write the null bytes
-			byte nullByte = 0;
-			for (int eid = 0; eid < size; eid++) {
-				// set the bit to 1 if an element is not null
-				if (null != loi.getListElement(obj, eid)) {
-					nullByte |= 1 << (eid % 8);
-				}
-				// store the byte every eight elements or
-				// if this is the last element
-				if (7 == eid % 8 || eid == size - 1) {
-					byteStream.write(nullByte);
-					nullByte = 0;
-				}
-			}
-
-			// 4/ write element by element from the list
-			for (int eid = 0; eid < size; eid++) {
-				serialize(byteStream, loi.getListElement(obj, eid), eoi);
-			}
-
-			// 5/ update the list byte size
-			int listEnd = byteStream.getCount();
-			int listSize = listEnd - listStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (listSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (listSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (listSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (listSize);
-
-			return;
-		}
-		case MAP: {
-			MapObjectInspector moi = (MapObjectInspector) objInspector;
-			ObjectInspector koi = moi.getMapKeyObjectInspector();
-			ObjectInspector voi = moi.getMapValueObjectInspector();
-			Map<?, ?> map = moi.getMap(obj);
-
-			// 1/ reserve spaces for the byte size of the map
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int mapStart = byteStream.getCount();
-
-			// 2/ write the size of the map which is a VInt
-			int size = map.size();
-			LazyUtils.writeVInt(byteStream, size);
-
-			// 3/ write the null bytes
-			int b = 0;
-			byte nullByte = 0;
-			for (Map.Entry<?, ?> entry : map.entrySet()) {
-				// set the bit to 1 if a key is not null
-				if (null != entry.getKey()) {
-					nullByte |= 1 << (b % 8);
-				} else if (!nullMapKey) {
-					nullMapKey = true;
-					LOG.warn("Null map key encountered! Ignoring similar problems.");
-				}
-				b++;
-				// set the bit to 1 if a value is not null
-				if (null != entry.getValue()) {
-					nullByte |= 1 << (b % 8);
-				}
-				b++;
-				// write the byte to stream every 4 key-value pairs
-				// or if this is the last key-value pair
-				if (0 == b % 8 || b == size * 2) {
-					byteStream.write(nullByte);
-					nullByte = 0;
-				}
-			}
-
-			// 4/ write key-value pairs one by one
-			for (Map.Entry<?, ?> entry : map.entrySet()) {
-				serialize(byteStream, entry.getKey(), koi);
-				serialize(byteStream, entry.getValue(), voi);
-			}
-
-			// 5/ update the byte size of the map
-			int mapEnd = byteStream.getCount();
-			int mapSize = mapEnd - mapStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (mapSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (mapSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (mapSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (mapSize);
-
-			return;
-		}
-		case STRUCT: {
-			// 1/ reserve spaces for the byte size of the struct
-			// which is a integer and takes four bytes
-			int byteSizeStart = byteStream.getCount();
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			byteStream.write((byte) 0);
-			int structStart = byteStream.getCount();
-
-			// 2/ serialize the struct
-			serializeStruct(byteStream, obj,
-					(StructObjectInspector) objInspector);
-
-			// 3/ update the byte size of the struct
-			int structEnd = byteStream.getCount();
-			int structSize = structEnd - structStart;
-			byte[] bytes = byteStream.getData();
-			bytes[byteSizeStart] = (byte) (structSize >> 24);
-			bytes[byteSizeStart + 1] = (byte) (structSize >> 16);
-			bytes[byteSizeStart + 2] = (byte) (structSize >> 8);
-			bytes[byteSizeStart + 3] = (byte) (structSize);
-
-			return;
-		}
-		default: {
-			throw new RuntimeException("Unrecognized type: "
-					+ objInspector.getCategory());
-		}
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java
deleted file mode 100644
index 7484b72..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyShort.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyShortObjectInspector;
-
-/**
- * LazyObject for storing a value of Short.
- * 
- * <p>
- * Part of the code is adapted from Apache Harmony Project.
- * 
- * As with the specification, this implementation relied on code laid out in <a
- * href="http://www.hackersdelight.org/">Henry S. Warren, Jr.'s Hacker's
- * Delight, (Addison Wesley, 2002)</a> as well as <a
- * href="http://aggregate.org/MAGIC/">The Aggregate's Magic Algorithms</a>.
- * </p>
- * 
- */
-public class LazyShort extends
-		LazyPrimitive<LazyShortObjectInspector, ShortWritable> {
-
-	public LazyShort(LazyShortObjectInspector oi) {
-		super(oi);
-		data = new ShortWritable();
-	}
-
-	public LazyShort(LazyShort copy) {
-		super(copy);
-		data = new ShortWritable(copy.data.get());
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		assert (2 == length);
-		data.set(LazyUtils.byteArrayToShort(bytes, start));
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java
deleted file mode 100644
index c13533b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyString.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.VInt;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.LazyStringObjectInspector;
-
-/**
- * LazyObject for storing a value of String.
- */
-public class LazyString extends LazyPrimitive<LazyStringObjectInspector, Text> {
-
-	public LazyString(LazyStringObjectInspector oi) {
-		super(oi);
-		data = new Text();
-	}
-
-	public LazyString(LazyString copy) {
-		super(copy);
-		data = new Text(copy.data);
-	}
-
-	VInt vInt = new LazyUtils.VInt();
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		if (length == 0) {
-			isNull = true;
-			return;
-		} else
-			isNull = false;
-
-		// get the byte length of the string
-		LazyUtils.readVInt(bytes, start, vInt);
-		if (vInt.value + vInt.length != length)
-			throw new IllegalStateException(
-					"parse string: length mismatch, expected "
-							+ (vInt.value + vInt.length) + " but get " + length);
-		assert (length - vInt.length > -1);
-		data.set(bytes, start + vInt.length, length - vInt.length);
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java
deleted file mode 100644
index 61cc335..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyStruct.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils.RecordInfo;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyStructObjectInspector;
-
-/**
- * LazyStruct is serialized as follows: start A B A B A B end bytes[] ->
- * |-----|---------|--- ... ---|-----|---------|
- * 
- * Section A is one null-byte, corresponding to eight struct fields in Section
- * B. Each bit indicates whether the corresponding field is null (0) or not null
- * (1). Each field is a LazyObject.
- * 
- * Following B, there is another section A and B. This pattern repeats until the
- * all struct fields are serialized.
- */
-public class LazyStruct extends LazyNonPrimitive<LazyStructObjectInspector> {
-
-	private static Log LOG = LogFactory.getLog(LazyStruct.class.getName());
-
-	/**
-	 * Whether the data is already parsed or not.
-	 */
-	boolean parsed;
-
-	/**
-	 * The fields of the struct.
-	 */
-	@SuppressWarnings("rawtypes")
-	LazyObject[] fields;
-
-	/**
-	 * Whether a field is initialized or not.
-	 */
-	boolean[] fieldInited;
-
-	/**
-	 * Whether a field is null or not. Because length is 0 does not means the
-	 * field is null. In particular, a 0-length string is not null.
-	 */
-	boolean[] fieldIsNull;
-
-	/**
-	 * The start positions and lengths of struct fields. Only valid when the
-	 * data is parsed.
-	 */
-	int[] fieldStart;
-	int[] fieldLength;
-
-	/**
-	 * Construct a LazyStruct object with an ObjectInspector.
-	 */
-	protected LazyStruct(LazyStructObjectInspector oi) {
-		super(oi);
-	}
-
-	@Override
-	public void init(byte[] bytes, int start, int length) {
-		super.init(bytes, start, length);
-		parsed = false;
-	}
-
-	RecordInfo recordInfo = new LazyUtils.RecordInfo();
-	boolean missingFieldWarned = false;
-	boolean extraFieldWarned = false;
-
-	/**
-	 * Parse the byte[] and fill fieldStart, fieldLength, fieldInited and
-	 * fieldIsNull.
-	 */
-	private void parse() {
-
-		List<? extends StructField> fieldRefs = ((StructObjectInspector) oi)
-				.getAllStructFieldRefs();
-
-		if (fields == null) {
-			fields = new LazyObject[fieldRefs.size()];
-			for (int i = 0; i < fields.length; i++) {
-				ObjectInspector insp = fieldRefs.get(i)
-						.getFieldObjectInspector();
-				fields[i] = insp == null ? null : LazyFactory
-						.createLazyObject(insp);
-			}
-			fieldInited = new boolean[fields.length];
-			fieldIsNull = new boolean[fields.length];
-			fieldStart = new int[fields.length];
-			fieldLength = new int[fields.length];
-		}
-
-		/**
-		 * Please note that one null byte is followed by eight fields, then more
-		 * null byte and fields.
-		 */
-
-		int fieldId = 0;
-		int structByteEnd = start + length;
-
-		byte nullByte = bytes[start];
-		int lastFieldByteEnd = start + 1;
-		// Go through all bytes in the byte[]
-		for (int i = 0; i < fields.length; i++) {
-			fieldIsNull[i] = true;
-			if ((nullByte & (1 << (i % 8))) != 0) {
-				fieldIsNull[i] = false;
-				LazyUtils.checkObjectByteInfo(fieldRefs.get(i)
-						.getFieldObjectInspector(), bytes, lastFieldByteEnd,
-						recordInfo);
-				fieldStart[i] = lastFieldByteEnd + recordInfo.elementOffset;
-				fieldLength[i] = recordInfo.elementSize;
-				lastFieldByteEnd = fieldStart[i] + fieldLength[i];
-			}
-
-			// count how many fields are there
-			if (lastFieldByteEnd <= structByteEnd) {
-				fieldId++;
-			}
-			// next byte is a null byte if there are more bytes to go
-			if (7 == (i % 8)) {
-				if (lastFieldByteEnd < structByteEnd) {
-					nullByte = bytes[lastFieldByteEnd];
-					lastFieldByteEnd++;
-				} else {
-					// otherwise all null afterwards
-					nullByte = 0;
-					lastFieldByteEnd++;
-				}
-			}
-		}
-
-		// Extra bytes at the end?
-		if (!extraFieldWarned && lastFieldByteEnd < structByteEnd) {
-			extraFieldWarned = true;
-			LOG.warn("Extra bytes detected at the end of the row! Ignoring similar "
-					+ "problems.");
-		}
-
-		// Missing fields?
-		if (!missingFieldWarned && lastFieldByteEnd > structByteEnd) {
-			missingFieldWarned = true;
-			LOG.warn("Missing fields! Expected " + fields.length
-					+ " fields but " + "only got " + fieldId
-					+ "! Ignoring similar problems.");
-		}
-
-		Arrays.fill(fieldInited, false);
-		parsed = true;
-	}
-
-	/**
-	 * Get one field out of the struct.
-	 * 
-	 * If the field is a primitive field, return the actual object. Otherwise
-	 * return the LazyObject. This is because PrimitiveObjectInspector does not
-	 * have control over the object used by the user - the user simply directly
-	 * use the Object instead of going through Object
-	 * PrimitiveObjectInspector.get(Object).
-	 * 
-	 * @param fieldID
-	 *            The field ID
-	 * @return The field as a LazyObject
-	 */
-	public Object getField(int fieldID) {
-		if (!parsed) {
-			parse();
-		}
-		return uncheckedGetField(fieldID);
-	}
-
-	/**
-	 * Get the field out of the row without checking parsed. This is called by
-	 * both getField and getFieldsAsList.
-	 * 
-	 * @param fieldID
-	 *            The id of the field starting from 0.
-	 * @return The value of the field
-	 */
-	private Object uncheckedGetField(int fieldID) {
-		// Test the length first so in most cases we avoid doing a byte[]
-		// comparison.
-		if (fieldIsNull[fieldID]) {
-			return null;
-		}
-		if (!fieldInited[fieldID]) {
-			fieldInited[fieldID] = true;
-			fields[fieldID].init(bytes, fieldStart[fieldID],
-					fieldLength[fieldID]);
-		}
-		return fields[fieldID].getObject();
-	}
-
-	ArrayList<Object> cachedList;
-
-	/**
-	 * Get the values of the fields as an ArrayList.
-	 * 
-	 * @return The values of the fields as an ArrayList.
-	 */
-	public ArrayList<Object> getFieldsAsList() {
-		if (!parsed) {
-			parse();
-		}
-		if (cachedList == null) {
-			cachedList = new ArrayList<Object>();
-		} else {
-			cachedList.clear();
-		}
-		for (int i = 0; i < fields.length; i++) {
-			cachedList.add(uncheckedGetField(i));
-		}
-		return cachedList;
-	}
-
-	@Override
-	public Object getObject() {
-		return this;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java
deleted file mode 100644
index 2d0406c..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/LazyUtils.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.ByteStream.Output;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.typeinfo.ListTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.MapTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.WritableUtils;
-
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.LazyObjectInspectorFactory;
-import edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-
-/**
- * LazyUtils.
- * 
- */
-public final class LazyUtils {
-
-	/**
-	 * Convert the byte array to an int starting from the given offset. Refer to
-	 * code by aeden on DZone Snippets:
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the integer
-	 */
-	public static int byteArrayToInt(byte[] b, int offset) {
-		int value = 0;
-		for (int i = 0; i < 4; i++) {
-			int shift = (4 - 1 - i) * 8;
-			value += (b[i + offset] & 0x000000FF) << shift;
-		}
-		return value;
-	}
-
-	/**
-	 * Convert the byte array to a long starting from the given offset.
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the long
-	 */
-	public static long byteArrayToLong(byte[] b, int offset) {
-		long value = 0;
-		for (int i = 0; i < 8; i++) {
-			int shift = (8 - 1 - i) * 8;
-			value += ((long) (b[i + offset] & 0x00000000000000FF)) << shift;
-		}
-		return value;
-	}
-
-	/**
-	 * Convert the byte array to a short starting from the given offset.
-	 * 
-	 * @param b
-	 *            the byte array
-	 * @param offset
-	 *            the array offset
-	 * @return the short
-	 */
-	public static short byteArrayToShort(byte[] b, int offset) {
-		short value = 0;
-		value += (b[offset] & 0x000000FF) << 8;
-		value += (b[offset + 1] & 0x000000FF);
-		return value;
-	}
-
-	/**
-	 * Record is the unit that data is serialized in. A record includes two
-	 * parts. The first part stores the size of the element and the second part
-	 * stores the real element. size element record ->
-	 * |----|-------------------------|
-	 * 
-	 * A RecordInfo stores two information of a record, the size of the "size"
-	 * part which is the element offset and the size of the element part which
-	 * is element size.
-	 */
-	public static class RecordInfo {
-		public RecordInfo() {
-			elementOffset = 0;
-			elementSize = 0;
-		}
-
-		public byte elementOffset;
-		public int elementSize;
-
-		@Override
-		public String toString() {
-			return "(" + elementOffset + ", " + elementSize + ")";
-		}
-	}
-
-	static VInt vInt = new LazyUtils.VInt();
-
-	/**
-	 * Check a particular field and set its size and offset in bytes based on
-	 * the field type and the bytes arrays.
-	 * 
-	 * For void, boolean, byte, short, int, long, float and double, there is no
-	 * offset and the size is fixed. For string, map, list, struct, the first
-	 * four bytes are used to store the size. So the offset is 4 and the size is
-	 * computed by concating the first four bytes together. The first four bytes
-	 * are defined with respect to the offset in the bytes arrays.
-	 * 
-	 * @param objectInspector
-	 *            object inspector of the field
-	 * @param bytes
-	 *            bytes arrays store the table row
-	 * @param offset
-	 *            offset of this field
-	 * @param recordInfo
-	 *            modify this byteinfo object and return it
-	 */
-	public static void checkObjectByteInfo(ObjectInspector objectInspector,
-			byte[] bytes, int offset, RecordInfo recordInfo) {
-		Category category = objectInspector.getCategory();
-		switch (category) {
-		case PRIMITIVE:
-			PrimitiveCategory primitiveCategory = ((PrimitiveObjectInspector) objectInspector)
-					.getPrimitiveCategory();
-			switch (primitiveCategory) {
-			case VOID:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 0;
-				break;
-			case BOOLEAN:
-			case BYTE:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 1;
-				break;
-			case SHORT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 2;
-				break;
-			case FLOAT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 4;
-				break;
-			case DOUBLE:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = 8;
-				break;
-			case INT:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = WritableUtils
-						.decodeVIntSize(bytes[offset]);
-				break;
-			case LONG:
-				recordInfo.elementOffset = 0;
-				recordInfo.elementSize = WritableUtils
-						.decodeVIntSize(bytes[offset]);
-				break;
-			case STRING:
-				// using vint instead of 4 bytes
-				LazyUtils.readVInt(bytes, offset, vInt);
-				recordInfo.elementOffset = vInt.length;
-				recordInfo.elementSize = vInt.value;
-				break;
-			default: {
-				throw new RuntimeException("Unrecognized primitive type: "
-						+ primitiveCategory);
-			}
-			}
-			break;
-		case LIST:
-		case MAP:
-		case STRUCT:
-			recordInfo.elementOffset = 4;
-			recordInfo.elementSize = LazyUtils.byteArrayToInt(bytes, offset);
-			break;
-		default: {
-			throw new RuntimeException("Unrecognized non-primitive type: "
-					+ category);
-		}
-		}
-	}
-
-	/**
-	 * A zero-compressed encoded long.
-	 */
-	public static class VLong {
-		public VLong() {
-			value = 0;
-			length = 0;
-		}
-
-		public long value;
-		public byte length;
-	};
-
-	/**
-	 * Reads a zero-compressed encoded long from a byte array and returns it.
-	 * 
-	 * @param bytes
-	 *            the byte array
-	 * @param offset
-	 *            offset of the array to read from
-	 * @param vlong
-	 *            storing the deserialized long and its size in byte
-	 */
-	public static void readVLong(byte[] bytes, int offset, VLong vlong) {
-		byte firstByte = bytes[offset];
-		vlong.length = (byte) WritableUtils.decodeVIntSize(firstByte);
-		if (vlong.length == 1) {
-			vlong.value = firstByte;
-			return;
-		}
-		long i = 0;
-		for (int idx = 0; idx < vlong.length - 1; idx++) {
-			byte b = bytes[offset + 1 + idx];
-			i = i << 8;
-			i = i | (b & 0xFF);
-		}
-		vlong.value = (WritableUtils.isNegativeVInt(firstByte) ? (i ^ -1L) : i);
-	}
-
-	/**
-	 * A zero-compressed encoded integer.
-	 */
-	public static class VInt implements Serializable {
-		private static final long serialVersionUID = 1L;
-
-		public VInt() {
-			value = 0;
-			length = 0;
-		}
-
-		public int value;
-		public byte length;
-	};
-
-	/**
-	 * Reads a zero-compressed encoded int from a byte array and returns it.
-	 * 
-	 * @param bytes
-	 *            the byte array
-	 * @param offset
-	 *            offset of the array to read from
-	 * @param vInt
-	 *            storing the deserialized int and its size in byte
-	 */
-	public static void readVInt(byte[] bytes, int offset, VInt vInt) {
-		byte firstByte = bytes[offset];
-		vInt.length = (byte) WritableUtils.decodeVIntSize(firstByte);
-		if (vInt.length == 1) {
-			vInt.value = firstByte;
-			return;
-		}
-		int i = 0;
-		for (int idx = 0; idx < vInt.length - 1; idx++) {
-			byte b = bytes[offset + 1 + idx];
-			i = i << 8;
-			i = i | (b & 0xFF);
-		}
-		vInt.value = (WritableUtils.isNegativeVInt(firstByte) ? (i ^ -1) : i);
-	}
-
-	/**
-	 * Writes a zero-compressed encoded int to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param i
-	 *            the int
-	 */
-	public static void writeVInt(Output byteStream, int i) {
-		writeVLong(byteStream, i);
-	}
-
-	/**
-	 * Write a zero-compressed encoded long to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param l
-	 *            the long
-	 */
-	public static void writeVLong(Output byteStream, long l) {
-		if (l >= -112 && l <= 127) {
-			byteStream.write((byte) l);
-			return;
-		}
-
-		int len = -112;
-		if (l < 0) {
-			l ^= -1L; // take one's complement'
-			len = -120;
-		}
-
-		long tmp = l;
-		while (tmp != 0) {
-			tmp = tmp >> 8;
-			len--;
-		}
-
-		byteStream.write((byte) len);
-
-		len = (len < -120) ? -(len + 120) : -(len + 112);
-
-		for (int idx = len; idx != 0; idx--) {
-			int shiftbits = (idx - 1) * 8;
-			long mask = 0xFFL << shiftbits;
-			byteStream.write((byte) ((l & mask) >> shiftbits));
-		}
-	}
-
-	static Map<TypeInfo, ObjectInspector> cachedLazyObjectInspector = new ConcurrentHashMap<TypeInfo, ObjectInspector>();
-
-	/**
-	 * Returns the lazy binary object inspector that can be used to inspect an
-	 * lazy binary object of that typeInfo
-	 * 
-	 * For primitive types, we use the standard writable object inspector.
-	 */
-	public static ObjectInspector getLazyObjectInspectorFromTypeInfo(
-			TypeInfo typeInfo, boolean topLevel) {
-		if (typeInfo == null)
-			throw new IllegalStateException("illegal type null ");
-		ObjectInspector result = cachedLazyObjectInspector.get(typeInfo);
-		if (result == null) {
-			switch (typeInfo.getCategory()) {
-			case PRIMITIVE: {
-				result = PrimitiveObjectInspectorFactory
-						.getPrimitiveLazyObjectInspector(((PrimitiveTypeInfo) typeInfo)
-								.getPrimitiveCategory());
-				break;
-			}
-			case LIST: {
-				ObjectInspector elementObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						((ListTypeInfo) typeInfo).getListElementTypeInfo(),
-						false);
-				result = LazyObjectInspectorFactory
-						.getLazyListObjectInspector(elementObjectInspector);
-				break;
-			}
-			case MAP: {
-				MapTypeInfo mapTypeInfo = (MapTypeInfo) typeInfo;
-				ObjectInspector keyObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						mapTypeInfo.getMapKeyTypeInfo(), false);
-				ObjectInspector valueObjectInspector = getLazyObjectInspectorFromTypeInfo(
-						mapTypeInfo.getMapValueTypeInfo(), false);
-				result = LazyObjectInspectorFactory.getLazyMapObjectInspector(
-						keyObjectInspector, valueObjectInspector);
-				break;
-			}
-			case STRUCT: {
-				StructTypeInfo structTypeInfo = (StructTypeInfo) typeInfo;
-				List<String> fieldNames = structTypeInfo
-						.getAllStructFieldNames();
-				List<TypeInfo> fieldTypeInfos = structTypeInfo
-						.getAllStructFieldTypeInfos();
-				List<ObjectInspector> fieldObjectInspectors = new ArrayList<ObjectInspector>(
-						fieldTypeInfos.size());
-
-				for (int i = 0; i < fieldTypeInfos.size(); i++) {
-					fieldObjectInspectors
-							.add(getLazyObjectInspectorFromTypeInfo(
-									fieldTypeInfos.get(i), false));
-				}
-
-				// if it is top level then create columnar
-				if (topLevel)
-					result = LazyObjectInspectorFactory
-							.getLazyColumnarObjectInspector(fieldNames,
-									fieldObjectInspectors);
-				// if it is not top level then create struct
-				else
-					result = LazyObjectInspectorFactory
-							.getLazyStructObjectInspector(fieldNames,
-									fieldObjectInspectors);
-
-				break;
-			}
-			default: {
-				result = null;
-			}
-			}
-			cachedLazyObjectInspector.put(typeInfo, result);
-		}
-		return result;
-	}
-
-	/**
-	 * get top-level lazy object inspector
-	 * 
-	 * @param fieldNames
-	 * @param fieldTypeInfos
-	 * @return
-	 */
-	public static ObjectInspector getLazyObjectInspector(
-			List<String> fieldNames, List<TypeInfo> fieldTypeInfos) {
-		List<ObjectInspector> fieldObjectInspectors = new ArrayList<ObjectInspector>(
-				fieldTypeInfos.size());
-		for (int i = 0; i < fieldTypeInfos.size(); i++) {
-			fieldObjectInspectors.add(getLazyObjectInspectorFromTypeInfo(
-					fieldTypeInfos.get(i), false));
-		}
-
-		return LazyObjectInspectorFactory.getLazyColumnarObjectInspector(
-				fieldNames, fieldObjectInspectors);
-	}
-
-	private LazyUtils() {
-		// prevent instantiation
-	}
-
-	/**
-	 * Returns -1 if the first byte sequence is lexicographically less than the
-	 * second; returns +1 if the second byte sequence is lexicographically less
-	 * than the first; otherwise return 0.
-	 */
-	public static int compare(byte[] b1, int start1, int length1, byte[] b2,
-			int start2, int length2) {
-
-		int min = Math.min(length1, length2);
-
-		for (int i = 0; i < min; i++) {
-			if (b1[start1 + i] == b2[start2 + i]) {
-				continue;
-			}
-			if (b1[start1 + i] < b2[start2 + i]) {
-				return -1;
-			} else {
-				return 1;
-			}
-		}
-
-		if (length1 < length2) {
-			return -1;
-		}
-		if (length1 > length2) {
-			return 1;
-		}
-		return 0;
-	}
-
-	public static int hashBytes(byte[] data, int start, int len) {
-		int hash = 1;
-		for (int i = start; i < len; i++) {
-			hash = (31 * hash) + data[i];
-		}
-		return hash;
-	}
-
-	/**
-	 * Writes a zero-compressed encoded int to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param i
-	 *            the int
-	 */
-	public static void writeVInt(DataOutput byteStream, int i)
-			throws IOException {
-		writeVLong(byteStream, i);
-	}
-
-	/**
-	 * Write a zero-compressed encoded long to a byte array.
-	 * 
-	 * @param byteStream
-	 *            the byte array/stream
-	 * @param l
-	 *            the long
-	 */
-	public static void writeVLong(DataOutput byteStream, long l)
-			throws IOException {
-		if (l >= -112 && l <= 127) {
-			byteStream.write((byte) l);
-			return;
-		}
-
-		int len = -112;
-		if (l < 0) {
-			l ^= -1L; // take one's complement'
-			len = -120;
-		}
-
-		long tmp = l;
-		while (tmp != 0) {
-			tmp = tmp >> 8;
-			len--;
-		}
-
-		byteStream.write((byte) len);
-
-		len = (len < -120) ? -(len + 120) : -(len + 112);
-
-		for (int idx = len; idx != 0; idx--) {
-			int shiftbits = (idx - 1) * 8;
-			long mask = 0xFFL << shiftbits;
-			byteStream.write((byte) ((l & mask) >> shiftbits));
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java
deleted file mode 100644
index b20f185..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyColumnarObjectInspector.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyColumnar;
-
-/**
- * ObjectInspector for LazyColumnar.
- * 
- * @see LazyColumnar
- */
-public class LazyColumnarObjectInspector extends StandardStructObjectInspector
-		implements Serializable {
-
-	private static final long serialVersionUID = 1L;
-
-	public LazyColumnarObjectInspector(List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		super(structFieldNames, structFieldObjectInspectors);
-	}
-
-	public LazyColumnarObjectInspector(List<StructField> fields) {
-		super(fields);
-	}
-
-	@Override
-	public Object getStructFieldData(Object data, StructField fieldRef) {
-		if (data == null) {
-			return null;
-		}
-		LazyColumnar struct = (LazyColumnar) data;
-		MyField f = (MyField) fieldRef;
-
-		int fieldID = f.getFieldID();
-		assert (fieldID >= 0 && fieldID < fields.size());
-
-		Object column = struct.getField(fieldID);
-		return column;
-	}
-
-	@Override
-	public List<Object> getStructFieldsDataAsList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyColumnar struct = (LazyColumnar) data;
-		return struct.getFieldsAsList();
-	}
-
-	public String toString() {
-		String str = "";
-		for (MyField f : fields) {
-			str += f.getFieldName() + ":"
-					+ f.getFieldObjectInspector().getTypeName() + "  ";
-		}
-		return str;
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java
deleted file mode 100644
index dc4e85b..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyListObjectInspector.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardListObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyArray;
-
-/**
- * ObjectInspector for LazyList.
- */
-public class LazyListObjectInspector extends StandardListObjectInspector {
-
-	protected LazyListObjectInspector(ObjectInspector listElementObjectInspector) {
-		super(listElementObjectInspector);
-	}
-
-	@Override
-	public List<?> getList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getList();
-	}
-
-	@Override
-	public Object getListElement(Object data, int index) {
-		if (data == null) {
-			return null;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getListElementObject(index);
-	}
-
-	@Override
-	public int getListLength(Object data) {
-		if (data == null) {
-			return -1;
-		}
-		LazyArray array = (LazyArray) data;
-		return array.getListLength();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java
deleted file mode 100644
index a3be142..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyMapObjectInspector.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.Map;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardMapObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyMap;
-
-/**
- * ObjectInspector for LazyMap.
- * 
- * @see LazyMap
- */
-public class LazyMapObjectInspector extends StandardMapObjectInspector {
-
-	protected LazyMapObjectInspector(ObjectInspector mapKeyObjectInspector,
-			ObjectInspector mapValueObjectInspector) {
-		super(mapKeyObjectInspector, mapValueObjectInspector);
-	}
-
-	@Override
-	public Map<?, ?> getMap(Object data) {
-		if (data == null) {
-			return null;
-		}
-		return ((LazyMap) data).getMap();
-	}
-
-	@Override
-	public int getMapSize(Object data) {
-		if (data == null) {
-			return -1;
-		}
-		return ((LazyMap) data).getMapSize();
-	}
-
-	@Override
-	public Object getMapValueElement(Object data, Object key) {
-		if (data == null) {
-			return -1;
-		}
-		return ((LazyMap) data).getMapValueElement(key);
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java
deleted file mode 100644
index 439b130..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyObjectInspectorFactory.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-/**
- * ObjectInspectorFactory is the primary way to create new ObjectInspector
- * instances.
- * 
- * SerDe classes should call the static functions in this library to create an
- * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
- * 
- * The reason of having caches here is that ObjectInspectors do not have an
- * internal state - so ObjectInspectors with the same construction parameters
- * should result in exactly the same ObjectInspector.
- */
-
-public final class LazyObjectInspectorFactory {
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyColumnarObjectInspector> cachedLazyColumnarObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyColumnarObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyStructObjectInspector> cachedLazyStructObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyStructObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyListObjectInspector> cachedLazyListObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyListObjectInspector>();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyMapObjectInspector> cachedLazyMapObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyMapObjectInspector>();
-
-	public static LazyColumnarObjectInspector getLazyColumnarObjectInspector(
-			List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(structFieldNames);
-		signature.add(structFieldObjectInspectors);
-		LazyColumnarObjectInspector result = cachedLazyColumnarObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyColumnarObjectInspector(structFieldNames,
-					structFieldObjectInspectors);
-			cachedLazyColumnarObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyStructObjectInspector getLazyStructObjectInspector(
-			List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(structFieldNames);
-		signature.add(structFieldObjectInspectors);
-		LazyStructObjectInspector result = cachedLazyStructObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyStructObjectInspector(structFieldNames,
-					structFieldObjectInspectors);
-			cachedLazyStructObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyListObjectInspector getLazyListObjectInspector(
-			ObjectInspector listElementInspector) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(listElementInspector);
-		LazyListObjectInspector result = cachedLazyListObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyListObjectInspector(listElementInspector);
-			cachedLazyListObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static LazyMapObjectInspector getLazyMapObjectInspector(
-			ObjectInspector keyInspector, ObjectInspector valueInspector) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(keyInspector);
-		signature.add(valueInspector);
-		LazyMapObjectInspector result = cachedLazyMapObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyMapObjectInspector(keyInspector, valueInspector);
-			cachedLazyMapObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	private LazyObjectInspectorFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java
deleted file mode 100644
index 1a50233..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/LazyStructObjectInspector.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector;
-
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyStruct;
-
-/**
- * ObjectInspector for LazyStruct.
- * 
- * @see LazyStruct
- */
-public class LazyStructObjectInspector extends StandardStructObjectInspector {
-
-	protected LazyStructObjectInspector(List<String> structFieldNames,
-			List<ObjectInspector> structFieldObjectInspectors) {
-		super(structFieldNames, structFieldObjectInspectors);
-	}
-
-	protected LazyStructObjectInspector(List<StructField> fields) {
-		super(fields);
-	}
-
-	@Override
-	public Object getStructFieldData(Object data, StructField fieldRef) {
-		if (data == null) {
-			return null;
-		}
-		LazyStruct struct = (LazyStruct) data;
-		MyField f = (MyField) fieldRef;
-
-		int fieldID = f.getFieldID();
-		assert (fieldID >= 0 && fieldID < fields.size());
-
-		return struct.getField(fieldID);
-	}
-
-	@Override
-	public List<Object> getStructFieldsDataAsList(Object data) {
-		if (data == null) {
-			return null;
-		}
-		LazyStruct struct = (LazyStruct) data;
-		return struct.getFieldsAsList();
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java
deleted file mode 100644
index 7ef8bdd..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/AbstractPrimitiveLazyObjectInspector.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveTypeEntry;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyPrimitive;
-
-/**
- * An AbstractPrimitiveLazyObjectInspector for a LazyPrimitive object.
- */
-public abstract class AbstractPrimitiveLazyObjectInspector<T extends Writable>
-		extends AbstractPrimitiveObjectInspector {
-
-	protected AbstractPrimitiveLazyObjectInspector(PrimitiveTypeEntry typeEntry) {
-		super(typeEntry);
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public T getPrimitiveWritableObject(Object o) {
-		if (o == null)
-			System.out.println("sth. wrong");
-		return o == null ? null : ((LazyPrimitive<?, T>) o).getWritableObject();
-	}
-
-	@Override
-	public boolean preferWritable() {
-		return true;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java
deleted file mode 100644
index 472dce0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyBooleanObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.BooleanWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyBoolean;
-
-/**
- * A WritableBooleanObjectInspector inspects a BooleanWritable Object.
- */
-public class LazyBooleanObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<BooleanWritable> implements
-		BooleanObjectInspector {
-
-	LazyBooleanObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.booleanTypeEntry);
-	}
-
-	@Override
-	public boolean get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyBoolean((LazyBoolean) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Boolean.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java
deleted file mode 100644
index e631fc7..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyByteObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ByteObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.ByteWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyByte;
-
-/**
- * A WritableByteObjectInspector inspects a ByteWritable Object.
- */
-public class LazyByteObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<ByteWritable> implements
-		ByteObjectInspector {
-
-	LazyByteObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.byteTypeEntry);
-	}
-
-	@Override
-	public byte get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyByte((LazyByte) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Byte.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java
deleted file mode 100644
index 1257f11..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyDoubleObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.DoubleWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyDouble;
-
-/**
- * A WritableDoubleObjectInspector inspects a DoubleWritable Object.
- */
-public class LazyDoubleObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<DoubleWritable> implements
-		DoubleObjectInspector {
-
-	LazyDoubleObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.doubleTypeEntry);
-	}
-
-	@Override
-	public double get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyDouble((LazyDouble) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Double.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java
deleted file mode 100644
index c66a06f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyFloatObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.FloatObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.FloatWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyFloat;
-
-/**
- * A FloatObjectInspector inspects a FloatWritable Object.
- */
-public class LazyFloatObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<FloatWritable> implements
-		FloatObjectInspector {
-
-	LazyFloatObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.floatTypeEntry);
-	}
-
-	@Override
-	public float get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyFloat((LazyFloat) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Float.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java
deleted file mode 100644
index b2159e0..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyIntObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.IntWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyInteger;
-
-/**
- * A WritableIntObjectInspector inspects a IntWritable Object.
- */
-public class LazyIntObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<IntWritable> implements
-		IntObjectInspector {
-
-	LazyIntObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.intTypeEntry);
-	}
-
-	@Override
-	public int get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyInteger((LazyInteger) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Integer.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java
deleted file mode 100644
index 1fc2d53..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyLongObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyLong;
-
-/**
- * A WritableLongObjectInspector inspects a LongWritable Object.
- */
-public class LazyLongObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<LongWritable> implements
-		LongObjectInspector {
-
-	LazyLongObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.longTypeEntry);
-	}
-
-	@Override
-	public long get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyLong((LazyLong) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Long.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
deleted file mode 100644
index 134dc5a..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyPrimitiveObjectInspectorFactory.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-/**
- * LazyPrimitiveObjectInspectorFactory is the primary way to create new
- * ObjectInspector instances.
- * 
- * SerDe classes should call the static functions in this library to create an
- * ObjectInspector to return to the caller of SerDe2.getObjectInspector().
- * 
- * The reason of having caches here is that ObjectInspector is because
- * ObjectInspectors do not have an internal state - so ObjectInspectors with the
- * same construction parameters should result in exactly the same
- * ObjectInspector.
- */
-public final class LazyPrimitiveObjectInspectorFactory {
-
-	public static final LazyBooleanObjectInspector LAZY_BOOLEAN_OBJECT_INSPECTOR = new LazyBooleanObjectInspector();
-	public static final LazyByteObjectInspector LAZY_BYTE_OBJECT_INSPECTOR = new LazyByteObjectInspector();
-	public static final LazyShortObjectInspector LAZY_SHORT_OBJECT_INSPECTOR = new LazyShortObjectInspector();
-	public static final LazyIntObjectInspector LAZY_INT_OBJECT_INSPECTOR = new LazyIntObjectInspector();
-	public static final LazyLongObjectInspector LAZY_LONG_OBJECT_INSPECTOR = new LazyLongObjectInspector();
-	public static final LazyFloatObjectInspector LAZY_FLOAT_OBJECT_INSPECTOR = new LazyFloatObjectInspector();
-	public static final LazyDoubleObjectInspector LAZY_DOUBLE_OBJECT_INSPECTOR = new LazyDoubleObjectInspector();
-	public static final LazyVoidObjectInspector LAZY_VOID_OBJECT_INSPECTOR = new LazyVoidObjectInspector();
-
-	static ConcurrentHashMap<ArrayList<Object>, LazyStringObjectInspector> cachedLazyStringObjectInspector = new ConcurrentHashMap<ArrayList<Object>, LazyStringObjectInspector>();
-
-	public static LazyStringObjectInspector getLazyStringObjectInspector(
-			boolean escaped, byte escapeChar) {
-		ArrayList<Object> signature = new ArrayList<Object>();
-		signature.add(Boolean.valueOf(escaped));
-		signature.add(Byte.valueOf(escapeChar));
-		LazyStringObjectInspector result = cachedLazyStringObjectInspector
-				.get(signature);
-		if (result == null) {
-			result = new LazyStringObjectInspector(escaped, escapeChar);
-			cachedLazyStringObjectInspector.put(signature, result);
-		}
-		return result;
-	}
-
-	public static AbstractPrimitiveLazyObjectInspector<?> getLazyObjectInspector(
-			PrimitiveCategory primitiveCategory, boolean escaped,
-			byte escapeChar) {
-
-		switch (primitiveCategory) {
-		case BOOLEAN:
-			return LAZY_BOOLEAN_OBJECT_INSPECTOR;
-		case BYTE:
-			return LAZY_BYTE_OBJECT_INSPECTOR;
-		case SHORT:
-			return LAZY_SHORT_OBJECT_INSPECTOR;
-		case INT:
-			return LAZY_INT_OBJECT_INSPECTOR;
-		case LONG:
-			return LAZY_LONG_OBJECT_INSPECTOR;
-		case FLOAT:
-			return LAZY_FLOAT_OBJECT_INSPECTOR;
-		case DOUBLE:
-			return LAZY_DOUBLE_OBJECT_INSPECTOR;
-		case STRING:
-			return getLazyStringObjectInspector(escaped, escapeChar);
-		case VOID:
-			return LAZY_VOID_OBJECT_INSPECTOR;
-		default:
-			throw new RuntimeException(
-					"Internal error: Cannot find ObjectInspector " + " for "
-							+ primitiveCategory);
-		}
-	}
-
-	private LazyPrimitiveObjectInspectorFactory() {
-		// prevent instantiation
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java
deleted file mode 100644
index cb06dfd..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyShortObjectInspector.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyShort;
-
-/**
- * A WritableShortObjectInspector inspects a ShortWritable Object.
- */
-public class LazyShortObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<ShortWritable> implements
-		ShortObjectInspector {
-
-	LazyShortObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.shortTypeEntry);
-	}
-
-	@Override
-	public short get(Object o) {
-		return getPrimitiveWritableObject(o).get();
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyShort((LazyShort) o);
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		return o == null ? null : Short.valueOf(get(o));
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java
deleted file mode 100644
index 5832f34..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyStringObjectInspector.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyString;
-
-/**
- * A WritableStringObjectInspector inspects a Text Object.
- */
-public class LazyStringObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<Text> implements
-		StringObjectInspector {
-
-	boolean escaped;
-	byte escapeChar;
-
-	LazyStringObjectInspector(boolean escaped, byte escapeChar) {
-		super(PrimitiveObjectInspectorUtils.stringTypeEntry);
-		this.escaped = escaped;
-		this.escapeChar = escapeChar;
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o == null ? null : new LazyString((LazyString) o);
-	}
-
-	@Override
-	public Text getPrimitiveWritableObject(Object o) {
-		return o == null ? null : ((LazyString) o).getWritableObject();
-	}
-
-	@Override
-	public String getPrimitiveJavaObject(Object o) {
-		return o == null ? null : ((LazyString) o).getWritableObject()
-				.toString();
-	}
-
-	public boolean isEscaped() {
-		return escaped;
-	}
-
-	public byte getEscapeChar() {
-		return escapeChar;
-	}
-
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java
deleted file mode 100644
index a30f1af..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/LazyVoidObjectInspector.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.VoidObjectInspector;
-import org.apache.hadoop.io.NullWritable;
-
-/**
- * A WritableVoidObjectInspector inspects a NullWritable Object.
- */
-public class LazyVoidObjectInspector extends
-		AbstractPrimitiveLazyObjectInspector<NullWritable> implements
-		VoidObjectInspector {
-
-	LazyVoidObjectInspector() {
-		super(PrimitiveObjectInspectorUtils.voidTypeEntry);
-	}
-
-	@Override
-	public Object copyObject(Object o) {
-		return o;
-	}
-
-	@Override
-	public Object getPrimitiveJavaObject(Object o) {
-		throw new RuntimeException("Internal error: cannot create Void object.");
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java
deleted file mode 100644
index e70bdb9..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/lazy/objectinspector/primitive/PrimitiveObjectInspectorFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.serde.lazy.objectinspector.primitive;
-
-import java.util.HashMap;
-
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-
-/**
- * PrimitiveObjectInspectorFactory is the primary way to create new
- * PrimitiveObjectInspector instances.
- * 
- * The reason of having caches here is that ObjectInspector is because
- * ObjectInspectors do not have an internal state - so ObjectInspectors with the
- * same construction parameters should result in exactly the same
- * ObjectInspector.
- */
-public final class PrimitiveObjectInspectorFactory {
-
-	public static final LazyBooleanObjectInspector LazyBooleanObjectInspector = new LazyBooleanObjectInspector();
-	public static final LazyByteObjectInspector LazyByteObjectInspector = new LazyByteObjectInspector();
-	public static final LazyShortObjectInspector LazyShortObjectInspector = new LazyShortObjectInspector();
-	public static final LazyIntObjectInspector LazyIntObjectInspector = new LazyIntObjectInspector();
-	public static final LazyLongObjectInspector LazyLongObjectInspector = new LazyLongObjectInspector();
-	public static final LazyFloatObjectInspector LazyFloatObjectInspector = new LazyFloatObjectInspector();
-	public static final LazyDoubleObjectInspector LazyDoubleObjectInspector = new LazyDoubleObjectInspector();
-	public static final LazyStringObjectInspector LazyStringObjectInspector = new LazyStringObjectInspector(
-			false, (byte) '\\');
-	public static final LazyVoidObjectInspector LazyVoidObjectInspector = new LazyVoidObjectInspector();
-
-	private static HashMap<PrimitiveCategory, AbstractPrimitiveLazyObjectInspector<?>> cachedPrimitiveLazyInspectorCache = new HashMap<PrimitiveCategory, AbstractPrimitiveLazyObjectInspector<?>>();
-
-	static {
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.BOOLEAN,
-				LazyBooleanObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.BYTE,
-				LazyByteObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.SHORT,
-				LazyShortObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.INT,
-				LazyIntObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.LONG,
-				LazyLongObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.FLOAT,
-				LazyFloatObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.DOUBLE,
-				LazyDoubleObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.STRING,
-				LazyStringObjectInspector);
-		cachedPrimitiveLazyInspectorCache.put(PrimitiveCategory.VOID,
-				LazyVoidObjectInspector);
-	}
-
-	/**
-	 * Returns the PrimitiveWritableObjectInspector for the PrimitiveCategory.
-	 * 
-	 * @param primitiveCategory
-	 */
-	public static AbstractPrimitiveLazyObjectInspector<?> getPrimitiveLazyObjectInspector(
-			PrimitiveCategory primitiveCategory) {
-		AbstractPrimitiveLazyObjectInspector<?> result = cachedPrimitiveLazyInspectorCache
-				.get(primitiveCategory);
-		if (result == null) {
-			throw new RuntimeException(
-					"Internal error: Cannot find ObjectInspector " + " for "
-							+ primitiveCategory);
-		}
-		return result;
-	}
-
-	private PrimitiveObjectInspectorFactory() {
-		// prevent instantiation
-	}
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java
deleted file mode 100644
index aeea68f..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/IHiveParser.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package edu.uci.ics.hivesterix.serde.parser;
-
-import java.io.IOException;
-
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-public interface IHiveParser {
-	/**
-	 * parse one hive rwo into
-	 * 
-	 * @param row
-	 * @param objectInspector
-	 * @param tb
-	 */
-	public void parse(byte[] data, int start, int length, ArrayTupleBuilder tb)
-			throws IOException;
-}
diff --git a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java b/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java
deleted file mode 100644
index 3aeb058..0000000
--- a/hivesterix/src/main/java/edu/uci/ics/hivesterix/serde/parser/TextToBinaryTupleParser.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package edu.uci.ics.hivesterix.serde.parser;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.hadoop.hive.serde2.lazy.LazyInteger;
-import org.apache.hadoop.hive.serde2.lazy.LazyLong;
-import org.apache.hadoop.hive.serde2.lazy.LazyShort;
-import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazySimpleStructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.io.Text;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazyUtils;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-public class TextToBinaryTupleParser implements IHiveParser {
-	private int[] invertedIndex;
-	private int[] fieldEnds;
-	private int lastNecessaryFieldIndex;
-	private LazySimpleStructObjectInspector inputObjectInspector;
-	private List<? extends StructField> fieldRefs;
-
-	public TextToBinaryTupleParser(int[] outputColumnsOffset,
-			ObjectInspector structInspector) {
-		int size = 0;
-		for (int i = 0; i < outputColumnsOffset.length; i++)
-			if (outputColumnsOffset[i] >= 0)
-				size++;
-		invertedIndex = new int[size];
-		for (int i = 0; i < outputColumnsOffset.length; i++)
-			if (outputColumnsOffset[i] >= 0) {
-				invertedIndex[outputColumnsOffset[i]] = i;
-				lastNecessaryFieldIndex = i;
-			}
-		fieldEnds = new int[outputColumnsOffset.length];
-		for (int i = 0; i < fieldEnds.length; i++)
-			fieldEnds[i] = 0;
-		inputObjectInspector = (LazySimpleStructObjectInspector) structInspector;
-		fieldRefs = inputObjectInspector.getAllStructFieldRefs();
-	}
-
-	@Override
-	public void parse(byte[] bytes, int start, int length, ArrayTupleBuilder tb)
-			throws IOException {
-		byte separator = inputObjectInspector.getSeparator();
-		boolean lastColumnTakesRest = inputObjectInspector
-				.getLastColumnTakesRest();
-		boolean isEscaped = inputObjectInspector.isEscaped();
-		byte escapeChar = inputObjectInspector.getEscapeChar();
-		DataOutput output = tb.getDataOutput();
-
-		int structByteEnd = start + length - 1;
-		int fieldId = 0;
-		int fieldByteEnd = start;
-
-		// Go through all bytes in the byte[]
-		while (fieldByteEnd <= structByteEnd
-				&& fieldId <= lastNecessaryFieldIndex) {
-			if (fieldByteEnd == structByteEnd
-					|| bytes[fieldByteEnd] == separator) {
-				// Reached the end of a field?
-				if (lastColumnTakesRest && fieldId == fieldEnds.length - 1) {
-					fieldByteEnd = structByteEnd;
-				}
-				fieldEnds[fieldId] = fieldByteEnd;
-				if (fieldId == fieldEnds.length - 1
-						|| fieldByteEnd == structByteEnd) {
-					// for the case of null fields
-					for (int i = fieldId; i < fieldEnds.length; i++) {
-						fieldEnds[i] = fieldByteEnd;
-					}
-					break;
-				}
-				fieldByteEnd++;
-				fieldId++;
-			} else {
-				if (isEscaped && bytes[fieldByteEnd] == escapeChar
-						&& fieldByteEnd + 1 < structByteEnd) {
-					// ignore the char after escape_char
-					fieldByteEnd += 2;
-				} else {
-					fieldByteEnd++;
-				}
-			}
-		}
-
-		for (int i = 0; i < invertedIndex.length; i++) {
-			int index = invertedIndex[i];
-			StructField fieldRef = fieldRefs.get(index);
-			ObjectInspector inspector = fieldRef.getFieldObjectInspector();
-			Category category = inspector.getCategory();
-			int fieldStart = index == 0 ? 0 : fieldEnds[index - 1] + 1;
-			int fieldEnd = fieldEnds[index];
-			if (bytes[fieldEnd] == separator)
-				fieldEnd--;
-			int fieldLen = fieldEnd - fieldStart + 1;
-			switch (category) {
-			case PRIMITIVE:
-				PrimitiveObjectInspector poi = (PrimitiveObjectInspector) inspector;
-				switch (poi.getPrimitiveCategory()) {
-				case VOID: {
-					break;
-				}
-				case BOOLEAN: {
-					output.write(bytes[fieldStart]);
-					break;
-				}
-				case BYTE: {
-					output.write(bytes[fieldStart]);
-					break;
-				}
-				case SHORT: {
-					short v = LazyShort.parseShort(bytes, fieldStart, fieldLen);
-					output.write((byte) (v >> 8));
-					output.write((byte) (v));
-					break;
-				}
-				case INT: {
-					int v = LazyInteger.parseInt(bytes, fieldStart, fieldLen);
-					LazyUtils.writeVInt(output, v);
-					break;
-				}
-				case LONG: {
-					long v = LazyLong.parseLong(bytes, fieldStart, fieldLen);
-					LazyUtils.writeVLong(output, v);
-					break;
-				}
-				case FLOAT: {
-					float value = Float.parseFloat(Text.decode(bytes,
-							fieldStart, fieldLen));
-					int v = Float.floatToIntBits(value);
-					output.write((byte) (v >> 24));
-					output.write((byte) (v >> 16));
-					output.write((byte) (v >> 8));
-					output.write((byte) (v));
-					break;
-				}
-				case DOUBLE: {
-					try {
-						double value = Double.parseDouble(Text.decode(bytes,
-								fieldStart, fieldLen));
-						long v = Double.doubleToLongBits(value);
-						output.write((byte) (v >> 56));
-						output.write((byte) (v >> 48));
-						output.write((byte) (v >> 40));
-						output.write((byte) (v >> 32));
-						output.write((byte) (v >> 24));
-						output.write((byte) (v >> 16));
-						output.write((byte) (v >> 8));
-						output.write((byte) (v));
-					} catch (NumberFormatException e) {
-						throw e;
-					}
-					break;
-				}
-				case STRING: {
-					LazyUtils.writeVInt(output, fieldLen);
-					output.write(bytes, fieldStart, fieldLen);
-					break;
-				}
-				default: {
-					throw new RuntimeException("Unrecognized type: "
-							+ poi.getPrimitiveCategory());
-				}
-				}
-				break;
-			case STRUCT:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case LIST:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case MAP:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			case UNION:
-				throw new NotImplementedException("Unrecognized type: struct ");
-			}
-			tb.addFieldEndOffset();
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java
deleted file mode 100644
index 57e2cc0..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/Driver.java
+++ /dev/null
@@ -1,1441 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql;
-
-import java.io.DataInput;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.fs.FSDataInputStream;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.common.JavaUtils;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.metastore.MetaStoreUtils;
-import org.apache.hadoop.hive.metastore.api.FieldSchema;
-import org.apache.hadoop.hive.metastore.api.Schema;
-import org.apache.hadoop.hive.ql.exec.ConditionalTask;
-import org.apache.hadoop.hive.ql.exec.ExecDriver;
-import org.apache.hadoop.hive.ql.exec.FetchTask;
-import org.apache.hadoop.hive.ql.exec.MapRedTask;
-import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.StatsTask;
-import org.apache.hadoop.hive.ql.exec.TableScanOperator;
-import org.apache.hadoop.hive.ql.exec.Task;
-import org.apache.hadoop.hive.ql.exec.TaskFactory;
-import org.apache.hadoop.hive.ql.exec.TaskResult;
-import org.apache.hadoop.hive.ql.exec.TaskRunner;
-import org.apache.hadoop.hive.ql.exec.Utilities;
-import org.apache.hadoop.hive.ql.history.HiveHistory.Keys;
-import org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext;
-import org.apache.hadoop.hive.ql.hooks.Hook;
-import org.apache.hadoop.hive.ql.hooks.HookContext;
-import org.apache.hadoop.hive.ql.hooks.PostExecute;
-import org.apache.hadoop.hive.ql.hooks.PreExecute;
-import org.apache.hadoop.hive.ql.hooks.ReadEntity;
-import org.apache.hadoop.hive.ql.hooks.WriteEntity;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLock;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockManager;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockManagerCtx;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockMode;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObj;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject;
-import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject.HiveLockObjectData;
-import org.apache.hadoop.hive.ql.lockmgr.LockException;
-import org.apache.hadoop.hive.ql.metadata.AuthorizationException;
-import org.apache.hadoop.hive.ql.metadata.DummyPartition;
-import org.apache.hadoop.hive.ql.metadata.Hive;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.metadata.HiveUtils;
-import org.apache.hadoop.hive.ql.metadata.Partition;
-import org.apache.hadoop.hive.ql.metadata.Table;
-import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner;
-import org.apache.hadoop.hive.ql.parse.ASTNode;
-import org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook;
-import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
-import org.apache.hadoop.hive.ql.parse.ErrorMsg;
-import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;
-import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContextImpl;
-import org.apache.hadoop.hive.ql.parse.ParseContext;
-import org.apache.hadoop.hive.ql.parse.ParseDriver;
-import org.apache.hadoop.hive.ql.parse.ParseException;
-import org.apache.hadoop.hive.ql.parse.ParseUtils;
-import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
-import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer;
-import org.apache.hadoop.hive.ql.parse.SemanticAnalyzerFactory;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.ql.parse.VariableSubstitution;
-import org.apache.hadoop.hive.ql.plan.ConditionalResolver;
-import org.apache.hadoop.hive.ql.plan.ConditionalResolverMergeFiles;
-import org.apache.hadoop.hive.ql.plan.HiveOperation;
-import org.apache.hadoop.hive.ql.plan.TableDesc;
-import org.apache.hadoop.hive.ql.processors.CommandProcessor;
-import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
-import org.apache.hadoop.hive.serde2.ByteStream;
-import org.apache.hadoop.hive.shims.ShimLoader;
-import org.apache.hadoop.mapred.ClusterStatus;
-import org.apache.hadoop.mapred.JobClient;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.util.ReflectionUtils;
-
-import edu.uci.ics.hivesterix.runtime.exec.HyracksExecutionEngine;
-import edu.uci.ics.hivesterix.runtime.exec.IExecutionEngine;
-
-@SuppressWarnings({ "deprecation", "unused" })
-public class Driver implements CommandProcessor {
-
-	static final private Log LOG = LogFactory.getLog(Driver.class.getName());
-	static final private LogHelper console = new LogHelper(LOG);
-
-	// hive-sterix
-	private IExecutionEngine engine;
-	private boolean hivesterix = false;
-
-	private int maxRows = 100;
-	ByteStream.Output bos = new ByteStream.Output();
-
-	private HiveConf conf;
-	private DataInput resStream;
-	private Context ctx;
-	private QueryPlan plan;
-	private Schema schema;
-	private HiveLockManager hiveLockMgr;
-
-	private String errorMessage;
-	private String SQLState;
-
-	// A limit on the number of threads that can be launched
-	private int maxthreads;
-	private final int sleeptime = 2000;
-
-	protected int tryCount = Integer.MAX_VALUE;
-
-	private int checkLockManager() {
-		boolean supportConcurrency = conf
-				.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-		if (supportConcurrency && (hiveLockMgr == null)) {
-			try {
-				setLockManager();
-			} catch (SemanticException e) {
-				errorMessage = "FAILED: Error in semantic analysis: "
-						+ e.getMessage();
-				SQLState = ErrorMsg.findSQLState(e.getMessage());
-				console.printError(
-						errorMessage,
-						"\n"
-								+ org.apache.hadoop.util.StringUtils
-										.stringifyException(e));
-				return (12);
-			}
-		}
-		return (0);
-	}
-
-	private void setLockManager() throws SemanticException {
-		boolean supportConcurrency = conf
-				.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-		if (supportConcurrency) {
-			String lockMgr = conf.getVar(HiveConf.ConfVars.HIVE_LOCK_MANAGER);
-			if ((lockMgr == null) || (lockMgr.isEmpty())) {
-				throw new SemanticException(
-						ErrorMsg.LOCKMGR_NOT_SPECIFIED.getMsg());
-			}
-
-			try {
-				hiveLockMgr = (HiveLockManager) ReflectionUtils.newInstance(
-						conf.getClassByName(lockMgr), conf);
-				hiveLockMgr.setContext(new HiveLockManagerCtx(conf));
-			} catch (Exception e) {
-				throw new SemanticException(
-						ErrorMsg.LOCKMGR_NOT_INITIALIZED.getMsg()
-								+ e.getMessage());
-			}
-		}
-	}
-
-	public void init() {
-		Operator.resetId();
-	}
-
-	/**
-	 * Return the status information about the Map-Reduce cluster
-	 */
-	public ClusterStatus getClusterStatus() throws Exception {
-		ClusterStatus cs;
-		try {
-			JobConf job = new JobConf(conf, ExecDriver.class);
-			JobClient jc = new JobClient(job);
-			cs = jc.getClusterStatus();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-		LOG.info("Returning cluster status: " + cs.toString());
-		return cs;
-	}
-
-	public Schema getSchema() {
-		return schema;
-	}
-
-	/**
-	 * Get a Schema with fields represented with native Hive types
-	 */
-	public static Schema getSchema(BaseSemanticAnalyzer sem, HiveConf conf) {
-		Schema schema = null;
-
-		// If we have a plan, prefer its logical result schema if it's
-		// available; otherwise, try digging out a fetch task; failing that,
-		// give up.
-		if (sem == null) {
-			// can't get any info without a plan
-		} else if (sem.getResultSchema() != null) {
-			List<FieldSchema> lst = sem.getResultSchema();
-			schema = new Schema(lst, null);
-		} else if (sem.getFetchTask() != null) {
-			FetchTask ft = sem.getFetchTask();
-			TableDesc td = ft.getTblDesc();
-			// partitioned tables don't have tableDesc set on the FetchTask.
-			// Instead
-			// they have a list of PartitionDesc objects, each with a table
-			// desc.
-			// Let's
-			// try to fetch the desc for the first partition and use it's
-			// deserializer.
-			if (td == null && ft.getWork() != null
-					&& ft.getWork().getPartDesc() != null) {
-				if (ft.getWork().getPartDesc().size() > 0) {
-					td = ft.getWork().getPartDesc().get(0).getTableDesc();
-				}
-			}
-
-			if (td == null) {
-				LOG.info("No returning schema.");
-			} else {
-				String tableName = "result";
-				List<FieldSchema> lst = null;
-				try {
-					lst = MetaStoreUtils.getFieldsFromDeserializer(tableName,
-							td.getDeserializer());
-				} catch (Exception e) {
-					LOG.warn("Error getting schema: "
-							+ org.apache.hadoop.util.StringUtils
-									.stringifyException(e));
-				}
-				if (lst != null) {
-					schema = new Schema(lst, null);
-				}
-			}
-		}
-		if (schema == null) {
-			schema = new Schema();
-		}
-		LOG.info("Returning Hive schema: " + schema);
-		return schema;
-	}
-
-	/**
-	 * Get a Schema with fields represented with Thrift DDL types
-	 */
-	public Schema getThriftSchema() throws Exception {
-		Schema schema;
-		try {
-			schema = getSchema();
-			if (schema != null) {
-				List<FieldSchema> lst = schema.getFieldSchemas();
-				// Go over the schema and convert type to thrift type
-				if (lst != null) {
-					for (FieldSchema f : lst) {
-						f.setType(MetaStoreUtils.typeToThriftType(f.getType()));
-					}
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw e;
-		}
-		LOG.info("Returning Thrift schema: " + schema);
-		return schema;
-	}
-
-	/**
-	 * Return the maximum number of rows returned by getResults
-	 */
-	public int getMaxRows() {
-		return maxRows;
-	}
-
-	/**
-	 * Set the maximum number of rows returned by getResults
-	 */
-	public void setMaxRows(int maxRows) {
-		this.maxRows = maxRows;
-	}
-
-	public boolean hasReduceTasks(List<Task<? extends Serializable>> tasks) {
-		if (tasks == null) {
-			return false;
-		}
-
-		boolean hasReduce = false;
-		for (Task<? extends Serializable> task : tasks) {
-			if (task.hasReduce()) {
-				return true;
-			}
-
-			hasReduce = (hasReduce || hasReduceTasks(task.getChildTasks()));
-		}
-		return hasReduce;
-	}
-
-	/**
-	 * for backwards compatibility with current tests
-	 */
-	public Driver(HiveConf conf) {
-		this.conf = conf;
-
-		// hivesterix
-		engine = new HyracksExecutionEngine(conf);
-	}
-
-	public Driver() {
-		if (SessionState.get() != null) {
-			conf = SessionState.get().getConf();
-		}
-
-		// hivesterix
-		engine = new HyracksExecutionEngine(conf);
-	}
-
-	// hivesterix: plan printer
-	public Driver(HiveConf conf, PrintWriter planPrinter) {
-		this.conf = conf;
-		engine = new HyracksExecutionEngine(conf, planPrinter);
-	}
-
-	public void clear() {
-		this.hivesterix = false;
-	}
-
-	/**
-	 * Compile a new query. Any currently-planned query associated with this
-	 * Driver is discarded.
-	 * 
-	 * @param command
-	 *            The SQL query to compile.
-	 */
-	public int compile(String command) {
-		if (plan != null) {
-			close();
-			plan = null;
-		}
-
-		TaskFactory.resetId();
-
-		try {
-			command = new VariableSubstitution().substitute(conf, command);
-			ctx = new Context(conf);
-
-			ParseDriver pd = new ParseDriver();
-			ASTNode tree = pd.parse(command, ctx);
-			tree = ParseUtils.findRootNonNullToken(tree);
-
-			BaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(conf, tree);
-			List<AbstractSemanticAnalyzerHook> saHooks = getSemanticAnalyzerHooks();
-
-			// Do semantic analysis and plan generation
-			if (saHooks != null) {
-				HiveSemanticAnalyzerHookContext hookCtx = new HiveSemanticAnalyzerHookContextImpl();
-				hookCtx.setConf(conf);
-				for (AbstractSemanticAnalyzerHook hook : saHooks) {
-					tree = hook.preAnalyze(hookCtx, tree);
-				}
-				sem.analyze(tree, ctx);
-				for (AbstractSemanticAnalyzerHook hook : saHooks) {
-					hook.postAnalyze(hookCtx, sem.getRootTasks());
-				}
-			} else {
-				sem.analyze(tree, ctx);
-			}
-
-			LOG.info("Semantic Analysis Completed");
-
-			// validate the plan
-			sem.validate();
-
-			plan = new QueryPlan(command, sem);
-			// initialize FetchTask right here
-			if (plan.getFetchTask() != null) {
-				plan.getFetchTask().initialize(conf, plan, null);
-			}
-
-			// get the output schema
-			schema = getSchema(sem, conf);
-
-			// test Only - serialize the query plan and deserialize it
-			if (sem instanceof SemanticAnalyzer
-					&& command.toLowerCase().indexOf("create") < 0) {
-
-				Thread.currentThread().setContextClassLoader(
-						this.getClass().getClassLoader());
-
-				String queryPlanFileName = ctx.getLocalScratchDir(true)
-						+ Path.SEPARATOR_CHAR + "queryplan.xml";
-				LOG.info("query plan = " + queryPlanFileName);
-				queryPlanFileName = new Path(queryPlanFileName).toUri()
-						.getPath();
-
-				// serialize the queryPlan
-				FileOutputStream fos = new FileOutputStream(queryPlanFileName);
-				Utilities.serializeQueryPlan(plan, fos);
-				fos.close();
-
-				// deserialize the queryPlan
-				FileInputStream fis = new FileInputStream(queryPlanFileName);
-				QueryPlan newPlan = Utilities.deserializeQueryPlan(fis, conf);
-				fis.close();
-
-				// Use the deserialized plan
-				plan = newPlan;
-			}
-
-			// initialize FetchTask right here
-			if (plan.getFetchTask() != null) {
-				plan.getFetchTask().initialize(conf, plan, null);
-			}
-
-			// do the authorization check
-			if (HiveConf.getBoolVar(conf,
-					HiveConf.ConfVars.HIVE_AUTHORIZATION_ENABLED)) {
-				try {
-					// doAuthorization(sem);
-				} catch (AuthorizationException authExp) {
-					console.printError("Authorization failed:"
-							+ authExp.getMessage()
-							+ ". Use show grant to get more details.");
-					return 403;
-				}
-			}
-
-			// hyracks run
-			if (sem instanceof SemanticAnalyzer
-					&& command.toLowerCase().indexOf("create") < 0) {
-				hivesterix = true;
-				return engine.compileJob(sem.getRootTasks());
-			}
-
-			return 0;
-		} catch (SemanticException e) {
-			errorMessage = "FAILED: Error in semantic analysis: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		} catch (ParseException e) {
-			errorMessage = "FAILED: Parse Error: " + e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (11);
-		} catch (Exception e) {
-			errorMessage = "FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e);
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (12);
-		}
-	}
-
-	private void doAuthorization(BaseSemanticAnalyzer sem)
-			throws HiveException, AuthorizationException {
-		HashSet<ReadEntity> inputs = sem.getInputs();
-		HashSet<WriteEntity> outputs = sem.getOutputs();
-		SessionState ss = SessionState.get();
-		HiveOperation op = ss.getHiveOperation();
-		Hive db = sem.getDb();
-		if (op != null) {
-			if (op.equals(HiveOperation.CREATETABLE_AS_SELECT)
-					|| op.equals(HiveOperation.CREATETABLE)) {
-				ss.getAuthorizer().authorize(
-						db.getDatabase(db.getCurrentDatabase()),
-						null,
-						HiveOperation.CREATETABLE_AS_SELECT
-								.getOutputRequiredPrivileges());
-			} else {
-				// if (op.equals(HiveOperation.IMPORT)) {
-				// ImportSemanticAnalyzer isa = (ImportSemanticAnalyzer) sem;
-				// if (!isa.existsTable()) {
-				ss.getAuthorizer().authorize(
-						db.getDatabase(db.getCurrentDatabase()),
-						null,
-						HiveOperation.CREATETABLE_AS_SELECT
-								.getOutputRequiredPrivileges());
-				// }
-				// }
-			}
-			if (outputs != null && outputs.size() > 0) {
-				for (WriteEntity write : outputs) {
-
-					if (write.getType() == WriteEntity.Type.PARTITION) {
-						Partition part = db.getPartition(write.getTable(),
-								write.getPartition().getSpec(), false);
-						if (part != null) {
-							ss.getAuthorizer().authorize(write.getPartition(),
-									null, op.getOutputRequiredPrivileges());
-							continue;
-						}
-					}
-
-					if (write.getTable() != null) {
-						ss.getAuthorizer().authorize(write.getTable(), null,
-								op.getOutputRequiredPrivileges());
-					}
-				}
-
-			}
-		}
-
-		if (inputs != null && inputs.size() > 0) {
-
-			Map<Table, List<String>> tab2Cols = new HashMap<Table, List<String>>();
-			Map<Partition, List<String>> part2Cols = new HashMap<Partition, List<String>>();
-
-			Map<String, Boolean> tableUsePartLevelAuth = new HashMap<String, Boolean>();
-			for (ReadEntity read : inputs) {
-				if (read.getPartition() != null) {
-					Table tbl = read.getTable();
-					String tblName = tbl.getTableName();
-					if (tableUsePartLevelAuth.get(tblName) == null) {
-						boolean usePartLevelPriv = (tbl.getParameters().get(
-								"PARTITION_LEVEL_PRIVILEGE") != null && ("TRUE"
-								.equalsIgnoreCase(tbl.getParameters().get(
-										"PARTITION_LEVEL_PRIVILEGE"))));
-						if (usePartLevelPriv) {
-							tableUsePartLevelAuth.put(tblName, Boolean.TRUE);
-						} else {
-							tableUsePartLevelAuth.put(tblName, Boolean.FALSE);
-						}
-					}
-				}
-			}
-
-			if (op.equals(HiveOperation.CREATETABLE_AS_SELECT)
-					|| op.equals(HiveOperation.QUERY)) {
-				SemanticAnalyzer querySem = (SemanticAnalyzer) sem;
-				ParseContext parseCtx = querySem.getParseContext();
-				Map<TableScanOperator, Table> tsoTopMap = parseCtx
-						.getTopToTable();
-
-				for (Map.Entry<String, Operator<? extends Serializable>> topOpMap : querySem
-						.getParseContext().getTopOps().entrySet()) {
-					Operator<? extends Serializable> topOp = topOpMap
-							.getValue();
-					if (topOp instanceof TableScanOperator
-							&& tsoTopMap.containsKey(topOp)) {
-						TableScanOperator tableScanOp = (TableScanOperator) topOp;
-						Table tbl = tsoTopMap.get(tableScanOp);
-						List<Integer> neededColumnIds = tableScanOp
-								.getNeededColumnIDs();
-						List<FieldSchema> columns = tbl.getCols();
-						List<String> cols = new ArrayList<String>();
-						if (neededColumnIds != null
-								&& neededColumnIds.size() > 0) {
-							for (int i = 0; i < neededColumnIds.size(); i++) {
-								cols.add(columns.get(neededColumnIds.get(i))
-										.getName());
-							}
-						} else {
-							for (int i = 0; i < columns.size(); i++) {
-								cols.add(columns.get(i).getName());
-							}
-						}
-						if (tbl.isPartitioned()
-								&& tableUsePartLevelAuth
-										.get(tbl.getTableName())) {
-							String alias_id = topOpMap.getKey();
-							PrunedPartitionList partsList = PartitionPruner
-									.prune(parseCtx.getTopToTable().get(topOp),
-											parseCtx.getOpToPartPruner().get(
-													topOp), parseCtx.getConf(),
-											alias_id,
-											parseCtx.getPrunedPartitions());
-							Set<Partition> parts = new HashSet<Partition>();
-							parts.addAll(partsList.getConfirmedPartns());
-							parts.addAll(partsList.getUnknownPartns());
-							for (Partition part : parts) {
-								List<String> existingCols = part2Cols.get(part);
-								if (existingCols == null) {
-									existingCols = new ArrayList<String>();
-								}
-								existingCols.addAll(cols);
-								part2Cols.put(part, existingCols);
-							}
-						} else {
-							List<String> existingCols = tab2Cols.get(tbl);
-							if (existingCols == null) {
-								existingCols = new ArrayList<String>();
-							}
-							existingCols.addAll(cols);
-							tab2Cols.put(tbl, existingCols);
-						}
-					}
-				}
-			}
-
-			// cache the results for table authorization
-			Set<String> tableAuthChecked = new HashSet<String>();
-			for (ReadEntity read : inputs) {
-				Table tbl = null;
-				if (read.getPartition() != null) {
-					tbl = read.getPartition().getTable();
-					// use partition level authorization
-					if (tableUsePartLevelAuth.get(tbl.getTableName())) {
-						List<String> cols = part2Cols.get(read.getPartition());
-						if (cols != null && cols.size() > 0) {
-							ss.getAuthorizer().authorize(
-									read.getPartition().getTable(),
-									read.getPartition(), cols,
-									op.getInputRequiredPrivileges(), null);
-						} else {
-							ss.getAuthorizer().authorize(read.getPartition(),
-									op.getInputRequiredPrivileges(), null);
-						}
-						continue;
-					}
-				} else if (read.getTable() != null) {
-					tbl = read.getTable();
-				}
-
-				// if we reach here, it means it needs to do a table
-				// authorization
-				// check, and the table authorization may already happened
-				// because of other
-				// partitions
-				if (tbl != null
-						&& !tableAuthChecked.contains(tbl.getTableName())) {
-					List<String> cols = tab2Cols.get(tbl);
-					if (cols != null && cols.size() > 0) {
-						ss.getAuthorizer().authorize(tbl, null, cols,
-								op.getInputRequiredPrivileges(), null);
-					} else {
-						ss.getAuthorizer().authorize(tbl,
-								op.getInputRequiredPrivileges(), null);
-					}
-					tableAuthChecked.add(tbl.getTableName());
-				}
-			}
-
-		}
-	}
-
-	/**
-	 * @return The current query plan associated with this Driver, if any.
-	 */
-	public QueryPlan getPlan() {
-		return plan;
-	}
-
-	/**
-	 * @param t
-	 *            The table to be locked
-	 * @param p
-	 *            The partition to be locked
-	 * @param mode
-	 *            The mode of the lock (SHARED/EXCLUSIVE) Get the list of
-	 *            objects to be locked. If a partition needs to be locked (in
-	 *            any mode), all its parents should also be locked in SHARED
-	 *            mode.
-	 **/
-	private List<HiveLockObj> getLockObjects(Table t, Partition p,
-			HiveLockMode mode) throws SemanticException {
-		List<HiveLockObj> locks = new LinkedList<HiveLockObj>();
-
-		HiveLockObjectData lockData = new HiveLockObjectData(plan.getQueryId(),
-				String.valueOf(System.currentTimeMillis()), "IMPLICIT");
-
-		if (t != null) {
-			locks.add(new HiveLockObj(new HiveLockObject(t, lockData), mode));
-			mode = HiveLockMode.SHARED;
-			locks.add(new HiveLockObj(new HiveLockObject(t.getDbName(),
-					lockData), mode));
-			return locks;
-		}
-
-		if (p != null) {
-			if (!(p instanceof DummyPartition)) {
-				locks.add(new HiveLockObj(new HiveLockObject(p, lockData), mode));
-			}
-
-			// All the parents are locked in shared mode
-			mode = HiveLockMode.SHARED;
-
-			// For dummy partitions, only partition name is needed
-			String name = p.getName();
-
-			if (p instanceof DummyPartition) {
-				name = p.getName().split("@")[2];
-			}
-
-			String partName = name;
-			String partialName = "";
-			String[] partns = name.split("/");
-			int len = p instanceof DummyPartition ? partns.length
-					: partns.length - 1;
-			for (int idx = 0; idx < len; idx++) {
-				String partn = partns[idx];
-				partialName += partn;
-				try {
-					locks.add(new HiveLockObj(new HiveLockObject(
-							new DummyPartition(p.getTable(), p.getTable()
-									.getDbName()
-									+ "/"
-									+ p.getTable().getTableName()
-									+ "/"
-									+ partialName), lockData), mode));
-					partialName += "/";
-				} catch (HiveException e) {
-					throw new SemanticException(e.getMessage());
-				}
-			}
-
-			locks.add(new HiveLockObj(
-					new HiveLockObject(p.getTable(), lockData), mode));
-			locks.add(new HiveLockObj(new HiveLockObject(p.getTable()
-					.getDbName(), lockData), mode));
-		}
-		return locks;
-	}
-
-	/**
-	 * Acquire read and write locks needed by the statement. The list of objects
-	 * to be locked are obtained from he inputs and outputs populated by the
-	 * compiler. The lock acuisition scheme is pretty simple. If all the locks
-	 * cannot be obtained, error out. Deadlock is avoided by making sure that
-	 * the locks are lexicographically sorted.
-	 **/
-	public int acquireReadWriteLocks() {
-		try {
-			int sleepTime = conf
-					.getIntVar(HiveConf.ConfVars.HIVE_LOCK_SLEEP_BETWEEN_RETRIES) * 1000;
-			int numRetries = conf
-					.getIntVar(HiveConf.ConfVars.HIVE_LOCK_NUMRETRIES);
-
-			boolean supportConcurrency = conf
-					.getBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY);
-			if (!supportConcurrency) {
-				return 0;
-			}
-
-			List<HiveLockObj> lockObjects = new ArrayList<HiveLockObj>();
-
-			// Sort all the inputs, outputs.
-			// If a lock needs to be acquired on any partition, a read lock
-			// needs to be acquired on all
-			// its parents also
-			for (ReadEntity input : plan.getInputs()) {
-				if (input.getType() == ReadEntity.Type.TABLE) {
-					lockObjects.addAll(getLockObjects(input.getTable(), null,
-							HiveLockMode.SHARED));
-				} else {
-					lockObjects.addAll(getLockObjects(null,
-							input.getPartition(), HiveLockMode.SHARED));
-				}
-			}
-
-			for (WriteEntity output : plan.getOutputs()) {
-				if (output.getTyp() == WriteEntity.Type.TABLE) {
-					lockObjects.addAll(getLockObjects(output.getTable(), null,
-							output.isComplete() ? HiveLockMode.EXCLUSIVE
-									: HiveLockMode.SHARED));
-				} else if (output.getTyp() == WriteEntity.Type.PARTITION) {
-					lockObjects.addAll(getLockObjects(null,
-							output.getPartition(), HiveLockMode.EXCLUSIVE));
-				}
-				// In case of dynamic queries, it is possible to have incomplete
-				// dummy partitions
-				else if (output.getTyp() == WriteEntity.Type.DUMMYPARTITION) {
-					lockObjects.addAll(getLockObjects(null,
-							output.getPartition(), HiveLockMode.SHARED));
-				}
-			}
-
-			if (lockObjects.isEmpty() && !ctx.isNeedLockMgr()) {
-				return 0;
-			}
-
-			int ret = checkLockManager();
-			if (ret != 0) {
-				return ret;
-			}
-
-			HiveLockObjectData lockData = new HiveLockObjectData(
-					plan.getQueryId(), String.valueOf(System
-							.currentTimeMillis()), "IMPLICIT");
-
-			// Lock the database also
-			try {
-				Hive db = Hive.get(conf);
-				lockObjects.add(new HiveLockObj(new HiveLockObject(db
-						.getCurrentDatabase(), lockData), HiveLockMode.SHARED));
-			} catch (HiveException e) {
-				throw new SemanticException(e.getMessage());
-			}
-
-			ctx.setHiveLockMgr(hiveLockMgr);
-			List<HiveLock> hiveLocks = null;
-
-			int tryNum = 1;
-			do {
-
-				// ctx.getHiveLockMgr();
-				// hiveLocks = ctx.getHiveLockMgr().lock(lockObjects, false);
-
-				if (hiveLocks != null) {
-					break;
-				}
-
-				tryNum++;
-				try {
-					Thread.sleep(sleepTime);
-				} catch (InterruptedException e) {
-				}
-			} while (tryNum < numRetries);
-
-			if (hiveLocks == null) {
-				throw new SemanticException(
-						ErrorMsg.LOCK_CANNOT_BE_ACQUIRED.getMsg());
-			} else {
-				ctx.setHiveLocks(hiveLocks);
-			}
-
-			return (0);
-		} catch (SemanticException e) {
-			errorMessage = "FAILED: Error in acquiring locks: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		} catch (Exception e) {
-			errorMessage = "FAILED: Error in acquiring locks: "
-					+ e.getMessage();
-			SQLState = ErrorMsg.findSQLState(e.getMessage());
-			console.printError(errorMessage, "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (10);
-		}
-	}
-
-	/**
-	 * Release all the locks acquired implicitly by the statement. Note that the
-	 * locks acquired with 'keepAlive' set to True are not released.
-	 **/
-	private void releaseLocks() {
-		if (ctx != null && ctx.getHiveLockMgr() != null) {
-			try {
-				ctx.getHiveLockMgr().close();
-				ctx.setHiveLocks(null);
-			} catch (LockException e) {
-			}
-		}
-	}
-
-	/**
-	 * @param hiveLocks
-	 *            list of hive locks to be released Release all the locks
-	 *            specified. If some of the locks have already been released,
-	 *            ignore them
-	 **/
-	private void releaseLocks(List<HiveLock> hiveLocks) {
-		if (hiveLocks != null) {
-			ctx.getHiveLockMgr().releaseLocks(hiveLocks);
-		}
-		ctx.setHiveLocks(null);
-	}
-
-	public CommandProcessorResponse run(String command) {
-		errorMessage = null;
-		SQLState = null;
-
-		int ret = compile(command);
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		// ret = acquireReadWriteLocks();
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		ret = execute();
-		if (ret != 0) {
-			// releaseLocks(ctx.getHiveLocks());
-			return new CommandProcessorResponse(ret, errorMessage, SQLState);
-		}
-
-		// releaseLocks(ctx.getHiveLocks());
-		return new CommandProcessorResponse(ret);
-	}
-
-	private List<AbstractSemanticAnalyzerHook> getSemanticAnalyzerHooks()
-			throws Exception {
-		ArrayList<AbstractSemanticAnalyzerHook> saHooks = new ArrayList<AbstractSemanticAnalyzerHook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK);
-		if (pestr == null) {
-			return saHooks;
-		}
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return saHooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				AbstractSemanticAnalyzerHook hook = HiveUtils
-						.getSemanticAnalyzerHook(conf, peClass);
-				saHooks.add(hook);
-			} catch (HiveException e) {
-				console.printError("Pre Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return saHooks;
-	}
-
-	private List<Hook> getPreExecHooks() throws Exception {
-		ArrayList<Hook> pehooks = new ArrayList<Hook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.PREEXECHOOKS);
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return pehooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				pehooks.add((Hook) Class.forName(peClass.trim(), true,
-						JavaUtils.getClassLoader()).newInstance());
-			} catch (ClassNotFoundException e) {
-				console.printError("Pre Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return pehooks;
-	}
-
-	private List<Hook> getPostExecHooks() throws Exception {
-		ArrayList<Hook> pehooks = new ArrayList<Hook>();
-		String pestr = conf.getVar(HiveConf.ConfVars.POSTEXECHOOKS);
-		pestr = pestr.trim();
-		if (pestr.equals("")) {
-			return pehooks;
-		}
-
-		String[] peClasses = pestr.split(",");
-
-		for (String peClass : peClasses) {
-			try {
-				pehooks.add((Hook) Class.forName(peClass.trim(), true,
-						JavaUtils.getClassLoader()).newInstance());
-			} catch (ClassNotFoundException e) {
-				console.printError("Post Exec Hook Class not found:"
-						+ e.getMessage());
-				throw e;
-			}
-		}
-
-		return pehooks;
-	}
-
-	public int execute() {
-		// execute hivesterix plan
-		if (hivesterix) {
-			hivesterix = false;
-			int ret = engine.executeJob();
-			if (ret != 0)
-				return ret;
-		}
-
-		boolean noName = StringUtils.isEmpty(conf
-				.getVar(HiveConf.ConfVars.HADOOPJOBNAME));
-		int maxlen = conf.getIntVar(HiveConf.ConfVars.HIVEJOBNAMELENGTH);
-
-		String queryId = plan.getQueryId();
-		String queryStr = plan.getQueryStr();
-
-		conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId);
-		conf.setVar(HiveConf.ConfVars.HIVEQUERYSTRING, queryStr);
-		maxthreads = HiveConf.getIntVar(conf,
-				HiveConf.ConfVars.EXECPARALLETHREADNUMBER);
-
-		try {
-			LOG.info("Starting command: " + queryStr);
-
-			plan.setStarted();
-
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.startQuery(queryStr,
-								conf.getVar(HiveConf.ConfVars.HIVEQUERYID));
-				SessionState.get().getHiveHistory().logPlanProgress(plan);
-			}
-			resStream = null;
-
-			HookContext hookContext = new HookContext(plan, conf);
-
-			for (Hook peh : getPreExecHooks()) {
-				if (peh instanceof ExecuteWithHookContext) {
-					((ExecuteWithHookContext) peh).run(hookContext);
-				} else if (peh instanceof PreExecute) {
-					((PreExecute) peh).run(SessionState.get(),
-							plan.getInputs(), plan.getOutputs(), ShimLoader
-									.getHadoopShims().getUGIForConf(conf));
-				}
-			}
-
-			int jobs = Utilities.getMRTasks(plan.getRootTasks()).size();
-			if (jobs > 0) {
-				console.printInfo("Total MapReduce jobs = " + jobs);
-			}
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_NUM_TASKS,
-								String.valueOf(jobs));
-				SessionState.get().getHiveHistory()
-						.setIdToTableMap(plan.getIdToTableNameMap());
-			}
-			String jobname = Utilities.abbreviate(queryStr, maxlen - 6);
-
-			// A runtime that launches runnable tasks as separate Threads
-			// through
-			// TaskRunners
-			// As soon as a task isRunnable, it is put in a queue
-			// At any time, at most maxthreads tasks can be running
-			// The main thread polls the TaskRunners to check if they have
-			// finished.
-
-			Queue<Task<? extends Serializable>> runnable = new LinkedList<Task<? extends Serializable>>();
-			Map<TaskResult, TaskRunner> running = new HashMap<TaskResult, TaskRunner>();
-
-			DriverContext driverCxt = new DriverContext(runnable, ctx);
-
-			// Add root Tasks to runnable
-
-			for (Task<? extends Serializable> tsk : plan.getRootTasks()) {
-				driverCxt.addToRunnable(tsk);
-			}
-
-			// Loop while you either have tasks running, or tasks queued up
-
-			while (running.size() != 0 || runnable.peek() != null) {
-				// Launch upto maxthreads tasks
-				while (runnable.peek() != null && running.size() < maxthreads) {
-					Task<? extends Serializable> tsk = runnable.remove();
-					console.printInfo("executing task " + tsk.getName());
-					launchTask(tsk, queryId, noName, running, jobname, jobs,
-							driverCxt);
-				}
-
-				// poll the Tasks to see which one completed
-				TaskResult tskRes = pollTasks(running.keySet());
-				TaskRunner tskRun = running.remove(tskRes);
-				Task<? extends Serializable> tsk = tskRun.getTask();
-				hookContext.addCompleteTask(tskRun);
-
-				int exitVal = tskRes.getExitVal();
-				if (exitVal != 0) {
-					Task<? extends Serializable> backupTask = tsk
-							.getAndInitBackupTask();
-					if (backupTask != null) {
-						errorMessage = "FAILED: Execution Error, return code "
-								+ exitVal + " from " + tsk.getClass().getName();
-						console.printError(errorMessage);
-
-						errorMessage = "ATTEMPT: Execute BackupTask: "
-								+ backupTask.getClass().getName();
-						console.printError(errorMessage);
-
-						// add backup task to runnable
-						if (DriverContext.isLaunchable(backupTask)) {
-							driverCxt.addToRunnable(backupTask);
-						}
-						continue;
-
-					} else {
-						// TODO: This error messaging is not very informative.
-						// Fix that.
-						errorMessage = "FAILED: Execution Error, return code "
-								+ exitVal + " from " + tsk.getClass().getName();
-						SQLState = "08S01";
-						console.printError(errorMessage);
-						if (running.size() != 0) {
-							taskCleanup();
-						}
-						// in case we decided to run everything in local mode,
-						// restore the
-						// the jobtracker setting to its initial value
-						ctx.restoreOriginalTracker();
-						return 9;
-					}
-				}
-
-				if (SessionState.get() != null) {
-					SessionState
-							.get()
-							.getHiveHistory()
-							.setTaskProperty(queryId, tsk.getId(),
-									Keys.TASK_RET_CODE, String.valueOf(exitVal));
-					SessionState.get().getHiveHistory().endTask(queryId, tsk);
-				}
-
-				if (tsk.getChildTasks() != null) {
-					for (Task<? extends Serializable> child : tsk
-							.getChildTasks()) {
-						// hivesterix: don't check launchable condition
-						// if (DriverContext.isLaunchable(child)) {
-						driverCxt.addToRunnable(child);
-						// }
-					}
-				}
-			}
-
-			// in case we decided to run everything in local mode, restore the
-			// the jobtracker setting to its initial value
-			ctx.restoreOriginalTracker();
-
-			// remove incomplete outputs.
-			// Some incomplete outputs may be added at the beginning, for eg:
-			// for dynamic partitions.
-			// remove them
-			HashSet<WriteEntity> remOutputs = new HashSet<WriteEntity>();
-			for (WriteEntity output : plan.getOutputs()) {
-				if (!output.isComplete()) {
-					remOutputs.add(output);
-				}
-			}
-
-			for (WriteEntity output : remOutputs) {
-				plan.getOutputs().remove(output);
-			}
-
-			// Get all the post execution hooks and execute them.
-			for (Hook peh : getPostExecHooks()) {
-				if (peh instanceof ExecuteWithHookContext) {
-					((ExecuteWithHookContext) peh).run(hookContext);
-				} else if (peh instanceof PostExecute) {
-					((PostExecute) peh)
-							.run(SessionState.get(),
-									plan.getInputs(),
-									plan.getOutputs(),
-									(SessionState.get() != null ? SessionState
-											.get().getLineageState()
-											.getLineageInfo() : null),
-									ShimLoader.getHadoopShims().getUGIForConf(
-											conf));
-				}
-			}
-
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_RET_CODE,
-								String.valueOf(0));
-				SessionState.get().getHiveHistory().printRowCount(queryId);
-			}
-		} catch (Exception e) {
-			if (SessionState.get() != null) {
-				SessionState
-						.get()
-						.getHiveHistory()
-						.setQueryProperty(queryId, Keys.QUERY_RET_CODE,
-								String.valueOf(12));
-			}
-			// TODO: do better with handling types of Exception here
-			errorMessage = "FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e);
-			SQLState = "08S01";
-			console.printError(errorMessage + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return (12);
-		} finally {
-			if (SessionState.get() != null) {
-				SessionState.get().getHiveHistory().endQuery(queryId);
-			}
-			if (noName) {
-				conf.setVar(HiveConf.ConfVars.HADOOPJOBNAME, "");
-			}
-		}
-		plan.setDone();
-
-		if (SessionState.get() != null) {
-			try {
-				SessionState.get().getHiveHistory().logPlanProgress(plan);
-			} catch (Exception e) {
-			}
-		}
-		console.printInfo("OK");
-
-		return (0);
-	}
-
-	/**
-	 * Launches a new task
-	 * 
-	 * @param tsk
-	 *            task being launched
-	 * @param queryId
-	 *            Id of the query containing the task
-	 * @param noName
-	 *            whether the task has a name set
-	 * @param running
-	 *            map from taskresults to taskrunners
-	 * @param jobname
-	 *            name of the task, if it is a map-reduce job
-	 * @param jobs
-	 *            number of map-reduce jobs
-	 * @param curJobNo
-	 *            the sequential number of the next map-reduce job
-	 * @return the updated number of last the map-reduce job launched
-	 */
-
-	public void launchTask(Task<? extends Serializable> tsk, String queryId,
-			boolean noName, Map<TaskResult, TaskRunner> running,
-			String jobname, int jobs, DriverContext cxt) {
-
-		if (SessionState.get() != null) {
-			SessionState.get().getHiveHistory()
-					.startTask(queryId, tsk, tsk.getClass().getName());
-		}
-		if (tsk.isMapRedTask() && !(tsk instanceof ConditionalTask)) {
-			if (noName) {
-				conf.setVar(HiveConf.ConfVars.HADOOPJOBNAME, jobname + "("
-						+ tsk.getId() + ")");
-			}
-			cxt.incCurJobNo(1);
-			console.printInfo("Launching Job " + cxt.getCurJobNo() + " out of "
-					+ jobs);
-		}
-		tsk.initialize(conf, plan, cxt);
-		TaskResult tskRes = new TaskResult();
-		TaskRunner tskRun = new TaskRunner(tsk, tskRes);
-
-		// HiveConf.getBoolVar(conf, HiveConf.ConfVars.EXECPARALLEL) &&
-		// Launch Task: hivesterix tweak
-		if (tsk instanceof MapRedTask || tsk instanceof StatsTask) {
-			// Launch it in the parallel mode, as a separate thread only for MR
-			// tasks
-			tskRes.setRunning(false);
-			tskRes.setExitVal(0);
-		} else if (tsk instanceof ConditionalTask) {
-			ConditionalTask condTask = (ConditionalTask) tsk;
-			ConditionalResolver crs = condTask.getResolver();
-			if (crs instanceof ConditionalResolverMergeFiles) {
-				tskRes.setRunning(false);
-				tskRes.setExitVal(0);
-
-				List<Task<? extends Serializable>> children = condTask
-						.getListTasks();
-				for (Task<? extends Serializable> child : children)
-					if (child instanceof MapRedTask)
-						cxt.addToRunnable(child);
-			}
-		} else {
-			tskRun.runSequential();
-		}
-		running.put(tskRes, tskRun);
-		return;
-	}
-
-	/**
-	 * Cleans up remaining tasks in case of failure
-	 */
-
-	public void taskCleanup() {
-		// The currently existing Shutdown hooks will be automatically called,
-		// killing the map-reduce processes.
-		// The non MR processes will be killed as well.
-		System.exit(9);
-	}
-
-	/**
-	 * Polls running tasks to see if a task has ended.
-	 * 
-	 * @param results
-	 *            Set of result objects for running tasks
-	 * @return The result object for any completed/failed task
-	 */
-
-	public TaskResult pollTasks(Set<TaskResult> results) {
-		Iterator<TaskResult> resultIterator = results.iterator();
-		while (true) {
-			while (resultIterator.hasNext()) {
-				TaskResult tskRes = resultIterator.next();
-				if (tskRes.isRunning() == false) {
-					return tskRes;
-				}
-			}
-
-			// In this loop, nothing was found
-			// Sleep 10 seconds and restart
-			try {
-				Thread.sleep(sleeptime);
-			} catch (InterruptedException ie) {
-				// Do Nothing
-				;
-			}
-			resultIterator = results.iterator();
-		}
-	}
-
-	public boolean getResults(ArrayList<String> res) throws IOException {
-		if (plan != null && plan.getFetchTask() != null) {
-			FetchTask ft = plan.getFetchTask();
-			ft.setMaxRows(maxRows);
-			return ft.fetch(res);
-		}
-
-		if (resStream == null) {
-			resStream = ctx.getStream();
-		}
-		if (resStream == null) {
-			return false;
-		}
-
-		int numRows = 0;
-		String row = null;
-
-		while (numRows < maxRows) {
-			if (resStream == null) {
-				if (numRows > 0) {
-					return true;
-				} else {
-					return false;
-				}
-			}
-
-			bos.reset();
-			Utilities.StreamStatus ss;
-			try {
-				ss = Utilities.readColumn(resStream, bos);
-				if (bos.getCount() > 0) {
-					row = new String(bos.getData(), 0, bos.getCount(), "UTF-8");
-				} else if (ss == Utilities.StreamStatus.TERMINATED) {
-					row = new String();
-				}
-
-				if (row != null) {
-					numRows++;
-					res.add(row);
-				}
-			} catch (IOException e) {
-				console.printError("FAILED: Unexpected IO exception : "
-						+ e.getMessage());
-				res = null;
-				return false;
-			}
-
-			if (ss == Utilities.StreamStatus.EOF) {
-				resStream = ctx.getStream();
-			}
-		}
-		return true;
-	}
-
-	public int close() {
-		try {
-			if (plan != null) {
-				FetchTask fetchTask = plan.getFetchTask();
-				if (null != fetchTask) {
-					try {
-						fetchTask.clearFetch();
-					} catch (Exception e) {
-						LOG.debug(" Exception while clearing the Fetch task ",
-								e);
-					}
-				}
-			}
-			if (ctx != null) {
-				ctx.clear();
-			}
-			if (null != resStream) {
-				try {
-					((FSDataInputStream) resStream).close();
-				} catch (Exception e) {
-					LOG.debug(" Exception while closing the resStream ", e);
-				}
-			}
-		} catch (Exception e) {
-			console.printError("FAILED: Hive Internal Error: "
-					+ Utilities.getNameMessage(e) + "\n"
-					+ org.apache.hadoop.util.StringUtils.stringifyException(e));
-			return 13;
-		}
-
-		return 0;
-	}
-
-	public void destroy() {
-		releaseLocks();
-	}
-
-	public org.apache.hadoop.hive.ql.plan.api.Query getQueryPlan()
-			throws IOException {
-		return plan.getQueryPlan();
-	}
-
-	public int getTryCount() {
-		return tryCount;
-	}
-
-	public void setTryCount(int tryCount) {
-		this.tryCount = tryCount;
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
deleted file mode 100644
index b174432..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * GenericUDAFAverage.
- * 
- */
-@Description(name = "avg", value = "_FUNC_(x) - Returns the mean of a set of numbers")
-public class GenericUDAFAverage extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory
-			.getLog(GenericUDAFAverage.class.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFAverageEvaluator();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * GenericUDAFAverageEvaluator.
-	 * 
-	 */
-	public static class GenericUDAFAverageEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		PrimitiveObjectInspector inputOI;
-
-		// For PARTIAL2 and FINAL
-		StructObjectInspector soi;
-		StructField countField;
-		StructField sumField;
-		LongObjectInspector countFieldOI;
-		DoubleObjectInspector sumFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				inputOI = (PrimitiveObjectInspector) parameters[0];
-			} else {
-				soi = (StructObjectInspector) parameters[0];
-				countField = soi.getStructFieldRef("count");
-				sumField = soi.getStructFieldRef("sum");
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				sumFieldOI = (DoubleObjectInspector) sumField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a "long" count and a "double" sum.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("sum");
-				partialResult = new Object[2];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				result = new DoubleWritable(0);
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class AverageAgg implements SerializableBuffer {
-			long count;
-			double sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				sum = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(sum);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			AverageAgg result = new AverageAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			myagg.count = 0;
-			myagg.sum = 0;
-		}
-
-		boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			Object p = parameters[0];
-			if (p != null) {
-				AverageAgg myagg = (AverageAgg) agg;
-				try {
-					double v = PrimitiveObjectInspectorUtils.getDouble(p,
-							inputOI);
-					myagg.count++;
-					myagg.sum += v;
-				} catch (NumberFormatException e) {
-					if (!warned) {
-						warned = true;
-						LOG.warn(getClass().getSimpleName() + " "
-								+ StringUtils.stringifyException(e));
-						LOG.warn(getClass().getSimpleName()
-								+ " ignoring similar exceptions.");
-					}
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.sum);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				AverageAgg myagg = (AverageAgg) agg;
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialSum = soi.getStructFieldData(partial, sumField);
-				myagg.count += countFieldOI.get(partialCount);
-				myagg.sum += sumFieldOI.get(partialSum);
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			AverageAgg myagg = (AverageAgg) agg;
-			if (myagg.count == 0) {
-				return null;
-			} else {
-				result.set(myagg.sum / myagg.count);
-				return result;
-			}
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java
deleted file mode 100644
index 716faac..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCorrelation.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the Pearson correlation coefficient corr(x, y), using the following
- * stable one-pass method, based on: "Formulas for Robust, One-Pass Parallel
- * Computation of Covariances and Arbitrary-Order Statistical Moments", Philippe
- * Pebay, Sandia Labs and
- * "The Art of Computer Programming, volume 2: Seminumerical Algorithms", Donald
- * Knuth.
- * 
- * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg> my_n =
- * my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n - mx_(n-1))*(y_n
- * - my_n) : <covariance * n> vx_n = vx_(n-1) + (x_n - mx_n)(x_n - mx_(n-1)):
- * <variance * n> vy_n = vy_(n-1) + (y_n - my_n)(y_n - my_(n-1)): <variance * n>
- * 
- * Merge: c_(A,B) = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
- * vx_(A,B) = vx_A + vx_B + (mx_A - mx_B)*(mx_A - mx_B)*n_A*n_B/(n_A+n_B)
- * vy_(A,B) = vy_A + vy_B + (my_A - my_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
- * 
- */
-@Description(name = "corr", value = "_FUNC_(x,y) - Returns the Pearson coefficient of correlation\n"
-		+ "between a set of number pairs", extended = "The function takes as arguments any pair of numeric types and returns a double.\n"
-		+ "Any pair with a NULL is ignored. If the function is applied to an empty set or\n"
-		+ "a singleton set, NULL will be returned. Otherwise, it computes the following:\n"
-		+ "   COVAR_POP(x,y)/(STDDEV_POP(x)*STDDEV_POP(y))\n"
-		+ "where neither x nor y is null,\n"
-		+ "COVAR_POP is the population covariance,\n"
-		+ "and STDDEV_POP is the population standard deviation.")
-public class GenericUDAFCorrelation extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFCorrelation.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 2) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly two arguments are expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-
-		if (parameters[1].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(1,
-					"Only primitive type arguments are accepted but "
-							+ parameters[1].getTypeName() + " is passed.");
-		}
-
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-			switch (((PrimitiveTypeInfo) parameters[1]).getPrimitiveCategory()) {
-			case BYTE:
-			case SHORT:
-			case INT:
-			case LONG:
-			case FLOAT:
-			case DOUBLE:
-				return new GenericUDAFCorrelationEvaluator();
-			case STRING:
-			case BOOLEAN:
-			default:
-				throw new UDFArgumentTypeException(1,
-						"Only numeric type arguments are accepted but "
-								+ parameters[1].getTypeName() + " is passed.");
-			}
-		case STRING:
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the Pearson correlation coefficient using a stable one-pass
-	 * algorithm, based on work by Philippe Pébay and Donald Knuth.
-	 * 
-	 * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg>
-	 * my_n = my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n -
-	 * mx_(n-1))*(y_n - my_n) : <covariance * n> vx_n = vx_(n-1) + (x_n -
-	 * mx_n)(x_n - mx_(n-1)): <variance * n> vy_n = vy_(n-1) + (y_n - my_n)(y_n
-	 * - my_(n-1)): <variance * n>
-	 * 
-	 * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X vx_(A,B)
-	 * = vx_A + vx_B + (mx_A - mx_B)*(mx_A - mx_B)*n_A*n_B/(n_A+n_B) vy_(A,B) =
-	 * vy_A + vy_B + (my_A - my_B)*(my_A - my_B)*n_A*n_B/(n_A+n_B)
-	 * 
-	 */
-	public static class GenericUDAFCorrelationEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector xInputOI;
-		private PrimitiveObjectInspector yInputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField xavgField;
-		private StructField yavgField;
-		private StructField xvarField;
-		private StructField yvarField;
-		private StructField covarField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector xavgFieldOI;
-		private DoubleObjectInspector yavgFieldOI;
-		private DoubleObjectInspector xvarFieldOI;
-		private DoubleObjectInspector yvarFieldOI;
-		private DoubleObjectInspector covarFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				assert (parameters.length == 2);
-				xInputOI = (PrimitiveObjectInspector) parameters[0];
-				yInputOI = (PrimitiveObjectInspector) parameters[1];
-			} else {
-				assert (parameters.length == 1);
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				xavgField = soi.getStructFieldRef("xavg");
-				yavgField = soi.getStructFieldRef("yavg");
-				xvarField = soi.getStructFieldRef("xvar");
-				yvarField = soi.getStructFieldRef("yvar");
-				covarField = soi.getStructFieldRef("covar");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				xavgFieldOI = (DoubleObjectInspector) xavgField
-						.getFieldObjectInspector();
-				yavgFieldOI = (DoubleObjectInspector) yavgField
-						.getFieldObjectInspector();
-				xvarFieldOI = (DoubleObjectInspector) xvarField
-						.getFieldObjectInspector();
-				yvarFieldOI = (DoubleObjectInspector) yvarField
-						.getFieldObjectInspector();
-				covarFieldOI = (DoubleObjectInspector) covarField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count, two double averages, two double variances,
-				// and a double covariance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("xavg");
-				fname.add("yavg");
-				fname.add("xvar");
-				fname.add("yvar");
-				fname.add("covar");
-
-				partialResult = new Object[6];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-				partialResult[3] = new DoubleWritable(0);
-				partialResult[4] = new DoubleWritable(0);
-				partialResult[5] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number n of elements
-			double xavg; // average of x elements
-			double yavg; // average of y elements
-			double xvar; // n times the variance of x elements
-			double yvar; // n times the variance of y elements
-			double covar; // n times the covariance
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				xavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				xvar = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yvar = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				covar = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xvar, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yvar, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(covar, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(xavg);
-				output.writeDouble(yavg);
-				output.writeDouble(xvar);
-				output.writeDouble(yvar);
-				output.writeDouble(covar);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.xavg = 0;
-			myagg.yavg = 0;
-			myagg.xvar = 0;
-			myagg.yvar = 0;
-			myagg.covar = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 2);
-			Object px = parameters[0];
-			Object py = parameters[1];
-			if (px != null && py != null) {
-				StdAgg myagg = (StdAgg) agg;
-				double vx = PrimitiveObjectInspectorUtils.getDouble(px,
-						xInputOI);
-				double vy = PrimitiveObjectInspectorUtils.getDouble(py,
-						yInputOI);
-				double xavgOld = myagg.xavg;
-				double yavgOld = myagg.yavg;
-				myagg.count++;
-				myagg.xavg += (vx - xavgOld) / myagg.count;
-				myagg.yavg += (vy - yavgOld) / myagg.count;
-				if (myagg.count > 1) {
-					myagg.covar += (vx - xavgOld) * (vy - myagg.yavg);
-					myagg.xvar += (vx - xavgOld) * (vx - myagg.xavg);
-					myagg.yvar += (vy - yavgOld) * (vy - myagg.yavg);
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.xavg);
-			((DoubleWritable) partialResult[2]).set(myagg.yavg);
-			((DoubleWritable) partialResult[3]).set(myagg.xvar);
-			((DoubleWritable) partialResult[4]).set(myagg.yvar);
-			((DoubleWritable) partialResult[5]).set(myagg.covar);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialXAvg = soi.getStructFieldData(partial, xavgField);
-				Object partialYAvg = soi.getStructFieldData(partial, yavgField);
-				Object partialXVar = soi.getStructFieldData(partial, xvarField);
-				Object partialYVar = soi.getStructFieldData(partial, yvarField);
-				Object partialCovar = soi.getStructFieldData(partial,
-						covarField);
-
-				long nA = myagg.count;
-				long nB = countFieldOI.get(partialCount);
-
-				if (nA == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.xavg = xavgFieldOI.get(partialXAvg);
-					myagg.yavg = yavgFieldOI.get(partialYAvg);
-					myagg.xvar = xvarFieldOI.get(partialXVar);
-					myagg.yvar = yvarFieldOI.get(partialYVar);
-					myagg.covar = covarFieldOI.get(partialCovar);
-				}
-
-				if (nA != 0 && nB != 0) {
-					// Merge the two partials
-					double xavgA = myagg.xavg;
-					double yavgA = myagg.yavg;
-					double xavgB = xavgFieldOI.get(partialXAvg);
-					double yavgB = yavgFieldOI.get(partialYAvg);
-					double xvarB = xvarFieldOI.get(partialXVar);
-					double yvarB = yvarFieldOI.get(partialYVar);
-					double covarB = covarFieldOI.get(partialCovar);
-
-					myagg.count += nB;
-					myagg.xavg = (xavgA * nA + xavgB * nB) / myagg.count;
-					myagg.yavg = (yavgA * nA + yavgB * nB) / myagg.count;
-					myagg.xvar += xvarB + (xavgA - xavgB) * (xavgA - xavgB)
-							* myagg.count;
-					myagg.yvar += yvarB + (yavgA - yavgB) * (yavgA - yavgB)
-							* myagg.count;
-					myagg.covar += covarB + (xavgA - xavgB) * (yavgA - yavgB)
-							* ((double) (nA * nB) / myagg.count);
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count < 2) { // SQL standard - return null for zero or one
-									// pair
-				return null;
-			} else {
-				getResult().set(
-						myagg.covar / java.lang.Math.sqrt(myagg.xvar)
-								/ java.lang.Math.sqrt(myagg.yvar));
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java
deleted file mode 100644
index 4160d5b..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * This class implements the COUNT aggregation function as in SQL.
- */
-@Description(name = "count", value = "_FUNC_(*) - Returns the total number of retrieved rows, including "
-		+ "rows containing NULL values.\n"
-
-		+ "_FUNC_(expr) - Returns the number of rows for which the supplied "
-		+ "expression is non-NULL.\n"
-
-		+ "_FUNC_(DISTINCT expr[, expr...]) - Returns the number of rows for "
-		+ "which the supplied expression(s) are unique and non-NULL.")
-public class GenericUDAFCount implements GenericUDAFResolver2 {
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		// This method implementation is preserved for backward compatibility.
-		return new GenericUDAFCountEvaluator();
-	}
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(GenericUDAFParameterInfo paramInfo)
-			throws SemanticException {
-
-		TypeInfo[] parameters = paramInfo.getParameters();
-
-		if (parameters.length == 0) {
-			if (!paramInfo.isAllColumns()) {
-				throw new UDFArgumentException("Argument expected");
-			}
-			assert !paramInfo.isDistinct() : "DISTINCT not supported with *";
-		} else {
-			if (parameters.length > 1 && !paramInfo.isDistinct()) {
-				throw new UDFArgumentException(
-						"DISTINCT keyword must be specified");
-			}
-			assert !paramInfo.isAllColumns() : "* not supported in expression list";
-		}
-
-		return new GenericUDAFCountEvaluator().setCountAllColumns(paramInfo
-				.isAllColumns());
-	}
-
-	/**
-	 * GenericUDAFCountEvaluator.
-	 * 
-	 */
-	public static class GenericUDAFCountEvaluator extends GenericUDAFEvaluator {
-		private boolean countAllColumns = false;
-		private LongObjectInspector partialCountAggOI;
-		private LongWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-			partialCountAggOI = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-			result = new LongWritable(0);
-			return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-		}
-
-		private GenericUDAFCountEvaluator setCountAllColumns(
-				boolean countAllCols) {
-			countAllColumns = countAllCols;
-			return this;
-		}
-
-		/** class for storing count value. */
-		static class CountAgg implements SerializableBuffer {
-			long value;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				value = BufferSerDeUtil.getLong(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(value, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(value);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			CountAgg buffer = new CountAgg();
-			reset(buffer);
-			return buffer;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			((CountAgg) agg).value = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			// parameters == null means the input table/split is empty
-			if (parameters == null) {
-				return;
-			}
-			if (countAllColumns) {
-				assert parameters.length == 0;
-				((CountAgg) agg).value++;
-			} else {
-				assert parameters.length > 0;
-				boolean countThisRow = true;
-				for (Object nextParam : parameters) {
-					if (nextParam == null) {
-						countThisRow = false;
-						break;
-					}
-				}
-				if (countThisRow) {
-					((CountAgg) agg).value++;
-				}
-			}
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				long p = partialCountAggOI.get(partial);
-				((CountAgg) agg).value += p;
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			result.set(((CountAgg) agg).value);
-			return result;
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-	}
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java
deleted file mode 100644
index 11d9dc3..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCovariance.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the covariance covar_pop(x, y), using the following one-pass method
- * (ref. "Formulas for Robust, One-Pass Parallel Computation of Covariances and
- * Arbitrary-Order Statistical Moments", Philippe Pebay, Sandia Labs):
- * 
- * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg> my_n =
- * my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n - mx_(n-1))*(y_n
- * - my_n) : <covariance * n>
- * 
- * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X
- * 
- */
-@Description(name = "covariance,covar_pop", value = "_FUNC_(x,y) - Returns the population covariance of a set of number pairs", extended = "The function takes as arguments any pair of numeric types and returns a double.\n"
-		+ "Any pair with a NULL is ignored. If the function is applied to an empty set, NULL\n"
-		+ "will be returned. Otherwise, it computes the following:\n"
-		+ "   (SUM(x*y)-SUM(x)*SUM(y)/COUNT(x,y))/COUNT(x,y)\n"
-		+ "where neither x nor y is null.")
-public class GenericUDAFCovariance extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFCovariance.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 2) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly two arguments are expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-
-		if (parameters[1].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(1,
-					"Only primitive type arguments are accepted but "
-							+ parameters[1].getTypeName() + " is passed.");
-		}
-
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-			switch (((PrimitiveTypeInfo) parameters[1]).getPrimitiveCategory()) {
-			case BYTE:
-			case SHORT:
-			case INT:
-			case LONG:
-			case FLOAT:
-			case DOUBLE:
-				return new GenericUDAFCovarianceEvaluator();
-			case STRING:
-			case BOOLEAN:
-			default:
-				throw new UDFArgumentTypeException(1,
-						"Only numeric or string type arguments are accepted but "
-								+ parameters[1].getTypeName() + " is passed.");
-			}
-		case STRING:
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the variance using the algorithm described in
-	 * http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance,
-	 * presumably by Pébay, Philippe (2008), in "Formulas for Robust, One-Pass
-	 * Parallel Computation of Covariances and Arbitrary-Order Statistical
-	 * Moments", Technical Report SAND2008-6212, Sandia National Laboratories,
-	 * http://infoserve.sandia.gov/sand_doc/2008/086212.pdf
-	 * 
-	 * Incremental: n : <count> mx_n = mx_(n-1) + [x_n - mx_(n-1)]/n : <xavg>
-	 * my_n = my_(n-1) + [y_n - my_(n-1)]/n : <yavg> c_n = c_(n-1) + (x_n -
-	 * mx_(n-1))*(y_n - my_n) : <covariance * n>
-	 * 
-	 * Merge: c_X = c_A + c_B + (mx_A - mx_B)*(my_A - my_B)*n_A*n_B/n_X
-	 * 
-	 * This one-pass algorithm is stable.
-	 * 
-	 */
-	public static class GenericUDAFCovarianceEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector xInputOI;
-		private PrimitiveObjectInspector yInputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField xavgField;
-		private StructField yavgField;
-		private StructField covarField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector xavgFieldOI;
-		private DoubleObjectInspector yavgFieldOI;
-		private DoubleObjectInspector covarFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				assert (parameters.length == 2);
-				xInputOI = (PrimitiveObjectInspector) parameters[0];
-				yInputOI = (PrimitiveObjectInspector) parameters[1];
-			} else {
-				assert (parameters.length == 1);
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				xavgField = soi.getStructFieldRef("xavg");
-				yavgField = soi.getStructFieldRef("yavg");
-				covarField = soi.getStructFieldRef("covar");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				xavgFieldOI = (DoubleObjectInspector) xavgField
-						.getFieldObjectInspector();
-				yavgFieldOI = (DoubleObjectInspector) yavgField
-						.getFieldObjectInspector();
-				covarFieldOI = (DoubleObjectInspector) covarField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count, two double averages, and a double covariance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("xavg");
-				fname.add("yavg");
-				fname.add("covar");
-
-				partialResult = new Object[4];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-				partialResult[3] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number n of elements
-			double xavg; // average of x elements
-			double yavg; // average of y elements
-			double covar; // n times the covariance
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				xavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				yavg = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				covar = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(xavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(yavg, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(covar, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(xavg);
-				output.writeDouble(yavg);
-				output.writeDouble(covar);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.xavg = 0;
-			myagg.yavg = 0;
-			myagg.covar = 0;
-		}
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 2);
-			Object px = parameters[0];
-			Object py = parameters[1];
-			if (px != null && py != null) {
-				StdAgg myagg = (StdAgg) agg;
-				double vx = PrimitiveObjectInspectorUtils.getDouble(px,
-						xInputOI);
-				double vy = PrimitiveObjectInspectorUtils.getDouble(py,
-						yInputOI);
-				myagg.count++;
-				myagg.yavg = myagg.yavg + (vy - myagg.yavg) / myagg.count;
-				if (myagg.count > 1) {
-					myagg.covar += (vx - myagg.xavg) * (vy - myagg.yavg);
-				}
-				myagg.xavg = myagg.xavg + (vx - myagg.xavg) / myagg.count;
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.xavg);
-			((DoubleWritable) partialResult[2]).set(myagg.yavg);
-			((DoubleWritable) partialResult[3]).set(myagg.covar);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialXAvg = soi.getStructFieldData(partial, xavgField);
-				Object partialYAvg = soi.getStructFieldData(partial, yavgField);
-				Object partialCovar = soi.getStructFieldData(partial,
-						covarField);
-
-				long nA = myagg.count;
-				long nB = countFieldOI.get(partialCount);
-
-				if (nA == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.xavg = xavgFieldOI.get(partialXAvg);
-					myagg.yavg = yavgFieldOI.get(partialYAvg);
-					myagg.covar = covarFieldOI.get(partialCovar);
-				}
-
-				if (nA != 0 && nB != 0) {
-					// Merge the two partials
-					double xavgA = myagg.xavg;
-					double yavgA = myagg.yavg;
-					double xavgB = xavgFieldOI.get(partialXAvg);
-					double yavgB = yavgFieldOI.get(partialYAvg);
-					double covarB = covarFieldOI.get(partialCovar);
-
-					myagg.count += nB;
-					myagg.xavg = (xavgA * nA + xavgB * nB) / myagg.count;
-					myagg.yavg = (yavgA * nA + yavgB * nB) / myagg.count;
-					myagg.covar += covarB + (xavgA - xavgB) * (yavgA - yavgB)
-							* ((double) (nA * nB) / myagg.count);
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count == 0) { // SQL standard - return null for zero
-									// elements
-				return null;
-			} else {
-				getResult().set(myagg.covar / (myagg.count));
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
deleted file mode 100644
index 0323531..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * GenericUDAFSum.
- * 
- */
-@Description(name = "sum", value = "_FUNC_(x) - Returns the sum of a set of numbers")
-public class GenericUDAFSum extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFSum.class.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-			return new GenericUDAFSumLong();
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFSumDouble();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * GenericUDAFSumDouble.
-	 * 
-	 */
-	public static class GenericUDAFSumDouble extends GenericUDAFEvaluator {
-		private PrimitiveObjectInspector inputOI;
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-			result = new DoubleWritable(0);
-			inputOI = (PrimitiveObjectInspector) parameters[0];
-			return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-		}
-
-		/** class for storing double sum value. */
-		static class SumDoubleAgg implements SerializableBuffer {
-			boolean empty;
-			double sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				empty = BufferSerDeUtil.getBoolean(data, start);
-				start += 1;
-				sum = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeBoolean(empty, data, start);
-				start += 1;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeBoolean(empty);
-				output.writeDouble(sum);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			SumDoubleAgg result = new SumDoubleAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			SumDoubleAgg myagg = (SumDoubleAgg) agg;
-			myagg.empty = true;
-			myagg.sum = 0;
-		}
-
-		boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			try {
-				merge(agg, parameters[0]);
-			} catch (NumberFormatException e) {
-				if (!warned) {
-					warned = true;
-					LOG.warn(getClass().getSimpleName() + " "
-							+ StringUtils.stringifyException(e));
-					LOG.warn(getClass().getSimpleName()
-							+ " ignoring similar exceptions.");
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				SumDoubleAgg myagg = (SumDoubleAgg) agg;
-				myagg.empty = false;
-				myagg.sum += PrimitiveObjectInspectorUtils.getDouble(partial,
-						inputOI);
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			SumDoubleAgg myagg = (SumDoubleAgg) agg;
-			if (myagg.empty) {
-				return null;
-			}
-			result.set(myagg.sum);
-			return result;
-		}
-
-	}
-
-	/**
-	 * GenericUDAFSumLong.
-	 * 
-	 */
-	public static class GenericUDAFSumLong extends GenericUDAFEvaluator {
-		private PrimitiveObjectInspector inputOI;
-		private LongWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-			result = new LongWritable(0);
-			inputOI = (PrimitiveObjectInspector) parameters[0];
-			return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
-		}
-
-		/** class for storing double sum value. */
-		static class SumLongAgg implements SerializableBuffer {
-			boolean empty;
-			long sum;
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				empty = BufferSerDeUtil.getBoolean(data, start);
-				start += 1;
-				sum = BufferSerDeUtil.getLong(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeBoolean(empty, data, start);
-				start += 1;
-				BufferSerDeUtil.writeLong(sum, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeBoolean(empty);
-				output.writeLong(sum);
-			}
-		}
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			SumLongAgg result = new SumLongAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			SumLongAgg myagg = (SumLongAgg) agg;
-			myagg.empty = true;
-			myagg.sum = 0;
-		}
-
-		private boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			try {
-				merge(agg, parameters[0]);
-			} catch (NumberFormatException e) {
-				if (!warned) {
-					warned = true;
-					LOG.warn(getClass().getSimpleName() + " "
-							+ StringUtils.stringifyException(e));
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			return terminate(agg);
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				SumLongAgg myagg = (SumLongAgg) agg;
-				myagg.sum += PrimitiveObjectInspectorUtils.getLong(partial,
-						inputOI);
-				myagg.empty = false;
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			SumLongAgg myagg = (SumLongAgg) agg;
-			if (myagg.empty) {
-				return null;
-			}
-			result.set(myagg.sum);
-			return result;
-		}
-
-	}
-
-}
diff --git a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java b/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java
deleted file mode 100644
index 4c16f5a..0000000
--- a/hivesterix/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.udf.generic;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.util.StringUtils;
-
-import edu.uci.ics.hivesterix.runtime.evaluator.BufferSerDeUtil;
-import edu.uci.ics.hivesterix.runtime.evaluator.SerializableBuffer;
-
-/**
- * Compute the variance. This class is extended by: GenericUDAFVarianceSample
- * GenericUDAFStd GenericUDAFStdSample
- * 
- */
-@Description(name = "variance,var_pop", value = "_FUNC_(x) - Returns the variance of a set of numbers")
-public class GenericUDAFVariance extends AbstractGenericUDAFResolver {
-
-	static final Log LOG = LogFactory.getLog(GenericUDAFVariance.class
-			.getName());
-
-	@Override
-	public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters)
-			throws SemanticException {
-		if (parameters.length != 1) {
-			throw new UDFArgumentTypeException(parameters.length - 1,
-					"Exactly one argument is expected.");
-		}
-
-		if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
-			throw new UDFArgumentTypeException(0,
-					"Only primitive type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-		switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) {
-		case BYTE:
-		case SHORT:
-		case INT:
-		case LONG:
-		case FLOAT:
-		case DOUBLE:
-		case STRING:
-			return new GenericUDAFVarianceEvaluator();
-		case BOOLEAN:
-		default:
-			throw new UDFArgumentTypeException(0,
-					"Only numeric or string type arguments are accepted but "
-							+ parameters[0].getTypeName() + " is passed.");
-		}
-	}
-
-	/**
-	 * Evaluate the variance using the algorithm described by Chan, Golub, and
-	 * LeVeque in
-	 * "Algorithms for computing the sample variance: analysis and recommendations"
-	 * The American Statistician, 37 (1983) pp. 242--247.
-	 * 
-	 * variance = variance1 + variance2 + n/(m*(m+n)) * pow(((m/n)*t1 - t2),2)
-	 * 
-	 * where: - variance is sum[x-avg^2] (this is actually n times the variance)
-	 * and is updated at every step. - n is the count of elements in chunk1 - m
-	 * is the count of elements in chunk2 - t1 = sum of elements in chunk1, t2 =
-	 * sum of elements in chunk2.
-	 * 
-	 * This algorithm was proven to be numerically stable by J.L. Barlow in
-	 * "Error analysis of a pairwise summation algorithm to compute sample variance"
-	 * Numer. Math, 58 (1991) pp. 583--590
-	 * 
-	 */
-	public static class GenericUDAFVarianceEvaluator extends
-			GenericUDAFEvaluator {
-
-		// For PARTIAL1 and COMPLETE
-		private PrimitiveObjectInspector inputOI;
-
-		// For PARTIAL2 and FINAL
-		private StructObjectInspector soi;
-		private StructField countField;
-		private StructField sumField;
-		private StructField varianceField;
-		private LongObjectInspector countFieldOI;
-		private DoubleObjectInspector sumFieldOI;
-
-		// For PARTIAL1 and PARTIAL2
-		private Object[] partialResult;
-
-		// For FINAL and COMPLETE
-		private DoubleWritable result;
-
-		@Override
-		public ObjectInspector init(Mode m, ObjectInspector[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			super.init(m, parameters);
-
-			// init input
-			if (mode == Mode.PARTIAL1 || mode == Mode.COMPLETE) {
-				inputOI = (PrimitiveObjectInspector) parameters[0];
-			} else {
-				soi = (StructObjectInspector) parameters[0];
-
-				countField = soi.getStructFieldRef("count");
-				sumField = soi.getStructFieldRef("sum");
-				varianceField = soi.getStructFieldRef("variance");
-
-				countFieldOI = (LongObjectInspector) countField
-						.getFieldObjectInspector();
-				sumFieldOI = (DoubleObjectInspector) sumField
-						.getFieldObjectInspector();
-			}
-
-			// init output
-			if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) {
-				// The output of a partial aggregation is a struct containing
-				// a long count and doubles sum and variance.
-
-				ArrayList<ObjectInspector> foi = new ArrayList<ObjectInspector>();
-
-				foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-				foi.add(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
-
-				ArrayList<String> fname = new ArrayList<String>();
-				fname.add("count");
-				fname.add("sum");
-				fname.add("variance");
-
-				partialResult = new Object[3];
-				partialResult[0] = new LongWritable(0);
-				partialResult[1] = new DoubleWritable(0);
-				partialResult[2] = new DoubleWritable(0);
-
-				return ObjectInspectorFactory.getStandardStructObjectInspector(
-						fname, foi);
-
-			} else {
-				setResult(new DoubleWritable(0));
-				return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
-			}
-		}
-
-		static class StdAgg implements SerializableBuffer {
-			long count; // number of elements
-			double sum; // sum of elements
-			double variance; // sum[x-avg^2] (this is actually n times the
-								// variance)
-
-			@Override
-			public void deSerializeAggBuffer(byte[] data, int start, int len) {
-				count = BufferSerDeUtil.getLong(data, start);
-				start += 8;
-				sum = BufferSerDeUtil.getDouble(data, start);
-				start += 8;
-				variance = BufferSerDeUtil.getDouble(data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(byte[] data, int start, int len) {
-				BufferSerDeUtil.writeLong(count, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(sum, data, start);
-				start += 8;
-				BufferSerDeUtil.writeDouble(variance, data, start);
-			}
-
-			@Override
-			public void serializeAggBuffer(DataOutput output)
-					throws IOException {
-				output.writeLong(count);
-				output.writeDouble(sum);
-				output.writeDouble(variance);
-			}
-		};
-
-		@Override
-		public AggregationBuffer getNewAggregationBuffer() throws HiveException {
-			StdAgg result = new StdAgg();
-			reset(result);
-			return result;
-		}
-
-		@Override
-		public void reset(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			myagg.count = 0;
-			myagg.sum = 0;
-			myagg.variance = 0;
-		}
-
-		private boolean warned = false;
-
-		@Override
-		public void iterate(AggregationBuffer agg, Object[] parameters)
-				throws HiveException {
-			assert (parameters.length == 1);
-			Object p = parameters[0];
-			if (p != null) {
-				StdAgg myagg = (StdAgg) agg;
-				try {
-					double v = PrimitiveObjectInspectorUtils.getDouble(p,
-							inputOI);
-					myagg.count++;
-					myagg.sum += v;
-					if (myagg.count > 1) {
-						double t = myagg.count * v - myagg.sum;
-						myagg.variance += (t * t)
-								/ ((double) myagg.count * (myagg.count - 1));
-					}
-				} catch (NumberFormatException e) {
-					if (!warned) {
-						warned = true;
-						LOG.warn(getClass().getSimpleName() + " "
-								+ StringUtils.stringifyException(e));
-						LOG.warn(getClass().getSimpleName()
-								+ " ignoring similar exceptions.");
-					}
-				}
-			}
-		}
-
-		@Override
-		public Object terminatePartial(AggregationBuffer agg)
-				throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-			((LongWritable) partialResult[0]).set(myagg.count);
-			((DoubleWritable) partialResult[1]).set(myagg.sum);
-			((DoubleWritable) partialResult[2]).set(myagg.variance);
-			return partialResult;
-		}
-
-		@Override
-		public void merge(AggregationBuffer agg, Object partial)
-				throws HiveException {
-			if (partial != null) {
-				StdAgg myagg = (StdAgg) agg;
-
-				Object partialCount = soi.getStructFieldData(partial,
-						countField);
-				Object partialSum = soi.getStructFieldData(partial, sumField);
-				Object partialVariance = soi.getStructFieldData(partial,
-						varianceField);
-
-				long n = myagg.count;
-				long m = countFieldOI.get(partialCount);
-
-				if (n == 0) {
-					// Just copy the information since there is nothing so far
-					myagg.variance = sumFieldOI.get(partialVariance);
-					myagg.count = countFieldOI.get(partialCount);
-					myagg.sum = sumFieldOI.get(partialSum);
-				}
-
-				if (m != 0 && n != 0) {
-					// Merge the two partials
-
-					double a = myagg.sum;
-					double b = sumFieldOI.get(partialSum);
-
-					myagg.count += m;
-					myagg.sum += b;
-					double t = (m / (double) n) * a - b;
-					myagg.variance += sumFieldOI.get(partialVariance)
-							+ ((n / (double) m) / ((double) n + m)) * t * t;
-				}
-			}
-		}
-
-		@Override
-		public Object terminate(AggregationBuffer agg) throws HiveException {
-			StdAgg myagg = (StdAgg) agg;
-
-			if (myagg.count == 0) { // SQL standard - return null for zero
-									// elements
-				return null;
-			} else {
-				if (myagg.count > 1) {
-					getResult().set(myagg.variance / (myagg.count));
-				} else { // for one element the variance is always 0
-					getResult().set(0);
-				}
-				return getResult();
-			}
-		}
-
-		public void setResult(DoubleWritable result) {
-			this.result = result;
-		}
-
-		public DoubleWritable getResult() {
-			return result;
-		}
-	}
-
-}
diff --git a/hivesterix/src/main/scripts/run.cmd b/hivesterix/src/main/scripts/run.cmd
deleted file mode 100755
index b8eb4a0..0000000
--- a/hivesterix/src/main/scripts/run.cmd
+++ /dev/null
@@ -1,63 +0,0 @@
-@ECHO OFF
-SETLOCAL
-
-:: Licensed to the Apache Software Foundation (ASF) under one or more
-:: contributor license agreements.  See the NOTICE file distributed with
-:: this work for additional information regarding copyright ownership.
-:: The ASF licenses this file to You under the Apache License, Version 2.0
-:: (the "License"); you may not use this file except in compliance with
-:: the License.  You may obtain a copy of the License at
-::
-::     http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing, software
-:: distributed under the License is distributed on an "AS IS" BASIS,
-:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-:: See the License for the specific language governing permissions and
-:: limitations under the License.
-
-:: JAVA classpath
-:: Use the local variable CLASSPATH to add custom entries (e.g. JDBC drivers) to
-:: the classpath. Separate multiple paths with ":". Enclose the value
-:: in double quotes. Adding additional files or locations on separate
-:: lines makes things clearer.
-:: Note: If under running under cygwin use "/cygdrive/c/..." for "C:/..."
-:: Example:
-::
-::     Set the CLASSPATH to a jar file and a directory.  Note that
-::     "classes dir" is a directory of class files with a space in the name.
-::
-:: CLASSPATH="usr/local/Product1/lib/product.jar"
-:: CLASSPATH="${CLASSPATH}:../MyProject/classes dir"
-::
-SET CLASSPATH="@classpath@"
-
-:: JVM parameters
-:: If you want to modify the default parameters (e.g. maximum heap size -Xmx)
-:: for the Java virtual machine set the local variable JVM_PARAMETERS below
-:: Example:
-:: JVM_PARAMETERS=-Xms100M -Xmx200M
-::
-:: Below are the JVM parameters needed to do remote debugging using Intellij
-:: IDEA.  Uncomment and then do: JVM_PARAMETERS="$IDEA_REMOTE_DEBUG_PARAMS"
-:: IDEA_REMOTE_DEBUG_PARAMS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
-::
-:: JVM_PARAMETERS=
-
-:: ---------------------------------------------------------------------------
-:: Default configuration. Do not modify below this line.
-:: ---------------------------------------------------------------------------
-:: Application specific parameters
-
-SET MAIN_CLASS=@main.class@
-SET JVM_PARAMS=@jvm.params@
-SET PROGRAM_PARAMS=@program.params@
-
-:: Try to find java virtual machine
-IF NOT DEFINED JAVA (
-  IF NOT DEFINED JAVA_HOME SET JAVA="java.exe"
-  IF DEFINED JAVA_HOME SET JAVA="%JAVA_HOME%\bin\java.exe"
-)
-
-:: Run program
-%JAVA% %JVM_PARAMS% %JVM_PARAMETERS% -classpath %CLASSPATH% %MAIN_CLASS% %PROGRAM_PARAMS% %*
diff --git a/hivesterix/src/main/scripts/run.sh b/hivesterix/src/main/scripts/run.sh
deleted file mode 100755
index a998626..0000000
--- a/hivesterix/src/main/scripts/run.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-# JAVA classpath
-# Use the local variable CLASSPATH to add custom entries (e.g. JDBC drivers) to
-# the classpath. Separate multiple paths with ":". Enclose the value
-# in double quotes. Adding additional files or locations on separate
-# lines makes things clearer.
-# Note: If under running under cygwin use "/cygdrive/c/..." for "C:/..."
-# Example:
-#
-#     Set the CLASSPATH to a jar file and a directory.  Note that
-#     "classes dir" is a directory of class files with a space in the name.
-#
-# CLASSPATH="usr/local/Product1/lib/product.jar"
-# CLASSPATH="${CLASSPATH}:../MyProject/classes dir"
-#
-CLASSPATH="@classpath@"
-
-# JVM parameters
-# If you want to modify the default parameters (e.g. maximum heap size -Xmx)
-# for the Java virtual machine set the local variable JVM_PARAMETERS below
-# Example:
-# JVM_PARAMETERS=-Xms100M -Xmx200M
-#
-# Below are the JVM parameters needed to do remote debugging using Intellij
-# IDEA.  Uncomment and then do: JVM_PARAMETERS="$IDEA_REMOTE_DEBUG_PARAMS"
-# IDEA_REMOTE_DEBUG_PARAMS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
-#
-# JVM_PARAMETERS=
-
-#run with shared memory setup
-#if [ -n "${RUN_SHARED_MEM}"]; then
-#  JVM_PARAMETERS="${JVM_PARAMETERS} -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=n,address=javadebug,suspend=y"
-#fi
-
-# ---------------------------------------------------------------------------
-# Default configuration. Do not modify below this line.
-# ---------------------------------------------------------------------------
-# Application specific parameters
-
-MAIN_CLASS="@main.class@"
-JVM_PARAMS="@jvm.params@"
-PROGRAM_PARAMS="@program.params@"
-
-# Cygwin support.  $cygwin _must_ be set to either true or false.
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  *) cygwin=false ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# Try to find java virtual machine
-if [ -z "${JAVA}" ];  then
-  if [ -z "${JAVA_HOME}" ]; then
-    JAVA=java
-  else
-    JAVA=${JAVA_HOME}/bin/java
-  fi
-fi
-
-# Try to find directory where this script is located
-COMMAND="${PWD}/$0"
-if [ ! -f "${COMMAND}" ]; then
-	COMMAND="$0"
-fi
-BASEDIR=`expr "${COMMAND}" : '\(.*\)/\.*'`
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-#  JAVA=`cygpath --path --windows "$JAVA"`
-  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-# Run program
-${JAVA} ${JVM_PARAMS} ${JVM_PARAMETERS} -classpath "${CLASSPATH}" ${MAIN_CLASS} ${PROGRAM_PARAMS} $*
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java
deleted file mode 100644
index a69a3f2..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestCase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestCase;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-
-public class PerfTestCase extends AbstractPerfTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	PerfTestCase(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!equal(buf, sb)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else
-						return false;
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java
deleted file mode 100644
index 8d8178f..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuite.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestSuiteClass;
-
-public class PerfTestSuite extends AbstractPerfTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/perf/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/perf/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/perf/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		PerfTestSuite testSuite = new PerfTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new PerfTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java
deleted file mode 100644
index 258db22..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestCase;
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-
-public class PerfTestSuiteCaseGenerator extends AbstractPerfTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	PerfTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf);
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		long startTime = System.currentTimeMillis();
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			// driver.clear();
-			i++;
-		}
-		long endTime = System.currentTimeMillis();
-		System.out.println(resultFile.getName() + " execution time "
-				+ (endTime - startTime));
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		writeStringToFile(resultFile, sb);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java
deleted file mode 100644
index 0a27ca2..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/PerfTestSuiteGenerator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.perf;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestSuiteClass;
-
-public class PerfTestSuiteGenerator extends AbstractPerfTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/perf/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/perf/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/perf/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		PerfTestSuiteGenerator testSuite = new PerfTestSuiteGenerator();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("q18_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new PerfTestSuiteCaseGenerator(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java
deleted file mode 100644
index f55d6a1..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestCase.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package edu.uci.ics.hivesterix.perf.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-public class AbstractPerfTestCase extends TestCase {
-	protected File queryFile;
-
-	public AbstractPerfTestCase(String testName, File queryFile) {
-		super(testName);
-	}
-
-	protected static void readFileToString(File file, StringBuilder buf)
-			throws Exception {
-		BufferedReader result = new BufferedReader(new FileReader(file));
-		while (true) {
-			String s = result.readLine();
-			if (s == null) {
-				break;
-			} else {
-				buf.append(s);
-				buf.append('\n');
-			}
-		}
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringWriter buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringBuilder buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static String removeExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java
deleted file mode 100644
index 3d66f59..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/perf/base/AbstractPerfTestSuiteClass.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package edu.uci.ics.hivesterix.perf.base;
-
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestSuite;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MiniMRCluster;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
-import edu.uci.ics.hyracks.control.common.controllers.CCConfig;
-import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
-import edu.uci.ics.hyracks.control.nc.NodeControllerService;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractPerfTestSuiteClass extends TestSuite {
-
-	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/perf/hadoop/conf";
-	private static final String PATH_TO_HIVE_CONF = "src/test/resources/perf/hive/conf/hive-default.xml";
-	private static final String PATH_TO_DATA = "src/test/resources/perf/data/";
-
-	private MiniDFSCluster dfsCluster;
-	private MiniMRCluster mrCluster;
-
-	private JobConf conf = new JobConf();
-	protected FileSystem dfs;
-
-	private int numberOfNC = 2;
-	private ClusterControllerService cc;
-	private Map<String, NodeControllerService> ncs = new HashMap<String, NodeControllerService>();
-
-	/**
-	 * setup cluster
-	 *
-	 * @throws IOException
-	 */
-	protected void setup() throws Exception {
-		setupHdfs();
-		setupHyracks();
-	}
-
-	private void setupHdfs() throws IOException {
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-
-		FileSystem lfs = FileSystem.getLocal(new Configuration());
-		lfs.delete(new Path("build"), true);
-		lfs.delete(new Path("metastore_db"), true);
-
-		System.setProperty("hadoop.log.dir", "logs");
-		dfsCluster = new MiniDFSCluster(hconf, numberOfNC, true, null);
-		dfs = dfsCluster.getFileSystem();
-
-		mrCluster = new MiniMRCluster(2, dfs.getUri().toString(), 1);
-		hconf.setVar(HiveConf.ConfVars.HADOOPJT,
-				"localhost:" + mrCluster.getJobTrackerPort());
-		hconf.setInt("mapred.min.split.size", 1342177280);
-
-		conf = new JobConf(hconf);
-		ConfUtil.setJobConf(conf);
-
-		String fsName = conf.get("fs.default.name");
-		hconf.set("hive.metastore.warehouse.dir",
-				fsName.concat("/tmp/hivesterix"));
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		dfs.mkdirs(new Path(warehouse));
-		ConfUtil.setHiveConf(hconf);
-	}
-
-	private void setupHyracks() throws Exception {
-		// read hive conf
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-		SessionState.start(hconf);
-		String ipAddress = hconf.get("hive.hyracks.host");
-		int clientPort = Integer.parseInt(hconf.get("hive.hyracks.port"));
-		int clusterPort = clientPort;
-		String applicationName = hconf.get("hive.hyracks.app");
-
-		// start hyracks cc
-		CCConfig ccConfig = new CCConfig();
-		ccConfig.clientNetIpAddress = ipAddress;
-		ccConfig.clientNetPort = clientPort;
-		ccConfig.clusterNetPort = clusterPort;
-		ccConfig.profileDumpPeriod = 1000;
-		ccConfig.heartbeatPeriod = 200000000;
-		ccConfig.maxHeartbeatLapsePeriods = 200000000;
-		cc = new ClusterControllerService(ccConfig);
-		cc.start();
-
-		// start hyracks nc
-		for (int i = 0; i < numberOfNC; i++) {
-			NCConfig ncConfig = new NCConfig();
-			ncConfig.ccHost = ipAddress;
-			ncConfig.clusterNetIPAddress = ipAddress;
-			ncConfig.ccPort = clientPort;
-			ncConfig.dataIPAddress = "127.0.0.1";
-            ncConfig.datasetIPAddress = "127.0.0.1";
-			ncConfig.nodeId = "nc" + i;
-			NodeControllerService nc = new NodeControllerService(ncConfig);
-			nc.start();
-			ncs.put(ncConfig.nodeId, nc);
-		}
-
-		IHyracksClientConnection hcc = new HyracksConnection(
-				ccConfig.clientNetIpAddress, clientPort);
-		hcc.createApplication(applicationName, null);
-	}
-
-	protected void makeDir(String path) throws IOException {
-		dfs.mkdirs(new Path(path));
-	}
-
-	protected void loadFiles(String src, String dest) throws IOException {
-		dfs.copyFromLocalFile(new Path(src), new Path(dest));
-	}
-
-	protected void cleanup() throws Exception {
-		cleanupHdfs();
-		cleanupHyracks();
-	}
-
-	/**
-	 * cleanup hdfs cluster
-	 */
-	private void cleanupHdfs() throws IOException {
-		dfs.delete(new Path("/"), true);
-		FileSystem.closeAll();
-		dfsCluster.shutdown();
-	}
-
-	/**
-	 * cleanup hyracks cluster
-	 */
-	private void cleanupHyracks() throws Exception {
-		Iterator<NodeControllerService> iterator = ncs.values().iterator();
-		while (iterator.hasNext()) {
-			NodeControllerService nc = iterator.next();
-			nc.stop();
-		}
-		cc.stop();
-	}
-
-	protected static List<String> getIgnoreList(String ignorePath)
-			throws FileNotFoundException, IOException {
-		BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
-		String s = null;
-		List<String> ignores = new ArrayList<String>();
-		while ((s = reader.readLine()) != null) {
-			ignores.add(s);
-		}
-		reader.close();
-		return ignores;
-	}
-
-	protected static boolean isIgnored(String q, List<String> ignoreList) {
-		for (String ignore : ignoreList) {
-			if (ignore.equals(q)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected void loadData() throws IOException {
-
-		makeDir("/tpch");
-		makeDir("/tpch/customer");
-		makeDir("/tpch/lineitem");
-		makeDir("/tpch/orders");
-		makeDir("/tpch/part");
-		makeDir("/tpch/partsupp");
-		makeDir("/tpch/supplier");
-		makeDir("/tpch/nation");
-		makeDir("/tpch/region");
-
-		makeDir("/jarod");
-
-		loadFiles(PATH_TO_DATA + "customer.tbl", "/tpch/customer/");
-		loadFiles(PATH_TO_DATA + "lineitem.tbl", "/tpch/lineitem/");
-		loadFiles(PATH_TO_DATA + "orders.tbl", "/tpch/orders/");
-		loadFiles(PATH_TO_DATA + "part.tbl", "/tpch/part/");
-		loadFiles(PATH_TO_DATA + "partsupp.tbl", "/tpch/partsupp/");
-		loadFiles(PATH_TO_DATA + "supplier.tbl", "/tpch/supplier/");
-		loadFiles(PATH_TO_DATA + "nation.tbl", "/tpch/nation/");
-		loadFiles(PATH_TO_DATA + "region.tbl", "/tpch/region/");
-
-		loadFiles(PATH_TO_DATA + "ext-gby.tbl", "/jarod/");
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java
deleted file mode 100644
index 560cef7..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractHivesterixTestCase.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package edu.uci.ics.hivesterix.test.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import junit.framework.TestCase;
-
-public class AbstractHivesterixTestCase extends TestCase {
-	protected File queryFile;
-
-	public AbstractHivesterixTestCase(String testName, File queryFile) {
-		super(testName);
-	}
-
-	protected static void readFileToString(File file, StringBuilder buf)
-			throws Exception {
-		BufferedReader result = new BufferedReader(new FileReader(file));
-		while (true) {
-			String s = result.readLine();
-			if (s == null) {
-				break;
-			} else {
-				buf.append(s);
-				buf.append('\n');
-			}
-		}
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringWriter buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static void writeStringToFile(File file, StringBuilder buf)
-			throws Exception {
-		PrintWriter result = new PrintWriter(new FileWriter(file));
-		result.print(buf);
-		result.close();
-	}
-
-	protected static String removeExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
deleted file mode 100644
index 64ad495..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/base/AbstractTestSuiteClass.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package edu.uci.ics.hivesterix.test.base;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestSuite;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MiniMRCluster;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
-import edu.uci.ics.hyracks.control.common.controllers.CCConfig;
-import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
-import edu.uci.ics.hyracks.control.nc.NodeControllerService;
-
-@SuppressWarnings("deprecation")
-public abstract class AbstractTestSuiteClass extends TestSuite {
-
-	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/runtimefunctionts/hadoop/conf";
-	private static final String PATH_TO_HIVE_CONF = "src/test/resources/runtimefunctionts/hive/conf/hive-default.xml";
-
-	private static final String PATH_TO_CLUSTER_CONF = "src/test/resources/runtimefunctionts/hive/conf/topology.xml";
-	private static final String PATH_TO_DATA = "src/test/resources/runtimefunctionts/data/";
-
-	private MiniDFSCluster dfsCluster;
-	private MiniMRCluster mrCluster;
-
-	private JobConf conf = new JobConf();
-	protected FileSystem dfs;
-
-	private int numberOfNC = 2;
-	private ClusterControllerService cc;
-	private Map<String, NodeControllerService> ncs = new HashMap<String, NodeControllerService>();
-
-	/**
-	 * setup cluster
-	 *
-	 * @throws IOException
-	 */
-	protected void setup() throws Exception {
-		setupHdfs();
-		setupHyracks();
-	}
-
-	private void setupHdfs() throws IOException {
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
-		conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-
-		FileSystem lfs = FileSystem.getLocal(new Configuration());
-		lfs.delete(new Path("build"), true);
-		lfs.delete(new Path("metastore_db"), true);
-
-		System.setProperty("hadoop.log.dir", "logs");
-		dfsCluster = new MiniDFSCluster(hconf, numberOfNC, true, null);
-		dfs = dfsCluster.getFileSystem();
-
-		mrCluster = new MiniMRCluster(2, dfs.getUri().toString(), 1);
-		hconf.setVar(HiveConf.ConfVars.HADOOPJT,
-				"localhost:" + mrCluster.getJobTrackerPort());
-
-		conf = new JobConf(hconf);
-		ConfUtil.setJobConf(conf);
-
-		String fsName = conf.get("fs.default.name");
-		hconf.set("hive.metastore.warehouse.dir",
-				fsName.concat("/tmp/hivesterix"));
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		dfs.mkdirs(new Path(warehouse));
-		ConfUtil.setHiveConf(hconf);
-	}
-
-	private void setupHyracks() throws Exception {
-		// read hive conf
-		HiveConf hconf = new HiveConf(SessionState.class);
-		hconf.addResource(new Path(PATH_TO_HIVE_CONF));
-		SessionState.start(hconf);
-		String ipAddress = hconf.get("hive.hyracks.host");
-		int clientPort = Integer.parseInt(hconf.get("hive.hyracks.port"));
-		int netPort = clientPort + 1;
-		String applicationName = hconf.get("hive.hyracks.app");
-
-		// start hyracks cc
-		CCConfig ccConfig = new CCConfig();
-		ccConfig.clientNetIpAddress = ipAddress;
-		ccConfig.clientNetPort = clientPort;
-		ccConfig.clusterNetPort = netPort;
-		ccConfig.profileDumpPeriod = 1000;
-		ccConfig.heartbeatPeriod = 200000000;
-		ccConfig.maxHeartbeatLapsePeriods = 200000000;
-		ccConfig.clusterTopologyDefinition = new File(PATH_TO_CLUSTER_CONF);
-		cc = new ClusterControllerService(ccConfig);
-		cc.start();
-
-		// start hyracks nc
-		for (int i = 0; i < numberOfNC; i++) {
-			NCConfig ncConfig = new NCConfig();
-			ncConfig.ccHost = ipAddress;
-			ncConfig.clusterNetIPAddress = ipAddress;
-			ncConfig.ccPort = netPort;
-			ncConfig.dataIPAddress = "127.0.0.1";
-            ncConfig.datasetIPAddress = "127.0.0.1";
-			ncConfig.nodeId = "nc" + i;
-			NodeControllerService nc = new NodeControllerService(ncConfig);
-			nc.start();
-			ncs.put(ncConfig.nodeId, nc);
-		}
-
-		IHyracksClientConnection hcc = new HyracksConnection(
-				ccConfig.clientNetIpAddress, clientPort);
-		hcc.createApplication(applicationName, null);
-	}
-
-	protected void makeDir(String path) throws IOException {
-		dfs.mkdirs(new Path(path));
-	}
-
-	protected void loadFiles(String src, String dest) throws IOException {
-		dfs.copyFromLocalFile(new Path(src), new Path(dest));
-	}
-
-	protected void cleanup() throws Exception {
-		cleanupHdfs();
-		cleanupHyracks();
-	}
-
-	/**
-	 * cleanup hdfs cluster
-	 */
-	private void cleanupHdfs() throws IOException {
-		dfs.delete(new Path("/"), true);
-		FileSystem.closeAll();
-		dfsCluster.shutdown();
-	}
-
-	/**
-	 * cleanup hyracks cluster
-	 */
-	private void cleanupHyracks() throws Exception {
-		Iterator<NodeControllerService> iterator = ncs.values().iterator();
-		while (iterator.hasNext()) {
-			NodeControllerService nc = iterator.next();
-			nc.stop();
-		}
-		cc.stop();
-	}
-
-	protected static List<String> getIgnoreList(String ignorePath)
-			throws FileNotFoundException, IOException {
-		BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
-		String s = null;
-		List<String> ignores = new ArrayList<String>();
-		while ((s = reader.readLine()) != null) {
-			ignores.add(s);
-		}
-		reader.close();
-		return ignores;
-	}
-
-	protected static boolean isIgnored(String q, List<String> ignoreList) {
-		for (String ignore : ignoreList) {
-			if (q.indexOf(ignore) >= 0) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	protected void loadData() throws IOException {
-
-		makeDir("/tpch");
-		makeDir("/tpch/customer");
-		makeDir("/tpch/lineitem");
-		makeDir("/tpch/orders");
-		makeDir("/tpch/part");
-		makeDir("/tpch/partsupp");
-		makeDir("/tpch/supplier");
-		makeDir("/tpch/nation");
-		makeDir("/tpch/region");
-
-		makeDir("/test");
-		makeDir("/test/joinsrc1");
-		makeDir("/test/joinsrc2");
-
-		loadFiles(PATH_TO_DATA + "customer.tbl", "/tpch/customer/");
-		loadFiles(PATH_TO_DATA + "lineitem.tbl", "/tpch/lineitem/");
-		loadFiles(PATH_TO_DATA + "orders.tbl", "/tpch/orders/");
-		loadFiles(PATH_TO_DATA + "part.tbl", "/tpch/part/");
-		loadFiles(PATH_TO_DATA + "partsupp.tbl", "/tpch/partsupp/");
-		loadFiles(PATH_TO_DATA + "supplier.tbl", "/tpch/supplier/");
-		loadFiles(PATH_TO_DATA + "nation.tbl", "/tpch/nation/");
-		loadFiles(PATH_TO_DATA + "region.tbl", "/tpch/region/");
-
-		loadFiles(PATH_TO_DATA + "large_card_join_src.tbl", "/test/joinsrc1/");
-		loadFiles(PATH_TO_DATA + "large_card_join_src_small.tbl",
-				"/test/joinsrc2/");
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java
deleted file mode 100644
index 800d6be..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/datagen/RecordBalance.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package edu.uci.ics.hivesterix.test.datagen;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapred.FileInputFormat;
-import org.apache.hadoop.mapred.FileOutputFormat;
-import org.apache.hadoop.mapred.JobClient;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.MapReduceBase;
-import org.apache.hadoop.mapred.Mapper;
-import org.apache.hadoop.mapred.OutputCollector;
-import org.apache.hadoop.mapred.Reducer;
-import org.apache.hadoop.mapred.Reporter;
-import org.apache.hadoop.mapred.TextInputFormat;
-
-@SuppressWarnings("deprecation")
-public class RecordBalance {
-
-	private static String confPath = System.getenv("HADDOP_HOME");
-	private static Path[] inputPaths = { new Path("/tpch/100x/customer"),
-			new Path("/tpch/100x/nation"), new Path("/tpch/100x/region"),
-			new Path("/tpch/100x/lineitem"), new Path("/tpch/100x/orders"),
-			new Path("/tpch/100x/part"), new Path("/tpch/100x/partsupp"),
-			new Path("/tpch/100x/supplier") };
-
-	private static Path[] outputPaths = { new Path("/tpch/100/customer"),
-			new Path("/tpch/100/nation"), new Path("/tpch/100/region"),
-			new Path("/tpch/100/lineitem"), new Path("/tpch/100/orders"),
-			new Path("/tpch/100/part"), new Path("/tpch/100/partsupp"),
-			new Path("/tpch/100/supplier") };
-
-	public static class MapRecordOnly extends MapReduceBase implements
-			Mapper<LongWritable, Text, LongWritable, Text> {
-
-		public void map(LongWritable id, Text inputValue,
-				OutputCollector<LongWritable, Text> output, Reporter reporter)
-				throws IOException {
-			output.collect(id, inputValue);
-		}
-	}
-
-	public static class ReduceRecordOnly extends MapReduceBase implements
-			Reducer<LongWritable, Text, NullWritable, Text> {
-
-		NullWritable key = NullWritable.get();
-
-		public void reduce(LongWritable inputKey, Iterator<Text> inputValue,
-				OutputCollector<NullWritable, Text> output, Reporter reporter)
-				throws IOException {
-			while (inputValue.hasNext())
-				output.collect(key, inputValue.next());
-		}
-	}
-
-	public static void main(String[] args) throws IOException {
-
-		for (int i = 0; i < inputPaths.length; i++) {
-			JobConf job = new JobConf(RecordBalance.class);
-			job.addResource(new Path(confPath + "/core-site.xml"));
-			job.addResource(new Path(confPath + "/mapred-site.xml"));
-			job.addResource(new Path(confPath + "/hdfs-site.xml"));
-
-			job.setJobName(RecordBalance.class.getSimpleName());
-			job.setMapperClass(MapRecordOnly.class);
-			job.setReducerClass(ReduceRecordOnly.class);
-			job.setMapOutputKeyClass(LongWritable.class);
-			job.setMapOutputValueClass(Text.class);
-
-			job.setInputFormat(TextInputFormat.class);
-			FileInputFormat.setInputPaths(job, inputPaths[i]);
-			FileOutputFormat.setOutputPath(job, outputPaths[i]);
-			job.setNumReduceTasks(Integer.parseInt(args[0]));
-
-			JobClient.runJob(job);
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java
deleted file mode 100644
index 9591c32..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/legacy/LegacyTestCase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package edu.uci.ics.hivesterix.test.legacy;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class LegacyTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	public LegacyTestCase(File queryFile, File resultFile) {
-		super("legacy", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!equal(buf, sb)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else
-						return false;
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java
deleted file mode 100644
index db13676..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestCase.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class OptimizerTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-
-	OptimizerTestCase(File queryFile, File resultFile) {
-		super("testOptimizer", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testOptimizer() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			if (query.toLowerCase().indexOf("create") >= 0
-					|| query.toLowerCase().indexOf("drop") >= 0
-					|| query.toLowerCase().indexOf("set") >= 0
-					|| query.toLowerCase().startsWith("\n\ncreate")
-					|| query.toLowerCase().startsWith("\n\ndrop")
-					|| query.toLowerCase().startsWith("\n\nset"))
-				driver.run(query);
-			else
-				driver.compile(query);
-			driver.clear();
-			i++;
-		}
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		if (!buf.toString().equals(sw.toString())) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ sw.toString());
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java
deleted file mode 100644
index 217f67d..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuitGenerator.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class OptimizerTestSuitGenerator extends AbstractTestSuiteClass {
-	private static final String PATH_TO_QUERIES = "src/test/resources/optimizerts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/optimizerts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/optimizerts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "plan";
-
-	public static Test suite() throws UnsupportedEncodingException,
-			FileNotFoundException, IOException {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		OptimizerTestSuitGenerator testSuite = new OptimizerTestSuitGenerator();
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = aqlExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new OptimizerTestSuiteCaseGenerator(qFile,
-						rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String aqlExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java
deleted file mode 100644
index e3a4a4e..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuite.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-
-import junit.framework.Test;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class OptimizerTestSuite extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/optimizerts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/optimizerts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/optimizerts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "plan";
-
-	public static Test suite() throws UnsupportedEncodingException,
-			FileNotFoundException, IOException {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		OptimizerTestSuite testSuite = new OptimizerTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("h11_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new OptimizerTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java
deleted file mode 100644
index a86dc29..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/optimizer/OptimizerTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package edu.uci.ics.hivesterix.test.optimizer;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class OptimizerTestSuiteCaseGenerator extends AbstractHivesterixTestCase {
-	private File resultFile;
-
-	OptimizerTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testOptimizer", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testOptimizer() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			if (query.toLowerCase().indexOf("create") >= 0
-					|| query.toLowerCase().indexOf("drop") >= 0
-					|| query.toLowerCase().indexOf("set") >= 0
-					|| query.toLowerCase().startsWith("\n\ncreate")
-					|| query.toLowerCase().startsWith("\n\ndrop")
-					|| query.toLowerCase().startsWith("\n\nset"))
-				driver.run(query);
-			else
-				driver.compile(query);
-			driver.clear();
-			i++;
-		}
-		sw.close();
-		writeStringToFile(resultFile, sw);
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java
deleted file mode 100644
index 078de9a..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestCase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class RuntimeFunctionTestCase extends AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	RuntimeFunctionTestCase(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-		// Driver driver = new Driver(hconf);
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-
-		StringBuilder buf = new StringBuilder();
-		readFileToString(resultFile, buf);
-		StringBuffer errorMsg = new StringBuffer();
-		if (!equal(buf, sb, errorMsg)) {
-			throw new Exception("Result for " + queryFile + " changed:\n"
-					+ errorMsg.toString());
-		}
-		deleteDir(resultDirectory);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-
-	private boolean equal(StringBuilder sb1, StringBuilder sb2,
-			StringBuffer errorMsg) {
-		String s1 = sb1.toString();
-		String s2 = sb2.toString();
-		String[] rowsOne = s1.split("\n");
-		String[] rowsTwo = s2.split("\n");
-
-		if (rowsOne.length != rowsTwo.length)
-			return false;
-
-		for (int i = 0; i < rowsOne.length; i++) {
-			String row1 = rowsOne[i];
-			String row2 = rowsTwo[i];
-
-			if (row1.equals(row2))
-				continue;
-
-			String[] fields1 = row1.split("");
-			String[] fields2 = row2.split("");
-
-			for (int j = 0; j < fields1.length; j++) {
-				if (fields1[j].equals(fields2[j])) {
-					continue;
-				} else if (fields1[j].indexOf('.') < 0) {
-					errorMsg.append("line " + i + " column " + j + ": "
-							+ fields2[j] + " expected " + fields1[j]);
-					return false;
-				} else {
-					Float float1 = Float.parseFloat(fields1[j]);
-					Float float2 = Float.parseFloat(fields2[j]);
-
-					if (Math.abs(float1 - float2) == 0)
-						continue;
-					else {
-						errorMsg.append("line " + i + " column " + j + ": "
-								+ fields2[j] + " expected " + fields1[j]);
-						return false;
-					}
-				}
-			}
-		}
-
-		return true;
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java
deleted file mode 100644
index 2093b1d..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuite.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class RuntimeFunctionTestSuite extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/runtimefunctionts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/runtimefunctionts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/runtimefunctionts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		RuntimeFunctionTestSuite testSuite = new RuntimeFunctionTestSuite();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile()) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new RuntimeFunctionTestCase(qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java
deleted file mode 100644
index 1b45b41..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteCaseGenerator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.ql.Driver;
-import org.junit.Test;
-
-import edu.uci.ics.hivesterix.runtime.config.ConfUtil;
-import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase;
-
-public class RuntimeFunctionTestSuiteCaseGenerator extends
-		AbstractHivesterixTestCase {
-	private File resultFile;
-	private FileSystem dfs;
-
-	RuntimeFunctionTestSuiteCaseGenerator(File queryFile, File resultFile) {
-		super("testRuntimeFunction", queryFile);
-		this.queryFile = queryFile;
-		this.resultFile = resultFile;
-	}
-
-	@Test
-	public void testRuntimeFunction() throws Exception {
-		StringBuilder queryString = new StringBuilder();
-		readFileToString(queryFile, queryString);
-		String[] queries = queryString.toString().split(";");
-		StringWriter sw = new StringWriter();
-
-		HiveConf hconf = ConfUtil.getHiveConf();
-		Driver driver = new Driver(hconf, new PrintWriter(sw));
-		driver.init();
-
-		dfs = FileSystem.get(ConfUtil.getJobConf());
-
-		int i = 0;
-		for (String query : queries) {
-			if (i == queries.length - 1)
-				break;
-			driver.run(query);
-			driver.clear();
-			i++;
-		}
-
-		String warehouse = hconf.get("hive.metastore.warehouse.dir");
-		String tableName = removeExt(resultFile.getName());
-		String directory = warehouse + "/" + tableName + "/";
-		String localDirectory = "tmp";
-
-		FileStatus[] files = dfs.listStatus(new Path(directory));
-		FileSystem lfs = null;
-		if (files == null) {
-			lfs = FileSystem.getLocal(ConfUtil.getJobConf());
-			files = lfs.listStatus(new Path(directory));
-		}
-
-		File resultDirectory = new File(localDirectory + "/" + tableName);
-		deleteDir(resultDirectory);
-		resultDirectory.mkdir();
-
-		for (FileStatus fs : files) {
-			Path src = fs.getPath();
-			if (src.getName().indexOf("crc") >= 0)
-				continue;
-
-			String destStr = localDirectory + "/" + tableName + "/"
-					+ src.getName();
-			Path dest = new Path(destStr);
-			if (lfs != null) {
-				lfs.copyToLocalFile(src, dest);
-				dfs.copyFromLocalFile(dest, new Path(directory));
-			} else
-				dfs.copyToLocalFile(src, dest);
-		}
-
-		File[] rFiles = resultDirectory.listFiles();
-		StringBuilder sb = new StringBuilder();
-		for (File r : rFiles) {
-			if (r.getName().indexOf("crc") >= 0)
-				continue;
-			readFileToString(r, sb);
-		}
-		deleteDir(resultDirectory);
-
-		writeStringToFile(resultFile, sb);
-	}
-
-	private void deleteDir(File resultDirectory) {
-		if (resultDirectory.exists()) {
-			File[] rFiles = resultDirectory.listFiles();
-			for (File r : rFiles)
-				r.delete();
-			resultDirectory.delete();
-		}
-	}
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java
deleted file mode 100644
index a67f475..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/runtimefunction/RuntimeFunctionTestSuiteGenerator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package edu.uci.ics.hivesterix.test.runtimefunction;
-
-import java.io.File;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import edu.uci.ics.hivesterix.test.base.AbstractTestSuiteClass;
-
-public class RuntimeFunctionTestSuiteGenerator extends AbstractTestSuiteClass {
-
-	private static final String PATH_TO_QUERIES = "src/test/resources/runtimefunctionts/queries/";
-	private static final String PATH_TO_RESULTS = "src/test/resources/runtimefunctionts/results/";
-	private static final String PATH_TO_IGNORES = "src/test/resources/runtimefunctionts/ignore.txt";
-
-	private static final String FILE_EXTENSION_OF_RESULTS = "result";
-
-	public static Test suite() throws Exception {
-		List<String> ignores = getIgnoreList(PATH_TO_IGNORES);
-		File testData = new File(PATH_TO_QUERIES);
-		File[] queries = testData.listFiles();
-		RuntimeFunctionTestSuiteGenerator testSuite = new RuntimeFunctionTestSuiteGenerator();
-
-		// set hdfs and hyracks cluster, and load test data to hdfs
-		try {
-			testSuite.setup();
-			testSuite.loadData();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-
-		for (File qFile : queries) {
-			if (isIgnored(qFile.getName(), ignores))
-				continue;
-
-			if (qFile.isFile() && qFile.getName().startsWith("q16_")) {
-				String resultFileName = hiveExtToResExt(qFile.getName());
-				File rFile = new File(PATH_TO_RESULTS + resultFileName);
-				testSuite.addTest(new RuntimeFunctionTestSuiteCaseGenerator(
-						qFile, rFile));
-			}
-		}
-		return testSuite;
-	}
-
-	private static String hiveExtToResExt(String fname) {
-		int dot = fname.lastIndexOf('.');
-		return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS;
-	}
-
-	/**
-	 * Runs the tests and collects their result in a TestResult.
-	 */
-	@Override
-	public void run(TestResult result) {
-
-		int testCount = countTestCases();
-		for (int i = 0; i < testCount; i++) {
-			Test each = this.testAt(i);
-			if (result.shouldStop())
-				break;
-			runTest(each, result);
-		}
-
-		// cleanup hdfs and hyracks cluster
-		try {
-			cleanup();
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java b/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java
deleted file mode 100644
index b5db432..0000000
--- a/hivesterix/src/test/java/edu/uci/ics/hivesterix/test/serde/SerDeTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hivesterix.test.serde;
-
-import java.util.List;
-import java.util.Properties;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.serde.Constants;
-import org.apache.hadoop.hive.serde2.SerDe;
-import org.apache.hadoop.hive.serde2.SerDeException;
-import org.apache.hadoop.hive.serde2.io.ByteWritable;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-import org.apache.hadoop.hive.serde2.lazy.LazyPrimitive;
-import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
-import org.apache.hadoop.hive.serde2.objectinspector.StructField;
-import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.hivesterix.serde.lazy.LazySerDe;
-
-/**
- * TestLazySimpleSerDe.
- * 
- */
-@SuppressWarnings({ "deprecation", "rawtypes" })
-public class SerDeTest extends TestCase {
-
-	/**
-	 * Test the LazySimpleSerDe class.
-	 */
-	public void testLazySimpleSerDe() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			LazySerDe outputSerde = new LazySerDe();
-			outputSerde.initialize(conf, tbl);
-
-			// Data
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\t1\tqf";
-
-			byte[] bytes = s.getBytes();
-			Writable bytesWritable = new BytesWritable(bytes);
-
-			// Test
-			// deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-			Object row = serDe.deserialize(bytesWritable); // test my serde
-			StructObjectInspector simpleInspector = (StructObjectInspector) serDe
-					.getObjectInspector();
-			List<Object> fields = simpleInspector
-					.getStructFieldsDataAsList(row);
-			List<? extends StructField> fieldRefs = simpleInspector
-					.getAllStructFieldRefs();
-
-			int i = 0;
-			for (Object field : fields) {
-				BytesWritable fieldWritable = (BytesWritable) outputSerde
-						.serialize(field, fieldRefs.get(i)
-								.getFieldObjectInspector());
-				System.out.print(fieldWritable.getSize() + "|");
-				i++;
-			}
-
-			// Writable output = outputSerde.serialize(row, serDe
-			// .getObjectInspector());
-			// System.out.println(output);
-			//
-			// Object row2 = outputSerde.deserialize(output);
-			// Writable output2 = serDe.serialize(row2, outputSerde
-			// .getObjectInspector());
-			// System.out.println(output2);
-
-			// System.out.println(output);
-			// deserializeAndSerialize(outputSerde, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	private void deserializeAndSerialize(SerDe serDe, Text t, String s,
-			Object[] expectedFieldsData) throws SerDeException {
-		// Get the row structure
-		StructObjectInspector oi = (StructObjectInspector) serDe
-				.getObjectInspector();
-		List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs();
-		assertEquals(8, fieldRefs.size());
-
-		// Deserialize
-		Object row = serDe.deserialize(t);
-		for (int i = 0; i < fieldRefs.size(); i++) {
-			Object fieldData = oi.getStructFieldData(row, fieldRefs.get(i));
-			if (fieldData != null) {
-				fieldData = ((LazyPrimitive) fieldData).getWritableObject();
-			}
-			assertEquals("Field " + i, expectedFieldsData[i], fieldData);
-		}
-		// Serialize
-		assertEquals(Text.class, serDe.getSerializedClass());
-		Text serializedText = (Text) serDe.serialize(row, oi);
-		assertEquals("Serialized data", s, serializedText.toString());
-	}
-
-	private Properties createProperties() {
-		Properties tbl = new Properties();
-
-		// Set the configuration parameters
-		tbl.setProperty(Constants.SERIALIZATION_FORMAT, "9");
-		tbl.setProperty("columns",
-				"abyte,ashort,aint,along,adouble,astring,anullint,anullstring");
-		tbl.setProperty("columns.types",
-				"tinyint:smallint:int:bigint:double:string:int:string");
-		tbl.setProperty(Constants.SERIALIZATION_NULL_FORMAT, "NULL");
-		return tbl;
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with LastColumnTakesRest option.
-	 */
-	public void testLazySimpleSerDeLastColumnTakesRest() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			tbl.setProperty(Constants.SERIALIZATION_LAST_COLUMN_TAKES_REST,
-					"true");
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text(
-					"123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta\tb\t";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text("hive and hadoop"), null, new Text("a\tb\t") };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with extra columns.
-	 */
-	public void testLazySimpleSerDeExtraColumns() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text(
-					"123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
-			String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text("hive and hadoop"), null, new Text("a") };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-	/**
-	 * Test the LazySimpleSerDe class with missing columns.
-	 */
-	public void testLazySimpleSerDeMissingColumns() throws Throwable {
-		try {
-			// Create the SerDe
-			LazySimpleSerDe serDe = new LazySimpleSerDe();
-			Configuration conf = new Configuration();
-			Properties tbl = createProperties();
-			serDe.initialize(conf, tbl);
-
-			// Data
-			Text t = new Text("123\t456\t789\t1000\t5.3\t");
-			String s = "123\t456\t789\t1000\t5.3\t\tNULL\tNULL";
-			Object[] expectedFieldsData = { new ByteWritable((byte) 123),
-					new ShortWritable((short) 456), new IntWritable(789),
-					new LongWritable(1000), new DoubleWritable(5.3),
-					new Text(""), null, null };
-
-			// Test
-			deserializeAndSerialize(serDe, t, s, expectedFieldsData);
-
-		} catch (Throwable e) {
-			e.printStackTrace();
-			throw e;
-		}
-	}
-
-}
diff --git a/hivesterix/src/test/resources/log4j.properties b/hivesterix/src/test/resources/log4j.properties
deleted file mode 100755
index d5e6004..0000000
--- a/hivesterix/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-# Define some default values that can be overridden by system properties
-hadoop.root.logger=FATAL,console
-hadoop.log.dir=.
-hadoop.log.file=hadoop.log
-
-# Define the root logger to the system property "hadoop.root.logger".
-log4j.rootLogger=${hadoop.root.logger}, EventCounter
-
-# Logging Threshold
-log4j.threshhold=FATAL
-
-#
-# Daily Rolling File Appender
-#
-
-log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DRFA.File=${hadoop.log.dir}/${hadoop.log.file}
-
-# Rollver at midnight
-log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-
-# 30-day backup
-#log4j.appender.DRFA.MaxBackupIndex=30
-log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
-
-# Pattern format: Date LogLevel LoggerName LogMessage
-log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
-# Debugging Pattern format
-#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
-
-
-#
-# console
-# Add "console" to rootlogger above if you want to use this 
-#
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.target=System.err
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
-
-#
-# TaskLog Appender
-#
-
-#Default values
-hadoop.tasklog.taskid=null
-hadoop.tasklog.noKeepSplits=4
-hadoop.tasklog.totalLogFileSize=100
-hadoop.tasklog.purgeLogSplits=true
-hadoop.tasklog.logsRetainHours=12
-
-log4j.appender.TLA=org.apache.hadoop.mapred.TaskLogAppender
-log4j.appender.TLA.taskId=${hadoop.tasklog.taskid}
-log4j.appender.TLA.totalLogFileSize=${hadoop.tasklog.totalLogFileSize}
-
-log4j.appender.TLA.layout=org.apache.log4j.PatternLayout
-log4j.appender.TLA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
-
-#
-# Rolling File Appender
-#
-
-#log4j.appender.RFA=org.apache.log4j.RollingFileAppender
-#log4j.appender.RFA.File=${hadoop.log.dir}/${hadoop.log.file}
-
-# Logfile size and and 30-day backups
-#log4j.appender.RFA.MaxFileSize=1MB
-#log4j.appender.RFA.MaxBackupIndex=30
-
-#log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
-#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} - %m%n
-#log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p %c{2} (%F:%M(%L)) - %m%n
-
-#
-# FSNamesystem Audit logging
-# All audit events are logged at INFO level
-#
-log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN
-
-# Custom Logging levels
-
-#log4j.logger.org.apache.hadoop.mapred.JobTracker=DEBUG
-#log4j.logger.org.apache.hadoop.mapred.TaskTracker=DEBUG
-#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
-
-# Jets3t library
-log4j.logger.org.jets3t.service.impl.rest.httpclient.RestS3Service=ERROR
-
-#
-# Event Counter Appender
-# Sends counts of logging messages at different severity levels to Hadoop Metrics.
-#
-log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
diff --git a/hivesterix/src/test/resources/logging.properties b/hivesterix/src/test/resources/logging.properties
deleted file mode 100644
index 1cc34e1..0000000
--- a/hivesterix/src/test/resources/logging.properties
+++ /dev/null
@@ -1,65 +0,0 @@
-############################################################
-#  	Default Logging Configuration File
-#
-# You can use a different file by specifying a filename
-# with the java.util.logging.config.file system property.  
-# For example java -Djava.util.logging.config.file=myfile
-############################################################
-
-############################################################
-#  	Global properties
-############################################################
-
-# "handlers" specifies a comma separated list of log Handler 
-# classes.  These handlers will be installed during VM startup.
-# Note that these classes must be on the system classpath.
-# By default we only configure a ConsoleHandler, which will only
-# show messages at the INFO and above levels.
-
-handlers= java.util.logging.ConsoleHandler
-
-# To also add the FileHandler, use the following line instead.
-
-# handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
-
-# Default global logging level.
-# This specifies which kinds of events are logged across
-# all loggers.  For any given facility this global level
-# can be overriden by a facility specific level
-# Note that the ConsoleHandler also has a separate level
-# setting to limit messages printed to the console.
-
-.level= WARNING
-# .level= INFO
-# .level= FINE
-# .level = FINEST
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-# default file output is in user's home directory.
-
-# java.util.logging.FileHandler.pattern = %h/java%u.log
-# java.util.logging.FileHandler.limit = 50000
-# java.util.logging.FileHandler.count = 1
-# java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
-
-# Limit the message that are printed on the console to FINE and above.
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-# For example, set the com.xyz.foo logger to only log SEVERE
-# messages:
-
-edu.uci.ics.asterix.level = WARNING
-edu.uci.ics.algebricks.level = WARNING
-edu.uci.ics.hyracks.level = WARNING
diff --git a/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml b/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml
deleted file mode 100644
index d5d0149..0000000
--- a/hivesterix/src/test/resources/optimizerts/hive/conf/hive-default.xml
+++ /dev/null
@@ -1,793 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<configuration>
-
-	<!-- Hive Configuration can either be stored in this file or in the hadoop 
-		configuration files -->
-	<!-- that are implied by Hadoop setup variables. -->
-	<!-- Aside from Hadoop setup variables - this file is provided as a convenience 
-		so that Hive -->
-	<!-- users do not have to edit hadoop configuration files (that may be managed 
-		as a centralized -->
-	<!-- resource). -->
-
-	<!-- Hive Execution Parameters -->
-	<property>
-		<name>mapred.reduce.tasks</name>
-		<value>-1</value>
-		<description>The default number of reduce tasks per job. Typically set
-			to a prime close to the number of available hosts. Ignored when
-			mapred.job.tracker is "local". Hadoop set this to 1 by default,
-			whereas hive uses -1 as its default value.
-			By setting this property to
-			-1, Hive will automatically figure out what
-			should be the number of
-			reducers.
-  </description>
-	</property>
-
-	<property>
-		<name>hive.hyracks.host</name>
-		<value>127.0.0.1</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.port</name>
-		<value>13099</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.app</name>
-		<value>hivesterix</value>
-	</property>
-
-
-	<property>
-		<name>hive.hyracks.parrallelism</name>
-		<value>2</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external</name>
-		<value>true</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.sort.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.framesize</name>
-		<value>768</value>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.bytes.per.reducer</name>
-		<value>1000000000</value>
-		<description>size per reducer.The default is 1G, i.e if the input size
-			is 10G, it will use 10 reducers.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.max</name>
-		<value>999</value>
-		<description>max number of reducers will be used. If the one
-			specified
-			in the configuration parameter mapred.reduce.tasks is
-			negative, hive
-			will use this one as the max number of reducers when
-			automatically
-			determine number of reducers.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.scratchdir</name>
-		<value>/tmp/hive-${user.name}</value>
-		<description>Scratch space for Hive jobs</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode</name>
-		<value>false</value>
-		<description>whether hive is running in test mode. If yes, it turns on
-			sampling and prefixes the output tablename</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.prefix</name>
-		<value>test_</value>
-		<description>if hive is running in test mode, prefixes the output
-			table by this string</description>
-	</property>
-
-	<!-- If the input table is not bucketed, the denominator of the tablesample 
-		is determinied by the parameter below -->
-	<!-- For example, the following query: -->
-	<!-- INSERT OVERWRITE TABLE dest -->
-	<!-- SELECT col1 from src -->
-	<!-- would be converted to -->
-	<!-- INSERT OVERWRITE TABLE test_dest -->
-	<!-- SELECT col1 from src TABLESAMPLE (BUCKET 1 out of 32 on rand(1)) -->
-	<property>
-		<name>hive.test.mode.samplefreq</name>
-		<value>32</value>
-		<description>if hive is running in test mode and table is not
-			bucketed, sampling frequency</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.nosamplelist</name>
-		<value></value>
-		<description>if hive is running in test mode, dont sample the above
-			comma seperated list of tables</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.local</name>
-		<value>true</value>
-		<description>controls whether to connect to remove metastore server or
-			open a new metastore server in Hive Client JVM</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionURL</name>
-		<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
-		<description>JDBC connect string for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionDriverName</name>
-		<value>org.apache.derby.jdbc.EmbeddedDriver</value>
-		<description>Driver class name for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.PersistenceManagerFactoryClass</name>
-		<value>org.datanucleus.jdo.JDOPersistenceManagerFactory</value>
-		<description>class implementing the jdo persistence</description>
-	</property>
-
-	<property>
-		<name>datanucleus.connectionPoolingType</name>
-		<value>DBCP</value>
-		<description>Uses a DBCP connection pool for JDBC metastore
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.DetachAllOnCommit</name>
-		<value>true</value>
-		<description>detaches all objects from session so that they can be
-			used after transaction is committed</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.NonTransactionalRead</name>
-		<value>true</value>
-		<description>reads outside of transactions</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionUserName</name>
-		<value>APP</value>
-		<description>username to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionPassword</name>
-		<value>mine</value>
-		<description>password to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateTables</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateColumns</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateConstraints</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema </description>
-	</property>
-
-	<property>
-		<name>datanucleus.storeManagerType</name>
-		<value>rdbms</value>
-		<description>metadata store type</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoCreateSchema</name>
-		<value>true</value>
-		<description>creates necessary schema on a startup if one doesn't
-			exist. set this to false, after creating it once</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoStartMechanismMode</name>
-		<value>checked</value>
-		<description>throw exception if metadata tables are incorrect
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.transactionIsolation</name>
-		<value>read-committed</value>
-		<description>Default transaction isolation level for identity
-			generation. </description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2</name>
-		<value>false</value>
-		<description>Use a level 2 cache. Turn this off if metadata is changed
-			independently of hive metastore server</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2.type</name>
-		<value>SOFT</value>
-		<description>SOFT=soft reference based cache, WEAK=weak reference
-			based cache.</description>
-	</property>
-
-	<property>
-		<name>datanucleus.identifierFactory</name>
-		<value>datanucleus</value>
-		<description>Name of the identifier factory to use when generating
-			table/column names etc. 'datanucleus' is used for backward
-			compatibility</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.warehouse.dir</name>
-		<value>/tmp/hivesterix</value>
-		<description>location of default database for the warehouse
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.connect.retries</name>
-		<value>5</value>
-		<description>Number of retries while opening a connection to metastore
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.rawstore.impl</name>
-		<value>org.apache.hadoop.hive.metastore.ObjectStore</value>
-		<description>Name of the class that implements
-			org.apache.hadoop.hive.metastore.rawstore interface. This class is
-			used to store and retrieval of raw metadata objects such as table,
-			database</description>
-	</property>
-
-	<property>
-		<name>hive.default.fileformat</name>
-		<value>TextFile</value>
-		<description>Default file format for CREATE TABLE statement. Options
-			are TextFile and SequenceFile. Users can explicitly say CREATE TABLE
-			... STORED AS &lt;TEXTFILE|SEQUENCEFILE&gt; to override</description>
-	</property>
-
-	<property>
-		<name>hive.fileformat.check</name>
-		<value>true</value>
-		<description>Whether to check file format or not when loading data
-			files</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr</name>
-		<value>true</value>
-		<description>Whether to use map-side aggregation in Hive Group By
-			queries</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.skewindata</name>
-		<value>false</value>
-		<description>Whether there is skew in data to optimize group by
-			queries</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.mapaggr.checkinterval</name>
-		<value>100000</value>
-		<description>Number of rows after which size of the grouping
-			keys/aggregation classes is performed</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.local.mem</name>
-		<value>0</value>
-		<description>For local mode, memory of the mappers/reducers
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.percentmemory</name>
-		<value>0.5</value>
-		<description>Portion of total memory to be used by map-side grup
-			aggregation hash table</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.min.reduction</name>
-		<value>0.5</value>
-		<description>Hash aggregation will be turned off if the ratio between
-			hash
-			table size and input rows is bigger than this number. Set to 1 to
-			make
-			sure
-			hash aggregation is never turned off.</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.cp</name>
-		<value>true</value>
-		<description>Whether to enable column pruner</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.ppd</name>
-		<value>true</value>
-		<description>Whether to enable predicate pushdown</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.pruner</name>
-		<value>true</value>
-		<description>Whether to enable the new partition pruner which depends
-			on predicate pushdown. If this is disabled,
-			the old partition pruner
-			which is based on AST will be enabled.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.groupby</name>
-		<value>true</value>
-		<description>Whether to enable the bucketed group by from bucketed
-			partitions/tables.</description>
-	</property>
-
-	<property>
-		<name>hive.join.emit.interval</name>
-		<value>1000</value>
-		<description>How many rows in the right-most join operand Hive should
-			buffer before emitting the join result. </description>
-	</property>
-
-	<property>
-		<name>hive.join.cache.size</name>
-		<value>25000</value>
-		<description>How many rows in the joining tables (except the streaming
-			table) should be cached in memory. </description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.bucket.cache.size</name>
-		<value>100</value>
-		<description>How many values in each keys in the map-joined table
-			should be cached in memory. </description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.maxsize</name>
-		<value>100000</value>
-		<description>Maximum # of rows of the small table that can be handled
-			by map-side join. If the size is reached and hive.task.progress is
-			set, a fatal error counter is set and the job will be killed.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.cache.numrows</name>
-		<value>25000</value>
-		<description>How many rows should be cached by jdbm for map join.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.skewjoin</name>
-		<value>false</value>
-		<description>Whether to enable skew join optimization. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.key</name>
-		<value>100000</value>
-		<description>Determine if we get a skew key in join. If we see more
-			than the specified number of rows with the same key in join operator,
-			we think the key as a skew join key. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.map.tasks</name>
-		<value>10000</value>
-		<description> Determine the number of map task used in the follow up
-			map join job
-			for a skew join. It should be used together with
-			hive.skewjoin.mapjoin.min.split
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.min.split</name>
-		<value>33554432</value>
-		<description> Determine the number of map task at most used in the
-			follow up map join job
-			for a skew join by specifying the minimum split
-			size. It should be used
-			together with
-			hive.skewjoin.mapjoin.map.tasks
-			to perform a fine grained control.</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.mode</name>
-		<value>nonstrict</value>
-		<description>The mode in which the hive operations are being
-			performed. In strict mode, some risky queries are not allowed to run
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.maxerrsize</name>
-		<value>100000</value>
-		<description>Maximum number of bytes a script is allowed to emit to
-			standard error (per map-reduce task). This prevents runaway scripts
-			from filling logs partitions to capacity </description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.allow.partial.consumption</name>
-		<value>false</value>
-		<description> When enabled, this option allows a user script to exit
-			successfully without consuming all the data from the standard input.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.operator.id.env.var</name>
-		<value>HIVE_SCRIPT_OPERATOR_ID</value>
-		<description> Name of the environment variable that holds the unique
-			script operator ID in the user's transform function (the custom
-			mapper/reducer that the user has specified in the query)
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.output</name>
-		<value>false</value>
-		<description> This controls whether the final outputs of a query (to a
-			local/hdfs file or a hive table) is compressed. The compression codec
-			and other options are determined from hadoop config variables
-			mapred.output.compress* </description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.intermediate</name>
-		<value>false</value>
-		<description> This controls whether intermediate files produced by
-			hive between multiple map-reduce jobs are compressed. The compression
-			codec and other options are determined from hadoop config variables
-			mapred.output.compress* </description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel</name>
-		<value>false</value>
-		<description>Whether to execute jobs in parallel</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel.thread.number</name>
-		<value>8</value>
-		<description>How many jobs at most can be executed in parallel
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.war.file</name>
-		<value>lib\hive-hwi-0.7.0.war</value>
-		<description>This sets the path to the HWI war file, relative to
-			${HIVE_HOME}. </description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.host</name>
-		<value>0.0.0.0</value>
-		<description>This is the host address the Hive Web Interface will
-			listen on</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.port</name>
-		<value>9999</value>
-		<description>This is the port the Hive Web Interface will listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.pre.hooks</name>
-		<value></value>
-		<description>Pre Execute Hook for Tests</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapfiles</name>
-		<value>true</value>
-		<description>Merge small files at the end of a map-only job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapredfiles</name>
-		<value>false</value>
-		<description>Merge small files at the end of a map-reduce job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.heartbeat.interval</name>
-		<value>1000</value>
-		<description>Send a heartbeat after this interval - used by mapjoin
-			and filter operators</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.per.task</name>
-		<value>256000000</value>
-		<description>Size of merged files at the end of the job</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.smallfiles.avgsize</name>
-		<value>16000000</value>
-		<description>When the average output file size of a job is less than
-			this number, Hive will start an additional map-reduce job to merge
-			the output files into bigger files. This is only done for map-only
-			jobs if hive.merge.mapfiles is true, and for map-reduce jobs if
-			hive.merge.mapredfiles is true.</description>
-	</property>
-
-	<property>
-		<name>hive.script.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive Tranform/Map/Reduce Clause should
-			automatically send progress information to TaskTracker to avoid the
-			task getting killed because of inactivity. Hive sends progress
-			information when the script is outputting to stderr. This option
-			removes the need of periodically producing stderr messages, but users
-			should be cautious because this may prevent infinite loops in the
-			scripts to be killed by TaskTracker.  </description>
-	</property>
-
-	<property>
-		<name>hive.script.serde</name>
-		<value>org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe</value>
-		<description>The default serde for trasmitting input data to and
-			reading output data from the user scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.script.recordreader</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordReader</value>
-		<description>The default record reader for reading data from the user
-			scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.script.recordwriter</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordWriter</value>
-		<description>The default record writer for writing data to the user
-			scripts. </description>
-	</property>
-
-	<property>
-		<name>hive.input.format</name>
-		<value>org.apache.hadoop.hive.ql.io.HiveInputFormat</value>
-		<description>The default input format, if it is not specified, the
-			system assigns it. It is set to HiveInputFormat for hadoop versions
-			17, 18 and 19, whereas it is set to CombinedHiveInputFormat for
-			hadoop 20. The user can always overwrite it - if there is a bug in
-			CombinedHiveInputFormat, it can always be manually set to
-			HiveInputFormat. </description>
-	</property>
-
-	<property>
-		<name>hive.udtf.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive should automatically send progress
-			information to TaskTracker when using UDTF's to prevent the task
-			getting killed because of inactivity. Users should be cautious
-			because this may prevent TaskTracker from killing tasks with infinte
-			loops.  </description>
-	</property>
-
-	<property>
-		<name>hive.mapred.reduce.tasks.speculative.execution</name>
-		<value>true</value>
-		<description>Whether speculative execution for reducers should be
-			turned on. </description>
-	</property>
-
-	<property>
-		<name>hive.exec.counters.pull.interval</name>
-		<value>1000</value>
-		<description>The interval with which to poll the JobTracker for the
-			counters the running job. The smaller it is the more load there will
-			be on the jobtracker, the higher it is the less granular the caught
-			will be.</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.bucketing</name>
-		<value>false</value>
-		<description>Whether bucketing is enforced. If true, while inserting
-			into the table, bucketing is enforced. </description>
-	</property>
-
-	<property>
-		<name>hive.enforce.sorting</name>
-		<value>false</value>
-		<description>Whether sorting is enforced. If true, while inserting
-			into the table, sorting is enforced. </description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.connection.url.hook</name>
-		<value></value>
-		<description>Name of the hook to use for retriving the JDO connection
-			URL. If empty, the value in javax.jdo.option.ConnectionURL is used
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.attempts</name>
-		<value>1</value>
-		<description>The number of times to retry a metastore call if there
-			were a connection error</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.interval</name>
-		<value>1000</value>
-		<description>The number of miliseconds between metastore retry
-			attempts</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.min.threads</name>
-		<value>200</value>
-		<description>Minimum number of worker threads in the Thrift server's
-			pool.</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.max.threads</name>
-		<value>100000</value>
-		<description>Maximum number of worker threads in the Thrift server's
-			pool.</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.tcp.keepalive</name>
-		<value>true</value>
-		<description>Whether to enable TCP keepalive for the metastore server.
-			Keepalive will prevent accumulation of half-open connections.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.reducededuplication</name>
-		<value>true</value>
-		<description>Remove extra map-reduce jobs if the data is already
-			clustered by the same key which needs to be used again. This should
-			always be set to true. Since it is a new feature, it has been made
-			configurable.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition</name>
-		<value>false</value>
-		<description>Whether or not to allow dynamic partitions in DML/DDL.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition.mode</name>
-		<value>strict</value>
-		<description>In strict mode, the user must specify at least one static
-			partition in case the user accidentally overwrites all partitions.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions</name>
-		<value>1000</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in total.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions.pernode</name>
-		<value>100</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in each mapper/reducer node.</description>
-	</property>
-
-	<property>
-		<name>hive.default.partition.name</name>
-		<value>__HIVE_DEFAULT_PARTITION__</value>
-		<description>The default partition name in case the dynamic partition
-			column value is null/empty string or anyother values that cannot be
-			escaped. This value must not contain any special character used in
-			HDFS URI (e.g., ':', '%', '/' etc). The user has to be aware that the
-			dynamic partition value should not contain this value to avoid
-			confusions.</description>
-	</property>
-
-	<property>
-		<name>fs.har.impl</name>
-		<value>org.apache.hadoop.hive.shims.HiveHarFileSystem</value>
-		<description>The implementation for accessing Hadoop Archives. Note
-			that this won't be applicable to Hadoop vers less than 0.20
-		</description>
-	</property>
-
-	<property>
-		<name>hive.archive.enabled</name>
-		<value>false</value>
-		<description>Whether archiving operations are permitted</description>
-	</property>
-
-	<property>
-		<name>hive.archive.har.parentdir.settable</name>
-		<value>false</value>
-		<description>In new Hadoop versions, the parent directory must be set
-			while
-			creating a HAR. Because this functionality is hard to detect
-			with just
-			version
-			numbers, this conf var needs to be set manually.
-		</description>
-	</property>
-
-	<!-- HBase Storage Handler Parameters -->
-
-	<property>
-		<name>hive.hbase.wal.enabled</name>
-		<value>true</value>
-		<description>Whether writes to HBase should be forced to the
-			write-ahead log. Disabling this improves HBase write performance at
-			the risk of lost writes in case of a crash.</description>
-	</property>
-
-	<property>
-		<name>hive.exec.drop.ignorenonexistent</name>
-		<value>true</value>
-		<description>drop table always works.</description>
-	</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/optimizerts/ignore.txt b/hivesterix/src/test/resources/optimizerts/ignore.txt
deleted file mode 100644
index e69de29..0000000
--- a/hivesterix/src/test/resources/optimizerts/ignore.txt
+++ /dev/null
diff --git a/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive b/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive
deleted file mode 100644
index a5c46c6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/h11_share_scan.hive
+++ /dev/null
@@ -1,10 +0,0 @@
--- union case: both subqueries are map jobs on same input, followed by filesink
-DROP TABLE IF EXISTS src;
-
-CREATE TABLE src(key int, value int);
-CREATE TABLE src1(key int, value int);
-CREATE TABLE src2(key int);
-
-FROM src
-INSERT overwrite table src1 select * where key < 5
-INSERT overwrite table src2 select key where key > 10;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive b/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive
deleted file mode 100644
index 24ca265..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/h12_select_struct.hive
+++ /dev/null
@@ -1,6 +0,0 @@
--- union case: both subqueries are map jobs on same input, followed by filesink
-DROP TABLE IF EXISTS src;
-
-CREATE TABLE src(key int, value struct<v1:int, v2:int>);
-
-select value from src;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive b/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive
deleted file mode 100644
index 3f1214a..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q10_returned_item.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q10_returned_item;
-
--- create the tables and load the data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q10_returned_item (c_custkey int, c_name string, revenue double, c_acctbal string, n_name string, c_address string, c_phone string, c_comment string);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q10_returned_item
-select 
-  c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue, 
-  c_acctbal, n_name, c_address, c_phone, c_comment
-from
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey and o.o_orderdate >= '1993-10-01' and o.o_orderdate < '1994-01-01'
-  join nation n 
-  on 
-    c.c_nationkey = n.n_nationkey
-  join lineitem l 
-  on 
-    l.l_orderkey = o.o_orderkey and l.l_returnflag = 'R'
-group by c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment 
-order by revenue desc 
-limit 20;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive b/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive
deleted file mode 100644
index 8550b72..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q11_important_stock.hive
+++ /dev/null
@@ -1,47 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q11_important_stock;
-DROP TABLE IF EXISTS q11_part_tmp;
-DROP TABLE IF EXISTS q11_sum_tmp;
-
--- create tables and load data
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q11_important_stock(ps_partkey INT, value DOUBLE);
-create table q11_part_tmp(ps_partkey int, part_value double);
-create table q11_sum_tmp(total_value double);
-
--- the query
-insert overwrite table q11_part_tmp
-select 
-  ps_partkey, sum(ps_supplycost * ps_availqty) as part_value 
-from
-  nation n join supplier s 
-  on 
-    s.s_nationkey = n.n_nationkey and n.n_name = 'GERMANY'
-  join partsupp ps 
-  on 
-    ps.ps_suppkey = s.s_suppkey
-group by ps_partkey;
-
-insert overwrite table q11_sum_tmp
-select 
-  sum(part_value) as total_value
-from 
-  q11_part_tmp;
-
-insert overwrite table q11_important_stock
-select 
-  ps_partkey, part_value as value
-from
-  (
-    select ps_partkey, part_value, total_value
-    from q11_part_tmp join q11_sum_tmp
-  ) a
-where part_value > total_value * 0.0001
-order by value desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive b/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive
deleted file mode 100644
index 062f7b9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q12_shipping.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q12_shipping;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q12_shipping(l_shipmode string, high_line_count double, low_line_count double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q12_shipping
-select 
-  l_shipmode,
-  sum(case
-    when o_orderpriority ='1-URGENT'
-         or o_orderpriority ='2-HIGH'
-    then 1
-    else 0
-end
-  ) as high_line_count,
-  sum(case
-    when o_orderpriority <> '1-URGENT'
-         and o_orderpriority <> '2-HIGH'
-    then 1
-    else 0
-end
-  ) as low_line_count
-from
-  orders o join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey and l.l_commitdate < l.l_receiptdate
-and l.l_shipdate < l.l_commitdate and l.l_receiptdate >= '1994-01-01' 
-and l.l_receiptdate < '1995-01-01'
-where 
-  l.l_shipmode = 'MAIL' or l.l_shipmode = 'SHIP'
-group by l_shipmode
-order by l_shipmode;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive b/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive
deleted file mode 100644
index a799008..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q13_customer_distribution.hive
+++ /dev/null
@@ -1,27 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q13_customer_distribution;
-
--- create the tables and load the data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q13_customer_distribution (c_count int, custdist int);
-
--- the query
-insert overwrite table q13_customer_distribution
-select 
-  c_count, count(1) as custdist
-from 
-  (select 
-     c_custkey, count(o_orderkey) as c_count
-   from 
-     customer c left outer join orders o 
-     on 
-       c.c_custkey = o.o_custkey and not o.o_comment like '%special%requests%'
-   group by c_custkey
-   ) c_orders
-group by c_count
-order by custdist desc, c_count desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive b/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive
deleted file mode 100644
index 988f400..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q14_promotion_effect.hive
+++ /dev/null
@@ -1,28 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q14_promotion_effect;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q14_promotion_effect(promo_revenue double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q14_promotion_effect
-select 
-  100.00 * sum(case
-               when p_type like 'PROMO%'
-               then l_extendedprice*(1-l_discount)
-               else 0.0
-               end
-  ) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue
-from 
-  part p join lineitem l 
-  on 
-    l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01';
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive b/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive
deleted file mode 100644
index 04064ed..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q15_top_supplier.hive
+++ /dev/null
@@ -1,45 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS revenue;
-DROP TABLE IF EXISTS max_revenue;
-DROP TABLE IF EXISTS q15_top_supplier;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create result tables
-create table revenue(supplier_no int, total_revenue double); 
-create table max_revenue(max_revenue double); 
-create table q15_top_supplier(s_suppkey int, s_name string, s_address string, s_phone string, total_revenue double);
-
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table revenue
-select 
-  l_suppkey as supplier_no, sum(l_extendedprice * (1 - l_discount)) as total_revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1996-01-01' and l_shipdate < '1996-04-01'
-group by l_suppkey;
-
-insert overwrite table max_revenue
-select 
-  max(total_revenue)
-from 
-  revenue;
-
-insert overwrite table q15_top_supplier
-select 
-  s_suppkey, s_name, s_address, s_phone, total_revenue
-from supplier s join revenue r 
-  on 
-    s.s_suppkey = r.supplier_no
-  join max_revenue m 
-  on 
-    r.total_revenue = m.max_revenue
-order by s_suppkey;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive b/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive
deleted file mode 100644
index 971ef99..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q16_parts_supplier_relationship.hive
+++ /dev/null
@@ -1,53 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS q16_parts_supplier_relationship;
-DROP TABLE IF EXISTS q16_tmp;
-DROP TABLE IF EXISTS supplier_tmp;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create the result table
-create table q16_parts_supplier_relationship(p_brand string, p_type string, p_size int, supplier_cnt int);
-create table q16_tmp(p_brand string, p_type string, p_size int, ps_suppkey int);
-create table supplier_tmp(s_suppkey int);
-
--- the query
-insert overwrite table supplier_tmp
-select 
-  s_suppkey
-from 
-  supplier
-where 
-  not s_comment like '%Customer%Complaints%';
-
-insert overwrite table q16_tmp
-select 
-  p_brand, p_type, p_size, ps_suppkey
-from 
-  partsupp ps join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_brand <> 'Brand#45' 
-    and not p.p_type like 'MEDIUM POLISHED%'
-  join supplier_tmp s 
-  on 
-    ps.ps_suppkey = s.s_suppkey;
-
-insert overwrite table q16_parts_supplier_relationship
-select 
-  p_brand, p_type, p_size, count(distinct ps_suppkey) as supplier_cnt
-from 
-  (select 
-     * 
-   from
-     q16_tmp 
-   where p_size = 49 or p_size = 14 or p_size = 23 or
-         p_size = 45 or p_size = 19 or p_size = 3 or
-         p_size = 36 or p_size = 9
-) q16_all
-group by p_brand, p_type, p_size
-order by supplier_cnt desc, p_brand, p_type, p_size;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive b/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive
deleted file mode 100644
index 65291cd..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q17_small_quantity_order_revenue.hive
+++ /dev/null
@@ -1,38 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q17_small_quantity_order_revenue;
-DROP TABLE IF EXISTS lineitem_tmp;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q17_small_quantity_order_revenue (avg_yearly double);
-create table lineitem_tmp (t_partkey int, t_avg_quantity double);
-
--- the query
-insert overwrite table lineitem_tmp
-select 
-  l_partkey as t_partkey, 0.2 * avg(l_quantity) as t_avg_quantity
-from 
-  lineitem
-group by l_partkey;
-
-insert overwrite table q17_small_quantity_order_revenue
-select
-  sum(l_extendedprice) / 7.0 as avg_yearly
-from
-  (select l_quantity, l_extendedprice, t_avg_quantity from
-   lineitem_tmp t join
-     (select
-        l_quantity, l_partkey, l_extendedprice
-      from
-        part p join lineitem l
-        on
-          p.p_partkey = l.l_partkey
-          and p.p_brand = 'Brand#23'
-          and p.p_container = 'MED BOX'
-      ) l1 on l1.l_partkey = t.t_partkey
-   ) a
-where l_quantity < t_avg_quantity;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive b/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive
deleted file mode 100644
index 76d0475..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q18_large_volume_customer.hive
+++ /dev/null
@@ -1,43 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q18_tmp;
-DROP TABLE IF EXISTS q18_large_volume_customer;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the result tables
-create table q18_tmp(l_orderkey int, t_sum_quantity double);
-create table q18_large_volume_customer(c_name string, c_custkey int, o_orderkey int, o_orderdate string, o_totalprice double, sum_quantity double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1164000000;
-
--- the query
-insert overwrite table q18_tmp
-select 
-  l_orderkey, sum(l_quantity) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q18_large_volume_customer
-select 
-  c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice,sum(l_quantity)
-from 
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey
-  join q18_tmp t 
-  on 
-    o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 300
-  join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey
-group by c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice
-order by o_totalprice desc,o_orderdate
-limit 100;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive b/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive
deleted file mode 100644
index fd330cd..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q19_discounted_revenue.hive
+++ /dev/null
@@ -1,49 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q19_discounted_revenue;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q19_discounted_revenue(revenue double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q19_discounted_revenue
-select
-  sum(l_extendedprice * (1 - l_discount) ) as revenue
-from
-  	part p join lineitem l
-  on 
-    p.p_partkey = l.l_partkey    
-where
-  (
-    p_brand = 'Brand#12'
-	and p_container REGEXP 'SM CASE||SM BOX||SM PACK||SM PKG'
-	and l_quantity >= 1 and l_quantity <= 11
-	and p_size >= 1 and p_size <= 5
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  ) 
-  or 
-  (
-    p_brand = 'Brand#23'
-	and p_container REGEXP 'MED BAG||MED BOX||MED PKG||MED PACK'
-	and l_quantity >= 10 and l_quantity <= 20
-	and p_size >= 1 and p_size <= 10
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  )
-  or
-  (
-	p_brand = 'Brand#34'
-	and p_container REGEXP 'LG CASE||LG BOX||LG PACK||LG PKG'
-	and l_quantity >= 20 and l_quantity <= 30
-	and p_size >= 1 and p_size <= 15
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  );
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive b/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive
deleted file mode 100644
index a002068..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q1_pricing_summary_report.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q1_pricing_summary_report;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q1_pricing_summary_report ( L_RETURNFLAG STRING, L_LINESTATUS STRING, SUM_QTY DOUBLE, SUM_BASE_PRICE DOUBLE, SUM_DISC_PRICE DOUBLE, SUM_CHARGE DOUBLE, AVE_QTY DOUBLE, AVE_PRICE DOUBLE, AVE_DISC DOUBLE, COUNT_ORDER INT);
-
-set mapred.min.split.size=536870912;
-
--- the query
-INSERT OVERWRITE TABLE q1_pricing_summary_report 
-SELECT 
-  L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY), SUM(L_EXTENDEDPRICE), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)), AVG(L_QUANTITY), AVG(L_EXTENDEDPRICE), AVG(L_DISCOUNT), COUNT(1) 
-FROM 
-  lineitem 
-WHERE 
-  L_SHIPDATE<='1998-09-02' 
-GROUP BY L_RETURNFLAG, L_LINESTATUS 
-ORDER BY L_RETURNFLAG, L_LINESTATUS;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive b/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive
deleted file mode 100644
index 63297e6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q20_potential_part_promotion.hive
+++ /dev/null
@@ -1,78 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q20_tmp1;
-DROP TABLE IF EXISTS q20_tmp2;
-DROP TABLE IF EXISTS q20_tmp3;
-DROP TABLE IF EXISTS q20_tmp4;
-DROP TABLE IF EXISTS q20_potential_part_promotion;
-
--- create tables and load data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q20_tmp1(p_partkey int);
-create table q20_tmp2(l_partkey int, l_suppkey int, sum_quantity double);
-create table q20_tmp3(ps_suppkey int, ps_availqty int, sum_quantity double);
-create table q20_tmp4(ps_suppkey int);
-create table q20_potential_part_promotion(s_name string, s_address string);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q20_tmp1
-select distinct p_partkey
-from
-  part 
-where 
-  p_name like 'forest%';
-
-insert overwrite table q20_tmp2
-select 
-  l_partkey, l_suppkey, 0.5 * sum(l_quantity)
-from
-  lineitem
-where
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-group by l_partkey, l_suppkey;
-
-insert overwrite table q20_tmp3
-select 
-  ps_suppkey, ps_availqty, sum_quantity
-from  
-  partsupp ps join q20_tmp1 t1 
-  on 
-    ps.ps_partkey = t1.p_partkey
-  join q20_tmp2 t2 
-  on 
-    ps.ps_partkey = t2.l_partkey and ps.ps_suppkey = t2.l_suppkey;
-
-insert overwrite table q20_tmp4
-select 
-  ps_suppkey
-from 
-  q20_tmp3
-where 
-  ps_availqty > sum_quantity
-group by ps_suppkey;
-
-insert overwrite table q20_potential_part_promotion
-select 
-  s_name, s_address
-from 
-  supplier s join nation n
-  on
-    s.s_nationkey = n.n_nationkey
-    and n.n_name = 'CANADA'
-  join q20_tmp4 t4
-  on 
-    s.s_suppkey = t4.ps_suppkey
-order by s_name;
-
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive b/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive
deleted file mode 100644
index a467f60..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q21_suppliers_who_kept_orders_waiting.hive
+++ /dev/null
@@ -1,74 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q21_tmp1;
-DROP TABLE IF EXISTS q21_tmp2;
-DROP TABLE IF EXISTS q21_suppliers_who_kept_orders_waiting;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create target tables
-create table q21_tmp1(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_tmp2(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_suppliers_who_kept_orders_waiting(s_name string, numwait int);
-
--- the query
-insert overwrite table q21_tmp1
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q21_tmp2
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-where
-  l_receiptdate > l_commitdate
-group by l_orderkey;
-
-insert overwrite table q21_suppliers_who_kept_orders_waiting
-select
-  s_name, count(1) as numwait
-from
-  (select s_name from
-(select s_name, t2.l_orderkey, l_suppkey, count_suppkey, max_suppkey 
- from q21_tmp2 t2 right outer join
-      (select s_name, l_orderkey, l_suppkey from
-         (select s_name, t1.l_orderkey, l_suppkey, count_suppkey, max_suppkey
-          from
-            q21_tmp1 t1 join
-            (select s_name, l_orderkey, l_suppkey
-             from 
-               orders o join
-               (select s_name, l_orderkey, l_suppkey
-                from
-                  nation n join supplier s
-                  on
-                    s.s_nationkey = n.n_nationkey
-                    and n.n_name = 'SAUDI ARABIA'
-                  join lineitem l
-                  on
-                    s.s_suppkey = l.l_suppkey
-                where
-                  l.l_receiptdate > l.l_commitdate
-                ) l1 on o.o_orderkey = l1.l_orderkey and o.o_orderstatus = 'F'
-             ) l2 on l2.l_orderkey = t1.l_orderkey
-          ) a
-          where
-           (count_suppkey > 1) or ((count_suppkey=1) and (l_suppkey <> max_suppkey))
-       ) l3 on l3.l_orderkey = t2.l_orderkey
-    ) b
-    where
-     (count_suppkey is null) or ((count_suppkey=1) and (l_suppkey = max_suppkey))
-  )c
-group by s_name
-order by numwait desc, s_name
-limit 100;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive b/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive
deleted file mode 100644
index a7d6c72..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q22_global_sales_opportunity.hive
+++ /dev/null
@@ -1,70 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q22_customer_tmp;
-DROP TABLE IF EXISTS q22_customer_tmp1;
-DROP TABLE IF EXISTS q22_orders_tmp;
-DROP TABLE IF EXISTS q22_global_sales_opportunity;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create target tables
-create table q22_customer_tmp(c_acctbal double, c_custkey int, cntrycode string);
-create table q22_customer_tmp1(avg_acctbal double);
-create table q22_orders_tmp(o_custkey int);
-create table q22_global_sales_opportunity(cntrycode string, numcust int, totacctbal double);
-
--- the query
-insert overwrite table q22_customer_tmp
-select 
-  c_acctbal, c_custkey, substr(c_phone, 1, 2) as cntrycode
-from 
-  customer
-where 
-  substr(c_phone, 1, 2) = '13' or
-  substr(c_phone, 1, 2) = '31' or
-  substr(c_phone, 1, 2) = '23' or
-  substr(c_phone, 1, 2) = '29' or
-  substr(c_phone, 1, 2) = '30' or
-  substr(c_phone, 1, 2) = '18' or
-  substr(c_phone, 1, 2) = '17';
- 
-insert overwrite table q22_customer_tmp1
-select
-  avg(c_acctbal)
-from
-  q22_customer_tmp
-where
-  c_acctbal > 0.00;
-
-insert overwrite table q22_orders_tmp
-select 
-  o_custkey 
-from 
-  orders
-group by 
-  o_custkey;
-
-insert overwrite table q22_global_sales_opportunity
-select
-  cntrycode, count(1) as numcust, sum(c_acctbal) as totacctbal
-from
-(
-  select cntrycode, c_acctbal, avg_acctbal from
-  q22_customer_tmp1 ct1 join
-  (
-    select cntrycode, c_acctbal from
-      q22_orders_tmp ot 
-      right outer join q22_customer_tmp ct 
-      on
-        ct.c_custkey = ot.o_custkey
-    where
-      o_custkey is null
-  ) ct2
-) a
-where
-  c_acctbal > avg_acctbal
-group by cntrycode
-order by cntrycode;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive b/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive
deleted file mode 100644
index 061c5e7..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q2_minimum_cost_supplier.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp1;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp2;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create result tables
-create table q2_minimum_cost_supplier_tmp1 (s_acctbal double, s_name string, n_name string, p_partkey int, ps_supplycost double, p_mfgr string, s_address string, s_phone string, s_comment string);
-create table q2_minimum_cost_supplier_tmp2 (p_partkey int, ps_min_supplycost double);
-create table q2_minimum_cost_supplier (s_acctbal double, s_name string, n_name string, p_partkey int, p_mfgr string, s_address string, s_phone string, s_comment string);
-
--- the query
-insert overwrite table q2_minimum_cost_supplier_tmp1 
-select 
-  s.s_acctbal, s.s_name, n.n_name, p.p_partkey, ps.ps_supplycost, p.p_mfgr, s.s_address, s.s_phone, s.s_comment 
-from 
-  nation n join region r 
-  on 
-    n.n_regionkey = r.r_regionkey and r.r_name = 'EUROPE' 
-  join supplier s 
-  on 
-s.s_nationkey = n.n_nationkey 
-  join partsupp ps 
-  on  
-s.s_suppkey = ps.ps_suppkey 
-  join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_size = 15 and p.p_type like '%BRASS' ;
-
-insert overwrite table q2_minimum_cost_supplier_tmp2 
-select 
-  p_partkey, min(ps_supplycost) 
-from  
-  q2_minimum_cost_supplier_tmp1 
-group by p_partkey;
-
-insert overwrite table q2_minimum_cost_supplier 
-select 
-  t1.s_acctbal, t1.s_name, t1.n_name, t1.p_partkey, t1.p_mfgr, t1.s_address, t1.s_phone, t1.s_comment 
-from 
-  q2_minimum_cost_supplier_tmp1 t1 join q2_minimum_cost_supplier_tmp2 t2 
-on 
-  t1.p_partkey = t2.p_partkey and t1.ps_supplycost=t2.ps_min_supplycost 
-order by s_acctbal desc, n_name, s_name, p_partkey 
-limit 100;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive b/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive
deleted file mode 100644
index 0049eb3..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q3_shipping_priority.hive
+++ /dev/null
@@ -1,29 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q3_shipping_priority;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the target table
-create table q3_shipping_priority (l_orderkey int, revenue double, o_orderdate string, o_shippriority int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-Insert overwrite table q3_shipping_priority 
-select 
-  l_orderkey, (l_extendedprice*(1-l_discount)) as revenue, o_orderdate, o_shippriority 
-from 
-  customer c join orders o 
-    on c.c_mktsegment = 'BUILDING' and c.c_custkey = o.o_custkey 
-  join lineitem l 
-    on l.l_orderkey = o.o_orderkey and l.l_linenumber<3
--- group by l_orderkey, o_orderdate, o_shippriority 
-order by revenue desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive b/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive
deleted file mode 100644
index aa828e9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q4_order_priority.hive
+++ /dev/null
@@ -1,30 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q4_order_priority_tmp;
-DROP TABLE IF EXISTS q4_order_priority;
-
--- create tables and load data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q4_order_priority_tmp (O_ORDERKEY INT);
-CREATE TABLE q4_order_priority (O_ORDERPRIORITY STRING, ORDER_COUNT INT);
-
-set mapred.min.split.size=536870912;
--- the query
-INSERT OVERWRITE TABLE q4_order_priority_tmp 
-select 
-  DISTINCT l_orderkey 
-from 
-  lineitem 
-where 
-  l_commitdate < l_receiptdate;
-INSERT OVERWRITE TABLE q4_order_priority 
-select o_orderpriority, count(1) as order_count 
-from 
-  orders o join q4_order_priority_tmp t 
-  on 
-o.o_orderkey = t.o_orderkey and o.o_orderdate >= '1993-07-01' and o.o_orderdate < '1993-10-01' 
-group by o_orderpriority 
-order by o_orderpriority;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive b/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive
deleted file mode 100644
index a975ce1..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q5_local_supplier_volume.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q5_local_supplier_volume;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the target table
-create table q5_local_supplier_volume (N_NAME STRING, REVENUE DOUBLE);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q5_local_supplier_volume 
-select 
-  n_name, sum(l_extendedprice * (1 - l_discount)) as revenue 
-from
-  customer c join
-    ( select n_name, l_extendedprice, l_discount, s_nationkey, o_custkey from orders o join
-      ( select n_name, l_extendedprice, l_discount, l_orderkey, s_nationkey from lineitem l join
-        ( select n_name, s_suppkey, s_nationkey from supplier s join
-          ( select n_name, n_nationkey 
-            from nation n join region r 
-            on n.n_regionkey = r.r_regionkey and r.r_name = 'ASIA'
-          ) n1 on s.s_nationkey = n1.n_nationkey
-        ) s1 on l.l_suppkey = s1.s_suppkey
-      ) l1 on l1.l_orderkey = o.o_orderkey and o.o_orderdate >= '1994-01-01' 
-              and o.o_orderdate < '1995-01-01'
-) o1 
-on c.c_nationkey = o1.s_nationkey and c.c_custkey = o1.o_custkey
-group by n_name 
-order by revenue desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive b/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive
deleted file mode 100644
index d8cb9b9..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q6_forecast_revenue_change.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q6_forecast_revenue_change;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-create table q6_forecast_revenue_change (revenue double);
-
--- the query
-insert overwrite table q6_forecast_revenue_change 
-select 
-  sum(l_extendedprice*l_discount) as revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-  and l_discount >= 0.05 and l_discount <= 0.07
-  and l_quantity < 24;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive b/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive
deleted file mode 100644
index 3dfb22a..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q7_volume_shipping.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q7_volume_shipping;
-DROP TABLE IF EXISTS q7_volume_shipping_tmp;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table q7_volume_shipping (supp_nation string, cust_nation string, l_year int, revenue double);
-create table q7_volume_shipping_tmp(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q7_volume_shipping_tmp
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY'
-    UNION ALL
-select 
-  n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey, 
-  n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n2.n_name = 'FRANCE' and n1.n_name = 'GERMANY'
-) a;
-
-insert overwrite table q7_volume_shipping 
-select 
-  supp_nation, cust_nation, l_year, sum(volume) as revenue
-from 
-  (
-    select
-      supp_nation, cust_nation, year(l_shipdate) as l_year, 
-      l_extendedprice * (1 - l_discount) as volume
-    from
-      q7_volume_shipping_tmp t join
-        (select l_shipdate, l_extendedprice, l_discount, c_nationkey, s_nationkey 
-         from supplier s join
-           (select l_shipdate, l_extendedprice, l_discount, l_suppkey, c_nationkey 
-            from customer c join
-              (select l_shipdate, l_extendedprice, l_discount, l_suppkey, o_custkey 
-               from orders o join lineitem l 
-               on 
-                 o.o_orderkey = l.l_orderkey and l.l_shipdate >= '1995-01-01' 
-                 and l.l_shipdate <= '1996-12-31'
-               ) l1 on c.c_custkey = l1.o_custkey
-            ) l2 on s.s_suppkey = l2.l_suppkey
-         ) l3 on l3.c_nationkey = t.c_nationkey and l3.s_nationkey = t.s_nationkey
-   ) shipping
-group by supp_nation, cust_nation, l_year
-order by supp_nation, cust_nation, l_year;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive b/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive
deleted file mode 100644
index 5e7baaa..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q8_national_market_share.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q8_national_market_share;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the result table
-create table q8_national_market_share(o_year string, mkt_share double);
-
--- the query
-insert overwrite table q8_national_market_share 
-select 
-  o_year, sum(case when nation = 'BRAZIL' then volume else 0.0 end) / sum(volume) as mkt_share
-from 
-  (
-select 
-  year(o_orderdate) as o_year, l_extendedprice * (1-l_discount) as volume, 
-  n2.n_name as nation
-    from
-      nation n2 join
-        (select o_orderdate, l_discount, l_extendedprice, s_nationkey 
-         from supplier s join
-          (select o_orderdate, l_discount, l_extendedprice, l_suppkey 
-           from part p join
-             (select o_orderdate, l_partkey, l_discount, l_extendedprice, l_suppkey 
-              from 
-                (select o_orderdate, o_orderkey 
-                 from orders o join
-                   (select c.c_custkey 
-                    from customer c join
-                      (select n1.n_nationkey 
-                       from nation n1 join region r
-                       on n1.n_regionkey = r.r_regionkey and r.r_name = 'AMERICA'
-                       ) n11 on c.c_nationkey = n11.n_nationkey
-                    ) c1 on c1.c_custkey = o.o_custkey
-                 ) o1 join lineitem l on l.l_orderkey = o1.o_orderkey and o1.o_orderdate >= '1995-01-01' 
-                         and o1.o_orderdate < '1996-12-31'
-              ) l1 on p.p_partkey = l1.l_partkey and p.p_type = 'ECONOMY ANODIZED STEEL'
-           ) p1 on s.s_suppkey = p1.l_suppkey
-        ) s1 on s1.s_nationkey = n2.n_nationkey
-  ) all_nation
-group by o_year
-order by o_year;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive b/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive
deleted file mode 100644
index 586779c..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/q9_product_type_profit.hive
+++ /dev/null
@@ -1,51 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q9_product_type_profit;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q9_product_type_profit (nation string, o_year string, sum_profit double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q9_product_type_profit
-select 
-  nation, o_year, sum(amount) as sum_profit
-from 
-  (
-select 
-  n_name as nation, year(o_orderdate) as o_year, 
-  l_extendedprice * (1 - l_discount) -  ps_supplycost * l_quantity as amount
-    from
-      orders o join
-      (select l_extendedprice, l_discount, l_quantity, l_orderkey, n_name, ps_supplycost 
-       from part p join
-         (select l_extendedprice, l_discount, l_quantity, l_partkey, l_orderkey, 
-                 n_name, ps_supplycost 
-          from partsupp ps join
-            (select l_suppkey, l_extendedprice, l_discount, l_quantity, l_partkey, 
-                    l_orderkey, n_name 
-             from
-               (select s_suppkey, n_name 
-                from nation n join supplier s on n.n_nationkey = s.s_nationkey
-               ) s1 join lineitem l on s1.s_suppkey = l.l_suppkey
-            ) l1 on ps.ps_suppkey = l1.l_suppkey and ps.ps_partkey = l1.l_partkey
-         ) l2 on p.p_name like '%green%' and p.p_partkey = l2.l_partkey
-     ) l3 on o.o_orderkey = l3.l_orderkey
-  )profit
-group by nation, o_year
-order by nation, o_year desc;
-
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive
deleted file mode 100644
index ce94ac6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u10_nestedloop_join.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u10_nestedloop_join;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table u10_nestedloop_join(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
--- the query
-insert overwrite table u10_nestedloop_join
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 where n1.n_nationkey > n2.n_nationkey
-) a;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive b/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive
deleted file mode 100644
index 1d5c312..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u1_group_by.hive
+++ /dev/null
@@ -1,12 +0,0 @@
-drop table IF EXISTS lineitem;
-
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, 
-L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, 
-L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, 
-L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS 
-TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
-select * from (select sum(abs(L_QUANTITY)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX))
-FROM lineitem WHERE L_SHIPDATE<='1998-09-02'  GROUP BY L_RETURNFLAG) T;
-
-drop table lineitem;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive b/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive
deleted file mode 100644
index 1cf0c36..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u2_select-project.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 < 20;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive b/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive
deleted file mode 100644
index 1c84ba8..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u3_union.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select * from (select (2*s_suppkey), s_address, s_nationkey,  s_name  FROM supplier where S_SUPPKEY*2 < 20 union all select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 > 50) t;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive
deleted file mode 100644
index c013fa6..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u4_join.hive
+++ /dev/null
@@ -1,14 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, 
-S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED
-BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-insert overwrite table result select s_suppkey, s_name, s_address, s_nationkey
-from supplier where S_SUPPKEY*2 < 20;
-
-select result.s_suppkey, supplier.s_phone, supplier.s_acctbal,
-supplier.s_comment from result join supplier on result.s_suppkey=supplier.s_suppkey;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive b/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive
deleted file mode 100644
index 2740bca..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u5_lateral_view.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create table supplier (S_SUPPKEY array<int>, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING);
-create table result (S_SUPPKEY int);
-
-select s_name, s_address, col1 from supplier LATERAL VIEW explode(s_suppkey) suppadd as col1;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive b/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive
deleted file mode 100644
index b268aff..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u6_limit.hive
+++ /dev/null
@@ -1,8 +0,0 @@
-drop table IF EXISTS orders;
-drop table IF EXISTS result;
-drop table IF EXISTS q_limit2;
-
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create table q_limit2(col1 int, col2 double, col3 string, col4 string);
-
-insert overwrite table q_limit2 select O_ORDERKEY, O_TOTALPRICE, O_ORDERDATE, O_CLERK from orders where O_TOTALPRICE<10000 order by o_totalprice limit 4;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive b/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive
deleted file mode 100644
index 2891c56..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u7_multi_join.hive
+++ /dev/null
@@ -1,9 +0,0 @@
-drop table IF EXISTS lineitem;
-drop table IF EXISTS orders;
-drop table IF EXISTS customer;
-
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
-select l_linenumber, o_orderkey, o_totalprice, o_orderdate, o_shippriority from  customer c join orders o  on c.c_custkey = o.o_custkey join lineitem l    on o.o_orderkey = l.l_orderkey  where c.c_custkey<5 and o.o_totalprice<30000;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive b/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive
deleted file mode 100644
index 247f2c1..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u8_non_mapred.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-select * FROM supplier;
diff --git a/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive b/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive
deleted file mode 100644
index 8d5d1cf..0000000
--- a/hivesterix/src/test/resources/optimizerts/queries/u9_order_by.hive
+++ /dev/null
@@ -1,7 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS result;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table result (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT);
-
-insert overwrite table result select s_suppkey, s_name, s_address, s_nationkey  FROM supplier where S_SUPPKEY*2 < 20 order by s_name;
diff --git a/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan b/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan
deleted file mode 100644
index 867bfaf..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/h11_share_scan.plan
+++ /dev/null
@@ -1,34 +0,0 @@
-write [%0->$$1, %0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  select (function-call: algebricks:lt, Args:[%0->$$1, 5])
-  -- STREAM_SELECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      replicate 
-      -- SPLIT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2] <- default.src
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    select (function-call: algebricks:gt, Args:[%0->$$1, 10])
-    -- STREAM_SELECT  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        replicate 
-        -- SPLIT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan []<-[$$1, $$2] <- default.src
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan b/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan
deleted file mode 100644
index 8bbfb61..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/h12_select_struct.plan
+++ /dev/null
@@ -1,10 +0,0 @@
-write [%0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    data-scan [$$2]<-[$$1, $$2] <- default.src
-    -- DATASOURCE_SCAN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        empty-tuple-source
-        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan b/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan
deleted file mode 100644
index 05b3718..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q10_returned_item.plan
+++ /dev/null
@@ -1,102 +0,0 @@
-write [%0->$$38, %0->$$39, %0->$$45, %0->$$40, %0->$$42, %0->$$43, %0->$$41, %0->$$44]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$38, $$39, $$45, $$40, $$42, $$43, $$41, $$44])
-  -- STREAM_PROJECT  |PARTITIONED|
-    limit 20
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      limit 20
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        exchange 
-        -- SORT_MERGE_EXCHANGE [$$45(DESC) ]  |PARTITIONED|
-          limit 20
-          -- STREAM_LIMIT  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (DESC, %0->$$45) 
-              -- STABLE_SORT [$$45(DESC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  group by ([$$38 := %0->$$48; $$39 := %0->$$49; $$40 := %0->$$50; $$41 := %0->$$51; $$42 := %0->$$52; $$43 := %0->$$53; $$44 := %0->$$54]) decor ([]) {
-                            aggregate [$$45] <- [function-call: hive:sum(FINAL), Args:[%0->$$47]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$48, $$49, $$50, $$51, $$52, $$53, $$54]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$48, $$49, $$50, $$51, $$52, $$53, $$54]  |PARTITIONED|
-                      group by ([$$48 := %0->$$21; $$49 := %0->$$22; $$50 := %0->$$26; $$51 := %0->$$25; $$52 := %0->$$18; $$53 := %0->$$23; $$54 := %0->$$28]) decor ([]) {
-                                aggregate [$$47] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]]
-                                -- AGGREGATE  |LOCAL|
-                                  nested tuple source
-                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             }
-                      -- EXTERNAL_GROUP_BY[$$21, $$22, $$26, $$25, $$18, $$23, $$28]  |LOCAL|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$21, $$22, $$23, $$25, $$26, $$28, $$18, $$6, $$7])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$29])
-                              -- HYBRID_HASH_JOIN [$$1][$$29]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$6, $$7])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:eq, Args:[%0->$$9, R])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$1, $$6, $$7, $$9]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$29]  |PARTITIONED|
-                                  project ([$$29, $$21, $$22, $$23, $$25, $$26, $$28, $$18])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$17, %0->$$24])
-                                      -- HYBRID_HASH_JOIN [$$17][$$24]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                                          data-scan [$$17, $$18]<-[$$17, $$18, $$19, $$20] <- default.nation
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
-                                          project ([$$24, $$21, $$22, $$23, $$25, $$26, $$28, $$29])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$30, %0->$$21])
-                                              -- HYBRID_HASH_JOIN [$$30][$$21]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$30]  |PARTITIONED|
-                                                  project ([$$30, $$29])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$33, 1994-01-01], function-call: algebricks:ge, Args:[%0->$$33, 1993-10-01], function-call: algebricks:lt, Args:[%0->$$33, 1994-01-01]])
-                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                      exchange 
-                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan [$$33, $$29, $$30]<-[$$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36, $$37] <- default.orders
-                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source
-                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-                                                  data-scan [$$21, $$22, $$23, $$24, $$25, $$26, $$28]<-[$$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28] <- default.customer
-                                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source
-                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan b/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan
deleted file mode 100644
index 70ad7ee..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q11_important_stock.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$1]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$4, %0->$$3]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$1]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$1, $$3, $$4])
-              -- STREAM_PROJECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$6])
-                  -- HYBRID_HASH_JOIN [$$2][$$6]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                      data-scan [$$2, $$1, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5] <- default.partsupp
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$6]  |PARTITIONED|
-                      project ([$$6])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$13])
-                          -- HYBRID_HASH_JOIN [$$9][$$13]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                              data-scan [$$9, $$6]<-[$$6, $$7, $$8, $$9, $$10, $$11, $$12] <- default.supplier
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                              project ([$$13])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                select (function-call: algebricks:eq, Args:[%0->$$14, GERMANY])
-                                -- STREAM_SELECT  |PARTITIONED|
-                                  exchange 
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    data-scan [$$13, $$14]<-[$$13, $$14, $$15, $$16] <- default.nation
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$3] <- [function-call: hive:sum(FINAL), Args:[%0->$$5]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$5] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$2]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2] <- default.q11_part_tmp
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2, %0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$3(DESC) ]  |PARTITIONED|
-    order (DESC, %0->$$3) 
-    -- STABLE_SORT [$$3(DESC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$2, $$3])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$3, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 1.0E-4]], true])
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$1] <- default.q11_sum_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$2, $$3]<-[$$2, $$3] <- default.q11_part_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan b/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan
deleted file mode 100644
index 5c240e2..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q12_shipping.plan
+++ /dev/null
@@ -1,58 +0,0 @@
-write [%0->$$26, %0->$$29, %0->$$30]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$26, $$29, $$30])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$29, $$30] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToDouble, Args:[%0->$$27], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToDouble, Args:[%0->$$28]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$26(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$26) 
-        -- STABLE_SORT [$$26(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$26 := %0->$$34]) decor ([]) {
-                      aggregate [$$27, $$28] <- [function-call: hive:sum(FINAL), Args:[%0->$$32], function-call: hive:sum(FINAL), Args:[%0->$$33]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$34]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                group by ([$$34 := %0->$$24]) decor ([]) {
-                          aggregate [$$32, $$33] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$6, 1-URGENT], function-call: algebricks:eq, Args:[%0->$$6, 2-HIGH]], 1, 0]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:and, Args:[function-call: algebricks:neq, Args:[%0->$$6, 1-URGENT], function-call: algebricks:neq, Args:[%0->$$6, 2-HIGH]], 1, 0]]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$24]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$6, $$24])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$10, %0->$$1])
-                        -- HYBRID_HASH_JOIN [$$10][$$1]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                            project ([$$10, $$24])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$22, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$22, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$20, %0->$$21], function-call: algebricks:lt, Args:[%0->$$21, %0->$$22], function-call: algebricks:lt, Args:[%0->$$20, %0->$$21], function-call: algebricks:ge, Args:[%0->$$22, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$22, 1995-01-01], function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$24, MAIL], function-call: algebricks:eq, Args:[%0->$$24, SHIP]], function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$24, MAIL], function-call: algebricks:eq, Args:[%0->$$24, SHIP]]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$21, $$20, $$22, $$24, $$10]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            data-scan [$$1, $$6]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan b/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan
deleted file mode 100644
index 19bcd24..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q13_customer_distribution.plan
+++ /dev/null
@@ -1,80 +0,0 @@
-write [%0->$$22, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$22, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$22, $$23] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$20], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$21]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$21(DESC), $$20(DESC) ]  |PARTITIONED|
-        order (DESC, %0->$$21) (DESC, %0->$$20) 
-        -- STABLE_SORT [$$21(DESC), $$20(DESC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$20 := %0->$$28]) decor ([]) {
-                      aggregate [$$21] <- [function-call: hive:count(FINAL), Args:[%0->$$27]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$28]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
-                group by ([$$28 := %0->$$19]) decor ([]) {
-                          aggregate [$$27] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$19]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$19])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        group by ([$$18 := %0->$$26]) decor ([]) {
-                                  aggregate [$$19] <- [function-call: hive:count(FINAL), Args:[%0->$$25]]
-                                  -- AGGREGATE  |LOCAL|
-                                    nested tuple source
-                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-                               }
-                        -- EXTERNAL_GROUP_BY[$$26]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                            group by ([$$26 := %0->$$10]) decor ([]) {
-                                      aggregate [$$25] <- [function-call: hive:count(PARTIAL1), Args:[%0->$$1]]
-                                      -- AGGREGATE  |LOCAL|
-                                        nested tuple source
-                                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                   }
-                            -- EXTERNAL_GROUP_BY[$$10]  |LOCAL|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                project ([$$10, $$1])
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  exchange 
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    left outer join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$10])
-                                    -- HYBRID_HASH_JOIN [$$10][$$2]  |PARTITIONED|
-                                      exchange 
-                                      -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                                        data-scan [$$10]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17] <- default.customer
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                      exchange 
-                                      -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                                        project ([$$2, $$1])
-                                        -- STREAM_PROJECT  |PARTITIONED|
-                                          select (function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$9, %special%requests%]])
-                                          -- STREAM_SELECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              data-scan [$$1, $$2, $$9]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan b/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan
deleted file mode 100644
index 21b90bd..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q14_promotion_effect.plan
+++ /dev/null
@@ -1,54 +0,0 @@
-write [%0->$$28]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$28])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$28] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[100.0, %0->$$26], %0->$$27]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$26, $$27] <- [function-call: hive:sum(FINAL), Args:[%0->$$30], function-call: hive:sum(FINAL), Args:[%0->$$31]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-            group by ([]) decor ([]) {
-                      aggregate [$$30, $$31] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, PROMO%], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]], 0.0]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]]]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$5, $$15, $$16])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$1])
-                    -- HYBRID_HASH_JOIN [$$11][$$1]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                        project ([$$11, $$15, $$16])
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$20, 1995-10-01], function-call: algebricks:ge, Args:[%0->$$20, 1995-09-01], function-call: algebricks:lt, Args:[%0->$$20, 1995-10-01]])
-                          -- STREAM_SELECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$16, $$20, $$11, $$15]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                        data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan b/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan
deleted file mode 100644
index a5bd27a..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q15_top_supplier.plan
+++ /dev/null
@@ -1,110 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$3]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$3]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$3, $$6, $$7])
-              -- STREAM_PROJECT  |PARTITIONED|
-                select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1996-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1996-04-01], function-call: algebricks:ge, Args:[%0->$$11, 1996-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1996-04-01]])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$3, $$6, $$7, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$3] <- [function-call: hive:max(FINAL), Args:[%0->$$5]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- PRE_CLUSTERED_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$5] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$2]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2] <- default.revenue
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2, %0->$$3, %0->$$4, %0->$$6, %0->$$10]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$2(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$2) 
-    -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$2, $$3, $$4, $$6, $$10])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$10])
-            -- HYBRID_HASH_JOIN [$$1][$$10]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                data-scan []<-[$$1] <- default.max_revenue
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                project ([$$10, $$2, $$3, $$4, $$6])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$2])
-                    -- HYBRID_HASH_JOIN [$$9][$$2]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                        data-scan []<-[$$9, $$10] <- default.revenue
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                        data-scan [$$2, $$3, $$4, $$6]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.supplier
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan b/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan
deleted file mode 100644
index 9835346..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q16_parts_supplier_relationship.plan
+++ /dev/null
@@ -1,98 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    select (function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$7, %Customer%Complaints%]])
-    -- STREAM_SELECT  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        data-scan [$$1, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-        -- DATASOURCE_SCAN  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            empty-tuple-source
-            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$5, %0->$$6, %0->$$7, %0->$$12]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$5, $$6, $$7, $$12])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$12])
-      -- HYBRID_HASH_JOIN [$$1][$$12]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan []<-[$$1] <- default.supplier_tmp
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-          project ([$$12, $$5, $$6, $$7])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$2, %0->$$11])
-              -- HYBRID_HASH_JOIN [$$2][$$11]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                  select (function-call: algebricks:and, Args:[function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$6, MEDIUM POLISHED%]], function-call: algebricks:neq, Args:[%0->$$5, Brand#45], function-call: algebricks:not, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$6, MEDIUM POLISHED%]]])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan [$$2, $$5, $$6, $$7]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10] <- default.part
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                  data-scan [$$11, $$12]<-[$$11, $$12, $$13, $$14, $$15] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$10, %0->$$11, %0->$$12, %0->$$14]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$10, $$11, $$12, $$14])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$14] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$13]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$13(DESC), $$10(ASC), $$11(ASC), $$12(ASC) ]  |PARTITIONED|
-        order (DESC, %0->$$13) (ASC, %0->$$10) (ASC, %0->$$11) (ASC, %0->$$12) 
-        -- STABLE_SORT [$$13(DESC), $$10(ASC), $$11(ASC), $$12(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$10 := %0->$$5; $$11 := %0->$$6; $$12 := %0->$$7]) decor ([]) {
-                      aggregate [$$13] <- [function-call: hive:count(COMPLETE), Args:[%0->$$8]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$5, $$6, $$7]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$5, $$6, $$7]  |PARTITIONED|
-                group by ([$$5 := %0->$$1; $$6 := %0->$$2; $$7 := %0->$$3; $$8 := %0->$$4]) decor ([]) {
-                          aggregate [] <- []
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$1, $$2, $$3, $$4]  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[%0->$$3, 49], function-call: algebricks:eq, Args:[%0->$$3, 14]], function-call: algebricks:eq, Args:[%0->$$3, 23]], function-call: algebricks:eq, Args:[%0->$$3, 45]], function-call: algebricks:eq, Args:[%0->$$3, 19]], function-call: algebricks:eq, Args:[%0->$$3, 3]], function-call: algebricks:eq, Args:[%0->$$3, 36]], function-call: algebricks:eq, Args:[%0->$$3, 9]])
-                    -- STREAM_SELECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan []<-[$$1, $$2, $$3, $$4] <- default.q16_tmp
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan b/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan
deleted file mode 100644
index a827007..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q17_small_quantity_order_revenue.plan
+++ /dev/null
@@ -1,104 +0,0 @@
-write [%0->$$17, %0->$$19]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$19])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$19] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[0.2, %0->$$18]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$17 := %0->$$22]) decor ([]) {
-                  aggregate [$$18] <- [function-call: hive:avg(FINAL), Args:[%0->$$21]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[$$22]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-            group by ([$$22 := %0->$$2]) decor ([]) {
-                      aggregate [$$21] <- [function-call: hive:avg(PARTIAL1), Args:[%0->$$5]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$2]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$2, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$29]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$29])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$29] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[%0->$$28, 7.0]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$28] <- [function-call: hive:sum(FINAL), Args:[%0->$$31]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-            group by ([]) decor ([]) {
-                      aggregate [$$31] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$17]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$17])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:lt, Args:[%0->$$16, %0->$$2])
-                  -- STREAM_SELECT  |UNPARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:eq, Args:[%0->$$13, %0->$$1])
-                      -- HYBRID_HASH_JOIN [$$13][$$1]  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$13, $$16, $$17])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$13, %0->$$3])
-                              -- HYBRID_HASH_JOIN [$$13][$$3]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                                  data-scan [$$13, $$16, $$17]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$3]  |PARTITIONED|
-                                  project ([$$3])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$9, MED BOX], function-call: algebricks:eq, Args:[%0->$$6, Brand#23], function-call: algebricks:eq, Args:[%0->$$9, MED BOX]])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$3, $$6, $$9]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.part
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                          data-scan [$$1, $$2]<-[$$1, $$2] <- default.lineitem_tmp
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan b/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan
deleted file mode 100644
index ea47ea0..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q18_large_volume_customer.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$17, %0->$$18]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$21]) decor ([]) {
-                aggregate [$$18] <- [function-call: hive:sum(FINAL), Args:[%0->$$20]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$21]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-          group by ([$$21 := %0->$$1]) decor ([]) {
-                    aggregate [$$20] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$1]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-              -- DATASOURCE_SCAN  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  empty-tuple-source
-                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$36, %0->$$37, %0->$$38, %0->$$39, %0->$$40, %0->$$41]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$36, $$37, $$38, $$39, $$40, $$41])
-  -- STREAM_PROJECT  |PARTITIONED|
-    limit 100
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      limit 100
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        exchange 
-        -- SORT_MERGE_EXCHANGE [$$40(DESC), $$39(ASC) ]  |PARTITIONED|
-          limit 100
-          -- STREAM_LIMIT  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (DESC, %0->$$40) (ASC, %0->$$39) 
-              -- STABLE_SORT [$$40(DESC), $$39(ASC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  group by ([$$36 := %0->$$44; $$37 := %0->$$45; $$38 := %0->$$46; $$39 := %0->$$47; $$40 := %0->$$48]) decor ([]) {
-                            aggregate [$$41] <- [function-call: hive:sum(FINAL), Args:[%0->$$43]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$44, $$45, $$46, $$47, $$48]  |PARTITIONED|
-                      group by ([$$44 := %0->$$20; $$45 := %0->$$19; $$46 := %0->$$27; $$47 := %0->$$31; $$48 := %0->$$30]) decor ([]) {
-                                aggregate [$$43] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$7]]
-                                -- AGGREGATE  |LOCAL|
-                                  nested tuple source
-                                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-                             }
-                      -- EXTERNAL_GROUP_BY[$$20, $$19, $$27, $$31, $$30]  |LOCAL|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          project ([$$19, $$20, $$27, $$30, $$31, $$7])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$27, %0->$$1])
-                              -- HYBRID_HASH_JOIN [$$1][$$27]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$7])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$3, %0->$$1])
-                                      -- HYBRID_HASH_JOIN [$$3][$$1]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$3]  |PARTITIONED|
-                                          data-scan [$$3, $$7]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18] <- default.lineitem
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                          project ([$$1])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            select (function-call: algebricks:gt, Args:[%0->$$2, 300])
-                                            -- STREAM_SELECT  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                data-scan []<-[$$1, $$2] <- default.q18_tmp
-                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source
-                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
-                                  project ([$$27, $$19, $$20, $$30, $$31])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$28, %0->$$19])
-                                      -- HYBRID_HASH_JOIN [$$28][$$19]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
-                                          data-scan [$$28, $$27, $$30, $$31]<-[$$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35] <- default.orders
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$19]  |PARTITIONED|
-                                          data-scan [$$19, $$20]<-[$$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26] <- default.customer
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan b/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan
deleted file mode 100644
index 1827729..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q19_discounted_revenue.plan
+++ /dev/null
@@ -1,46 +0,0 @@
-write [%0->$$26]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$26] <- [function-call: hive:sum(FINAL), Args:[%0->$$28]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$28] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$15, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$16]]]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$15, $$16])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#12], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, SM CASE||SM BOX||SM PACK||SM PKG]], function-call: algebricks:ge, Args:[%0->$$14, 1]], function-call: algebricks:le, Args:[%0->$$14, 11]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 5]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]], function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#23], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, MED BAG||MED BOX||MED PKG||MED PACK]], function-call: algebricks:ge, Args:[%0->$$14, 10]], function-call: algebricks:le, Args:[%0->$$14, 20]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 10]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]]], function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$4, Brand#34], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$7, LG CASE||LG BOX||LG PACK||LG PKG]], function-call: algebricks:ge, Args:[%0->$$14, 20]], function-call: algebricks:le, Args:[%0->$$14, 30]], function-call: algebricks:ge, Args:[%0->$$6, 1]], function-call: algebricks:le, Args:[%0->$$6, 15]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFRegExp, Args:[%0->$$24, AIR||AIR REG]], function-call: algebricks:eq, Args:[%0->$$23, DELIVER IN PERSON]]])
-              -- STREAM_SELECT  |UNPARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$1])
-                  -- HYBRID_HASH_JOIN [$$11][$$1]  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                      data-scan [$$11, $$14, $$15, $$16, $$23, $$24]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25] <- default.lineitem
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                    exchange 
-                    -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                      data-scan [$$1, $$4, $$6, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan b/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan
deleted file mode 100644
index 0e9c90f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q1_pricing_summary_report.plan
+++ /dev/null
@@ -1,42 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20, %0->$$21, %0->$$22, %0->$$23, %0->$$24, %0->$$25, %0->$$27]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$27])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$27] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$26]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$17(ASC), $$18(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$17) (ASC, %0->$$18) 
-        -- STABLE_SORT [$$17(ASC), $$18(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$17 := %0->$$37; $$18 := %0->$$38]) decor ([]) {
-                      aggregate [$$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26] <- [function-call: hive:sum(FINAL), Args:[%0->$$29], function-call: hive:sum(FINAL), Args:[%0->$$30], function-call: hive:sum(FINAL), Args:[%0->$$31], function-call: hive:sum(FINAL), Args:[%0->$$32], function-call: hive:avg(FINAL), Args:[%0->$$33], function-call: hive:avg(FINAL), Args:[%0->$$34], function-call: hive:avg(FINAL), Args:[%0->$$35], function-call: hive:count(FINAL), Args:[%0->$$36]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$37, $$38]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$37, $$38]  |PARTITIONED|
-                group by ([$$37 := %0->$$9; $$38 := %0->$$10]) decor ([]) {
-                          aggregate [$$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5], function-call: hive:sum(PARTIAL1), Args:[%0->$$6], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPPlus, Args:[1, %0->$$8]]], function-call: hive:avg(PARTIAL1), Args:[%0->$$5], function-call: hive:avg(PARTIAL1), Args:[%0->$$6], function-call: hive:avg(PARTIAL1), Args:[%0->$$7], function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$9, $$10]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$9, $$10, $$5, $$6, $$7, $$8])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:le, Args:[%0->$$11, 1998-09-02])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$5, $$6, $$7, $$8, $$9, $$10, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan b/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan
deleted file mode 100644
index eddfca5..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q20_potential_part_promotion.plan
+++ /dev/null
@@ -1,178 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$2, forest%])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$17, %0->$$18, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$17, $$18, $$20])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$20] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[0.5, %0->$$19]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$17 := %0->$$23; $$18 := %0->$$24]) decor ([]) {
-                  aggregate [$$19] <- [function-call: hive:sum(FINAL), Args:[%0->$$22]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[$$23, $$24]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$23, $$24]  |PARTITIONED|
-            group by ([$$23 := %0->$$2; $$24 := %0->$$3]) decor ([]) {
-                      aggregate [$$22] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$5]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$2, $$3]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$2, $$3, $$5])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01]])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      data-scan [$$2, $$3, $$5, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                      -- DATASOURCE_SCAN  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          empty-tuple-source
-                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$6, %0->$$7, %0->$$3]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$7, $$3])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$1, %0->$$5], function-call: algebricks:eq, Args:[%0->$$2, %0->$$6]])
-      -- HYBRID_HASH_JOIN [$$1, $$2][$$5, $$6]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1, $$2]  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3] <- default.q20_tmp2
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$5, $$6]  |PARTITIONED|
-          project ([$$5, $$6, $$7])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$5])
-              -- HYBRID_HASH_JOIN [$$4][$$5]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                  data-scan []<-[$$4] <- default.q20_tmp1
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                  data-scan [$$5, $$6, $$7]<-[$$5, $$6, $$7, $$8, $$9] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:gt, Args:[%0->$$2, %0->$$3])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan []<-[$$1, $$2, $$3] <- default.q20_tmp3
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$3(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$3) 
-    -- STABLE_SORT [$$3(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$3, $$4])
-        -- STREAM_PROJECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$2])
-            -- HYBRID_HASH_JOIN [$$1][$$2]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                data-scan []<-[$$1] <- default.q20_tmp4
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                project ([$$2, $$3, $$4])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:eq, Args:[%0->$$9, %0->$$5])
-                    -- HYBRID_HASH_JOIN [$$9][$$5]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                        project ([$$9])
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          select (function-call: algebricks:eq, Args:[%0->$$10, CANADA])
-                          -- STREAM_SELECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                        data-scan [$$5, $$2, $$3, $$4]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.supplier
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan b/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan
deleted file mode 100644
index cc47cf3..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q21_suppliers_who_kept_orders_waiting.plan
+++ /dev/null
@@ -1,224 +0,0 @@
-write [%0->$$21, %0->$$24, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$21, $$24, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$24] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$22]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$21 := %0->$$17]) decor ([]) {
-                  aggregate [$$22, $$23] <- [function-call: hive:count(COMPLETE), Args:[%0->$$18], function-call: hive:max(FINAL), Args:[%0->$$20]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[$$17]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$17(ASC)] HASH:[$$17]  |PARTITIONED|
-            group by ([$$17 := %0->$$1; $$18 := %0->$$3]) decor ([]) {
-                      aggregate [$$20] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$3]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- PRE_CLUSTERED_GROUP_BY[$$1, $$3]  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (ASC, %0->$$1) (ASC, %0->$$3) 
-                -- STABLE_SORT [$$1(ASC), $$3(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$3]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$21, %0->$$24, %0->$$23]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$21, $$24, $$23])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$24] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$22]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        group by ([$$21 := %0->$$17]) decor ([]) {
-                  aggregate [$$22, $$23] <- [function-call: hive:count(COMPLETE), Args:[%0->$$18], function-call: hive:max(FINAL), Args:[%0->$$20]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- PRE_CLUSTERED_GROUP_BY[$$17]  |PARTITIONED|
-          exchange 
-          -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$17(ASC)] HASH:[$$17]  |PARTITIONED|
-            group by ([$$17 := %0->$$1; $$18 := %0->$$3]) decor ([]) {
-                      aggregate [$$20] <- [function-call: hive:max(PARTIAL1), Args:[%0->$$3]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- PRE_CLUSTERED_GROUP_BY[$$1, $$3]  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (ASC, %0->$$1) (ASC, %0->$$3) 
-                -- STABLE_SORT [$$1(ASC), $$3(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$1, $$3])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:gt, Args:[%0->$$13, %0->$$12])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$1, $$3, $$12, $$13]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$43, %0->$$45]
--- SINK_WRITE  |UNPARTITIONED|
-  project ([$$43, $$45])
-  -- STREAM_PROJECT  |UNPARTITIONED|
-    assign [$$45] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$44]]
-    -- ASSIGN  |UNPARTITIONED|
-      limit 100
-      -- STREAM_LIMIT  |UNPARTITIONED|
-        limit 100
-        -- STREAM_LIMIT  |UNPARTITIONED|
-          exchange 
-          -- SORT_MERGE_EXCHANGE [$$44(DESC), $$43(ASC) ]  |PARTITIONED|
-            limit 100
-            -- STREAM_LIMIT  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-                order (DESC, %0->$$44) (ASC, %0->$$43) 
-                -- STABLE_SORT [$$44(DESC), $$43(ASC)]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    group by ([$$43 := %0->$$48]) decor ([]) {
-                              aggregate [$$44] <- [function-call: hive:count(FINAL), Args:[%0->$$47]]
-                              -- AGGREGATE  |LOCAL|
-                                nested tuple source
-                                -- NESTED_TUPLE_SOURCE  |LOCAL|
-                           }
-                    -- EXTERNAL_GROUP_BY[$$48]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$48]  |PARTITIONED|
-                        group by ([$$48 := %0->$$37]) decor ([]) {
-                                  aggregate [$$47] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                                  -- AGGREGATE  |LOCAL|
-                                    nested tuple source
-                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-                               }
-                        -- EXTERNAL_GROUP_BY[$$37]  |LOCAL|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            project ([$$37])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:or, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull, Args:[%0->$$2], function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$2, 1], function-call: algebricks:eq, Args:[%0->$$18, %0->$$3]]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left outer join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$1])
-                                  -- HYBRID_HASH_JOIN [$$4][$$1]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                      project ([$$37, $$4, $$18])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        select (function-call: algebricks:or, Args:[function-call: algebricks:gt, Args:[%0->$$5, 1], function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$5, 1], function-call: algebricks:neq, Args:[%0->$$18, %0->$$6]]])
-                                        -- STREAM_SELECT  |UNPARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            join (function-call: algebricks:eq, Args:[%0->$$16, %0->$$4])
-                                            -- HYBRID_HASH_JOIN [$$16][$$4]  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                project ([$$37, $$16, $$18])
-                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    join (function-call: algebricks:eq, Args:[%0->$$16, %0->$$7])
-                                                    -- HYBRID_HASH_JOIN [$$16][$$7]  |PARTITIONED|
-                                                      exchange 
-                                                      -- HASH_PARTITION_EXCHANGE [$$16]  |PARTITIONED|
-                                                        project ([$$37, $$16, $$18])
-                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$36])
-                                                            -- HYBRID_HASH_JOIN [$$18][$$36]  |PARTITIONED|
-                                                              exchange 
-                                                              -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                                                                project ([$$16, $$18])
-                                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                                  select (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$28, %0->$$27], function-call: algebricks:gt, Args:[%0->$$28, %0->$$27]])
-                                                                  -- STREAM_SELECT  |PARTITIONED|
-                                                                    exchange 
-                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      data-scan [$$16, $$18, $$27, $$28]<-[$$16, $$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31] <- default.lineitem
-                                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                          empty-tuple-source
-                                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                              exchange 
-                                                              -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                                                                project ([$$36, $$37])
-                                                                -- STREAM_PROJECT  |PARTITIONED|
-                                                                  exchange 
-                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    join (function-call: algebricks:eq, Args:[%0->$$39, %0->$$32])
-                                                                    -- HYBRID_HASH_JOIN [$$39][$$32]  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- HASH_PARTITION_EXCHANGE [$$39]  |PARTITIONED|
-                                                                        data-scan [$$39, $$36, $$37]<-[$$36, $$37, $$38, $$39, $$40, $$41, $$42] <- default.supplier
-                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange 
-                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source
-                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- HASH_PARTITION_EXCHANGE [$$32]  |PARTITIONED|
-                                                                        project ([$$32])
-                                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                                          select (function-call: algebricks:eq, Args:[%0->$$33, SAUDI ARABIA])
-                                                                          -- STREAM_SELECT  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              data-scan [$$32, $$33]<-[$$32, $$33, $$34, $$35] <- default.nation
-                                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                  empty-tuple-source
-                                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                      exchange 
-                                                      -- HASH_PARTITION_EXCHANGE [$$7]  |PARTITIONED|
-                                                        project ([$$7])
-                                                        -- STREAM_PROJECT  |PARTITIONED|
-                                                          select (function-call: algebricks:eq, Args:[%0->$$9, F])
-                                                          -- STREAM_SELECT  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              data-scan [$$7, $$9]<-[$$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15] <- default.orders
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                              exchange 
-                                              -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                                data-scan [$$4, $$5, $$6]<-[$$4, $$5, $$6] <- default.q21_tmp1
-                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                  exchange 
-                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                    empty-tuple-source
-                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                      data-scan [$$1, $$2, $$3]<-[$$1, $$2, $$3] <- default.q21_tmp2
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan b/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan
deleted file mode 100644
index 591576b..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q22_global_sales_opportunity.plan
+++ /dev/null
@@ -1,136 +0,0 @@
-write [%0->$$6, %0->$$1, %0->$$9]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$1, $$9])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$9] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2]]
-    -- ASSIGN  |PARTITIONED|
-      select (function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:or, Args:[function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 13], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 31]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 23]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 29]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 30]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 18]], function-call: algebricks:eq, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFSubstr, Args:[%0->$$5, 1, 2], 17]])
-      -- STREAM_SELECT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.customer
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$4] <- [function-call: hive:avg(FINAL), Args:[%0->$$6]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$6] <- [function-call: hive:avg(PARTIAL1), Args:[%0->$$1]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            select (function-call: algebricks:gt, Args:[%0->$$1, 0.0])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$1]<-[$$1, $$2, $$3] <- default.q22_customer_tmp
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$2])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$2) 
-        -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-            data-scan [$$2]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$6, %0->$$9, %0->$$8]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$9, $$8])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$9] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$7]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$6(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$6) 
-        -- STABLE_SORT [$$6(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$6 := %0->$$13]) decor ([]) {
-                      aggregate [$$7, $$8] <- [function-call: hive:count(FINAL), Args:[%0->$$11], function-call: hive:sum(FINAL), Args:[%0->$$12]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$13]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$13]  |PARTITIONED|
-                group by ([$$13 := %0->$$5]) decor ([]) {
-                          aggregate [$$11, $$12] <- [function-call: hive:count(PARTIAL1), Args:[1], function-call: hive:sum(PARTIAL1), Args:[%0->$$3]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$5]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$5, $$3])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$3, %0->$$1], true])
-                        -- NESTED_LOOP  |PARTITIONED|
-                          exchange 
-                          -- BROADCAST_EXCHANGE  |PARTITIONED|
-                            project ([$$5, $$3])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNull, Args:[%0->$$2])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  left outer join (function-call: algebricks:eq, Args:[%0->$$4, %0->$$2])
-                                  -- HYBRID_HASH_JOIN [$$4][$$2]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$4]  |PARTITIONED|
-                                      data-scan []<-[$$3, $$4, $$5] <- default.q22_customer_tmp
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                                      data-scan [$$2]<-[$$2] <- default.q22_orders_tmp
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            data-scan [$$1]<-[$$1] <- default.q22_customer_tmp1
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan b/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan
deleted file mode 100644
index 151f34d..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q2_minimum_cost_supplier.plan
+++ /dev/null
@@ -1,156 +0,0 @@
-write [%0->$$20, %0->$$16, %0->$$26, %0->$$1, %0->$$13, %0->$$3, %0->$$17, %0->$$19, %0->$$21]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$20, $$16, $$26, $$1, $$13, $$3, $$17, $$19, $$21])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$10])
-      -- HYBRID_HASH_JOIN [$$1][$$10]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          project ([$$1, $$3])
-          -- STREAM_PROJECT  |PARTITIONED|
-            select (function-call: algebricks:and, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, %BRASS], function-call: algebricks:eq, Args:[%0->$$6, 15], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$5, %BRASS]])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan [$$1, $$3, $$5, $$6]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.part
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-          project ([$$10, $$16, $$17, $$19, $$20, $$21, $$26, $$13])
-          -- STREAM_PROJECT  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              join (function-call: algebricks:eq, Args:[%0->$$11, %0->$$15])
-              -- HYBRID_HASH_JOIN [$$11][$$15]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$11]  |PARTITIONED|
-                  data-scan [$$11, $$10, $$13]<-[$$10, $$11, $$12, $$13, $$14] <- default.partsupp
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$15]  |PARTITIONED|
-                  project ([$$15, $$16, $$17, $$19, $$20, $$21, $$26])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$25])
-                      -- HYBRID_HASH_JOIN [$$18][$$25]  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                          data-scan []<-[$$15, $$16, $$17, $$18, $$19, $$20, $$21] <- default.supplier
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                          project ([$$25, $$26])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$27])
-                              -- HYBRID_HASH_JOIN [$$22][$$27]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                  project ([$$22])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:eq, Args:[%0->$$23, EUROPE])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$23, $$22]<-[$$22, $$23, $$24] <- default.region
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$27]  |PARTITIONED|
-                                  data-scan [$$27, $$25, $$26]<-[$$25, $$26, $$27, $$28] <- default.nation
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$10, %0->$$11]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$10, $$11])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$10 := %0->$$14]) decor ([]) {
-                aggregate [$$11] <- [function-call: hive:min(FINAL), Args:[%0->$$13]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- PRE_CLUSTERED_GROUP_BY[$$14]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$14(ASC)] HASH:[$$14]  |PARTITIONED|
-          group by ([$$14 := %0->$$4]) decor ([]) {
-                    aggregate [$$13] <- [function-call: hive:min(PARTIAL1), Args:[%0->$$5]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- PRE_CLUSTERED_GROUP_BY[$$4]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-              order (ASC, %0->$$4) 
-              -- STABLE_SORT [$$4(ASC)]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$4, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.q2_minimum_cost_supplier_tmp1
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$3, %0->$$4, %0->$$5, %0->$$6, %0->$$8, %0->$$9, %0->$$10, %0->$$11]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 100
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 100
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$3(DESC), $$5(ASC), $$4(ASC), $$6(ASC) ]  |PARTITIONED|
-        limit 100
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (DESC, %0->$$3) (ASC, %0->$$5) (ASC, %0->$$4) (ASC, %0->$$6) 
-            -- STABLE_SORT [$$3(DESC), $$5(ASC), $$4(ASC), $$6(ASC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$3, $$4, $$5, $$6, $$8, $$9, $$10, $$11])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$1, %0->$$6], function-call: algebricks:eq, Args:[%0->$$2, %0->$$7]])
-                    -- HYBRID_HASH_JOIN [$$1, $$2][$$6, $$7]  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$1, $$2]  |PARTITIONED|
-                        data-scan []<-[$$1, $$2] <- default.q2_minimum_cost_supplier_tmp2
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                      exchange 
-                      -- HASH_PARTITION_EXCHANGE [$$6, $$7]  |PARTITIONED|
-                        data-scan [$$6, $$7, $$3, $$4, $$5, $$8, $$9, $$10, $$11]<-[$$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.q2_minimum_cost_supplier_tmp1
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan b/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan
deleted file mode 100644
index a1b8e42..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q3_shipping_priority.plan
+++ /dev/null
@@ -1,70 +0,0 @@
-write [%0->$$1, %0->$$34, %0->$$29, %0->$$32]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 10
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 10
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$34(DESC) ]  |PARTITIONED|
-        limit 10
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (DESC, %0->$$34) 
-            -- STABLE_SORT [$$34(DESC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$1, $$34, $$29, $$32])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  assign [$$34] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]]]
-                  -- ASSIGN  |PARTITIONED|
-                    project ([$$29, $$32, $$1, $$6, $$7])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$25])
-                        -- HYBRID_HASH_JOIN [$$1][$$25]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            project ([$$1, $$6, $$7])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:lt, Args:[%0->$$4, 3])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$1, $$4, $$6, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                            project ([$$25, $$29, $$32])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$17])
-                                -- HYBRID_HASH_JOIN [$$26][$$17]  |PARTITIONED|
-                                  exchange 
-                                  -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                                    data-scan [$$26, $$25, $$29, $$32]<-[$$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.orders
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        empty-tuple-source
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                  exchange 
-                                  -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                                    project ([$$17])
-                                    -- STREAM_PROJECT  |PARTITIONED|
-                                      select (function-call: algebricks:eq, Args:[%0->$$23, BUILDING])
-                                      -- STREAM_SELECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          data-scan [$$17, $$23]<-[$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24] <- default.customer
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan b/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan
deleted file mode 100644
index 435fd7c..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q4_order_priority.plan
+++ /dev/null
@@ -1,82 +0,0 @@
-write [%0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    distinct ([%0->$$1])
-    -- PRE_SORTED_DISTINCT_BY  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-        order (ASC, %0->$$1) 
-        -- STABLE_SORT [$$1(ASC)]  |LOCAL|
-          exchange 
-          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-            project ([$$1])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:lt, Args:[%0->$$12, %0->$$13])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$1, $$12, $$13]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$11, %0->$$13]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$11, $$13])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$13] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFToInteger, Args:[%0->$$12]]
-    -- ASSIGN  |PARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$11(ASC) ]  |PARTITIONED|
-        order (ASC, %0->$$11) 
-        -- STABLE_SORT [$$11(ASC)]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            group by ([$$11 := %0->$$16]) decor ([]) {
-                      aggregate [$$12] <- [function-call: hive:count(FINAL), Args:[%0->$$15]]
-                      -- AGGREGATE  |LOCAL|
-                        nested tuple source
-                        -- NESTED_TUPLE_SOURCE  |LOCAL|
-                   }
-            -- EXTERNAL_GROUP_BY[$$16]  |PARTITIONED|
-              exchange 
-              -- HASH_PARTITION_EXCHANGE [$$16]  |PARTITIONED|
-                group by ([$$16 := %0->$$7]) decor ([]) {
-                          aggregate [$$15] <- [function-call: hive:count(PARTIAL1), Args:[1]]
-                          -- AGGREGATE  |LOCAL|
-                            nested tuple source
-                            -- NESTED_TUPLE_SOURCE  |LOCAL|
-                       }
-                -- EXTERNAL_GROUP_BY[$$7]  |LOCAL|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    project ([$$7])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$2])
-                        -- HYBRID_HASH_JOIN [$$1][$$2]  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                            data-scan []<-[$$1] <- default.q4_order_priority_tmp
-                            -- DATASOURCE_SCAN  |PARTITIONED|
-                              exchange 
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                empty-tuple-source
-                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                          exchange 
-                          -- HASH_PARTITION_EXCHANGE [$$2]  |PARTITIONED|
-                            project ([$$2, $$7])
-                            -- STREAM_PROJECT  |PARTITIONED|
-                              select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$6, 1993-10-01], function-call: algebricks:ge, Args:[%0->$$6, 1993-07-01], function-call: algebricks:lt, Args:[%0->$$6, 1993-10-01]])
-                              -- STREAM_SELECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  data-scan [$$2, $$6, $$7]<-[$$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10] <- default.orders
-                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      empty-tuple-source
-                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan b/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan
deleted file mode 100644
index 177d24c..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q5_local_supplier_volume.plan
+++ /dev/null
@@ -1,126 +0,0 @@
-write [%0->$$48, %0->$$49]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$48, $$49])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$49(DESC) ]  |PARTITIONED|
-      order (DESC, %0->$$49) 
-      -- STABLE_SORT [$$49(DESC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$48 := %0->$$52]) decor ([]) {
-                    aggregate [$$49] <- [function-call: hive:sum(FINAL), Args:[%0->$$51]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$52]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$52]  |PARTITIONED|
-              group by ([$$52 := %0->$$42]) decor ([]) {
-                        aggregate [$$51] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$23, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$24]]]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$42]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$42, $$23, $$24])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$37, %0->$$4], function-call: algebricks:eq, Args:[%0->$$10, %0->$$1]])
-                      -- HYBRID_HASH_JOIN [$$37, $$10][$$4, $$1]  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$37, $$10]  |PARTITIONED|
-                          project ([$$10, $$42, $$23, $$24, $$37])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$18, %0->$$9])
-                              -- HYBRID_HASH_JOIN [$$18][$$9]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$18]  |PARTITIONED|
-                                  project ([$$18, $$23, $$24, $$42, $$37])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$34, %0->$$20])
-                                      -- HYBRID_HASH_JOIN [$$34][$$20]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$34]  |PARTITIONED|
-                                          project ([$$34, $$37, $$42])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$41, %0->$$37])
-                                              -- HYBRID_HASH_JOIN [$$41][$$37]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$41]  |PARTITIONED|
-                                                  project ([$$41, $$42])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (function-call: algebricks:eq, Args:[%0->$$45, %0->$$43])
-                                                      -- HYBRID_HASH_JOIN [$$45][$$43]  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$45]  |PARTITIONED|
-                                                          project ([$$45])
-                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                            select (function-call: algebricks:eq, Args:[%0->$$46, ASIA])
-                                                            -- STREAM_SELECT  |PARTITIONED|
-                                                              exchange 
-                                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                data-scan [$$46, $$45]<-[$$45, $$46, $$47] <- default.region
-                                                                -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                  exchange 
-                                                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    empty-tuple-source
-                                                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                                                          data-scan [$$43, $$41, $$42]<-[$$41, $$42, $$43, $$44] <- default.nation
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                                  data-scan [$$37, $$34]<-[$$34, $$35, $$36, $$37, $$38, $$39, $$40] <- default.supplier
-                                                  -- DATASOURCE_SCAN  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      empty-tuple-source
-                                                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                          data-scan [$$20, $$18, $$23, $$24]<-[$$18, $$19, $$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.lineitem
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$9]  |PARTITIONED|
-                                  project ([$$9, $$10])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$13, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$13, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$13, 1995-01-01]])
-                                    -- STREAM_SELECT  |PARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        data-scan [$$9, $$10, $$13]<-[$$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17] <- default.orders
-                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            empty-tuple-source
-                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                        exchange 
-                        -- HASH_PARTITION_EXCHANGE [$$4, $$1]  |PARTITIONED|
-                          data-scan [$$4, $$1]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8] <- default.customer
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan b/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan
deleted file mode 100644
index cd9ffcd..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q6_forecast_revenue_change.plan
+++ /dev/null
@@ -1,34 +0,0 @@
-write [%0->$$17]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    group by ([]) decor ([]) {
-              aggregate [$$17] <- [function-call: hive:sum(FINAL), Args:[%0->$$19]]
-              -- AGGREGATE  |LOCAL|
-                nested tuple source
-                -- NESTED_TUPLE_SOURCE  |LOCAL|
-           }
-    -- EXTERNAL_GROUP_BY[]  |PARTITIONED|
-      exchange 
-      -- HASH_PARTITION_EXCHANGE []  |PARTITIONED|
-        group by ([]) decor ([]) {
-                  aggregate [$$19] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, %0->$$7]]]
-                  -- AGGREGATE  |LOCAL|
-                    nested tuple source
-                    -- NESTED_TUPLE_SOURCE  |LOCAL|
-               }
-        -- EXTERNAL_GROUP_BY[]  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            project ([$$6, $$7])
-            -- STREAM_PROJECT  |PARTITIONED|
-              select (function-call: algebricks:and, Args:[function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$7, 0.05], function-call: algebricks:le, Args:[%0->$$7, 0.07], function-call: algebricks:lt, Args:[%0->$$5, 24], function-call: algebricks:ge, Args:[%0->$$11, 1994-01-01], function-call: algebricks:lt, Args:[%0->$$11, 1995-01-01], function-call: algebricks:ge, Args:[%0->$$7, 0.05], function-call: algebricks:le, Args:[%0->$$7, 0.07], function-call: algebricks:lt, Args:[%0->$$5, 24]])
-              -- STREAM_SELECT  |PARTITIONED|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  data-scan [$$5, $$6, $$7, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                  -- DATASOURCE_SCAN  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      empty-tuple-source
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan b/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan
deleted file mode 100644
index 39f8301..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q7_volume_shipping.plan
+++ /dev/null
@@ -1,192 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    union ($$6, $$10, $$17) ($$2, $$14, $$18) ($$5, $$9, $$19) ($$1, $$13, $$20)
-    -- UNION_ALL  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        project ([$$6, $$2, $$5, $$1])
-        -- STREAM_PROJECT  |UNPARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true)
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:eq, Args:[%0->$$2, GERMANY])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.nation
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$5, $$6])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:eq, Args:[%0->$$6, FRANCE])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    project ([$$5, $$6])
-                    -- STREAM_PROJECT  |UNPARTITIONED|
-                      assign [$$5, $$6] <- [%0->$$9, %0->$$10]
-                      -- ASSIGN  |UNPARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          replicate 
-                          -- SPLIT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
-        project ([$$10, $$14, $$9, $$13])
-        -- STREAM_PROJECT  |UNPARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            join (true)
-            -- NESTED_LOOP  |PARTITIONED|
-              exchange 
-              -- BROADCAST_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:eq, Args:[%0->$$14, FRANCE])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$13, $$14]<-[$$13, $$14, $$15, $$16] <- default.nation
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                project ([$$9, $$10])
-                -- STREAM_PROJECT  |PARTITIONED|
-                  select (function-call: algebricks:eq, Args:[%0->$$10, GERMANY])
-                  -- STREAM_SELECT  |PARTITIONED|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      replicate 
-                      -- SPLIT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$9, $$10]<-[$$9, $$10, $$11, $$12] <- default.nation
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$47, %0->$$48, %0->$$49, %0->$$50]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$47, $$48, $$49, $$50])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC), $$49(ASC) ]  |PARTITIONED|
-      order (ASC, %0->$$47) (ASC, %0->$$48) (ASC, %0->$$49) 
-      -- STABLE_SORT [$$47(ASC), $$48(ASC), $$49(ASC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$47 := %0->$$53; $$48 := %0->$$54; $$49 := %0->$$55]) decor ([]) {
-                    aggregate [$$50] <- [function-call: hive:sum(FINAL), Args:[%0->$$52]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$53, $$54, $$55]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$53, $$54, $$55]  |PARTITIONED|
-              group by ([$$53 := %0->$$1; $$54 := %0->$$2; $$55 := %0->$$45]) decor ([]) {
-                        aggregate [$$52] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$46]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$1, $$2, $$45]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$1, $$2, $$45, $$46])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$45, $$46] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$30], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$25, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$26]]]
-                    -- ASSIGN  |PARTITIONED|
-                      project ([$$1, $$2, $$30, $$25, $$26])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$15, %0->$$4], function-call: algebricks:eq, Args:[%0->$$8, %0->$$3]])
-                          -- HYBRID_HASH_JOIN [$$15, $$8][$$4, $$3]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$15, $$8]  |PARTITIONED|
-                              project ([$$8, $$30, $$25, $$26, $$15])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$5])
-                                  -- HYBRID_HASH_JOIN [$$22][$$5]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                      project ([$$15, $$30, $$25, $$26, $$22])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          join (function-call: algebricks:eq, Args:[%0->$$37, %0->$$12])
-                                          -- HYBRID_HASH_JOIN [$$37][$$12]  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                              project ([$$37, $$22, $$25, $$26, $$30])
-                                              -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  join (function-call: algebricks:eq, Args:[%0->$$20, %0->$$36])
-                                                  -- HYBRID_HASH_JOIN [$$20][$$36]  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                                      select (function-call: algebricks:and, Args:[function-call: algebricks:le, Args:[%0->$$30, 1996-12-31], function-call: algebricks:ge, Args:[%0->$$30, 1995-01-01], function-call: algebricks:le, Args:[%0->$$30, 1996-12-31]])
-                                                      -- STREAM_SELECT  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          data-scan [$$20, $$22, $$25, $$26, $$30]<-[$$20, $$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35] <- default.lineitem
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$36]  |PARTITIONED|
-                                                      data-scan [$$36, $$37]<-[$$36, $$37, $$38, $$39, $$40, $$41, $$42, $$43, $$44] <- default.orders
-                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source
-                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-                                              data-scan [$$12, $$15]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19] <- default.customer
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                                      data-scan [$$5, $$8]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          empty-tuple-source
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$4, $$3]  |PARTITIONED|
-                              data-scan [$$4, $$3, $$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.q7_volume_shipping_tmp
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan b/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan
deleted file mode 100644
index b807a24..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q8_national_market_share.plan
+++ /dev/null
@@ -1,190 +0,0 @@
-write [%0->$$63, %0->$$66]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$63(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$63) 
-    -- STABLE_SORT [$$63(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$63, $$66])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$66] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPDivide, Args:[%0->$$64, %0->$$65]]
-          -- ASSIGN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              group by ([$$63 := %0->$$70]) decor ([]) {
-                        aggregate [$$64, $$65] <- [function-call: hive:sum(FINAL), Args:[%0->$$68], function-call: hive:sum(FINAL), Args:[%0->$$69]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$70]  |PARTITIONED|
-                exchange 
-                -- HASH_PARTITION_EXCHANGE [$$70]  |PARTITIONED|
-                  group by ([$$70 := %0->$$61]) decor ([]) {
-                            aggregate [$$68, $$69] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.generic.GenericUDFWhen, Args:[function-call: algebricks:eq, Args:[%0->$$2, BRAZIL], %0->$$62, 0.0]], function-call: hive:sum(PARTIAL1), Args:[%0->$$62]]
-                            -- AGGREGATE  |LOCAL|
-                              nested tuple source
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                         }
-                  -- EXTERNAL_GROUP_BY[$$61]  |LOCAL|
-                    exchange 
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      project ([$$61, $$62, $$2])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        assign [$$61, $$62] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$41], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$26, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$27]]]
-                        -- ASSIGN  |PARTITIONED|
-                          project ([$$2, $$41, $$27, $$26])
-                          -- STREAM_PROJECT  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              join (function-call: algebricks:eq, Args:[%0->$$8, %0->$$1])
-                              -- HYBRID_HASH_JOIN [$$8][$$1]  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$8]  |PARTITIONED|
-                                  project ([$$8, $$41, $$27, $$26])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    exchange 
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      join (function-call: algebricks:eq, Args:[%0->$$23, %0->$$5])
-                                      -- HYBRID_HASH_JOIN [$$23][$$5]  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
-                                          project ([$$41, $$27, $$26, $$23])
-                                          -- STREAM_PROJECT  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              join (function-call: algebricks:eq, Args:[%0->$$22, %0->$$12])
-                                              -- HYBRID_HASH_JOIN [$$22][$$12]  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
-                                                  project ([$$41, $$22, $$23, $$26, $$27])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    exchange 
-                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                      join (function-call: algebricks:eq, Args:[%0->$$21, %0->$$37])
-                                                      -- HYBRID_HASH_JOIN [$$21][$$37]  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$21]  |PARTITIONED|
-                                                          data-scan [$$21, $$22, $$23, $$26, $$27]<-[$$21, $$22, $$23, $$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36] <- default.lineitem
-                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              empty-tuple-source
-                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        exchange 
-                                                        -- HASH_PARTITION_EXCHANGE [$$37]  |PARTITIONED|
-                                                          project ([$$37, $$41])
-                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                            exchange 
-                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              join (function-call: algebricks:eq, Args:[%0->$$46, %0->$$38])
-                                                              -- HYBRID_HASH_JOIN [$$46][$$38]  |PARTITIONED|
-                                                                exchange 
-                                                                -- HASH_PARTITION_EXCHANGE [$$46]  |PARTITIONED|
-                                                                  project ([$$46])
-                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                    exchange 
-                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      join (function-call: algebricks:eq, Args:[%0->$$54, %0->$$49])
-                                                                      -- HYBRID_HASH_JOIN [$$54][$$49]  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- HASH_PARTITION_EXCHANGE [$$54]  |PARTITIONED|
-                                                                          project ([$$54])
-                                                                          -- STREAM_PROJECT  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              join (function-call: algebricks:eq, Args:[%0->$$58, %0->$$56])
-                                                                              -- HYBRID_HASH_JOIN [$$58][$$56]  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- HASH_PARTITION_EXCHANGE [$$58]  |PARTITIONED|
-                                                                                  project ([$$58])
-                                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                                    select (function-call: algebricks:eq, Args:[%0->$$59, AMERICA])
-                                                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                                                      exchange 
-                                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                        data-scan [$$59, $$58]<-[$$58, $$59, $$60] <- default.region
-                                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                          exchange 
-                                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                            empty-tuple-source
-                                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                                exchange 
-                                                                                -- HASH_PARTITION_EXCHANGE [$$56]  |PARTITIONED|
-                                                                                  project ([$$56, $$54])
-                                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                                    exchange 
-                                                                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                      replicate 
-                                                                                      -- SPLIT  |PARTITIONED|
-                                                                                        exchange 
-                                                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                          data-scan []<-[$$54, $$55, $$56, $$57] <- default.nation
-                                                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                                            exchange 
-                                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                                              empty-tuple-source
-                                                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                        exchange 
-                                                                        -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                                                                          data-scan [$$49, $$46]<-[$$46, $$47, $$48, $$49, $$50, $$51, $$52, $$53] <- default.customer
-                                                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                            exchange 
-                                                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              empty-tuple-source
-                                                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                exchange 
-                                                                -- HASH_PARTITION_EXCHANGE [$$38]  |PARTITIONED|
-                                                                  project ([$$38, $$37, $$41])
-                                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$41, 1996-12-31], function-call: algebricks:ge, Args:[%0->$$41, 1995-01-01]])
-                                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                                      exchange 
-                                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        data-scan [$$38, $$37, $$41]<-[$$37, $$38, $$39, $$40, $$41, $$42, $$43, $$44, $$45] <- default.orders
-                                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                          exchange 
-                                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            empty-tuple-source
-                                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                exchange 
-                                                -- HASH_PARTITION_EXCHANGE [$$12]  |PARTITIONED|
-                                                  project ([$$12])
-                                                  -- STREAM_PROJECT  |PARTITIONED|
-                                                    select (function-call: algebricks:eq, Args:[%0->$$16, ECONOMY ANODIZED STEEL])
-                                                    -- STREAM_SELECT  |PARTITIONED|
-                                                      exchange 
-                                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                        data-scan [$$16, $$12]<-[$$12, $$13, $$14, $$15, $$16, $$17, $$18, $$19, $$20] <- default.part
-                                                        -- DATASOURCE_SCAN  |PARTITIONED|
-                                                          exchange 
-                                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                            empty-tuple-source
-                                                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                        exchange 
-                                        -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-                                          data-scan [$$5, $$8]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-                                          -- DATASOURCE_SCAN  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              empty-tuple-source
-                                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                exchange 
-                                -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                                  project ([$$1, $$2])
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    assign [$$1, $$2, $$3, $$4] <- [%0->$$54, %0->$$55, %0->$$56, %0->$$57]
-                                    -- ASSIGN  |UNPARTITIONED|
-                                      exchange 
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        replicate 
-                                        -- SPLIT  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan []<-[$$54, $$55, $$56, $$57] <- default.nation
-                                            -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source
-                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan b/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan
deleted file mode 100644
index f57f4a3..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/q9_product_type_profit.plan
+++ /dev/null
@@ -1,124 +0,0 @@
-write [%0->$$53, %0->$$54, %0->$$55]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$53, $$54, $$55])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(DESC) ]  |PARTITIONED|
-      order (ASC, %0->$$53) (DESC, %0->$$54) 
-      -- STABLE_SORT [$$53(ASC), $$54(DESC)]  |LOCAL|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          group by ([$$53 := %0->$$58; $$54 := %0->$$59]) decor ([]) {
-                    aggregate [$$55] <- [function-call: hive:sum(FINAL), Args:[%0->$$57]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$58, $$59]  |PARTITIONED|
-            exchange 
-            -- HASH_PARTITION_EXCHANGE [$$58, $$59]  |PARTITIONED|
-              group by ([$$58 := %0->$$48; $$59 := %0->$$51]) decor ([]) {
-                        aggregate [$$57] <- [function-call: hive:sum(PARTIAL1), Args:[%0->$$52]]
-                        -- AGGREGATE  |LOCAL|
-                          nested tuple source
-                          -- NESTED_TUPLE_SOURCE  |LOCAL|
-                     }
-              -- EXTERNAL_GROUP_BY[$$48, $$51]  |LOCAL|
-                exchange 
-                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                  project ([$$48, $$51, $$52])
-                  -- STREAM_PROJECT  |PARTITIONED|
-                    assign [$$51, $$52] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFYear, Args:[%0->$$5], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$29, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$30]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$22, %0->$$28]]]
-                    -- ASSIGN  |PARTITIONED|
-                      project ([$$5, $$29, $$30, $$28, $$48, $$22])
-                      -- STREAM_PROJECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          join (function-call: algebricks:eq, Args:[%0->$$24, %0->$$1])
-                          -- HYBRID_HASH_JOIN [$$24][$$1]  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
-                              project ([$$29, $$30, $$28, $$24, $$48, $$22])
-                              -- STREAM_PROJECT  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  join (function-call: algebricks:eq, Args:[%0->$$25, %0->$$10])
-                                  -- HYBRID_HASH_JOIN [$$25][$$10]  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-                                      project ([$$22, $$29, $$30, $$28, $$25, $$24, $$48])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        exchange 
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          join (function-call: algebricks:and, Args:[function-call: algebricks:eq, Args:[%0->$$26, %0->$$20], function-call: algebricks:eq, Args:[%0->$$25, %0->$$19]])
-                                          -- HYBRID_HASH_JOIN [$$26, $$25][$$20, $$19]  |PARTITIONED|
-                                            exchange 
-                                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                              project ([$$48, $$24, $$25, $$26, $$28, $$29, $$30])
-                                              -- STREAM_PROJECT  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$40])
-                                                  -- HYBRID_HASH_JOIN [$$26][$$40]  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                                                      data-scan [$$26, $$24, $$25, $$28, $$29, $$30]<-[$$24, $$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33, $$34, $$35, $$36, $$37, $$38, $$39] <- default.lineitem
-                                                      -- DATASOURCE_SCAN  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          empty-tuple-source
-                                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                    exchange 
-                                                    -- HASH_PARTITION_EXCHANGE [$$40]  |PARTITIONED|
-                                                      project ([$$40, $$48])
-                                                      -- STREAM_PROJECT  |PARTITIONED|
-                                                        exchange 
-                                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                          join (function-call: algebricks:eq, Args:[%0->$$43, %0->$$47])
-                                                          -- HYBRID_HASH_JOIN [$$43][$$47]  |PARTITIONED|
-                                                            exchange 
-                                                            -- HASH_PARTITION_EXCHANGE [$$43]  |PARTITIONED|
-                                                              data-scan [$$43, $$40]<-[$$40, $$41, $$42, $$43, $$44, $$45, $$46] <- default.supplier
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                            exchange 
-                                                            -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
-                                                              data-scan [$$47, $$48]<-[$$47, $$48, $$49, $$50] <- default.nation
-                                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                exchange 
-                                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  empty-tuple-source
-                                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                            exchange 
-                                            -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
-                                              data-scan [$$20, $$19, $$22]<-[$$19, $$20, $$21, $$22, $$23] <- default.partsupp
-                                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                                exchange 
-                                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                  empty-tuple-source
-                                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                    exchange 
-                                    -- HASH_PARTITION_EXCHANGE [$$10]  |PARTITIONED|
-                                      project ([$$10])
-                                      -- STREAM_PROJECT  |PARTITIONED|
-                                        select (function-call: hive:org.apache.hadoop.hive.ql.udf.UDFLike, Args:[%0->$$11, %green%])
-                                        -- STREAM_SELECT  |PARTITIONED|
-                                          exchange 
-                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                            data-scan [$$10, $$11]<-[$$10, $$11, $$12, $$13, $$14, $$15, $$16, $$17, $$18] <- default.part
-                                            -- DATASOURCE_SCAN  |PARTITIONED|
-                                              exchange 
-                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                empty-tuple-source
-                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                            exchange 
-                            -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-                              data-scan [$$1, $$5]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                              -- DATASOURCE_SCAN  |PARTITIONED|
-                                exchange 
-                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                  empty-tuple-source
-                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan b/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan
deleted file mode 100644
index c86d57f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u10_nestedloop_join.plan
+++ /dev/null
@@ -1,24 +0,0 @@
-write [%0->$$6, %0->$$2, %0->$$5, %0->$$1]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$6, $$2, $$5, $$1])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:and, Args:[function-call: algebricks:gt, Args:[%0->$$5, %0->$$1], true])
-      -- NESTED_LOOP  |PARTITIONED|
-        exchange 
-        -- BROADCAST_EXCHANGE  |PARTITIONED|
-          data-scan [$$1, $$2]<-[$$1, $$2, $$3, $$4] <- default.nation
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan [$$5, $$6]<-[$$5, $$6, $$7, $$8] <- default.nation
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan b/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan
deleted file mode 100644
index 188aa6d..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u1_group_by.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-write [%0->$$18, %0->$$19]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$18, $$19])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      group by ([$$17 := %0->$$23]) decor ([]) {
-                aggregate [$$18, $$19] <- [function-call: hive:sum(FINAL), Args:[%0->$$21], function-call: hive:sum(FINAL), Args:[%0->$$22]]
-                -- AGGREGATE  |LOCAL|
-                  nested tuple source
-                  -- NESTED_TUPLE_SOURCE  |LOCAL|
-             }
-      -- EXTERNAL_GROUP_BY[$$23]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$23]  |PARTITIONED|
-          group by ([$$23 := %0->$$9]) decor ([]) {
-                    aggregate [$$21, $$22] <- [function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFAbs, Args:[%0->$$5]], function-call: hive:sum(PARTIAL1), Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$6, function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMinus, Args:[1, %0->$$7]], function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPPlus, Args:[1, %0->$$8]]]]
-                    -- AGGREGATE  |LOCAL|
-                      nested tuple source
-                      -- NESTED_TUPLE_SOURCE  |LOCAL|
-                 }
-          -- EXTERNAL_GROUP_BY[$$9]  |LOCAL|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              project ([$$9, $$5, $$6, $$7, $$8])
-              -- STREAM_PROJECT  |PARTITIONED|
-                select (function-call: algebricks:le, Args:[%0->$$11, 1998-09-02])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$5, $$6, $$7, $$8, $$9, $$11]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan b/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan
deleted file mode 100644
index 4485b36..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u2_select-project.plan
+++ /dev/null
@@ -1,16 +0,0 @@
-write [%0->$$8, %0->$$3, %0->$$4, %0->$$2]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$8, $$3, $$4, $$2])
-  -- STREAM_PROJECT  |PARTITIONED|
-    assign [$$8] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$1]]
-    -- ASSIGN  |PARTITIONED|
-      select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-      -- STREAM_SELECT  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u3_union.plan b/hivesterix/src/test/resources/optimizerts/results/u3_union.plan
deleted file mode 100644
index c4040f2..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u3_union.plan
+++ /dev/null
@@ -1,38 +0,0 @@
-write [%0->$$17, %0->$$18, %0->$$19, %0->$$20]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-    union ($$8, $$16, $$17) ($$3, $$11, $$18) ($$4, $$12, $$19) ($$2, $$10, $$20)
-    -- UNION_ALL  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$8, $$3, $$4, $$2])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$8] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$1]]
-          -- ASSIGN  |PARTITIONED|
-            select (function-call: algebricks:gt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 50])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        project ([$$16, $$11, $$12, $$10])
-        -- STREAM_PROJECT  |PARTITIONED|
-          assign [$$16] <- [function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[2, %0->$$9]]
-          -- ASSIGN  |PARTITIONED|
-            select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$9, 2], 20])
-            -- STREAM_SELECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                data-scan []<-[$$9, $$10, $$11, $$12, $$13, $$14, $$15] <- default.supplier
-                -- DATASOURCE_SCAN  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    empty-tuple-source
-                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u4_join.plan b/hivesterix/src/test/resources/optimizerts/results/u4_join.plan
deleted file mode 100644
index 449a601..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u4_join.plan
+++ /dev/null
@@ -1,36 +0,0 @@
-write [%0->$$1, %0->$$2, %0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-  -- STREAM_SELECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      data-scan [$$1, $$2, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-      -- DATASOURCE_SCAN  |PARTITIONED|
-        exchange 
-        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-          empty-tuple-source
-          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-write [%0->$$1, %0->$$9, %0->$$10, %0->$$11]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$1, $$9, $$10, $$11])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$5, %0->$$1])
-      -- HYBRID_HASH_JOIN [$$5][$$1]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$5]  |PARTITIONED|
-          data-scan [$$5, $$9, $$10, $$11]<-[$$5, $$6, $$7, $$8, $$9, $$10, $$11] <- default.supplier
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan [$$1]<-[$$1, $$2, $$3, $$4] <- default.result
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan b/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan
deleted file mode 100644
index 48e624e..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u5_lateral_view.plan
+++ /dev/null
@@ -1,14 +0,0 @@
-write [%0->$$2, %0->$$3, %0->$$8]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$2, $$3, $$8])
-  -- STREAM_PROJECT  |PARTITIONED|
-    unnest $$8 <- function-call: hive:explode, Args:[%0->$$1]
-    -- UNNEST  |PARTITIONED|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        data-scan [$$1, $$2, $$3]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-        -- DATASOURCE_SCAN  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            empty-tuple-source
-            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan b/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan
deleted file mode 100644
index b5ed12f..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u6_limit.plan
+++ /dev/null
@@ -1,26 +0,0 @@
-write [%0->$$1, %0->$$4, %0->$$5, %0->$$7]
--- SINK_WRITE  |UNPARTITIONED|
-  limit 4
-  -- STREAM_LIMIT  |UNPARTITIONED|
-    limit 4
-    -- STREAM_LIMIT  |UNPARTITIONED|
-      exchange 
-      -- SORT_MERGE_EXCHANGE [$$4(ASC) ]  |PARTITIONED|
-        limit 4
-        -- STREAM_LIMIT  |LOCAL|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |LOCAL|
-            order (ASC, %0->$$4) 
-            -- STABLE_SORT [$$4(ASC)]  |LOCAL|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                select (function-call: algebricks:lt, Args:[%0->$$4, 10000])
-                -- STREAM_SELECT  |PARTITIONED|
-                  exchange 
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    data-scan [$$1, $$4, $$5, $$7]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9] <- default.orders
-                    -- DATASOURCE_SCAN  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        empty-tuple-source
-                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan b/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan
deleted file mode 100644
index ab55181..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u7_multi_join.plan
+++ /dev/null
@@ -1,52 +0,0 @@
-write [%0->$$4, %0->$$25, %0->$$28, %0->$$29, %0->$$32]
--- SINK_WRITE  |PARTITIONED|
-  project ([$$4, $$25, $$28, $$29, $$32])
-  -- STREAM_PROJECT  |PARTITIONED|
-    exchange 
-    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-      join (function-call: algebricks:eq, Args:[%0->$$1, %0->$$25])
-      -- HYBRID_HASH_JOIN [$$1][$$25]  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$1]  |PARTITIONED|
-          data-scan [$$1, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7, $$8, $$9, $$10, $$11, $$12, $$13, $$14, $$15, $$16] <- default.lineitem
-          -- DATASOURCE_SCAN  |PARTITIONED|
-            exchange 
-            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-              empty-tuple-source
-              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-        exchange 
-        -- HASH_PARTITION_EXCHANGE [$$25]  |PARTITIONED|
-          project ([$$32, $$25, $$29, $$28])
-          -- STREAM_PROJECT  |PARTITIONED|
-            project ([$$25, $$17, $$28, $$29, $$32])
-            -- STREAM_PROJECT  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                join (function-call: algebricks:eq, Args:[%0->$$26, %0->$$17])
-                -- HYBRID_HASH_JOIN [$$26][$$17]  |PARTITIONED|
-                  exchange 
-                  -- HASH_PARTITION_EXCHANGE [$$26]  |PARTITIONED|
-                    select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$28, 30000], function-call: algebricks:lt, Args:[%0->$$28, 30000]])
-                    -- STREAM_SELECT  |PARTITIONED|
-                      exchange 
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        data-scan [$$32, $$25, $$26, $$29, $$28]<-[$$25, $$26, $$27, $$28, $$29, $$30, $$31, $$32, $$33] <- default.orders
-                        -- DATASOURCE_SCAN  |PARTITIONED|
-                          exchange 
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            empty-tuple-source
-                            -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                  exchange 
-                  -- HASH_PARTITION_EXCHANGE [$$17]  |PARTITIONED|
-                    project ([$$17])
-                    -- STREAM_PROJECT  |PARTITIONED|
-                      select (function-call: algebricks:and, Args:[function-call: algebricks:lt, Args:[%0->$$17, 5], function-call: algebricks:lt, Args:[%0->$$17, 5]])
-                      -- STREAM_SELECT  |PARTITIONED|
-                        exchange 
-                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                          data-scan [$$17]<-[$$17, $$18, $$19, $$20, $$21, $$22, $$23, $$24] <- default.customer
-                          -- DATASOURCE_SCAN  |PARTITIONED|
-                            exchange 
-                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                              empty-tuple-source
-                              -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan b/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan
deleted file mode 100644
index e69de29..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u8_non_mapred.plan
+++ /dev/null
diff --git a/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan b/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan
deleted file mode 100644
index 7370fcf..0000000
--- a/hivesterix/src/test/resources/optimizerts/results/u9_order_by.plan
+++ /dev/null
@@ -1,18 +0,0 @@
-write [%0->$$1, %0->$$2, %0->$$3, %0->$$4]
--- SINK_WRITE  |PARTITIONED|
-  exchange 
-  -- SORT_MERGE_EXCHANGE [$$2(ASC) ]  |PARTITIONED|
-    order (ASC, %0->$$2) 
-    -- STABLE_SORT [$$2(ASC)]  |LOCAL|
-      exchange 
-      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-        select (function-call: algebricks:lt, Args:[function-call: hive:org.apache.hadoop.hive.ql.udf.UDFOPMultiply, Args:[%0->$$1, 2], 20])
-        -- STREAM_SELECT  |PARTITIONED|
-          exchange 
-          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-            data-scan [$$1, $$2, $$3, $$4]<-[$$1, $$2, $$3, $$4, $$5, $$6, $$7] <- default.supplier
-            -- DATASOURCE_SCAN  |PARTITIONED|
-              exchange 
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                empty-tuple-source
-                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/conf/cluster b/hivesterix/src/test/resources/runtimefunctionts/conf/cluster
deleted file mode 100644
index ee81dc1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/conf/cluster
+++ /dev/null
@@ -1,3 +0,0 @@
-2
-127.0.0.1 nc0
-127.0.0.1 nc1
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl
deleted file mode 100644
index 5d39c80..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/customer.tbl
+++ /dev/null
@@ -1,150 +0,0 @@
-1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e|
-2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref|
-3|Customer#000000003|MG9kdTD2WBHm|1|11-719-748-3364|7498.12|AUTOMOBILE| deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov|
-4|Customer#000000004|XxVSJsLAGtn|4|14-128-190-5944|2866.83|MACHINERY| requests. final, regular ideas sleep final accou|
-5|Customer#000000005|KvpyuHCplrB84WgAiGV6sYpZq7Tj|3|13-750-942-6364|794.47|HOUSEHOLD|n accounts will have to unwind. foxes cajole accor|
-6|Customer#000000006|sKZz0CsnMD7mp4Xd0YrBvx,LREYKUWAh yVn|20|30-114-968-4951|7638.57|AUTOMOBILE|tions. even deposits boost according to the slyly bold packages. final accounts cajole requests. furious|
-7|Customer#000000007|TcGe5gaZNgVePxU5kRrvXBfkasDTea|18|28-190-982-9759|9561.95|AUTOMOBILE|ainst the ironic, express theodolites. express, even pinto beans among the exp|
-8|Customer#000000008|I0B10bB0AymmC, 0PrRYBCP1yGJ8xcBPmWhl5|17|27-147-574-9335|6819.74|BUILDING|among the slyly regular theodolites kindle blithely courts. carefully even theodolites haggle slyly along the ide|
-9|Customer#000000009|xKiAFTjUsCuxfeleNqefumTrjS|8|18-338-906-3675|8324.07|FURNITURE|r theodolites according to the requests wake thinly excuses: pending requests haggle furiousl|
-10|Customer#000000010|6LrEaV6KR6PLVcgl2ArL Q3rqzLzcT1 v2|5|15-741-346-9870|2753.54|HOUSEHOLD|es regular deposits haggle. fur|
-11|Customer#000000011|PkWS 3HlXqwTuzrKg633BEi|23|33-464-151-3439|-272.60|BUILDING|ckages. requests sleep slyly. quickly even pinto beans promise above the slyly regular pinto beans. |
-12|Customer#000000012|9PWKuhzT4Zr1Q|13|23-791-276-1263|3396.49|HOUSEHOLD| to the carefully final braids. blithely regular requests nag. ironic theodolites boost quickly along|
-13|Customer#000000013|nsXQu0oVjD7PM659uC3SRSp|3|13-761-547-5974|3857.34|BUILDING|ounts sleep carefully after the close frays. carefully bold notornis use ironic requests. blithely|
-14|Customer#000000014|KXkletMlL2JQEA |1|11-845-129-3851|5266.30|FURNITURE|, ironic packages across the unus|
-15|Customer#000000015|YtWggXoOLdwdo7b0y,BZaGUQMLJMX1Y,EC,6Dn|23|33-687-542-7601|2788.52|HOUSEHOLD| platelets. regular deposits detect asymptotes. blithely unusual packages nag slyly at the fluf|
-16|Customer#000000016|cYiaeMLZSMAOQ2 d0W,|10|20-781-609-3107|4681.03|FURNITURE|kly silent courts. thinly regular theodolites sleep fluffily after |
-17|Customer#000000017|izrh 6jdqtp2eqdtbkswDD8SG4SzXruMfIXyR7|2|12-970-682-3487|6.34|AUTOMOBILE|packages wake! blithely even pint|
-18|Customer#000000018|3txGO AiuFux3zT0Z9NYaFRnZt|6|16-155-215-1315|5494.43|BUILDING|s sleep. carefully even instructions nag furiously alongside of t|
-19|Customer#000000019|uc,3bHIx84H,wdrmLOjVsiqXCq2tr|18|28-396-526-5053|8914.71|HOUSEHOLD| nag. furiously careful packages are slyly at the accounts. furiously regular in|
-20|Customer#000000020|JrPk8Pqplj4Ne|22|32-957-234-8742|7603.40|FURNITURE|g alongside of the special excuses-- fluffily enticing packages wake |
-21|Customer#000000021|XYmVpr9yAHDEn|8|18-902-614-8344|1428.25|MACHINERY| quickly final accounts integrate blithely furiously u|
-22|Customer#000000022|QI6p41,FNs5k7RZoCCVPUTkUdYpB|3|13-806-545-9701|591.98|MACHINERY|s nod furiously above the furiously ironic ideas. |
-23|Customer#000000023|OdY W13N7Be3OC5MpgfmcYss0Wn6TKT|3|13-312-472-8245|3332.02|HOUSEHOLD|deposits. special deposits cajole slyly. fluffily special deposits about the furiously |
-24|Customer#000000024|HXAFgIAyjxtdqwimt13Y3OZO 4xeLe7U8PqG|13|23-127-851-8031|9255.67|MACHINERY|into beans. fluffily final ideas haggle fluffily|
-25|Customer#000000025|Hp8GyFQgGHFYSilH5tBfe|12|22-603-468-3533|7133.70|FURNITURE|y. accounts sleep ruthlessly according to the regular theodolites. unusual instructions sleep. ironic, final|
-26|Customer#000000026|8ljrc5ZeMl7UciP|22|32-363-455-4837|5182.05|AUTOMOBILE|c requests use furiously ironic requests. slyly ironic dependencies us|
-27|Customer#000000027|IS8GIyxpBrLpMT0u7|3|13-137-193-2709|5679.84|BUILDING| about the carefully ironic pinto beans. accoun|
-28|Customer#000000028|iVyg0daQ,Tha8x2WPWA9m2529m|8|18-774-241-1462|1007.18|FURNITURE| along the regular deposits. furiously final pac|
-29|Customer#000000029|sJ5adtfyAkCK63df2,vF25zyQMVYE34uh|0|10-773-203-7342|7618.27|FURNITURE|its after the carefully final platelets x-ray against |
-30|Customer#000000030|nJDsELGAavU63Jl0c5NKsKfL8rIJQQkQnYL2QJY|1|11-764-165-5076|9321.01|BUILDING|lithely final requests. furiously unusual account|
-31|Customer#000000031|LUACbO0viaAv6eXOAebryDB xjVst|23|33-197-837-7094|5236.89|HOUSEHOLD|s use among the blithely pending depo|
-32|Customer#000000032|jD2xZzi UmId,DCtNBLXKj9q0Tlp2iQ6ZcO3J|15|25-430-914-2194|3471.53|BUILDING|cial ideas. final, furious requests across the e|
-33|Customer#000000033|qFSlMuLucBmx9xnn5ib2csWUweg D|17|27-375-391-1280|-78.56|AUTOMOBILE|s. slyly regular accounts are furiously. carefully pending requests|
-34|Customer#000000034|Q6G9wZ6dnczmtOx509xgE,M2KV|15|25-344-968-5422|8589.70|HOUSEHOLD|nder against the even, pending accounts. even|
-35|Customer#000000035|TEjWGE4nBzJL2|17|27-566-888-7431|1228.24|HOUSEHOLD|requests. special, express requests nag slyly furiousl|
-36|Customer#000000036|3TvCzjuPzpJ0,DdJ8kW5U|21|31-704-669-5769|4987.27|BUILDING|haggle. enticing, quiet platelets grow quickly bold sheaves. carefully regular acc|
-37|Customer#000000037|7EV4Pwh,3SboctTWt|8|18-385-235-7162|-917.75|FURNITURE|ilent packages are carefully among the deposits. furiousl|
-38|Customer#000000038|a5Ee5e9568R8RLP 2ap7|12|22-306-880-7212|6345.11|HOUSEHOLD|lar excuses. closely even asymptotes cajole blithely excuses. carefully silent pinto beans sleep carefully fin|
-39|Customer#000000039|nnbRg,Pvy33dfkorYE FdeZ60|2|12-387-467-6509|6264.31|AUTOMOBILE|tions. slyly silent excuses slee|
-40|Customer#000000040|gOnGWAyhSV1ofv|3|13-652-915-8939|1335.30|BUILDING|rges impress after the slyly ironic courts. foxes are. blithely |
-41|Customer#000000041|IM9mzmyoxeBmvNw8lA7G3Ydska2nkZF|10|20-917-711-4011|270.95|HOUSEHOLD|ly regular accounts hang bold, silent packages. unusual foxes haggle slyly above the special, final depo|
-42|Customer#000000042|ziSrvyyBke|5|15-416-330-4175|8727.01|BUILDING|ssly according to the pinto beans: carefully special requests across the even, pending accounts wake special|
-43|Customer#000000043|ouSbjHk8lh5fKX3zGso3ZSIj9Aa3PoaFd|19|29-316-665-2897|9904.28|MACHINERY|ial requests: carefully pending foxes detect quickly. carefully final courts cajole quickly. carefully|
-44|Customer#000000044|Oi,dOSPwDu4jo4x,,P85E0dmhZGvNtBwi|16|26-190-260-5375|7315.94|AUTOMOBILE|r requests around the unusual, bold a|
-45|Customer#000000045|4v3OcpFgoOmMG,CbnF,4mdC|9|19-715-298-9917|9983.38|AUTOMOBILE|nto beans haggle slyly alongside of t|
-46|Customer#000000046|eaTXWWm10L9|6|16-357-681-2007|5744.59|AUTOMOBILE|ctions. accounts sleep furiously even requests. regular, regular accounts cajole blithely around the final pa|
-47|Customer#000000047|b0UgocSqEW5 gdVbhNT|2|12-427-271-9466|274.58|BUILDING|ions. express, ironic instructions sleep furiously ironic ideas. furi|
-48|Customer#000000048|0UU iPhBupFvemNB|0|10-508-348-5882|3792.50|BUILDING|re fluffily pending foxes. pending, bold platelets sleep slyly. even platelets cajo|
-49|Customer#000000049|cNgAeX7Fqrdf7HQN9EwjUa4nxT,68L FKAxzl|10|20-908-631-4424|4573.94|FURNITURE|nusual foxes! fluffily pending packages maintain to the regular |
-50|Customer#000000050|9SzDYlkzxByyJ1QeTI o|6|16-658-112-3221|4266.13|MACHINERY|ts. furiously ironic accounts cajole furiously slyly ironic dinos.|
-51|Customer#000000051|uR,wEaiTvo4|12|22-344-885-4251|855.87|FURNITURE|eposits. furiously regular requests integrate carefully packages. furious|
-52|Customer#000000052|7 QOqGqqSy9jfV51BC71jcHJSD0|11|21-186-284-5998|5630.28|HOUSEHOLD|ic platelets use evenly even accounts. stealthy theodolites cajole furiou|
-53|Customer#000000053|HnaxHzTfFTZs8MuCpJyTbZ47Cm4wFOOgib|15|25-168-852-5363|4113.64|HOUSEHOLD|ar accounts are. even foxes are blithely. fluffily pending deposits boost|
-54|Customer#000000054|,k4vf 5vECGWFy,hosTE,|4|14-776-370-4745|868.90|AUTOMOBILE|sual, silent accounts. furiously express accounts cajole special deposits. final, final accounts use furi|
-55|Customer#000000055|zIRBR4KNEl HzaiV3a i9n6elrxzDEh8r8pDom|10|20-180-440-8525|4572.11|MACHINERY|ully unusual packages wake bravely bold packages. unusual requests boost deposits! blithely ironic packages ab|
-56|Customer#000000056|BJYZYJQk4yD5B|10|20-895-685-6920|6530.86|FURNITURE|. notornis wake carefully. carefully fluffy requests are furiously even accounts. slyly expre|
-57|Customer#000000057|97XYbsuOPRXPWU|21|31-835-306-1650|4151.93|AUTOMOBILE|ove the carefully special packages. even, unusual deposits sleep slyly pend|
-58|Customer#000000058|g9ap7Dk1Sv9fcXEWjpMYpBZIRUohi T|13|23-244-493-2508|6478.46|HOUSEHOLD|ideas. ironic ideas affix furiously express, final instructions. regular excuses use quickly e|
-59|Customer#000000059|zLOCP0wh92OtBihgspOGl4|1|11-355-584-3112|3458.60|MACHINERY|ously final packages haggle blithely after the express deposits. furiou|
-60|Customer#000000060|FyodhjwMChsZmUz7Jz0H|12|22-480-575-5866|2741.87|MACHINERY|latelets. blithely unusual courts boost furiously about the packages. blithely final instruct|
-61|Customer#000000061|9kndve4EAJxhg3veF BfXr7AqOsT39o gtqjaYE|17|27-626-559-8599|1536.24|FURNITURE|egular packages shall have to impress along the |
-62|Customer#000000062|upJK2Dnw13,|7|17-361-978-7059|595.61|MACHINERY|kly special dolphins. pinto beans are slyly. quickly regular accounts are furiously a|
-63|Customer#000000063|IXRSpVWWZraKII|21|31-952-552-9584|9331.13|AUTOMOBILE|ithely even accounts detect slyly above the fluffily ir|
-64|Customer#000000064|MbCeGY20kaKK3oalJD,OT|3|13-558-731-7204|-646.64|BUILDING|structions after the quietly ironic theodolites cajole be|
-65|Customer#000000065|RGT yzQ0y4l0H90P783LG4U95bXQFDRXbWa1sl,X|23|33-733-623-5267|8795.16|AUTOMOBILE|y final foxes serve carefully. theodolites are carefully. pending i|
-66|Customer#000000066|XbsEqXH1ETbJYYtA1A|22|32-213-373-5094|242.77|HOUSEHOLD|le slyly accounts. carefully silent packages benea|
-67|Customer#000000067|rfG0cOgtr5W8 xILkwp9fpCS8|9|19-403-114-4356|8166.59|MACHINERY|indle furiously final, even theodo|
-68|Customer#000000068|o8AibcCRkXvQFh8hF,7o|12|22-918-832-2411|6853.37|HOUSEHOLD| pending pinto beans impress realms. final dependencies |
-69|Customer#000000069|Ltx17nO9Wwhtdbe9QZVxNgP98V7xW97uvSH1prEw|9|19-225-978-5670|1709.28|HOUSEHOLD|thely final ideas around the quickly final dependencies affix carefully quickly final theodolites. final accounts c|
-70|Customer#000000070|mFowIuhnHjp2GjCiYYavkW kUwOjIaTCQ|22|32-828-107-2832|4867.52|FURNITURE|fter the special asymptotes. ideas after the unusual frets cajole quickly regular pinto be|
-71|Customer#000000071|TlGalgdXWBmMV,6agLyWYDyIz9MKzcY8gl,w6t1B|7|17-710-812-5403|-611.19|HOUSEHOLD|g courts across the regular, final pinto beans are blithely pending ac|
-72|Customer#000000072|putjlmskxE,zs,HqeIA9Wqu7dhgH5BVCwDwHHcf|2|12-759-144-9689|-362.86|FURNITURE|ithely final foxes sleep always quickly bold accounts. final wat|
-73|Customer#000000073|8IhIxreu4Ug6tt5mog4|0|10-473-439-3214|4288.50|BUILDING|usual, unusual packages sleep busily along the furiou|
-74|Customer#000000074|IkJHCA3ZThF7qL7VKcrU nRLl,kylf |4|14-199-862-7209|2764.43|MACHINERY|onic accounts. blithely slow packages would haggle carefully. qui|
-75|Customer#000000075|Dh 6jZ,cwxWLKQfRKkiGrzv6pm|18|28-247-803-9025|6684.10|AUTOMOBILE| instructions cajole even, even deposits. finally bold deposits use above the even pains. slyl|
-76|Customer#000000076|m3sbCvjMOHyaOofH,e UkGPtqc4|0|10-349-718-3044|5745.33|FURNITURE|pecial deposits. ironic ideas boost blithely according to the closely ironic theodolites! furiously final deposits n|
-77|Customer#000000077|4tAE5KdMFGD4byHtXF92vx|17|27-269-357-4674|1738.87|BUILDING|uffily silent requests. carefully ironic asymptotes among the ironic hockey players are carefully bli|
-78|Customer#000000078|HBOta,ZNqpg3U2cSL0kbrftkPwzX|9|19-960-700-9191|7136.97|FURNITURE|ests. blithely bold pinto beans h|
-79|Customer#000000079|n5hH2ftkVRwW8idtD,BmM2|15|25-147-850-4166|5121.28|MACHINERY|es. packages haggle furiously. regular, special requests poach after the quickly express ideas. blithely pending re|
-80|Customer#000000080|K,vtXp8qYB |0|10-267-172-7101|7383.53|FURNITURE|tect among the dependencies. bold accounts engage closely even pinto beans. ca|
-81|Customer#000000081|SH6lPA7JiiNC6dNTrR|20|30-165-277-3269|2023.71|BUILDING|r packages. fluffily ironic requests cajole fluffily. ironically regular theodolit|
-82|Customer#000000082|zhG3EZbap4c992Gj3bK,3Ne,Xn|18|28-159-442-5305|9468.34|AUTOMOBILE|s wake. bravely regular accounts are furiously. regula|
-83|Customer#000000083|HnhTNB5xpnSF20JBH4Ycs6psVnkC3RDf|22|32-817-154-4122|6463.51|BUILDING|ccording to the quickly bold warhorses. final, regular foxes integrate carefully. bold packages nag blithely ev|
-84|Customer#000000084|lpXz6Fwr9945rnbtMc8PlueilS1WmASr CB|11|21-546-818-3802|5174.71|FURNITURE|ly blithe foxes. special asymptotes haggle blithely against the furiously regular depo|
-85|Customer#000000085|siRerlDwiolhYR 8FgksoezycLj|5|15-745-585-8219|3386.64|FURNITURE|ronic ideas use above the slowly pendin|
-86|Customer#000000086|US6EGGHXbTTXPL9SBsxQJsuvy|0|10-677-951-2353|3306.32|HOUSEHOLD|quests. pending dugouts are carefully aroun|
-87|Customer#000000087|hgGhHVSWQl 6jZ6Ev|23|33-869-884-7053|6327.54|FURNITURE|hely ironic requests integrate according to the ironic accounts. slyly regular pla|
-88|Customer#000000088|wtkjBN9eyrFuENSMmMFlJ3e7jE5KXcg|16|26-516-273-2566|8031.44|AUTOMOBILE|s are quickly above the quickly ironic instructions; even requests about the carefully final deposi|
-89|Customer#000000089|dtR, y9JQWUO6FoJExyp8whOU|14|24-394-451-5404|1530.76|FURNITURE|counts are slyly beyond the slyly final accounts. quickly final ideas wake. r|
-90|Customer#000000090|QxCzH7VxxYUWwfL7|16|26-603-491-1238|7354.23|BUILDING|sly across the furiously even |
-91|Customer#000000091|S8OMYFrpHwoNHaGBeuS6E 6zhHGZiprw1b7 q|8|18-239-400-3677|4643.14|AUTOMOBILE|onic accounts. fluffily silent pinto beans boost blithely according to the fluffily exp|
-92|Customer#000000092|obP PULk2LH LqNF,K9hcbNqnLAkJVsl5xqSrY,|2|12-446-416-8471|1182.91|MACHINERY|. pinto beans hang slyly final deposits. ac|
-93|Customer#000000093|EHXBr2QGdh|7|17-359-388-5266|2182.52|MACHINERY|press deposits. carefully regular platelets r|
-94|Customer#000000094|IfVNIN9KtkScJ9dUjK3Pg5gY1aFeaXewwf|9|19-953-499-8833|5500.11|HOUSEHOLD|latelets across the bold, final requests sleep according to the fluffily bold accounts. unusual deposits amon|
-95|Customer#000000095|EU0xvmWvOmUUn5J,2z85DQyG7QCJ9Xq7|15|25-923-255-2929|5327.38|MACHINERY|ithely. ruthlessly final requests wake slyly alongside of the furiously silent pinto beans. even the|
-96|Customer#000000096|vWLOrmXhRR|8|18-422-845-1202|6323.92|AUTOMOBILE|press requests believe furiously. carefully final instructions snooze carefully. |
-97|Customer#000000097|OApyejbhJG,0Iw3j rd1M|17|27-588-919-5638|2164.48|AUTOMOBILE|haggle slyly. bold, special ideas are blithely above the thinly bold theo|
-98|Customer#000000098|7yiheXNSpuEAwbswDW|12|22-885-845-6889|-551.37|BUILDING|ages. furiously pending accounts are quickly carefully final foxes: busily pe|
-99|Customer#000000099|szsrOiPtCHVS97Lt|15|25-515-237-9232|4088.65|HOUSEHOLD|cajole slyly about the regular theodolites! furiously bold requests nag along the pending, regular packages. somas|
-100|Customer#000000100|fptUABXcmkC5Wx|20|30-749-445-4907|9889.89|FURNITURE|was furiously fluffily quiet deposits. silent, pending requests boost against |
-101|Customer#000000101|sMmL2rNeHDltovSm Y|2|12-514-298-3699|7470.96|MACHINERY| sleep. pending packages detect slyly ironic pack|
-102|Customer#000000102|UAtflJ06 fn9zBfKjInkQZlWtqaA|19|29-324-978-8538|8462.17|BUILDING|ously regular dependencies nag among the furiously express dinos. blithely final|
-103|Customer#000000103|8KIsQX4LJ7QMsj6DrtFtXu0nUEdV,8a|9|19-216-107-2107|2757.45|BUILDING|furiously pending notornis boost slyly around the blithely ironic ideas? final, even instructions cajole fl|
-104|Customer#000000104|9mcCK L7rt0SwiYtrbO88DiZS7U d7M|10|20-966-284-8065|-588.38|FURNITURE|rate carefully slyly special pla|
-105|Customer#000000105|4iSJe4L SPjg7kJj98Yz3z0B|10|20-793-553-6417|9091.82|MACHINERY|l pains cajole even accounts. quietly final instructi|
-106|Customer#000000106|xGCOEAUjUNG|1|11-751-989-4627|3288.42|MACHINERY|lose slyly. ironic accounts along the evenly regular theodolites wake about the special, final gifts. |
-107|Customer#000000107|Zwg64UZ,q7GRqo3zm7P1tZIRshBDz|15|25-336-529-9919|2514.15|AUTOMOBILE|counts cajole slyly. regular requests wake. furiously regular deposits about the blithely final fo|
-108|Customer#000000108|GPoeEvpKo1|5|15-908-619-7526|2259.38|BUILDING|refully ironic deposits sleep. regular, unusual requests wake slyly|
-109|Customer#000000109|OOOkYBgCMzgMQXUmkocoLb56rfrdWp2NE2c|16|26-992-422-8153|-716.10|BUILDING|es. fluffily final dependencies sleep along the blithely even pinto beans. final deposits haggle furiously furiou|
-110|Customer#000000110|mymPfgphaYXNYtk|10|20-893-536-2069|7462.99|AUTOMOBILE|nto beans cajole around the even, final deposits. quickly bold packages according to the furiously regular dept|
-111|Customer#000000111|CBSbPyOWRorloj2TBvrK9qp9tHBs|22|32-582-283-7528|6505.26|MACHINERY|ly unusual instructions detect fluffily special deposits-- theodolites nag carefully during the ironic dependencies|
-112|Customer#000000112|RcfgG3bO7QeCnfjqJT1|19|29-233-262-8382|2953.35|FURNITURE|rmanently unusual multipliers. blithely ruthless deposits are furiously along the|
-113|Customer#000000113|eaOl5UBXIvdY57rglaIzqvfPD,MYfK|12|22-302-930-4756|2912.00|BUILDING|usly regular theodolites boost furiously doggedly pending instructio|
-114|Customer#000000114|xAt 5f5AlFIU|14|24-805-212-7646|1027.46|FURNITURE|der the carefully express theodolites are after the packages. packages are. bli|
-115|Customer#000000115|0WFt1IXENmUT2BgbsB0ShVKJZt0HCBCbFl0aHc|8|18-971-699-1843|7508.92|HOUSEHOLD|sits haggle above the carefully ironic theodolite|
-116|Customer#000000116|yCuVxIgsZ3,qyK2rloThy3u|16|26-632-309-5792|8403.99|BUILDING|as. quickly final sauternes haggle slyly carefully even packages. brave, ironic pinto beans are above the furious|
-117|Customer#000000117|uNhM,PzsRA3S,5Y Ge5Npuhi|24|34-403-631-3505|3950.83|FURNITURE|affix. instructions are furiously sl|
-118|Customer#000000118|OVnFuHygK9wx3xpg8|18|28-639-943-7051|3582.37|AUTOMOBILE|uick packages alongside of the furiously final deposits haggle above the fluffily even foxes. blithely dogged dep|
-119|Customer#000000119|M1ETOIecuvH8DtM0Y0nryXfW|7|17-697-919-8406|3930.35|FURNITURE|express ideas. blithely ironic foxes thrash. special acco|
-120|Customer#000000120|zBNna00AEInqyO1|12|22-291-534-1571|363.75|MACHINERY| quickly. slyly ironic requests cajole blithely furiously final dependen|
-121|Customer#000000121|tv nCR2YKupGN73mQudO|17|27-411-990-2959|6428.32|BUILDING|uriously stealthy ideas. carefully final courts use carefully|
-122|Customer#000000122|yp5slqoNd26lAENZW3a67wSfXA6hTF|3|13-702-694-4520|7865.46|HOUSEHOLD| the special packages hinder blithely around the permanent requests. bold depos|
-123|Customer#000000123|YsOnaaER8MkvK5cpf4VSlq|5|15-817-151-1168|5897.83|BUILDING|ependencies. regular, ironic requests are fluffily regu|
-124|Customer#000000124|aTbyVAW5tCd,v09O|18|28-183-750-7809|1842.49|AUTOMOBILE|le fluffily even dependencies. quietly s|
-125|Customer#000000125|,wSZXdVR xxIIfm9s8ITyLl3kgjT6UC07GY0Y|19|29-261-996-3120|-234.12|FURNITURE|x-ray finally after the packages? regular requests c|
-126|Customer#000000126|ha4EHmbx3kg DYCsP6DFeUOmavtQlHhcfaqr|22|32-755-914-7592|1001.39|HOUSEHOLD|s about the even instructions boost carefully furiously ironic pearls. ruthless, |
-127|Customer#000000127|Xyge4DX2rXKxXyye1Z47LeLVEYMLf4Bfcj|21|31-101-672-2951|9280.71|MACHINERY|ic, unusual theodolites nod silently after the final, ironic instructions: pending r|
-128|Customer#000000128|AmKUMlJf2NRHcKGmKjLS|4|14-280-874-8044|-986.96|HOUSEHOLD|ing packages integrate across the slyly unusual dugouts. blithely silent ideas sublate carefully. blithely expr|
-129|Customer#000000129|q7m7rbMM0BpaCdmxloCgBDRCleXsXkdD8kf|7|17-415-148-7416|9127.27|HOUSEHOLD| unusual deposits boost carefully furiously silent ideas. pending accounts cajole slyly across|
-130|Customer#000000130|RKPx2OfZy0Vn 8wGWZ7F2EAvmMORl1k8iH|9|19-190-993-9281|5073.58|HOUSEHOLD|ix slowly. express packages along the furiously ironic requests integrate daringly deposits. fur|
-131|Customer#000000131|jyN6lAjb1FtH10rMC,XzlWyCBrg75|11|21-840-210-3572|8595.53|HOUSEHOLD|jole special packages. furiously final dependencies about the furiously speci|
-132|Customer#000000132|QM5YabAsTLp9|4|14-692-150-9717|162.57|HOUSEHOLD|uickly carefully special theodolites. carefully regular requests against the blithely unusual instructions |
-133|Customer#000000133|IMCuXdpIvdkYO92kgDGuyHgojcUs88p|17|27-408-997-8430|2314.67|AUTOMOBILE|t packages. express pinto beans are blithely along the unusual, even theodolites. silent packages use fu|
-134|Customer#000000134|sUiZ78QCkTQPICKpA9OBzkUp2FM|11|21-200-159-5932|4608.90|BUILDING|yly fluffy foxes boost final ideas. b|
-135|Customer#000000135|oZK,oC0 fdEpqUML|19|29-399-293-6241|8732.91|FURNITURE| the slyly final accounts. deposits cajole carefully. carefully sly packag|
-136|Customer#000000136|QoLsJ0v5C1IQbh,DS1|7|17-501-210-4726|-842.39|FURNITURE|ackages sleep ironic, final courts. even requests above the blithely bold requests g|
-137|Customer#000000137|cdW91p92rlAEHgJafqYyxf1Q|16|26-777-409-5654|7838.30|HOUSEHOLD|carefully regular theodolites use. silent dolphins cajo|
-138|Customer#000000138|5uyLAeY7HIGZqtu66Yn08f|5|15-394-860-4589|430.59|MACHINERY|ts doze on the busy ideas. regular|
-139|Customer#000000139|3ElvBwudHKL02732YexGVFVt |9|19-140-352-1403|7897.78|MACHINERY|nstructions. quickly ironic ideas are carefully. bold, |
-140|Customer#000000140|XRqEPiKgcETII,iOLDZp5jA|4|14-273-885-6505|9963.15|MACHINERY|ies detect slyly ironic accounts. slyly ironic theodolites hag|
-141|Customer#000000141|5IW,WROVnikc3l7DwiUDGQNGsLBGOL6Dc0|1|11-936-295-6204|6706.14|FURNITURE|packages nag furiously. carefully unusual accounts snooze according to the fluffily regular pinto beans. slyly spec|
-142|Customer#000000142|AnJ5lxtLjioClr2khl9pb8NLxG2,|9|19-407-425-2584|2209.81|AUTOMOBILE|. even, express theodolites upo|
-143|Customer#000000143|681r22uL452zqk 8By7I9o9enQfx0|16|26-314-406-7725|2186.50|MACHINERY|across the blithely unusual requests haggle theodo|
-144|Customer#000000144|VxYZ3ebhgbltnetaGjNC8qCccjYU05 fePLOno8y|1|11-717-379-4478|6417.31|MACHINERY|ges. slyly regular accounts are slyly. bold, idle reque|
-145|Customer#000000145|kQjHmt2kcec cy3hfMh969u|13|23-562-444-8454|9748.93|HOUSEHOLD|ests? express, express instructions use. blithely fina|
-146|Customer#000000146|GdxkdXG9u7iyI1,,y5tq4ZyrcEy|3|13-835-723-3223|3328.68|FURNITURE|ffily regular dinos are slyly unusual requests. slyly specia|
-147|Customer#000000147|6VvIwbVdmcsMzuu,C84GtBWPaipGfi7DV|18|28-803-187-4335|8071.40|AUTOMOBILE|ress packages above the blithely regular packages sleep fluffily blithely ironic accounts. |
-148|Customer#000000148|BhSPlEWGvIJyT9swk vCWE|11|21-562-498-6636|2135.60|HOUSEHOLD|ing to the carefully ironic requests. carefully regular dependencies about the theodolites wake furious|
-149|Customer#000000149|3byTHCp2mNLPigUrrq|19|29-797-439-6760|8959.65|AUTOMOBILE|al instructions haggle against the slyly bold w|
-150|Customer#000000150|zeoGShTjCwGPplOWFkLURrh41O0AZ8dwNEEN4 |18|28-328-564-7630|3849.48|MACHINERY|ole blithely among the furiously pending packages. furiously bold ideas wake fluffily ironic idea|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl
deleted file mode 100644
index 0168ae9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src.tbl
+++ /dev/null
@@ -1,1030 +0,0 @@
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-2
-3
-3
-3
-4
-4
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl
deleted file mode 100644
index d8263ee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/large_card_join_src_small.tbl
+++ /dev/null
@@ -1 +0,0 @@
-2
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl
deleted file mode 100644
index 58d47c6..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/lineitem.tbl
+++ /dev/null
@@ -1,6005 +0,0 @@
-1|156|4|1|17|17954.55|0.04|0.02|N|O|1996-03-13|1996-02-12|1996-03-22|DELIVER IN PERSON|TRUCK|egular courts above the|
-1|68|9|2|36|34850.16|0.09|0.06|N|O|1996-04-12|1996-02-28|1996-04-20|TAKE BACK RETURN|MAIL|ly final dependencies: slyly bold |
-1|64|5|3|8|7712.48|0.10|0.02|N|O|1996-01-29|1996-03-05|1996-01-31|TAKE BACK RETURN|REG AIR|riously. regular, express dep|
-1|3|6|4|28|25284.00|0.09|0.06|N|O|1996-04-21|1996-03-30|1996-05-16|NONE|AIR|lites. fluffily even de|
-1|25|8|5|24|22200.48|0.10|0.04|N|O|1996-03-30|1996-03-14|1996-04-01|NONE|FOB| pending foxes. slyly re|
-1|16|3|6|32|29312.32|0.07|0.02|N|O|1996-01-30|1996-02-07|1996-02-03|DELIVER IN PERSON|MAIL|arefully slyly ex|
-2|107|2|1|38|38269.80|0.00|0.05|N|O|1997-01-28|1997-01-14|1997-02-02|TAKE BACK RETURN|RAIL|ven requests. deposits breach a|
-3|5|2|1|45|40725.00|0.06|0.00|R|F|1994-02-02|1994-01-04|1994-02-23|NONE|AIR|ongside of the furiously brave acco|
-3|20|10|2|49|45080.98|0.10|0.00|R|F|1993-11-09|1993-12-20|1993-11-24|TAKE BACK RETURN|RAIL| unusual accounts. eve|
-3|129|8|3|27|27786.24|0.06|0.07|A|F|1994-01-16|1993-11-22|1994-01-23|DELIVER IN PERSON|SHIP|nal foxes wake. |
-3|30|5|4|2|1860.06|0.01|0.06|A|F|1993-12-04|1994-01-07|1994-01-01|NONE|TRUCK|y. fluffily pending d|
-3|184|5|5|28|30357.04|0.04|0.00|R|F|1993-12-14|1994-01-10|1994-01-01|TAKE BACK RETURN|FOB|ages nag slyly pending|
-3|63|8|6|26|25039.56|0.10|0.02|A|F|1993-10-29|1993-12-18|1993-11-04|TAKE BACK RETURN|RAIL|ges sleep after the caref|
-4|89|10|1|30|29672.40|0.03|0.08|N|O|1996-01-10|1995-12-14|1996-01-18|DELIVER IN PERSON|REG AIR|- quickly regular packages sleep. idly|
-5|109|10|1|15|15136.50|0.02|0.04|R|F|1994-10-31|1994-08-31|1994-11-20|NONE|AIR|ts wake furiously |
-5|124|5|2|26|26627.12|0.07|0.08|R|F|1994-10-16|1994-09-25|1994-10-19|NONE|FOB|sts use slyly quickly special instruc|
-5|38|4|3|50|46901.50|0.08|0.03|A|F|1994-08-08|1994-10-13|1994-08-26|DELIVER IN PERSON|AIR|eodolites. fluffily unusual|
-6|140|6|1|37|38485.18|0.08|0.03|A|F|1992-04-27|1992-05-15|1992-05-02|TAKE BACK RETURN|TRUCK|p furiously special foxes|
-7|183|4|1|12|12998.16|0.07|0.03|N|O|1996-05-07|1996-03-13|1996-06-03|TAKE BACK RETURN|FOB|ss pinto beans wake against th|
-7|146|3|2|9|9415.26|0.08|0.08|N|O|1996-02-01|1996-03-02|1996-02-19|TAKE BACK RETURN|SHIP|es. instructions|
-7|95|8|3|46|45774.14|0.10|0.07|N|O|1996-01-15|1996-03-27|1996-02-03|COLLECT COD|MAIL| unusual reques|
-7|164|5|4|28|29796.48|0.03|0.04|N|O|1996-03-21|1996-04-08|1996-04-20|NONE|FOB|. slyly special requests haggl|
-7|152|4|5|38|39981.70|0.08|0.01|N|O|1996-02-11|1996-02-24|1996-02-18|DELIVER IN PERSON|TRUCK|ns haggle carefully ironic deposits. bl|
-7|80|10|6|35|34302.80|0.06|0.03|N|O|1996-01-16|1996-02-23|1996-01-22|TAKE BACK RETURN|FOB|jole. excuses wake carefully alongside of |
-7|158|3|7|5|5290.75|0.04|0.02|N|O|1996-02-10|1996-03-26|1996-02-13|NONE|FOB|ithely regula|
-32|83|4|1|28|27526.24|0.05|0.08|N|O|1995-10-23|1995-08-27|1995-10-26|TAKE BACK RETURN|TRUCK|sleep quickly. req|
-32|198|10|2|32|35142.08|0.02|0.00|N|O|1995-08-14|1995-10-07|1995-08-27|COLLECT COD|AIR|lithely regular deposits. fluffily |
-32|45|2|3|2|1890.08|0.09|0.02|N|O|1995-08-07|1995-10-07|1995-08-23|DELIVER IN PERSON|AIR| express accounts wake according to the|
-32|3|8|4|4|3612.00|0.09|0.03|N|O|1995-08-04|1995-10-01|1995-09-03|NONE|REG AIR|e slyly final pac|
-32|86|7|5|44|43387.52|0.05|0.06|N|O|1995-08-28|1995-08-20|1995-09-14|DELIVER IN PERSON|AIR|symptotes nag according to the ironic depo|
-32|12|6|6|6|5472.06|0.04|0.03|N|O|1995-07-21|1995-09-23|1995-07-25|COLLECT COD|RAIL| gifts cajole carefully.|
-33|62|7|1|31|29823.86|0.09|0.04|A|F|1993-10-29|1993-12-19|1993-11-08|COLLECT COD|TRUCK|ng to the furiously ironic package|
-33|61|8|2|32|30753.92|0.02|0.05|A|F|1993-12-09|1994-01-04|1993-12-28|COLLECT COD|MAIL|gular theodolites|
-33|138|4|3|5|5190.65|0.05|0.03|A|F|1993-12-09|1993-12-25|1993-12-23|TAKE BACK RETURN|AIR|. stealthily bold exc|
-33|34|5|4|41|38295.23|0.09|0.00|R|F|1993-11-09|1994-01-24|1993-11-11|TAKE BACK RETURN|MAIL|unusual packages doubt caref|
-34|89|10|1|13|12858.04|0.00|0.07|N|O|1998-10-23|1998-09-14|1998-11-06|NONE|REG AIR|nic accounts. deposits are alon|
-34|90|1|2|22|21781.98|0.08|0.06|N|O|1998-10-09|1998-10-16|1998-10-12|NONE|FOB|thely slyly p|
-34|170|7|3|6|6421.02|0.02|0.06|N|O|1998-10-30|1998-09-20|1998-11-05|NONE|FOB|ar foxes sleep |
-35|1|4|1|24|21624.00|0.02|0.00|N|O|1996-02-21|1996-01-03|1996-03-18|TAKE BACK RETURN|FOB|, regular tithe|
-35|162|1|2|34|36113.44|0.06|0.08|N|O|1996-01-22|1996-01-06|1996-01-27|DELIVER IN PERSON|RAIL|s are carefully against the f|
-35|121|4|3|7|7147.84|0.06|0.04|N|O|1996-01-19|1995-12-22|1996-01-29|NONE|MAIL| the carefully regular |
-35|86|7|4|25|24652.00|0.06|0.05|N|O|1995-11-26|1995-12-25|1995-12-21|DELIVER IN PERSON|SHIP| quickly unti|
-35|120|7|5|34|34684.08|0.08|0.06|N|O|1995-11-08|1996-01-15|1995-11-26|COLLECT COD|MAIL|. silent, unusual deposits boost|
-35|31|7|6|28|26068.84|0.03|0.02|N|O|1996-02-01|1995-12-24|1996-02-28|COLLECT COD|RAIL|ly alongside of |
-36|120|1|1|42|42845.04|0.09|0.00|N|O|1996-02-03|1996-01-21|1996-02-23|COLLECT COD|SHIP| careful courts. special |
-37|23|8|1|40|36920.80|0.09|0.03|A|F|1992-07-21|1992-08-01|1992-08-15|NONE|REG AIR|luffily regular requests. slyly final acco|
-37|127|6|2|39|40057.68|0.05|0.02|A|F|1992-07-02|1992-08-18|1992-07-28|TAKE BACK RETURN|RAIL|the final requests. ca|
-37|13|7|3|43|39259.43|0.05|0.08|A|F|1992-07-10|1992-07-06|1992-08-02|DELIVER IN PERSON|TRUCK|iously ste|
-38|176|5|1|44|47351.48|0.04|0.02|N|O|1996-09-29|1996-11-17|1996-09-30|COLLECT COD|MAIL|s. blithely unusual theodolites am|
-39|3|10|1|44|39732.00|0.09|0.06|N|O|1996-11-14|1996-12-15|1996-12-12|COLLECT COD|RAIL|eodolites. careful|
-39|187|8|2|26|28266.68|0.08|0.04|N|O|1996-11-04|1996-10-20|1996-11-20|NONE|FOB|ckages across the slyly silent|
-39|68|3|3|46|44530.76|0.06|0.08|N|O|1996-09-26|1996-12-19|1996-10-26|DELIVER IN PERSON|AIR|he carefully e|
-39|21|6|4|32|29472.64|0.07|0.05|N|O|1996-10-02|1996-12-19|1996-10-14|COLLECT COD|MAIL|heodolites sleep silently pending foxes. ac|
-39|55|10|5|43|41067.15|0.01|0.01|N|O|1996-10-17|1996-11-14|1996-10-26|COLLECT COD|MAIL|yly regular i|
-39|95|7|6|40|39803.60|0.06|0.05|N|O|1996-12-08|1996-10-22|1997-01-01|COLLECT COD|AIR|quickly ironic fox|
-64|86|7|1|21|20707.68|0.05|0.02|R|F|1994-09-30|1994-09-18|1994-10-26|DELIVER IN PERSON|REG AIR|ch slyly final, thin platelets.|
-65|60|5|1|26|24961.56|0.03|0.03|A|F|1995-04-20|1995-04-25|1995-05-13|NONE|TRUCK|pending deposits nag even packages. ca|
-65|74|3|2|22|21429.54|0.00|0.05|N|O|1995-07-17|1995-06-04|1995-07-19|COLLECT COD|FOB| ideas. special, r|
-65|2|5|3|21|18942.00|0.09|0.07|N|O|1995-07-06|1995-05-14|1995-07-31|DELIVER IN PERSON|RAIL|bove the even packages. accounts nag carefu|
-66|116|10|1|31|31499.41|0.00|0.08|R|F|1994-02-19|1994-03-11|1994-02-20|TAKE BACK RETURN|RAIL|ut the unusual accounts sleep at the bo|
-66|174|5|2|41|44040.97|0.04|0.07|A|F|1994-02-21|1994-03-01|1994-03-18|COLLECT COD|AIR| regular de|
-67|22|5|1|4|3688.08|0.09|0.04|N|O|1997-04-17|1997-01-31|1997-04-20|NONE|SHIP| cajole thinly expres|
-67|21|10|2|12|11052.24|0.09|0.05|N|O|1997-01-27|1997-02-21|1997-02-22|NONE|REG AIR| even packages cajole|
-67|174|4|3|5|5370.85|0.03|0.07|N|O|1997-02-20|1997-02-12|1997-02-21|DELIVER IN PERSON|TRUCK|y unusual packages thrash pinto |
-67|88|9|4|44|43475.52|0.08|0.06|N|O|1997-03-18|1997-01-29|1997-04-13|DELIVER IN PERSON|RAIL|se quickly above the even, express reques|
-67|41|10|5|23|21643.92|0.05|0.07|N|O|1997-04-19|1997-02-14|1997-05-06|DELIVER IN PERSON|REG AIR|ly regular deposit|
-67|179|9|6|29|31295.93|0.02|0.05|N|O|1997-01-25|1997-01-27|1997-01-27|DELIVER IN PERSON|FOB|ultipliers |
-68|8|1|1|3|2724.00|0.05|0.02|N|O|1998-07-04|1998-06-05|1998-07-21|NONE|RAIL|fully special instructions cajole. furious|
-68|176|4|2|46|49503.82|0.02|0.05|N|O|1998-06-26|1998-06-07|1998-07-05|NONE|MAIL| requests are unusual, regular pinto |
-68|35|1|3|46|43011.38|0.04|0.05|N|O|1998-08-13|1998-07-08|1998-08-29|NONE|RAIL|egular dependencies affix ironically along |
-68|95|9|4|20|19901.80|0.07|0.01|N|O|1998-06-27|1998-05-23|1998-07-02|NONE|REG AIR| excuses integrate fluffily |
-68|83|4|5|27|26543.16|0.03|0.06|N|O|1998-06-19|1998-06-25|1998-06-29|DELIVER IN PERSON|SHIP|ccounts. deposits use. furiously|
-68|103|6|6|30|30093.00|0.05|0.06|N|O|1998-08-11|1998-07-11|1998-08-14|NONE|RAIL|oxes are slyly blithely fin|
-68|140|6|7|41|42645.74|0.09|0.08|N|O|1998-06-24|1998-06-27|1998-07-06|NONE|SHIP|eposits nag special ideas. furiousl|
-69|116|10|1|48|48773.28|0.01|0.07|A|F|1994-08-17|1994-08-11|1994-09-08|NONE|TRUCK|regular epitaphs. carefully even ideas hag|
-69|105|10|2|32|32163.20|0.08|0.06|A|F|1994-08-24|1994-08-17|1994-08-31|NONE|REG AIR|s sleep carefully bold, |
-69|138|4|3|17|17648.21|0.09|0.00|A|F|1994-07-02|1994-07-07|1994-07-03|TAKE BACK RETURN|AIR|final, pending instr|
-69|38|9|4|3|2814.09|0.09|0.04|R|F|1994-06-06|1994-07-27|1994-06-15|NONE|MAIL| blithely final d|
-69|93|6|5|42|41709.78|0.07|0.04|R|F|1994-07-31|1994-07-26|1994-08-28|DELIVER IN PERSON|REG AIR|tect regular, speci|
-69|19|3|6|23|21137.23|0.05|0.00|A|F|1994-10-03|1994-08-06|1994-10-24|NONE|SHIP|nding accounts ca|
-70|65|2|1|8|7720.48|0.03|0.08|R|F|1994-01-12|1994-02-27|1994-01-14|TAKE BACK RETURN|FOB|ggle. carefully pending dependenc|
-70|197|10|2|13|14263.47|0.06|0.06|A|F|1994-03-03|1994-02-13|1994-03-26|COLLECT COD|AIR|lyly special packag|
-70|180|8|3|1|1080.18|0.03|0.05|R|F|1994-01-26|1994-03-05|1994-01-28|TAKE BACK RETURN|RAIL|quickly. fluffily unusual theodolites c|
-70|46|9|4|11|10406.44|0.01|0.05|A|F|1994-03-17|1994-03-17|1994-03-27|NONE|MAIL|alongside of the deposits. fur|
-70|38|9|5|37|34707.11|0.09|0.04|R|F|1994-02-13|1994-03-16|1994-02-21|COLLECT COD|MAIL|n accounts are. q|
-70|56|8|6|19|18164.95|0.06|0.03|A|F|1994-01-26|1994-02-17|1994-02-06|TAKE BACK RETURN|SHIP| packages wake pending accounts.|
-71|62|3|1|25|24051.50|0.09|0.07|N|O|1998-04-10|1998-04-22|1998-04-11|COLLECT COD|FOB|ckly. slyly|
-71|66|1|2|3|2898.18|0.09|0.07|N|O|1998-05-23|1998-04-03|1998-06-02|COLLECT COD|SHIP|y. pinto beans haggle after the|
-71|35|1|3|45|42076.35|0.00|0.07|N|O|1998-02-23|1998-03-20|1998-03-24|DELIVER IN PERSON|SHIP| ironic packages believe blithely a|
-71|97|9|4|33|32903.97|0.00|0.01|N|O|1998-04-12|1998-03-20|1998-04-15|NONE|FOB| serve quickly fluffily bold deposi|
-71|104|7|5|39|39159.90|0.08|0.06|N|O|1998-01-29|1998-04-07|1998-02-18|DELIVER IN PERSON|RAIL|l accounts sleep across the pack|
-71|196|9|6|34|37270.46|0.04|0.01|N|O|1998-03-05|1998-04-22|1998-03-30|DELIVER IN PERSON|TRUCK|s cajole. |
-96|124|7|1|23|23554.76|0.10|0.06|A|F|1994-07-19|1994-06-29|1994-07-25|DELIVER IN PERSON|TRUCK|ep-- carefully reg|
-96|136|7|2|30|31083.90|0.01|0.06|R|F|1994-06-03|1994-05-29|1994-06-22|DELIVER IN PERSON|TRUCK|e quickly even ideas. furiou|
-97|120|4|1|13|13261.56|0.00|0.02|R|F|1993-04-01|1993-04-04|1993-04-08|NONE|TRUCK|ayers cajole against the furiously|
-97|50|7|2|37|35151.85|0.02|0.06|A|F|1993-04-13|1993-03-30|1993-04-14|DELIVER IN PERSON|SHIP|ic requests boost carefully quic|
-97|78|6|3|19|18583.33|0.06|0.08|R|F|1993-05-14|1993-03-05|1993-05-25|TAKE BACK RETURN|RAIL|gifts. furiously ironic packages cajole. |
-98|41|2|1|28|26349.12|0.06|0.07|A|F|1994-12-24|1994-10-25|1995-01-16|COLLECT COD|REG AIR| pending, regular accounts s|
-98|110|7|2|1|1010.11|0.00|0.00|A|F|1994-12-01|1994-12-12|1994-12-15|DELIVER IN PERSON|TRUCK|. unusual instructions against|
-98|45|6|3|14|13230.56|0.05|0.02|A|F|1994-12-30|1994-11-22|1995-01-27|COLLECT COD|AIR| cajole furiously. blithely ironic ideas |
-98|168|9|4|10|10681.60|0.03|0.03|A|F|1994-10-23|1994-11-08|1994-11-09|COLLECT COD|RAIL| carefully. quickly ironic ideas|
-99|88|9|1|10|9880.80|0.02|0.01|A|F|1994-05-18|1994-06-03|1994-05-23|COLLECT COD|RAIL|kages. requ|
-99|124|5|2|5|5120.60|0.02|0.07|R|F|1994-05-06|1994-05-28|1994-05-20|TAKE BACK RETURN|RAIL|ests cajole fluffily waters. blithe|
-99|135|1|3|42|43475.46|0.02|0.02|A|F|1994-04-19|1994-05-18|1994-04-20|NONE|RAIL|kages are fluffily furiously ir|
-99|109|2|4|36|36327.60|0.09|0.02|A|F|1994-07-04|1994-04-17|1994-07-30|DELIVER IN PERSON|AIR|slyly. slyly e|
-100|63|4|1|28|26965.68|0.04|0.05|N|O|1998-05-08|1998-05-13|1998-06-07|COLLECT COD|TRUCK|sts haggle. slowl|
-100|116|10|2|22|22354.42|0.00|0.07|N|O|1998-06-24|1998-04-12|1998-06-29|DELIVER IN PERSON|SHIP|nto beans alongside of the fi|
-100|47|4|3|46|43563.84|0.03|0.04|N|O|1998-05-02|1998-04-10|1998-05-22|TAKE BACK RETURN|SHIP|ular accounts. even|
-100|39|10|4|14|13146.42|0.06|0.03|N|O|1998-05-22|1998-05-01|1998-06-03|COLLECT COD|MAIL|y. furiously ironic ideas gr|
-100|54|6|5|37|35299.85|0.05|0.00|N|O|1998-03-06|1998-04-16|1998-03-31|TAKE BACK RETURN|TRUCK|nd the quickly s|
-101|119|9|1|49|49936.39|0.10|0.00|N|O|1996-06-21|1996-05-27|1996-06-29|DELIVER IN PERSON|REG AIR|ts-- final packages sleep furiousl|
-101|164|9|2|36|38309.76|0.00|0.01|N|O|1996-05-19|1996-05-01|1996-06-04|DELIVER IN PERSON|AIR|tes. blithely pending dolphins x-ray f|
-101|139|5|3|12|12469.56|0.06|0.02|N|O|1996-03-29|1996-04-20|1996-04-12|COLLECT COD|MAIL|. quickly regular|
-102|89|10|1|37|36595.96|0.06|0.00|N|O|1997-07-24|1997-08-02|1997-08-07|TAKE BACK RETURN|SHIP|ully across the ideas. final deposit|
-102|170|5|2|34|36385.78|0.03|0.08|N|O|1997-08-09|1997-07-28|1997-08-26|TAKE BACK RETURN|SHIP|eposits cajole across|
-102|183|4|3|25|27079.50|0.01|0.01|N|O|1997-07-31|1997-07-24|1997-08-17|NONE|RAIL|bits. ironic accoun|
-102|62|7|4|15|14430.90|0.07|0.07|N|O|1997-06-02|1997-07-13|1997-06-04|DELIVER IN PERSON|SHIP|final packages. carefully even excu|
-103|195|9|1|6|6571.14|0.03|0.05|N|O|1996-10-11|1996-07-25|1996-10-28|NONE|FOB|cajole. carefully ex|
-103|11|5|2|37|33707.37|0.02|0.07|N|O|1996-09-17|1996-07-27|1996-09-20|TAKE BACK RETURN|MAIL|ies. quickly ironic requests use blithely|
-103|29|10|3|23|21367.46|0.01|0.04|N|O|1996-09-11|1996-09-18|1996-09-26|NONE|FOB|ironic accou|
-103|30|9|4|32|29760.96|0.01|0.07|N|O|1996-07-30|1996-08-06|1996-08-04|NONE|RAIL|kages doze. special, regular deposit|
-128|107|10|1|38|38269.80|0.06|0.01|A|F|1992-09-01|1992-08-27|1992-10-01|TAKE BACK RETURN|FOB| cajole careful|
-129|3|6|1|46|41538.00|0.08|0.02|R|F|1993-02-15|1993-01-24|1993-03-05|COLLECT COD|TRUCK|uietly bold theodolites. fluffil|
-129|186|7|2|36|39102.48|0.01|0.02|A|F|1992-11-25|1992-12-25|1992-12-09|TAKE BACK RETURN|REG AIR|packages are care|
-129|40|6|3|33|31021.32|0.04|0.06|A|F|1993-01-08|1993-02-14|1993-01-29|COLLECT COD|SHIP|sts nag bravely. fluffily|
-129|136|7|4|34|35228.42|0.00|0.01|R|F|1993-01-29|1993-02-14|1993-02-10|COLLECT COD|MAIL|quests. express ideas|
-129|32|8|5|24|22368.72|0.06|0.00|A|F|1992-12-07|1993-01-02|1992-12-11|TAKE BACK RETURN|FOB|uests. foxes cajole slyly after the ca|
-129|78|6|6|22|21517.54|0.06|0.01|R|F|1993-02-15|1993-01-31|1993-02-24|COLLECT COD|SHIP|e. fluffily regular |
-129|169|6|7|1|1069.16|0.05|0.04|R|F|1993-01-26|1993-01-08|1993-02-24|DELIVER IN PERSON|FOB|e carefully blithely bold dolp|
-130|129|10|1|14|14407.68|0.08|0.05|A|F|1992-08-15|1992-07-25|1992-09-13|COLLECT COD|RAIL| requests. final instruction|
-130|2|5|2|48|43296.00|0.03|0.02|R|F|1992-07-01|1992-07-12|1992-07-24|NONE|AIR|lithely alongside of the regu|
-130|12|3|3|18|16416.18|0.04|0.08|A|F|1992-07-04|1992-06-14|1992-07-29|DELIVER IN PERSON|MAIL| slyly ironic decoys abou|
-130|116|6|4|13|13209.43|0.09|0.02|R|F|1992-06-26|1992-07-29|1992-07-05|NONE|FOB| pending dolphins sleep furious|
-130|70|7|5|31|30072.17|0.06|0.05|R|F|1992-09-01|1992-07-18|1992-09-02|TAKE BACK RETURN|RAIL|thily about the ruth|
-131|168|7|1|45|48067.20|0.10|0.02|R|F|1994-09-14|1994-09-02|1994-10-04|NONE|FOB|ironic, bold accounts. careful|
-131|45|8|2|50|47252.00|0.02|0.04|A|F|1994-09-17|1994-08-10|1994-09-21|NONE|SHIP|ending requests. final, ironic pearls slee|
-131|190|1|3|4|4360.76|0.04|0.03|A|F|1994-09-20|1994-08-30|1994-09-23|COLLECT COD|REG AIR| are carefully slyly i|
-132|141|8|1|18|18740.52|0.00|0.08|R|F|1993-07-10|1993-08-05|1993-07-13|NONE|TRUCK|ges. platelets wake furio|
-132|120|1|2|43|43865.16|0.01|0.08|R|F|1993-09-01|1993-08-16|1993-09-22|NONE|TRUCK|y pending theodolites|
-132|115|6|3|32|32483.52|0.04|0.04|A|F|1993-07-12|1993-08-05|1993-08-05|COLLECT COD|TRUCK|d instructions hagg|
-132|29|2|4|23|21367.46|0.10|0.00|A|F|1993-06-16|1993-08-27|1993-06-23|DELIVER IN PERSON|AIR|refully blithely bold acco|
-133|104|7|1|27|27110.70|0.00|0.02|N|O|1997-12-21|1998-02-23|1997-12-27|TAKE BACK RETURN|MAIL|yly even gifts after the sl|
-133|177|5|2|12|12926.04|0.02|0.06|N|O|1997-12-02|1998-01-15|1997-12-29|DELIVER IN PERSON|REG AIR|ts cajole fluffily quickly i|
-133|118|8|3|29|29525.19|0.09|0.08|N|O|1998-02-28|1998-01-30|1998-03-09|DELIVER IN PERSON|RAIL| the carefully regular theodoli|
-133|90|1|4|11|10890.99|0.06|0.01|N|O|1998-03-21|1998-01-15|1998-04-04|DELIVER IN PERSON|REG AIR|e quickly across the dolphins|
-134|1|2|1|21|18921.00|0.00|0.03|A|F|1992-07-17|1992-07-08|1992-07-26|COLLECT COD|SHIP|s. quickly regular|
-134|165|2|2|35|37280.60|0.06|0.07|A|F|1992-08-23|1992-06-01|1992-08-24|NONE|MAIL|ajole furiously. instructio|
-134|189|10|3|26|28318.68|0.09|0.06|A|F|1992-06-20|1992-07-12|1992-07-16|NONE|RAIL| among the pending depos|
-134|145|6|4|47|49121.58|0.05|0.00|A|F|1992-08-16|1992-07-06|1992-08-28|NONE|REG AIR|s! carefully unusual requests boost careful|
-134|36|7|5|12|11232.36|0.05|0.02|A|F|1992-07-03|1992-06-01|1992-07-11|COLLECT COD|TRUCK|nts are quic|
-134|134|10|6|12|12409.56|0.00|0.00|A|F|1992-08-08|1992-07-07|1992-08-20|TAKE BACK RETURN|FOB|lyly regular pac|
-135|109|10|1|47|47427.70|0.06|0.08|N|O|1996-02-18|1996-01-01|1996-02-25|COLLECT COD|RAIL|ctions wake slyly abo|
-135|199|3|2|21|23082.99|0.00|0.07|N|O|1996-02-11|1996-01-12|1996-02-13|DELIVER IN PERSON|SHIP| deposits believe. furiously regular p|
-135|158|10|3|33|34918.95|0.02|0.00|N|O|1996-01-03|1995-11-21|1996-02-01|TAKE BACK RETURN|MAIL|ptotes boost slowly care|
-135|68|7|4|34|32914.04|0.02|0.03|N|O|1996-01-12|1996-01-19|1996-02-05|NONE|TRUCK|counts doze against the blithely ironi|
-135|137|8|5|20|20742.60|0.01|0.04|N|O|1996-01-25|1995-11-20|1996-02-09|NONE|MAIL|theodolites. quickly p|
-135|115|5|6|13|13196.43|0.04|0.02|N|O|1995-11-12|1995-12-22|1995-11-17|NONE|FOB|nal ideas. final instr|
-160|15|2|1|36|32940.36|0.07|0.01|N|O|1997-03-11|1997-03-11|1997-03-20|COLLECT COD|MAIL|old, ironic deposits are quickly abov|
-160|87|8|2|22|21715.76|0.00|0.04|N|O|1997-02-18|1997-03-05|1997-03-05|COLLECT COD|RAIL|ncies about the request|
-160|21|10|3|34|31314.68|0.01|0.05|N|O|1997-01-31|1997-03-13|1997-02-14|NONE|FOB|st sleep even gifts. dependencies along|
-161|103|10|1|19|19058.90|0.01|0.01|A|F|1994-12-13|1994-11-19|1994-12-26|DELIVER IN PERSON|TRUCK|, regular sheaves sleep along|
-162|190|1|1|2|2180.38|0.02|0.01|N|O|1995-09-02|1995-06-17|1995-09-08|COLLECT COD|FOB|es! final somas integrate|
-163|168|3|1|43|45930.88|0.01|0.00|N|O|1997-09-19|1997-11-19|1997-10-03|COLLECT COD|REG AIR|al, bold dependencies wake. iron|
-163|121|2|2|13|13274.56|0.01|0.04|N|O|1997-11-11|1997-10-18|1997-12-07|DELIVER IN PERSON|TRUCK|inal requests. even pinto beans hag|
-163|37|3|3|27|25299.81|0.04|0.08|N|O|1997-12-26|1997-11-28|1998-01-05|COLLECT COD|REG AIR|ously express dependen|
-163|193|5|4|5|5465.95|0.02|0.00|N|O|1997-11-17|1997-10-09|1997-12-05|DELIVER IN PERSON|TRUCK| must belie|
-163|127|2|5|12|12325.44|0.10|0.00|N|O|1997-12-18|1997-10-26|1997-12-22|COLLECT COD|TRUCK|ly blithe accounts cajole |
-163|191|4|6|20|21823.80|0.00|0.07|N|O|1997-09-27|1997-11-15|1997-10-07|TAKE BACK RETURN|FOB|tructions integrate b|
-164|92|4|1|26|25794.34|0.09|0.04|A|F|1993-01-04|1992-11-21|1993-01-07|NONE|RAIL|s. blithely special courts are blithel|
-164|19|6|2|24|22056.24|0.05|0.05|R|F|1992-12-22|1992-11-27|1993-01-06|NONE|AIR|side of the slyly unusual theodolites. f|
-164|126|9|3|38|38992.56|0.03|0.06|R|F|1992-12-04|1992-11-23|1993-01-02|TAKE BACK RETURN|AIR|counts cajole fluffily regular packages. b|
-164|18|2|4|32|29376.32|0.05|0.01|R|F|1992-12-21|1992-12-23|1992-12-28|COLLECT COD|RAIL|ts wake again|
-164|148|1|5|43|45070.02|0.06|0.01|R|F|1992-11-26|1993-01-03|1992-12-08|COLLECT COD|RAIL|y carefully regular dep|
-164|109|10|6|27|27245.70|0.10|0.04|R|F|1992-12-23|1993-01-16|1993-01-10|DELIVER IN PERSON|AIR|ayers wake carefully a|
-164|4|7|7|23|20792.00|0.09|0.04|A|F|1992-11-03|1992-12-02|1992-11-12|NONE|REG AIR|ress packages haggle ideas. blithely spec|
-165|34|5|1|3|2802.09|0.01|0.08|R|F|1993-03-29|1993-03-06|1993-04-12|DELIVER IN PERSON|REG AIR|riously requests. depos|
-165|162|7|2|43|45672.88|0.08|0.05|R|F|1993-02-27|1993-04-19|1993-03-03|DELIVER IN PERSON|TRUCK|jole slyly according |
-165|59|1|3|15|14385.75|0.00|0.05|R|F|1993-04-10|1993-03-29|1993-05-01|COLLECT COD|SHIP| bold packages mainta|
-165|140|1|4|49|50966.86|0.07|0.06|A|F|1993-02-20|1993-04-02|1993-03-10|COLLECT COD|REG AIR|uses sleep slyly ruthlessly regular a|
-165|156|4|5|27|28516.05|0.01|0.04|R|F|1993-04-27|1993-03-04|1993-05-13|NONE|MAIL|around the ironic, even orb|
-166|65|2|1|37|35707.22|0.09|0.03|N|O|1995-11-16|1995-10-17|1995-12-13|NONE|MAIL|lar frays wake blithely a|
-166|167|8|2|13|13873.08|0.09|0.05|N|O|1995-11-09|1995-11-18|1995-11-14|COLLECT COD|SHIP|fully above the blithely fina|
-166|100|2|3|41|41004.10|0.07|0.03|N|O|1995-11-13|1995-11-07|1995-12-08|COLLECT COD|FOB|hily along the blithely pending fo|
-166|46|3|4|8|7568.32|0.05|0.02|N|O|1995-12-30|1995-11-29|1996-01-29|DELIVER IN PERSON|RAIL|e carefully bold |
-167|102|3|1|28|28058.80|0.06|0.01|R|F|1993-02-19|1993-02-16|1993-03-03|DELIVER IN PERSON|TRUCK|sly during the u|
-167|172|2|2|27|28948.59|0.09|0.00|R|F|1993-05-01|1993-03-31|1993-05-31|TAKE BACK RETURN|FOB|eans affix furiously-- packages|
-192|98|1|1|23|22956.07|0.00|0.00|N|O|1998-02-05|1998-02-06|1998-03-07|TAKE BACK RETURN|AIR|ly pending theodolites haggle quickly fluf|
-192|162|7|2|20|21243.20|0.07|0.01|N|O|1998-03-13|1998-02-02|1998-03-31|TAKE BACK RETURN|REG AIR|tes. carefu|
-192|111|8|3|15|15166.65|0.09|0.01|N|O|1998-01-30|1998-02-10|1998-02-23|TAKE BACK RETURN|TRUCK|he ironic requests haggle about|
-192|197|1|4|2|2194.38|0.06|0.02|N|O|1998-03-06|1998-02-03|1998-03-24|COLLECT COD|SHIP|s. dependencies nag furiously alongside|
-192|83|4|5|25|24577.00|0.02|0.03|N|O|1998-02-15|1998-01-11|1998-03-17|COLLECT COD|TRUCK|. carefully regular|
-192|142|9|6|45|46896.30|0.00|0.05|N|O|1998-03-11|1998-01-09|1998-04-03|NONE|MAIL|equests. ideas sleep idea|
-193|93|5|1|9|8937.81|0.06|0.06|A|F|1993-09-17|1993-10-08|1993-09-30|COLLECT COD|TRUCK|against the fluffily regular d|
-193|154|6|2|15|15812.25|0.02|0.07|R|F|1993-11-22|1993-10-09|1993-12-05|TAKE BACK RETURN|SHIP|ffily. regular packages d|
-193|94|6|3|23|22864.07|0.06|0.05|A|F|1993-08-21|1993-10-11|1993-09-02|DELIVER IN PERSON|TRUCK|ly even accounts wake blithely bold|
-194|3|6|1|17|15351.00|0.05|0.04|R|F|1992-05-24|1992-05-22|1992-05-30|COLLECT COD|AIR| regular deposi|
-194|184|5|2|1|1084.18|0.04|0.06|R|F|1992-04-30|1992-05-18|1992-05-23|NONE|REG AIR| regular theodolites. regular, iron|
-194|66|1|3|13|12558.78|0.08|0.08|A|F|1992-05-07|1992-06-18|1992-05-10|NONE|AIR|about the blit|
-194|146|7|4|36|37661.04|0.00|0.05|R|F|1992-05-21|1992-05-18|1992-05-27|TAKE BACK RETURN|RAIL|pecial packages wake after the slyly r|
-194|57|2|5|8|7656.40|0.04|0.00|R|F|1992-07-06|1992-06-25|1992-07-11|COLLECT COD|FOB|uriously unusual excuses|
-194|149|6|6|16|16786.24|0.06|0.03|A|F|1992-05-14|1992-06-14|1992-05-21|TAKE BACK RETURN|TRUCK|y regular requests. furious|
-194|168|7|7|21|22431.36|0.02|0.01|R|F|1992-05-06|1992-05-20|1992-05-07|COLLECT COD|REG AIR|accounts detect quickly dogged |
-195|85|6|1|6|5910.48|0.04|0.02|A|F|1994-01-09|1994-03-27|1994-01-28|COLLECT COD|REG AIR|y, even deposits haggle carefully. bli|
-195|94|8|2|41|40757.69|0.05|0.07|A|F|1994-02-24|1994-02-11|1994-03-20|NONE|TRUCK|rts detect in place of t|
-195|86|7|3|34|33526.72|0.08|0.08|R|F|1994-01-31|1994-02-11|1994-02-12|NONE|TRUCK| cajole furiously bold i|
-195|86|7|4|41|40429.28|0.06|0.04|R|F|1994-03-14|1994-03-13|1994-04-09|COLLECT COD|RAIL|ggle fluffily foxes. fluffily ironic ex|
-196|136|7|1|19|19686.47|0.03|0.02|R|F|1993-04-17|1993-05-27|1993-04-30|NONE|SHIP|sts maintain foxes. furiously regular p|
-196|10|3|2|15|13650.15|0.03|0.04|A|F|1993-07-05|1993-05-08|1993-07-06|TAKE BACK RETURN|SHIP|s accounts. furio|
-197|99|1|1|39|38964.51|0.02|0.04|N|O|1995-07-21|1995-07-01|1995-08-14|TAKE BACK RETURN|AIR|press accounts. daringly sp|
-197|178|8|2|8|8625.36|0.09|0.02|A|F|1995-04-17|1995-07-01|1995-04-27|DELIVER IN PERSON|SHIP|y blithely even deposits. blithely fina|
-197|156|4|3|17|17954.55|0.06|0.02|N|O|1995-08-02|1995-06-23|1995-08-03|COLLECT COD|REG AIR|ts. careful|
-197|18|5|4|25|22950.25|0.04|0.01|N|F|1995-06-13|1995-05-23|1995-06-24|TAKE BACK RETURN|FOB|s-- quickly final accounts|
-197|42|9|5|14|13188.56|0.09|0.01|R|F|1995-05-08|1995-05-24|1995-05-12|TAKE BACK RETURN|RAIL|use slyly slyly silent depo|
-197|106|1|6|1|1006.10|0.07|0.05|N|O|1995-07-15|1995-06-21|1995-08-11|COLLECT COD|RAIL| even, thin dependencies sno|
-198|57|8|1|33|31582.65|0.07|0.02|N|O|1998-01-05|1998-03-20|1998-01-10|TAKE BACK RETURN|TRUCK|carefully caref|
-198|16|10|2|20|18320.20|0.03|0.00|N|O|1998-01-15|1998-03-31|1998-01-25|DELIVER IN PERSON|FOB|carefully final escapades a|
-198|149|2|3|15|15737.10|0.04|0.02|N|O|1998-04-12|1998-02-26|1998-04-15|COLLECT COD|MAIL|es. quickly pending deposits s|
-198|11|5|4|35|31885.35|0.08|0.02|N|O|1998-02-27|1998-03-23|1998-03-14|TAKE BACK RETURN|RAIL|ests nod quickly furiously sly pinto be|
-198|102|3|5|33|33069.30|0.02|0.01|N|O|1998-03-22|1998-03-12|1998-04-14|DELIVER IN PERSON|SHIP|ending foxes acr|
-199|133|9|1|50|51656.50|0.02|0.00|N|O|1996-06-12|1996-06-03|1996-07-04|DELIVER IN PERSON|MAIL|essly regular ideas boost sly|
-199|134|5|2|30|31023.90|0.08|0.05|N|O|1996-03-27|1996-05-29|1996-04-14|NONE|TRUCK|ilent packages doze quickly. thinly |
-224|151|2|1|16|16818.40|0.04|0.00|A|F|1994-08-01|1994-07-30|1994-08-27|DELIVER IN PERSON|MAIL|y unusual foxes |
-224|109|2|2|34|34309.40|0.04|0.08|R|F|1994-07-13|1994-08-25|1994-07-31|COLLECT COD|TRUCK| carefully. final platelets |
-224|190|1|3|41|44697.79|0.07|0.04|A|F|1994-09-01|1994-09-15|1994-09-02|TAKE BACK RETURN|SHIP|after the furiou|
-224|167|4|4|12|12805.92|0.08|0.06|R|F|1994-10-12|1994-08-29|1994-10-20|DELIVER IN PERSON|MAIL|uriously regular packages. slyly fina|
-224|94|7|5|45|44734.05|0.07|0.07|R|F|1994-08-14|1994-09-02|1994-08-27|COLLECT COD|AIR|leep furiously regular requests. furiousl|
-224|51|3|6|4|3804.20|0.02|0.00|R|F|1994-09-08|1994-08-24|1994-10-04|DELIVER IN PERSON|FOB|tructions |
-225|172|3|1|4|4288.68|0.09|0.07|N|O|1995-08-05|1995-08-19|1995-09-03|TAKE BACK RETURN|SHIP|ng the ironic packages. asymptotes among |
-225|131|7|2|3|3093.39|0.00|0.08|N|O|1995-07-25|1995-07-08|1995-08-17|DELIVER IN PERSON|REG AIR| fluffily about the carefully bold a|
-225|199|2|3|45|49463.55|0.06|0.01|N|O|1995-08-17|1995-08-20|1995-08-30|TAKE BACK RETURN|FOB|the slyly even platelets use aro|
-225|147|4|4|24|25131.36|0.00|0.06|N|O|1995-09-23|1995-08-05|1995-10-16|COLLECT COD|MAIL|ironic accounts are final account|
-225|8|5|5|31|28148.00|0.04|0.06|N|O|1995-06-21|1995-07-24|1995-07-04|TAKE BACK RETURN|FOB|special platelets. quickly r|
-225|132|8|6|12|12385.56|0.00|0.00|A|F|1995-06-04|1995-07-15|1995-06-08|COLLECT COD|MAIL| unusual requests. bus|
-225|142|1|7|44|45854.16|0.10|0.06|N|O|1995-09-22|1995-08-16|1995-10-22|NONE|REG AIR|leep slyly |
-226|97|9|1|4|3988.36|0.00|0.00|R|F|1993-03-31|1993-04-30|1993-04-10|NONE|TRUCK|c foxes integrate carefully against th|
-226|138|4|2|46|47753.98|0.06|0.01|A|F|1993-07-06|1993-04-24|1993-07-13|COLLECT COD|FOB|s. carefully bold accounts cajol|
-226|38|4|3|35|32831.05|0.09|0.03|A|F|1993-03-31|1993-05-18|1993-04-01|NONE|RAIL|osits cajole. final, even foxes a|
-226|41|10|4|45|42346.80|0.10|0.02|R|F|1993-04-17|1993-05-27|1993-05-11|DELIVER IN PERSON|AIR| carefully pending pi|
-226|118|8|5|2|2036.22|0.07|0.02|R|F|1993-03-26|1993-04-13|1993-04-20|TAKE BACK RETURN|SHIP|al platelets. express somas |
-226|83|4|6|48|47187.84|0.02|0.00|A|F|1993-06-11|1993-05-15|1993-06-19|NONE|REG AIR|efully silent packages. final deposit|
-226|118|8|7|14|14253.54|0.09|0.00|R|F|1993-05-20|1993-06-05|1993-05-27|COLLECT COD|MAIL|ep carefully regular accounts. ironic|
-227|166|1|1|19|20257.04|0.05|0.06|N|O|1995-12-10|1996-01-30|1995-12-26|NONE|RAIL|s cajole furiously a|
-227|175|3|2|24|25804.08|0.07|0.07|N|O|1996-02-03|1995-12-24|1996-02-12|COLLECT COD|SHIP|uses across the blithe dependencies cajol|
-228|5|8|1|3|2715.00|0.10|0.08|A|F|1993-05-20|1993-04-08|1993-05-26|DELIVER IN PERSON|SHIP|ckages. sly|
-229|84|5|1|20|19681.60|0.02|0.03|R|F|1994-01-11|1994-01-31|1994-01-26|DELIVER IN PERSON|REG AIR|le. instructions use across the quickly fin|
-229|129|10|2|29|29844.48|0.07|0.00|A|F|1994-03-15|1994-03-02|1994-03-26|COLLECT COD|SHIP|s, final request|
-229|79|10|3|28|27413.96|0.02|0.02|R|F|1994-02-10|1994-02-02|1994-03-10|DELIVER IN PERSON|FOB| final, regular requests. platel|
-229|177|6|4|3|3231.51|0.02|0.08|R|F|1994-03-22|1994-03-24|1994-04-04|DELIVER IN PERSON|REG AIR|posits. furiously regular theodol|
-229|156|1|5|33|34852.95|0.03|0.06|R|F|1994-03-25|1994-02-11|1994-04-13|NONE|FOB| deposits; bold, ruthless theodolites|
-229|106|9|6|29|29176.90|0.04|0.00|R|F|1994-01-14|1994-02-16|1994-01-22|NONE|FOB|uriously pending |
-230|186|7|1|46|49964.28|0.09|0.00|R|F|1994-02-03|1994-01-15|1994-02-23|TAKE BACK RETURN|SHIP|old packages ha|
-230|195|7|2|6|6571.14|0.03|0.08|A|F|1994-01-26|1994-01-25|1994-02-13|NONE|REG AIR| sleep furiously about the p|
-230|8|5|3|1|908.00|0.07|0.06|R|F|1994-01-22|1994-01-03|1994-02-05|TAKE BACK RETURN|RAIL|blithely unusual dolphins. bold, ex|
-230|10|3|4|44|40040.44|0.08|0.06|R|F|1994-02-09|1994-01-18|1994-03-11|NONE|MAIL|deposits integrate slyly sile|
-230|19|9|5|8|7352.08|0.09|0.06|R|F|1993-11-03|1994-01-20|1993-11-11|TAKE BACK RETURN|TRUCK|g the instructions. fluffil|
-230|34|10|6|8|7472.24|0.00|0.05|R|F|1993-11-21|1994-01-05|1993-12-19|TAKE BACK RETURN|FOB|nal ideas. silent, reg|
-231|159|10|1|16|16946.40|0.04|0.08|R|F|1994-11-20|1994-10-29|1994-12-17|TAKE BACK RETURN|AIR|e furiously ironic pinto beans.|
-231|84|5|2|46|45267.68|0.04|0.05|R|F|1994-12-13|1994-12-02|1994-12-14|DELIVER IN PERSON|SHIP|affix blithely. bold requests among the f|
-231|199|1|3|50|54959.50|0.09|0.01|A|F|1994-12-11|1994-12-14|1994-12-13|NONE|RAIL|onic packages haggle fluffily a|
-231|57|8|4|31|29668.55|0.08|0.02|A|F|1994-11-05|1994-12-27|1994-11-30|TAKE BACK RETURN|SHIP|iously special decoys wake q|
-256|89|10|1|22|21759.76|0.09|0.02|R|F|1994-01-12|1993-12-28|1994-01-26|COLLECT COD|FOB|ke quickly ironic, ironic deposits. reg|
-256|119|6|2|40|40764.40|0.10|0.01|A|F|1993-11-30|1993-12-13|1993-12-02|NONE|FOB|nal theodolites. deposits cajole s|
-256|130|9|3|45|46355.85|0.02|0.08|R|F|1994-01-14|1994-01-17|1994-02-10|COLLECT COD|SHIP| grouches. ideas wake quickly ar|
-257|147|8|1|7|7329.98|0.05|0.02|N|O|1998-06-18|1998-05-15|1998-06-27|COLLECT COD|FOB|ackages sleep bold realms. f|
-258|107|4|1|8|8056.80|0.00|0.07|R|F|1994-01-20|1994-03-21|1994-02-09|NONE|REG AIR|ully about the fluffily silent dependencies|
-258|197|1|2|40|43887.60|0.10|0.01|A|F|1994-03-13|1994-02-23|1994-04-05|DELIVER IN PERSON|FOB|silent frets nod daringly busy, bold|
-258|162|3|3|45|47797.20|0.07|0.07|R|F|1994-03-04|1994-02-13|1994-03-30|DELIVER IN PERSON|TRUCK|regular excuses-- fluffily ruthl|
-258|133|9|4|31|32027.03|0.02|0.05|A|F|1994-04-20|1994-03-20|1994-04-28|COLLECT COD|REG AIR| slyly blithely special mul|
-258|36|2|5|25|23400.75|0.08|0.02|A|F|1994-04-13|1994-02-26|1994-04-29|TAKE BACK RETURN|TRUCK|leep pending packages.|
-258|147|4|6|36|37697.04|0.09|0.04|A|F|1994-01-11|1994-03-04|1994-01-18|DELIVER IN PERSON|AIR|nic asymptotes. slyly silent r|
-259|99|10|1|14|13987.26|0.00|0.08|A|F|1993-12-17|1993-12-09|1993-12-31|COLLECT COD|SHIP|ons against the express acco|
-259|162|1|2|14|14870.24|0.03|0.05|R|F|1993-11-10|1993-11-20|1993-11-17|DELIVER IN PERSON|FOB|ully even, regul|
-259|24|5|3|42|38808.84|0.09|0.00|R|F|1993-10-20|1993-11-18|1993-11-12|NONE|TRUCK|the slyly ironic pinto beans. fi|
-259|196|10|4|3|3288.57|0.08|0.06|R|F|1993-10-04|1993-11-07|1993-10-14|TAKE BACK RETURN|SHIP|ng slyly at the accounts.|
-259|193|6|5|6|6559.14|0.00|0.05|R|F|1993-12-05|1993-12-22|1993-12-21|COLLECT COD|TRUCK| requests sleep|
-260|156|7|1|50|52807.50|0.07|0.08|N|O|1997-03-24|1997-02-09|1997-04-20|TAKE BACK RETURN|REG AIR|c deposits |
-260|183|4|2|26|28162.68|0.02|0.07|N|O|1996-12-12|1997-02-06|1996-12-15|NONE|TRUCK|ld theodolites boost fl|
-260|42|1|3|27|25435.08|0.05|0.08|N|O|1997-03-23|1997-02-15|1997-04-22|TAKE BACK RETURN|RAIL|ions according to the|
-260|6|1|4|29|26274.00|0.10|0.06|N|O|1997-03-15|1997-01-14|1997-04-13|NONE|MAIL|fluffily even asymptotes. express wa|
-260|96|9|5|44|43827.96|0.01|0.05|N|O|1997-03-26|1997-02-03|1997-04-19|DELIVER IN PERSON|MAIL|above the blithely ironic instr|
-261|2|7|1|34|30668.00|0.05|0.08|R|F|1993-08-18|1993-09-24|1993-08-20|COLLECT COD|REG AIR|c packages. asymptotes da|
-261|66|7|2|20|19321.20|0.00|0.06|R|F|1993-10-21|1993-08-02|1993-11-04|DELIVER IN PERSON|RAIL|ites hinder |
-261|174|3|3|28|30076.76|0.08|0.03|R|F|1993-07-24|1993-08-20|1993-08-05|COLLECT COD|AIR|ironic packages nag slyly. carefully fin|
-261|119|3|4|49|49936.39|0.04|0.05|R|F|1993-09-12|1993-08-31|1993-10-07|COLLECT COD|SHIP|ions. bold accounts |
-261|61|6|5|49|47091.94|0.01|0.08|A|F|1993-09-29|1993-09-08|1993-10-01|COLLECT COD|SHIP| pinto beans haggle slyly furiously pending|
-261|97|9|6|20|19941.80|0.06|0.06|A|F|1993-10-15|1993-09-05|1993-11-07|NONE|AIR|ing to the special, ironic deposi|
-262|192|3|1|39|42595.41|0.01|0.05|N|O|1996-01-15|1996-02-18|1996-01-28|COLLECT COD|RAIL|usual, regular requests|
-262|61|6|2|33|31714.98|0.09|0.03|N|O|1996-03-10|1996-01-31|1996-03-27|TAKE BACK RETURN|AIR|atelets sleep furiously. requests cajole. b|
-262|59|1|3|35|33566.75|0.05|0.08|N|O|1996-03-12|1996-02-14|1996-04-11|COLLECT COD|MAIL|lites cajole along the pending packag|
-263|24|9|1|22|20328.44|0.06|0.08|R|F|1994-08-24|1994-06-20|1994-09-09|NONE|FOB|efully express fo|
-263|85|6|2|9|8865.72|0.08|0.00|A|F|1994-07-21|1994-07-16|1994-08-08|TAKE BACK RETURN|TRUCK|lms wake bl|
-263|143|2|3|50|52157.00|0.06|0.04|R|F|1994-08-18|1994-07-31|1994-08-22|NONE|TRUCK|re the packages. special|
-288|51|3|1|31|29482.55|0.00|0.03|N|O|1997-03-17|1997-04-28|1997-04-06|TAKE BACK RETURN|AIR|instructions wa|
-288|117|1|2|49|49838.39|0.08|0.05|N|O|1997-04-19|1997-05-19|1997-05-18|TAKE BACK RETURN|TRUCK|ic excuses sleep always spe|
-288|99|10|3|36|35967.24|0.02|0.02|N|O|1997-02-22|1997-05-07|1997-03-07|TAKE BACK RETURN|TRUCK|yly pending excu|
-288|79|10|4|19|18602.33|0.07|0.07|N|O|1997-03-14|1997-04-04|1997-03-26|NONE|MAIL|deposits. blithely quick courts ar|
-288|162|9|5|31|32926.96|0.10|0.04|N|O|1997-05-29|1997-04-24|1997-06-20|TAKE BACK RETURN|RAIL|ns. fluffily|
-289|174|2|1|25|26854.25|0.07|0.05|N|O|1997-03-18|1997-05-05|1997-04-15|DELIVER IN PERSON|FOB|out the quickly bold theodol|
-289|112|2|2|6|6072.66|0.06|0.05|N|O|1997-02-18|1997-05-08|1997-03-19|DELIVER IN PERSON|SHIP|d packages use fluffily furiously|
-289|17|4|3|44|40348.44|0.10|0.08|N|O|1997-06-05|1997-04-20|1997-07-02|COLLECT COD|MAIL|ly ironic foxes. asymptotes |
-289|40|6|4|48|45121.92|0.01|0.08|N|O|1997-03-14|1997-03-30|1997-03-24|DELIVER IN PERSON|RAIL|sits cajole. bold pinto beans x-ray fl|
-289|47|4|5|13|12311.52|0.10|0.03|N|O|1997-06-08|1997-04-06|1997-06-18|TAKE BACK RETURN|REG AIR|ts. quickly bold deposits alongside|
-290|6|1|1|35|31710.00|0.01|0.02|R|F|1994-04-01|1994-02-05|1994-04-27|NONE|MAIL|ove the final foxes detect slyly fluffily|
-290|129|4|2|2|2058.24|0.05|0.04|A|F|1994-01-30|1994-02-13|1994-02-21|TAKE BACK RETURN|TRUCK|. permanently furious reques|
-290|2|5|3|5|4510.00|0.03|0.05|A|F|1994-01-19|1994-02-24|1994-01-27|NONE|MAIL|ans integrate. requests sleep. fur|
-290|124|9|4|23|23554.76|0.05|0.08|R|F|1994-03-14|1994-02-21|1994-04-09|NONE|AIR|refully unusual packages. |
-291|123|6|1|21|21485.52|0.05|0.07|A|F|1994-05-26|1994-05-10|1994-06-23|COLLECT COD|TRUCK|y quickly regular theodolites. final t|
-291|138|9|2|19|19724.47|0.08|0.02|R|F|1994-06-14|1994-04-25|1994-06-19|NONE|REG AIR|e. ruthlessly final accounts after the|
-291|61|8|3|30|28831.80|0.10|0.02|R|F|1994-03-22|1994-04-30|1994-03-24|DELIVER IN PERSON|FOB| fluffily regular deposits. quickl|
-292|154|5|1|8|8433.20|0.10|0.03|R|F|1992-02-18|1992-03-30|1992-03-18|DELIVER IN PERSON|RAIL|sily bold deposits alongside of the ex|
-292|100|1|2|24|24002.40|0.08|0.04|R|F|1992-03-24|1992-03-06|1992-04-20|COLLECT COD|TRUCK| bold, pending theodolites u|
-293|9|6|1|14|12726.00|0.02|0.05|R|F|1992-10-19|1992-12-23|1992-11-10|DELIVER IN PERSON|SHIP|es. packages above the|
-293|187|8|2|11|11958.98|0.10|0.04|R|F|1992-12-24|1992-12-01|1993-01-12|COLLECT COD|MAIL| affix carefully quickly special idea|
-293|118|8|3|13|13235.43|0.04|0.02|A|F|1992-12-17|1992-12-26|1992-12-22|COLLECT COD|RAIL| wake after the quickly even deposits. bli|
-294|60|2|1|31|29761.86|0.00|0.01|R|F|1993-08-06|1993-08-19|1993-08-13|TAKE BACK RETURN|AIR|le fluffily along the quick|
-295|198|10|1|29|31847.51|0.02|0.07|A|F|1994-11-09|1994-12-08|1994-12-07|COLLECT COD|MAIL|inst the carefully ironic pinto beans. blit|
-295|92|6|2|26|25794.34|0.04|0.03|R|F|1994-12-13|1994-11-30|1995-01-06|DELIVER IN PERSON|AIR|ts above the slyly regular requests x-ray q|
-295|16|10|3|8|7328.08|0.10|0.07|R|F|1995-01-13|1994-11-17|1995-01-25|NONE|TRUCK| final instructions h|
-295|61|10|4|26|24987.56|0.10|0.04|A|F|1995-01-12|1994-11-22|1995-01-22|DELIVER IN PERSON|MAIL| carefully iron|
-320|5|2|1|30|27150.00|0.05|0.01|N|O|1997-12-04|1998-01-21|1997-12-13|NONE|RAIL| ironic, final accounts wake quick de|
-320|193|5|2|13|14211.47|0.03|0.00|N|O|1997-12-16|1997-12-26|1997-12-17|TAKE BACK RETURN|AIR|he furiously regular pinto beans. car|
-321|1|8|1|21|18921.00|0.01|0.08|A|F|1993-07-18|1993-04-24|1993-08-13|TAKE BACK RETURN|REG AIR|hockey players sleep slyly sl|
-321|141|4|2|41|42686.74|0.08|0.07|R|F|1993-06-21|1993-06-07|1993-07-09|NONE|REG AIR|special packages shall have to doze blit|
-322|153|8|1|12|12637.80|0.08|0.07|A|F|1992-06-29|1992-05-30|1992-07-11|NONE|AIR|ular theodolites promise qu|
-322|44|5|2|48|45313.92|0.02|0.07|A|F|1992-06-11|1992-06-16|1992-06-26|COLLECT COD|RAIL|dolites detect qu|
-322|13|3|3|20|18260.20|0.04|0.01|R|F|1992-04-26|1992-05-04|1992-05-22|DELIVER IN PERSON|MAIL|ckly toward |
-322|184|5|4|10|10841.80|0.06|0.03|R|F|1992-04-12|1992-05-13|1992-04-14|DELIVER IN PERSON|AIR| deposits grow slyly according to th|
-322|12|2|5|35|31920.35|0.07|0.06|A|F|1992-07-17|1992-05-03|1992-08-14|TAKE BACK RETURN|RAIL|egular accounts cajole carefully. even d|
-322|34|5|6|3|2802.09|0.08|0.05|A|F|1992-07-03|1992-05-10|1992-07-28|NONE|AIR|ending, ironic deposits along the blith|
-322|38|4|7|5|4690.15|0.01|0.02|A|F|1992-04-15|1992-05-12|1992-04-26|COLLECT COD|REG AIR| special grouches sleep quickly instructio|
-323|164|9|1|50|53208.00|0.05|0.04|A|F|1994-04-20|1994-04-25|1994-05-12|DELIVER IN PERSON|REG AIR|cial requests |
-323|96|8|2|18|17929.62|0.06|0.07|R|F|1994-04-13|1994-06-02|1994-05-10|DELIVER IN PERSON|TRUCK|posits cajole furiously pinto beans. |
-323|143|4|3|9|9388.26|0.07|0.04|A|F|1994-06-26|1994-06-10|1994-07-13|COLLECT COD|TRUCK|nic accounts. regular, regular pack|
-324|200|3|1|26|28605.20|0.07|0.01|R|F|1992-04-19|1992-05-28|1992-05-12|DELIVER IN PERSON|RAIL|ross the slyly regular s|
-325|159|1|1|34|36011.10|0.09|0.04|A|F|1993-10-28|1993-12-13|1993-11-17|TAKE BACK RETURN|MAIL|ly bold deposits. always iron|
-325|186|7|2|5|5430.90|0.07|0.08|A|F|1994-01-02|1994-01-05|1994-01-04|TAKE BACK RETURN|MAIL| theodolites. |
-325|19|3|3|35|32165.35|0.07|0.07|A|F|1993-12-06|1994-01-03|1993-12-26|DELIVER IN PERSON|REG AIR|packages wa|
-326|180|9|1|41|44287.38|0.06|0.03|N|O|1995-08-30|1995-07-09|1995-09-12|DELIVER IN PERSON|TRUCK|ily quickly bold ideas.|
-326|20|4|2|38|34960.76|0.02|0.08|N|O|1995-09-12|1995-08-23|1995-09-14|COLLECT COD|RAIL|es sleep slyly. carefully regular inst|
-326|184|5|3|25|27104.50|0.03|0.04|N|O|1995-08-03|1995-07-27|1995-08-16|NONE|AIR|ily furiously unusual accounts. |
-326|85|6|4|5|4925.40|0.03|0.08|N|O|1995-07-29|1995-07-13|1995-08-12|NONE|REG AIR|deas sleep according to the sometimes spe|
-326|35|6|5|31|28985.93|0.04|0.08|N|O|1995-09-27|1995-07-06|1995-10-22|NONE|TRUCK|cies sleep quick|
-326|157|9|6|41|43343.15|0.02|0.00|N|O|1995-07-05|1995-07-23|1995-07-20|TAKE BACK RETURN|REG AIR|to beans wake before the furiously re|
-326|43|10|7|47|44322.88|0.04|0.04|N|O|1995-09-16|1995-07-04|1995-10-04|NONE|REG AIR| special accounts sleep |
-327|144|3|1|16|16706.24|0.03|0.01|N|O|1995-07-05|1995-06-07|1995-07-09|TAKE BACK RETURN|TRUCK|cial ideas sleep af|
-327|42|9|2|9|8478.36|0.09|0.05|A|F|1995-05-24|1995-07-11|1995-06-05|NONE|AIR| asymptotes are fu|
-352|64|5|1|17|16389.02|0.07|0.05|R|F|1994-06-02|1994-05-31|1994-06-29|NONE|FOB|pending deposits sleep furiously |
-353|120|7|1|41|41824.92|0.00|0.06|A|F|1994-03-25|1994-03-31|1994-03-30|DELIVER IN PERSON|AIR|refully final theodoli|
-353|148|9|2|29|30396.06|0.09|0.00|A|F|1994-01-11|1994-03-19|1994-02-09|COLLECT COD|FOB|ctions impr|
-353|135|1|3|12|12421.56|0.06|0.01|R|F|1994-01-02|1994-03-26|1994-01-19|DELIVER IN PERSON|RAIL|g deposits cajole |
-353|78|7|4|46|44991.22|0.00|0.04|A|F|1994-04-14|1994-01-31|1994-05-05|DELIVER IN PERSON|FOB| ironic dolphins |
-353|117|4|5|9|9153.99|0.02|0.02|A|F|1994-03-15|1994-03-20|1994-03-18|TAKE BACK RETURN|RAIL|ual accounts! carefu|
-353|103|4|6|39|39120.90|0.02|0.05|A|F|1994-01-15|1994-03-30|1994-02-01|NONE|MAIL|losely quickly even accounts. c|
-354|50|7|1|14|13300.70|0.08|0.04|N|O|1996-04-12|1996-06-03|1996-05-08|NONE|SHIP|quickly regular grouches will eat. careful|
-354|194|8|2|24|26260.56|0.01|0.01|N|O|1996-05-08|1996-05-17|1996-06-07|DELIVER IN PERSON|AIR|y silent requests. regular, even accounts|
-354|59|10|3|50|47952.50|0.08|0.05|N|O|1996-03-21|1996-05-20|1996-04-04|COLLECT COD|TRUCK|to beans s|
-354|107|4|4|7|7049.70|0.06|0.01|N|O|1996-05-07|1996-04-18|1996-05-24|NONE|MAIL|ously idly ironic accounts-- quickl|
-354|31|2|5|18|16758.54|0.04|0.08|N|O|1996-03-31|1996-05-13|1996-04-27|DELIVER IN PERSON|RAIL| about the carefully unusual |
-354|62|1|6|36|34634.16|0.03|0.02|N|O|1996-03-19|1996-05-29|1996-03-30|NONE|AIR|onic requests thrash bold g|
-354|5|10|7|14|12670.00|0.01|0.07|N|O|1996-07-06|1996-06-08|1996-07-10|TAKE BACK RETURN|MAIL|t thinly above the ironic, |
-355|114|1|1|31|31437.41|0.09|0.07|A|F|1994-07-13|1994-08-18|1994-07-18|DELIVER IN PERSON|FOB|y unusual, ironic|
-355|97|1|2|41|40880.69|0.05|0.00|A|F|1994-08-15|1994-07-19|1994-09-06|DELIVER IN PERSON|TRUCK| deposits. carefully r|
-356|46|7|1|4|3784.16|0.10|0.01|A|F|1994-07-28|1994-08-01|1994-08-04|DELIVER IN PERSON|REG AIR| the dependencies nod unusual, final ac|
-356|108|3|2|48|48388.80|0.02|0.03|R|F|1994-08-12|1994-07-31|1994-08-26|NONE|FOB|unusual packages. furiously |
-356|119|3|3|35|35668.85|0.08|0.07|R|F|1994-10-14|1994-07-31|1994-10-23|COLLECT COD|TRUCK|s. unusual, final|
-356|56|1|4|41|39198.05|0.07|0.05|A|F|1994-09-28|1994-09-20|1994-10-07|COLLECT COD|SHIP| according to the express foxes will|
-356|125|8|5|37|37929.44|0.05|0.03|A|F|1994-07-15|1994-08-24|1994-08-09|DELIVER IN PERSON|FOB|ndencies are since the packag|
-357|114|5|1|26|26366.86|0.06|0.03|N|O|1996-12-28|1996-11-26|1997-01-13|NONE|FOB| carefully pending accounts use a|
-357|186|7|2|36|39102.48|0.07|0.06|N|O|1996-12-28|1996-11-13|1997-01-24|DELIVER IN PERSON|AIR|d the carefully even requests. |
-357|165|2|3|32|34085.12|0.05|0.07|N|O|1997-01-28|1996-12-29|1997-02-14|NONE|MAIL|y above the carefully final accounts|
-358|191|3|1|41|44738.79|0.06|0.01|A|F|1993-11-18|1993-11-14|1993-11-28|NONE|TRUCK|ely frets. furious deposits sleep |
-358|190|1|2|32|34886.08|0.05|0.08|A|F|1993-10-18|1993-12-12|1993-10-31|NONE|TRUCK|y final foxes sleep blithely sl|
-358|169|6|3|40|42766.40|0.09|0.01|A|F|1993-12-05|1993-11-04|1994-01-01|COLLECT COD|MAIL|ng the ironic theo|
-358|97|10|4|15|14956.35|0.08|0.08|A|F|1993-10-04|1993-12-17|1993-10-23|TAKE BACK RETURN|MAIL|out the blithely ironic deposits slee|
-358|29|2|5|18|16722.36|0.01|0.02|R|F|1993-10-07|1993-11-01|1993-10-26|COLLECT COD|SHIP|olphins haggle ironic accounts. f|
-358|162|3|6|32|33989.12|0.03|0.05|R|F|1993-12-21|1993-11-06|1994-01-17|DELIVER IN PERSON|RAIL|lyly express deposits |
-358|83|4|7|45|44238.60|0.05|0.02|A|F|1993-12-08|1993-10-29|1993-12-30|NONE|REG AIR|to beans. regular, unusual deposits sl|
-359|166|7|1|30|31984.80|0.00|0.08|A|F|1995-01-06|1995-02-20|1995-01-20|TAKE BACK RETURN|AIR|uses detect spec|
-359|12|9|2|18|16416.18|0.00|0.03|A|F|1995-01-27|1995-03-18|1995-01-31|DELIVER IN PERSON|RAIL|unusual warthogs. ironically sp|
-359|132|8|3|17|17546.21|0.07|0.06|A|F|1995-01-31|1995-03-18|1995-02-10|COLLECT COD|SHIP|sts according to the blithely|
-359|90|1|4|38|37623.42|0.10|0.08|R|F|1995-03-30|1995-01-20|1995-04-25|DELIVER IN PERSON|RAIL|g furiously. regular, sile|
-359|168|5|5|11|11749.76|0.01|0.03|A|F|1995-02-15|1995-01-27|1995-02-18|NONE|FOB|rets wake blithely. slyly final dep|
-359|183|4|6|23|24913.14|0.04|0.07|R|F|1995-01-31|1995-03-11|1995-02-16|DELIVER IN PERSON|REG AIR|ic courts snooze quickly furiously final fo|
-384|179|8|1|38|41008.46|0.07|0.01|R|F|1992-06-02|1992-04-18|1992-06-10|DELIVER IN PERSON|TRUCK|totes cajole blithely against the even|
-384|64|3|2|49|47238.94|0.09|0.07|A|F|1992-04-01|1992-04-25|1992-04-18|COLLECT COD|AIR|refully carefully ironic instructions. bl|
-384|182|3|3|11|11903.98|0.02|0.08|A|F|1992-04-02|1992-04-21|1992-04-15|COLLECT COD|MAIL|ash carefully|
-384|93|6|4|11|10923.99|0.00|0.06|R|F|1992-06-24|1992-05-29|1992-07-22|COLLECT COD|TRUCK|nic excuses are furiously above the blith|
-384|132|8|5|14|14449.82|0.08|0.06|R|F|1992-06-14|1992-05-29|1992-07-05|DELIVER IN PERSON|TRUCK|ckages are slyly after the slyly specia|
-385|167|6|1|7|7470.12|0.05|0.06|N|O|1996-05-23|1996-05-09|1996-06-06|DELIVER IN PERSON|REG AIR| special asymptote|
-385|54|9|2|46|43886.30|0.08|0.07|N|O|1996-03-29|1996-05-17|1996-04-18|NONE|REG AIR|lthily ironic f|
-386|153|5|1|39|41072.85|0.10|0.07|A|F|1995-05-10|1995-02-28|1995-05-25|NONE|SHIP|hely. carefully regular accounts hag|
-386|69|4|2|16|15504.96|0.06|0.01|A|F|1995-04-12|1995-04-18|1995-05-11|DELIVER IN PERSON|MAIL|lithely fluffi|
-386|131|2|3|37|38151.81|0.09|0.04|A|F|1995-05-23|1995-03-01|1995-05-25|TAKE BACK RETURN|MAIL|ending pearls breach fluffily. slyly pen|
-387|137|8|1|1|1037.13|0.08|0.03|N|O|1997-05-06|1997-04-23|1997-05-10|NONE|SHIP| pinto beans wake furiously carefu|
-387|153|4|2|42|44232.30|0.07|0.05|N|O|1997-05-25|1997-02-25|1997-05-29|DELIVER IN PERSON|RAIL|lithely final theodolites.|
-387|97|10|3|40|39883.60|0.09|0.02|N|O|1997-03-08|1997-04-18|1997-03-31|COLLECT COD|TRUCK| quickly ironic platelets are slyly. fluff|
-387|56|7|4|19|18164.95|0.08|0.00|N|O|1997-03-14|1997-04-21|1997-04-04|NONE|REG AIR|gular dependencies|
-387|149|6|5|32|33572.48|0.08|0.06|N|O|1997-05-02|1997-04-11|1997-05-11|DELIVER IN PERSON|TRUCK|gle. silent, fur|
-388|33|9|1|42|39187.26|0.05|0.06|R|F|1993-02-21|1993-02-26|1993-03-15|COLLECT COD|FOB|accounts sleep furiously|
-388|128|9|2|46|47293.52|0.07|0.01|A|F|1993-03-22|1993-01-26|1993-03-24|COLLECT COD|FOB|to beans nag about the careful reque|
-388|65|2|3|40|38602.40|0.06|0.01|A|F|1992-12-24|1993-01-28|1993-01-19|TAKE BACK RETURN|REG AIR|quests against the carefully unusual epi|
-389|190|1|1|2|2180.38|0.09|0.00|R|F|1994-04-13|1994-04-10|1994-04-25|TAKE BACK RETURN|RAIL|fts. courts eat blithely even dependenc|
-390|107|10|1|10|10071.00|0.02|0.05|N|O|1998-05-26|1998-07-06|1998-06-23|TAKE BACK RETURN|SHIP| requests. final accounts x-ray beside the|
-390|124|7|2|17|17410.04|0.09|0.06|N|O|1998-06-07|1998-06-14|1998-07-07|COLLECT COD|SHIP|ending, pending pinto beans wake slyl|
-390|184|5|3|46|49872.28|0.07|0.04|N|O|1998-06-06|1998-05-20|1998-06-14|DELIVER IN PERSON|SHIP|cial excuses. bold, pending packages|
-390|142|3|4|42|43769.88|0.01|0.05|N|O|1998-06-06|1998-06-22|1998-07-05|COLLECT COD|SHIP|counts nag across the sly, sil|
-390|128|3|5|13|13365.56|0.02|0.06|N|O|1998-07-08|1998-05-10|1998-07-18|DELIVER IN PERSON|SHIP|sleep carefully idle packages. blithely |
-390|125|4|6|11|11276.32|0.09|0.06|N|O|1998-05-05|1998-05-15|1998-06-01|DELIVER IN PERSON|SHIP|according to the foxes are furiously |
-390|85|6|7|24|23641.92|0.05|0.02|N|O|1998-04-18|1998-05-19|1998-04-28|TAKE BACK RETURN|AIR|y. enticingly final depos|
-391|122|1|1|14|14309.68|0.09|0.02|R|F|1995-02-11|1995-02-03|1995-02-13|TAKE BACK RETURN|TRUCK| escapades sleep furiously about |
-416|94|6|1|25|24852.25|0.00|0.05|A|F|1993-10-11|1993-11-26|1993-10-21|DELIVER IN PERSON|TRUCK|y final theodolites about|
-416|111|1|2|22|22244.42|0.10|0.00|R|F|1993-12-27|1993-12-17|1994-01-09|COLLECT COD|RAIL|rint blithely above the pending sentim|
-416|175|5|3|25|26879.25|0.07|0.01|R|F|1993-10-16|1993-12-03|1993-10-29|NONE|AIR|ses boost after the bold requests.|
-417|40|1|1|39|36661.56|0.01|0.02|A|F|1994-05-31|1994-05-02|1994-06-06|NONE|SHIP|y regular requests wake along |
-417|70|7|2|18|17461.26|0.00|0.01|R|F|1994-03-29|1994-04-10|1994-04-26|TAKE BACK RETURN|FOB|- final requests sle|
-417|45|2|3|41|38746.64|0.10|0.01|R|F|1994-04-11|1994-03-08|1994-05-06|COLLECT COD|RAIL|tes. regular requests across the |
-417|132|3|4|2|2064.26|0.01|0.03|R|F|1994-02-13|1994-04-19|1994-03-15|DELIVER IN PERSON|SHIP|uriously bol|
-418|19|3|1|31|28489.31|0.00|0.03|N|F|1995-06-05|1995-06-18|1995-06-26|COLLECT COD|FOB|final theodolites. fluffil|
-418|2|5|2|1|902.00|0.04|0.07|N|O|1995-06-23|1995-06-16|1995-07-23|DELIVER IN PERSON|AIR|regular, silent pinto|
-418|35|1|3|3|2805.09|0.04|0.06|N|O|1995-06-29|1995-07-12|1995-07-01|COLLECT COD|AIR|ly furiously regular w|
-419|153|8|1|33|34753.95|0.05|0.02|N|O|1996-11-06|1996-12-25|1996-11-20|TAKE BACK RETURN|TRUCK|y above the bli|
-419|65|2|2|32|30881.92|0.01|0.06|N|O|1996-12-04|1996-12-04|1996-12-24|COLLECT COD|SHIP|blithely regular requests. special pinto|
-419|71|1|3|15|14566.05|0.07|0.04|N|O|1996-12-17|1996-11-28|1996-12-19|TAKE BACK RETURN|REG AIR| sleep final, regular theodolites. fluffi|
-419|9|6|4|15|13635.00|0.01|0.02|N|O|1997-01-09|1996-12-22|1997-01-25|COLLECT COD|FOB|of the careful, thin theodolites. quickly s|
-419|149|2|5|17|17835.38|0.01|0.00|N|O|1997-01-13|1996-12-20|1997-02-01|COLLECT COD|REG AIR|lar dependencies: carefully regu|
-420|101|6|1|5|5005.50|0.04|0.03|N|O|1995-11-04|1996-01-02|1995-11-30|NONE|REG AIR|cajole blit|
-420|162|7|2|22|23367.52|0.05|0.04|N|O|1996-01-25|1995-12-16|1996-02-03|TAKE BACK RETURN|AIR|ly against the blithely re|
-420|48|1|3|45|42661.80|0.09|0.08|N|O|1996-01-14|1996-01-01|1996-01-26|COLLECT COD|FOB| final accounts. furiously express forges|
-420|75|6|4|12|11700.84|0.08|0.08|N|O|1996-02-05|1996-01-03|1996-02-12|TAKE BACK RETURN|REG AIR|c instructions are |
-420|73|2|5|37|36003.59|0.02|0.00|N|O|1995-11-16|1995-12-13|1995-11-19|DELIVER IN PERSON|SHIP|rbits. bold requests along the quickl|
-420|124|7|6|40|40964.80|0.01|0.05|N|O|1995-11-26|1995-12-26|1995-12-20|TAKE BACK RETURN|FOB| after the special|
-420|16|7|7|39|35724.39|0.00|0.08|N|O|1995-12-09|1995-12-16|1995-12-31|DELIVER IN PERSON|REG AIR|s. ironic waters about the car|
-421|134|5|1|1|1034.13|0.02|0.07|R|F|1992-05-29|1992-04-27|1992-06-09|NONE|TRUCK|oldly busy deposit|
-422|152|10|1|25|26303.75|0.10|0.07|N|O|1997-07-01|1997-08-17|1997-07-09|DELIVER IN PERSON|SHIP|carefully bold theodolit|
-422|171|1|2|10|10711.70|0.02|0.03|N|O|1997-06-15|1997-08-04|1997-07-08|TAKE BACK RETURN|AIR|he furiously ironic theodolite|
-422|176|4|3|46|49503.82|0.09|0.00|N|O|1997-06-21|1997-07-14|1997-06-27|DELIVER IN PERSON|RAIL| ideas. qu|
-422|162|7|4|25|26554.00|0.10|0.04|N|O|1997-08-24|1997-07-09|1997-09-22|NONE|FOB|ep along the furiousl|
-423|132|3|1|27|27867.51|0.06|0.03|N|O|1996-08-20|1996-08-01|1996-08-23|TAKE BACK RETURN|SHIP|ccounts. blithely regular pack|
-448|126|7|1|4|4104.48|0.00|0.04|N|O|1995-11-25|1995-10-20|1995-11-26|TAKE BACK RETURN|MAIL|nts thrash quickly among the b|
-448|173|1|2|46|49365.82|0.05|0.00|N|O|1995-08-31|1995-09-30|1995-09-09|COLLECT COD|SHIP| to the fluffily ironic packages.|
-448|27|6|3|35|32445.70|0.10|0.08|N|O|1995-09-27|1995-11-19|1995-10-20|COLLECT COD|REG AIR|ses nag quickly quickly ir|
-448|170|1|4|8|8561.36|0.10|0.00|N|O|1995-11-02|1995-10-16|1995-11-15|COLLECT COD|TRUCK|ounts wake blithely. furiously pending|
-448|138|9|5|23|23876.99|0.02|0.05|N|O|1995-09-26|1995-11-02|1995-10-17|NONE|SHIP|ious, final gifts|
-449|152|7|1|12|12625.80|0.02|0.08|N|O|1995-11-06|1995-08-25|1995-11-18|TAKE BACK RETURN|SHIP|ly. blithely ironic |
-449|109|6|2|4|4036.40|0.10|0.06|N|O|1995-10-27|1995-09-14|1995-11-21|DELIVER IN PERSON|FOB|are fluffily. requests are furiously|
-449|10|1|3|3|2730.03|0.07|0.08|N|O|1995-07-28|1995-09-11|1995-08-01|NONE|RAIL| bold deposits. express theodolites haggle|
-449|158|3|4|22|23279.30|0.07|0.00|N|O|1995-08-17|1995-09-04|1995-09-10|COLLECT COD|FOB|furiously final theodolites eat careful|
-450|162|7|1|42|44610.72|0.03|0.00|N|F|1995-06-07|1995-05-29|1995-06-23|TAKE BACK RETURN|SHIP|y asymptotes. regular depen|
-450|107|8|2|5|5035.50|0.03|0.02|A|F|1995-04-02|1995-05-06|1995-04-13|TAKE BACK RETURN|TRUCK|the pinto bea|
-450|143|6|3|32|33380.48|0.06|0.03|N|O|1995-07-02|1995-04-25|1995-07-30|TAKE BACK RETURN|SHIP| accounts nod fluffily even, pending|
-450|57|9|4|40|38282.00|0.05|0.03|R|F|1995-03-20|1995-05-25|1995-04-14|NONE|RAIL|ve. asymptote|
-450|79|10|5|2|1958.14|0.09|0.00|A|F|1995-03-11|1995-05-21|1995-03-16|COLLECT COD|AIR|y even pinto beans; qui|
-450|153|1|6|33|34753.95|0.08|0.05|R|F|1995-05-18|1995-05-22|1995-05-23|TAKE BACK RETURN|REG AIR|ily carefully final depo|
-451|130|9|1|36|37084.68|0.02|0.06|N|O|1998-06-18|1998-08-14|1998-06-20|TAKE BACK RETURN|AIR|rges can haggle carefully ironic, dogged |
-451|33|4|2|42|39187.26|0.05|0.01|N|O|1998-08-01|1998-08-05|1998-08-30|DELIVER IN PERSON|TRUCK|express excuses. blithely ironic pin|
-451|87|8|3|1|987.08|0.07|0.05|N|O|1998-07-13|1998-07-03|1998-08-04|DELIVER IN PERSON|AIR| carefully ironic packages solve furiously |
-451|77|5|4|28|27357.96|0.04|0.05|N|O|1998-06-16|1998-07-09|1998-06-17|DELIVER IN PERSON|SHIP| theodolites. even cou|
-452|115|6|1|2|2030.22|0.04|0.03|N|O|1997-12-26|1998-01-03|1998-01-12|COLLECT COD|FOB|y express instru|
-453|198|1|1|45|49418.55|0.01|0.00|N|O|1997-06-30|1997-08-20|1997-07-19|COLLECT COD|REG AIR|ifts wake carefully.|
-453|176|4|2|38|40894.46|0.08|0.04|N|O|1997-06-30|1997-07-08|1997-07-16|DELIVER IN PERSON|REG AIR| furiously f|
-453|14|1|3|38|34732.38|0.10|0.01|N|O|1997-08-10|1997-07-24|1997-09-07|NONE|SHIP|sts cajole. furiously un|
-453|96|7|4|45|44824.05|0.10|0.01|N|O|1997-09-18|1997-06-29|1997-10-14|TAKE BACK RETURN|AIR|ironic foxes. slyly pending depos|
-453|26|1|5|32|29632.64|0.04|0.01|N|O|1997-07-15|1997-06-27|1997-07-18|NONE|REG AIR|s. fluffily bold packages cajole. unu|
-453|95|7|6|28|27862.52|0.07|0.07|N|O|1997-08-16|1997-08-12|1997-08-27|NONE|MAIL|final dependencies. slyly special pl|
-454|118|8|1|24|24434.64|0.06|0.01|N|O|1996-04-26|1996-03-23|1996-05-20|NONE|TRUCK|le. deposits after the ideas nag unusual pa|
-455|157|9|1|42|44400.30|0.10|0.02|N|O|1997-01-26|1997-01-10|1997-02-22|DELIVER IN PERSON|REG AIR|around the quickly blit|
-455|28|9|2|44|40832.88|0.05|0.08|N|O|1997-01-17|1997-02-22|1997-02-12|TAKE BACK RETURN|TRUCK| accounts sleep slyly ironic asymptote|
-455|49|2|3|45|42706.80|0.04|0.06|N|O|1996-12-20|1997-01-31|1997-01-07|TAKE BACK RETURN|SHIP|thrash ironically regular packages. qui|
-455|171|9|4|11|11782.87|0.01|0.02|N|O|1997-03-15|1997-02-14|1997-03-26|DELIVER IN PERSON|MAIL|g deposits against the slyly idle foxes u|
-480|53|4|1|22|20967.10|0.04|0.02|A|F|1993-06-16|1993-07-28|1993-07-09|NONE|MAIL|into beans cajole furiously. accounts s|
-481|19|9|1|17|15623.17|0.07|0.05|A|F|1992-10-21|1992-12-09|1992-11-19|DELIVER IN PERSON|MAIL|. quickly final accounts among the |
-481|21|2|2|19|17499.38|0.08|0.01|R|F|1993-01-09|1992-11-27|1993-01-14|TAKE BACK RETURN|AIR|p blithely after t|
-481|186|7|3|42|45619.56|0.08|0.08|A|F|1992-11-27|1992-11-11|1992-12-08|COLLECT COD|RAIL|mptotes are furiously among the iron|
-481|82|3|4|11|10802.88|0.05|0.06|A|F|1993-01-12|1992-11-17|1993-02-05|NONE|FOB|eful attai|
-481|112|9|5|31|31375.41|0.05|0.01|A|F|1993-01-15|1992-12-31|1993-01-21|DELIVER IN PERSON|AIR|usly final packages believe. quick|
-482|138|9|1|32|33220.16|0.00|0.02|N|O|1996-05-22|1996-05-14|1996-05-29|NONE|SHIP|usual deposits affix against |
-482|122|5|2|1|1022.12|0.05|0.08|N|O|1996-05-29|1996-05-20|1996-05-31|COLLECT COD|AIR|es. quickly ironic escapades sleep furious|
-482|62|9|3|31|29823.86|0.04|0.03|N|O|1996-06-01|1996-05-06|1996-06-17|NONE|MAIL| blithe pin|
-482|196|7|4|8|8769.52|0.02|0.05|N|O|1996-04-19|1996-05-05|1996-04-21|NONE|TRUCK|tructions near the final, regular ideas de|
-482|39|10|5|46|43195.38|0.01|0.06|N|O|1996-07-19|1996-06-05|1996-08-10|NONE|MAIL|furiously thin realms. final, fina|
-482|79|10|6|19|18602.33|0.04|0.00|N|O|1996-03-27|1996-04-25|1996-04-15|NONE|FOB|ts hinder carefully silent requests|
-483|33|9|1|8|7464.24|0.00|0.08|N|O|1995-08-22|1995-08-23|1995-09-18|COLLECT COD|RAIL|osits. carefully fin|
-483|80|1|2|23|22541.84|0.04|0.06|N|O|1995-07-20|1995-08-11|1995-08-04|DELIVER IN PERSON|MAIL|requests was quickly against th|
-483|88|9|3|9|8892.72|0.04|0.03|N|O|1995-09-10|1995-09-02|1995-09-13|NONE|AIR| carefully express ins|
-484|31|2|1|49|45620.47|0.10|0.02|N|O|1997-03-06|1997-02-28|1997-03-23|COLLECT COD|TRUCK|ven accounts|
-484|32|8|2|45|41941.35|0.06|0.07|N|O|1997-04-09|1997-03-20|1997-04-19|DELIVER IN PERSON|TRUCK|usly final excuses boost slyly blithe|
-484|184|5|3|50|54209.00|0.06|0.05|N|O|1997-01-24|1997-03-27|1997-02-22|DELIVER IN PERSON|MAIL|uctions wake. final, silent requests haggle|
-484|165|6|4|22|23433.52|0.07|0.03|N|O|1997-04-29|1997-03-26|1997-05-17|TAKE BACK RETURN|SHIP|es are pending instructions. furiously unu|
-484|77|6|5|48|46899.36|0.00|0.05|N|O|1997-03-05|1997-02-08|1997-03-22|TAKE BACK RETURN|MAIL|l, bold packages? even mult|
-484|97|9|6|10|9970.90|0.01|0.08|N|O|1997-04-06|1997-02-14|1997-04-16|COLLECT COD|FOB|x fluffily carefully regular|
-485|150|1|1|50|52507.50|0.01|0.00|N|O|1997-03-28|1997-05-26|1997-04-18|TAKE BACK RETURN|MAIL|iously quick excuses. carefully final f|
-485|28|7|2|40|37120.80|0.08|0.01|N|O|1997-04-29|1997-05-08|1997-04-30|TAKE BACK RETURN|TRUCK|al escapades|
-485|137|3|3|22|22816.86|0.00|0.05|N|O|1997-04-06|1997-04-27|1997-05-01|DELIVER IN PERSON|TRUCK|refully final notornis haggle according |
-486|76|7|1|36|35138.52|0.00|0.01|N|O|1996-06-25|1996-05-06|1996-07-07|COLLECT COD|AIR|deposits around the quickly regular packa|
-486|68|9|2|40|38722.40|0.03|0.08|N|O|1996-05-21|1996-06-06|1996-06-07|COLLECT COD|SHIP|ts nag quickly among the slyl|
-486|136|2|3|26|26939.38|0.04|0.03|N|O|1996-03-16|1996-05-25|1996-03-31|NONE|RAIL|forges along the |
-486|72|1|4|38|36938.66|0.08|0.05|N|O|1996-05-07|1996-04-26|1996-05-26|TAKE BACK RETURN|TRUCK| blithely final pinto |
-486|29|2|5|3|2787.06|0.07|0.05|N|O|1996-07-07|1996-04-20|1996-07-23|DELIVER IN PERSON|RAIL|ccounts ha|
-486|47|4|6|46|43563.84|0.00|0.03|N|O|1996-04-18|1996-05-02|1996-04-20|COLLECT COD|AIR|theodolites eat carefully furious|
-487|92|3|1|47|46628.23|0.06|0.06|R|F|1992-09-30|1992-10-08|1992-10-24|NONE|TRUCK|tions. blithely reg|
-487|83|4|2|2|1966.16|0.02|0.06|R|F|1992-10-19|1992-11-04|1992-11-11|COLLECT COD|TRUCK|oss the unusual pinto beans. reg|
-512|189|10|1|19|20694.42|0.08|0.05|N|O|1995-07-12|1995-07-11|1995-08-04|COLLECT COD|MAIL| sleep. requests alongside of the fluff|
-512|23|2|2|37|34151.74|0.01|0.04|N|O|1995-06-20|1995-07-05|1995-07-16|NONE|RAIL|nic depths cajole? blithely b|
-512|180|1|3|40|43207.20|0.05|0.02|N|O|1995-07-06|1995-07-08|1995-07-08|COLLECT COD|TRUCK|quests are da|
-512|83|4|4|10|9830.80|0.09|0.02|N|O|1995-09-16|1995-07-29|1995-10-07|NONE|AIR|xes. pinto beans cajole carefully; |
-512|65|6|5|6|5790.36|0.03|0.05|R|F|1995-06-10|1995-06-21|1995-06-16|DELIVER IN PERSON|FOB|en ideas haggle |
-512|33|9|6|12|11196.36|0.04|0.00|R|F|1995-05-21|1995-08-03|1995-06-09|COLLECT COD|FOB|old furiously express deposits. specia|
-512|51|9|7|2|1902.10|0.09|0.08|N|O|1995-06-19|1995-08-13|1995-06-24|NONE|TRUCK|e slyly silent accounts serve with|
-513|62|7|1|20|19241.20|0.09|0.07|N|O|1995-07-12|1995-05-31|1995-07-31|NONE|AIR|efully ironic ideas doze slyl|
-513|122|5|2|44|44973.28|0.01|0.01|N|O|1995-07-14|1995-07-14|1995-08-12|NONE|MAIL|kages sleep boldly ironic theodolites. acco|
-514|79|9|1|21|20560.47|0.06|0.02|N|O|1996-06-09|1996-05-15|1996-07-07|DELIVER IN PERSON|RAIL|s sleep quickly blithely|
-514|118|2|2|34|34615.74|0.08|0.02|N|O|1996-04-14|1996-06-03|1996-04-23|COLLECT COD|REG AIR|ily even patterns. bold, silent instruc|
-514|13|7|3|6|5478.06|0.06|0.01|N|O|1996-05-30|1996-06-04|1996-06-28|COLLECT COD|SHIP|as haggle blithely; quickly s|
-514|116|7|4|43|43692.73|0.00|0.08|N|O|1996-06-07|1996-05-14|1996-07-01|TAKE BACK RETURN|FOB|thely regular |
-515|105|8|1|10|10051.00|0.03|0.02|A|F|1993-10-04|1993-11-03|1993-10-08|NONE|FOB|ar deposits th|
-515|148|1|2|38|39829.32|0.10|0.07|A|F|1993-09-19|1993-11-12|1993-10-03|DELIVER IN PERSON|SHIP|ays. furiously express requests haggle furi|
-515|183|4|3|11|11914.98|0.00|0.02|R|F|1993-09-04|1993-10-02|1993-09-05|DELIVER IN PERSON|FOB|ly pending accounts haggle blithel|
-515|109|10|4|34|34309.40|0.09|0.03|R|F|1993-10-03|1993-10-26|1993-10-15|DELIVER IN PERSON|REG AIR|ic dependencie|
-515|131|7|5|32|32996.16|0.01|0.07|R|F|1993-10-10|1993-10-08|1993-11-02|TAKE BACK RETURN|FOB|r sauternes boost. final theodolites wake a|
-515|109|4|6|25|25227.50|0.04|0.08|R|F|1993-11-14|1993-11-07|1993-12-03|DELIVER IN PERSON|MAIL|e packages engag|
-516|25|4|1|11|10175.22|0.01|0.06|N|O|1998-05-02|1998-05-23|1998-05-12|DELIVER IN PERSON|FOB|ongside of the blithely final reque|
-517|45|6|1|28|26461.12|0.03|0.02|N|O|1997-04-30|1997-05-18|1997-05-17|COLLECT COD|MAIL| requests. special, fi|
-517|156|4|2|15|15842.25|0.02|0.00|N|O|1997-04-09|1997-06-26|1997-05-01|NONE|TRUCK| slyly. express requests ar|
-517|41|8|3|9|8469.36|0.04|0.00|N|O|1997-05-03|1997-06-16|1997-05-24|COLLECT COD|SHIP| slyly stealthily express instructions. |
-517|133|4|4|11|11364.43|0.06|0.02|N|O|1997-06-20|1997-06-01|1997-06-27|NONE|REG AIR|ly throughout the fu|
-517|24|3|5|23|21252.46|0.00|0.01|N|O|1997-04-19|1997-05-07|1997-05-12|COLLECT COD|RAIL| kindle. furiously bold requests mus|
-518|165|6|1|30|31954.80|0.07|0.05|N|O|1998-02-18|1998-03-27|1998-03-16|COLLECT COD|TRUCK|slyly by the packages. carefull|
-518|84|5|2|23|22633.84|0.05|0.07|N|O|1998-02-20|1998-05-05|1998-03-11|COLLECT COD|TRUCK| special requests. fluffily ironic re|
-518|134|5|3|12|12409.56|0.01|0.06|N|O|1998-03-08|1998-03-31|1998-04-06|NONE|AIR| packages thrash slyly|
-518|122|3|4|46|47017.52|0.07|0.02|N|O|1998-04-07|1998-04-17|1998-04-29|NONE|MAIL|. blithely even ideas cajole furiously. b|
-518|71|2|5|16|15537.12|0.01|0.01|N|O|1998-03-15|1998-03-24|1998-04-08|NONE|MAIL|use quickly expre|
-518|197|10|6|39|42790.41|0.09|0.08|N|O|1998-02-26|1998-03-17|1998-03-21|DELIVER IN PERSON|FOB| the bold, special deposits are carefully |
-518|186|7|7|48|52136.64|0.03|0.07|N|O|1998-03-06|1998-04-22|1998-03-14|NONE|FOB| slyly final platelets; quickly even deposi|
-519|159|4|1|1|1059.15|0.07|0.07|N|O|1997-12-01|1998-01-26|1997-12-23|COLLECT COD|REG AIR|bold requests believe furiou|
-519|3|4|2|38|34314.00|0.05|0.08|N|O|1998-02-19|1997-12-15|1998-03-19|DELIVER IN PERSON|FOB|gular excuses detect quickly furiously |
-519|106|1|3|19|19115.90|0.00|0.02|N|O|1998-01-09|1998-01-03|1998-02-06|COLLECT COD|AIR|asymptotes. p|
-519|47|6|4|27|25570.08|0.08|0.06|N|O|1997-11-20|1997-12-06|1997-12-16|DELIVER IN PERSON|REG AIR|le. even, final dependencies|
-519|10|5|5|13|11830.13|0.06|0.08|N|O|1998-02-06|1997-12-02|1998-03-03|TAKE BACK RETURN|TRUCK|c accounts wake along the ironic so|
-519|151|6|6|3|3153.45|0.04|0.00|N|O|1998-02-01|1998-01-25|1998-02-27|TAKE BACK RETURN|FOB|erve blithely blithely ironic asymp|
-544|139|10|1|47|48839.11|0.08|0.06|R|F|1993-03-14|1993-03-27|1993-03-27|COLLECT COD|SHIP|ecial pains. deposits grow foxes. |
-545|170|1|1|4|4280.68|0.02|0.00|N|O|1996-02-23|1995-12-16|1996-03-21|DELIVER IN PERSON|FOB|, ironic grouches cajole over|
-545|171|10|2|18|19281.06|0.00|0.00|N|O|1996-02-21|1996-01-17|1996-02-26|NONE|RAIL|al, final packages affix. even a|
-546|85|6|1|16|15761.28|0.08|0.02|N|O|1997-02-04|1996-12-30|1997-02-25|DELIVER IN PERSON|TRUCK|de of the orbits. sometimes regula|
-547|71|10|1|44|42727.08|0.08|0.08|N|O|1996-10-18|1996-08-17|1996-10-27|TAKE BACK RETURN|FOB|thely express dependencies. qu|
-547|137|8|2|48|49782.24|0.01|0.04|N|O|1996-10-21|1996-08-04|1996-11-20|COLLECT COD|SHIP|thely specia|
-547|182|3|3|3|3246.54|0.05|0.02|N|O|1996-09-04|1996-08-01|1996-09-21|COLLECT COD|SHIP|pinto beans. ironi|
-548|197|8|1|2|2194.38|0.06|0.05|A|F|1994-11-26|1994-11-06|1994-12-06|COLLECT COD|MAIL|ests haggle quickly eve|
-548|5|6|2|6|5430.00|0.00|0.08|A|F|1995-01-18|1994-12-08|1995-02-10|NONE|TRUCK|sits wake furiously regular|
-548|1|8|3|21|18921.00|0.03|0.08|A|F|1995-01-13|1994-12-18|1995-01-25|NONE|AIR|ideas. special accounts above the furiou|
-548|57|9|4|21|20098.05|0.08|0.03|A|F|1994-10-27|1994-12-04|1994-11-21|DELIVER IN PERSON|AIR| engage quickly. regular theo|
-548|93|7|5|19|18868.71|0.00|0.02|A|F|1994-09-24|1994-11-24|1994-10-01|DELIVER IN PERSON|MAIL|courts boost care|
-548|153|8|6|32|33700.80|0.06|0.04|A|F|1994-12-16|1994-11-20|1994-12-29|NONE|REG AIR|c instruction|
-549|196|9|1|18|19731.42|0.07|0.04|R|F|1992-10-19|1992-08-12|1992-11-13|COLLECT COD|REG AIR|furiously according to the ironic, regular |
-549|189|10|2|38|41388.84|0.07|0.05|A|F|1992-08-17|1992-08-28|1992-09-05|COLLECT COD|RAIL|the regular, furious excuses. carefu|
-549|66|7|3|36|34778.16|0.08|0.04|R|F|1992-09-11|1992-10-11|1992-09-12|DELIVER IN PERSON|AIR|ts against the ironic, even theodolites eng|
-549|21|4|4|18|16578.36|0.09|0.01|A|F|1992-07-31|1992-09-11|1992-08-08|NONE|RAIL|ely regular accounts above the |
-549|24|7|5|38|35112.76|0.06|0.02|R|F|1992-08-23|1992-08-12|1992-08-25|COLLECT COD|REG AIR|eposits. carefully regular depos|
-550|191|3|1|31|33826.89|0.04|0.02|N|O|1995-10-24|1995-09-27|1995-11-04|COLLECT COD|AIR|thely silent packages. unusual|
-551|24|9|1|8|7392.16|0.08|0.02|N|O|1995-07-29|1995-07-18|1995-08-02|NONE|REG AIR| wake quickly slyly pending platel|
-551|159|4|2|20|21183.00|0.00|0.07|N|O|1995-09-18|1995-08-25|1995-10-11|COLLECT COD|TRUCK|r ideas. final, even ideas hinder alongside|
-551|162|9|3|16|16994.56|0.07|0.06|N|O|1995-07-29|1995-08-19|1995-08-10|COLLECT COD|MAIL|y along the carefully ex|
-576|87|8|1|2|1974.16|0.07|0.01|N|O|1997-05-15|1997-06-30|1997-05-28|NONE|RAIL|ccounts along the ac|
-576|34|5|2|6|5604.18|0.06|0.05|N|O|1997-05-15|1997-07-26|1997-06-03|DELIVER IN PERSON|TRUCK|al deposits. slyly even sauternes a|
-576|37|3|3|6|5622.18|0.08|0.07|N|O|1997-08-28|1997-06-16|1997-09-25|DELIVER IN PERSON|FOB|ts. ironic multipliers |
-576|138|9|4|5|5190.65|0.03|0.07|N|O|1997-06-11|1997-06-17|1997-07-05|NONE|REG AIR|l foxes boost slyly. accounts af|
-577|26|5|1|25|23150.50|0.06|0.01|A|F|1995-04-09|1995-02-20|1995-05-09|TAKE BACK RETURN|AIR|ve slyly of the frets. careful|
-577|64|1|2|14|13496.84|0.08|0.03|R|F|1995-03-19|1995-02-25|1995-04-09|DELIVER IN PERSON|RAIL|l accounts wake deposits. ironic packa|
-578|156|7|1|40|42246.00|0.02|0.08|N|O|1997-02-10|1997-03-18|1997-02-11|NONE|SHIP|usly even platel|
-578|188|9|2|23|25028.14|0.05|0.08|N|O|1997-03-06|1997-03-03|1997-03-20|TAKE BACK RETURN|FOB|nstructions. ironic deposits|
-579|151|6|1|9|9460.35|0.00|0.05|N|O|1998-06-20|1998-04-28|1998-07-19|DELIVER IN PERSON|RAIL|e ironic, express deposits are furiously|
-579|33|4|2|39|36388.17|0.02|0.01|N|O|1998-06-21|1998-06-03|1998-06-26|COLLECT COD|REG AIR|ncies. furiously final r|
-579|60|5|3|6|5760.36|0.03|0.00|N|O|1998-04-24|1998-05-03|1998-05-08|TAKE BACK RETURN|TRUCK|ickly final requests-- bold accou|
-579|7|10|4|41|37187.00|0.04|0.05|N|O|1998-05-28|1998-05-01|1998-06-04|COLLECT COD|REG AIR|bold, express requests sublate slyly. blith|
-579|13|7|5|28|25564.28|0.00|0.03|N|O|1998-07-10|1998-05-24|1998-07-19|NONE|RAIL|ic ideas until th|
-579|167|6|6|5|5335.80|0.05|0.08|N|O|1998-05-02|1998-04-25|1998-05-05|COLLECT COD|REG AIR|refully silent ideas cajole furious|
-580|85|6|1|33|32507.64|0.03|0.05|N|O|1997-10-11|1997-09-19|1997-10-16|TAKE BACK RETURN|FOB|y express theodolites cajole carefully |
-580|174|5|2|31|33299.27|0.04|0.08|N|O|1997-10-04|1997-09-08|1997-10-15|COLLECT COD|FOB|ose alongside of the sl|
-580|185|6|3|19|20618.42|0.04|0.04|N|O|1997-07-23|1997-09-21|1997-08-15|NONE|FOB|mong the special packag|
-581|64|1|1|41|39526.46|0.09|0.07|N|O|1997-05-26|1997-04-06|1997-06-10|TAKE BACK RETURN|MAIL|nts. quickly|
-581|93|5|2|14|13903.26|0.06|0.08|N|O|1997-05-17|1997-04-14|1997-06-08|NONE|MAIL|. deposits s|
-581|101|6|3|49|49053.90|0.10|0.02|N|O|1997-02-27|1997-04-24|1997-03-10|TAKE BACK RETURN|MAIL|. slyly regular pinto beans acr|
-581|75|4|4|30|29252.10|0.10|0.08|N|O|1997-06-19|1997-05-21|1997-06-22|TAKE BACK RETURN|TRUCK| regular ideas grow furio|
-582|57|9|1|7|6699.35|0.07|0.00|N|O|1997-11-16|1997-11-29|1997-12-10|TAKE BACK RETURN|FOB|ithely unusual t|
-582|51|2|2|49|46601.45|0.05|0.03|N|O|1997-12-17|1998-01-12|1997-12-31|COLLECT COD|REG AIR|nts according to the furiously regular pin|
-582|141|4|3|42|43727.88|0.07|0.00|N|O|1997-11-15|1997-12-21|1997-12-03|COLLECT COD|SHIP|iously beside the silent de|
-582|168|9|4|36|38453.76|0.06|0.01|N|O|1997-12-09|1997-11-27|1997-12-26|TAKE BACK RETURN|SHIP|lar requests. quickly |
-583|145|6|1|1|1045.14|0.07|0.07|N|O|1997-06-17|1997-04-29|1997-06-28|NONE|TRUCK| regular, regular ideas. even, bra|
-583|120|4|2|47|47945.64|0.10|0.06|N|O|1997-07-14|1997-05-12|1997-08-11|DELIVER IN PERSON|AIR|nts are fluffily. furiously even re|
-583|130|5|3|34|35024.42|0.01|0.02|N|O|1997-05-11|1997-04-24|1997-06-03|DELIVER IN PERSON|MAIL|express req|
-583|142|1|4|33|34390.62|0.10|0.01|N|O|1997-05-28|1997-04-25|1997-06-24|NONE|AIR|kages cajole slyly across the|
-583|189|10|5|13|14159.34|0.04|0.06|N|O|1997-06-23|1997-05-29|1997-07-08|COLLECT COD|TRUCK|y sly theodolites. ironi|
-608|154|6|1|19|20028.85|0.08|0.06|N|O|1996-04-19|1996-05-02|1996-05-03|DELIVER IN PERSON|RAIL|ideas. the|
-608|198|1|2|40|43927.60|0.03|0.01|N|O|1996-05-21|1996-04-11|1996-06-02|NONE|AIR| alongside of the regular tithes. sly|
-609|66|5|1|21|20287.26|0.01|0.05|R|F|1994-08-24|1994-08-23|1994-08-27|DELIVER IN PERSON|FOB|de of the special warthogs. excu|
-610|111|8|1|49|49544.39|0.10|0.07|N|O|1995-08-29|1995-10-26|1995-09-12|TAKE BACK RETURN|SHIP|ular instruc|
-610|68|3|2|11|10648.66|0.07|0.08|N|O|1995-10-31|1995-10-25|1995-11-18|NONE|MAIL|blithely final |
-610|118|9|3|26|26470.86|0.09|0.04|N|O|1995-11-22|1995-09-09|1995-12-04|TAKE BACK RETURN|AIR|cross the furiously even theodolites sl|
-610|186|7|4|17|18465.06|0.03|0.03|N|O|1995-11-01|1995-10-30|1995-11-04|COLLECT COD|FOB|p quickly instead of the slyly pending foxe|
-610|146|7|5|39|40799.46|0.08|0.05|N|O|1995-10-30|1995-10-21|1995-11-11|TAKE BACK RETURN|REG AIR|counts. ironic warhorses are |
-610|95|7|6|5|4975.45|0.00|0.07|N|O|1995-08-11|1995-10-22|1995-08-26|TAKE BACK RETURN|FOB|n pinto beans. iro|
-610|190|1|7|27|29435.13|0.06|0.03|N|O|1995-09-02|1995-09-19|1995-09-15|NONE|REG AIR| ironic pinto beans haggle. blithe|
-611|17|7|1|39|35763.39|0.05|0.06|R|F|1993-05-06|1993-04-09|1993-05-22|TAKE BACK RETURN|SHIP|nto beans |
-611|81|2|2|1|981.08|0.08|0.07|R|F|1993-05-17|1993-02-26|1993-06-15|DELIVER IN PERSON|MAIL|ts. pending platelets aff|
-611|120|4|3|39|39784.68|0.09|0.02|A|F|1993-03-10|1993-03-10|1993-03-17|TAKE BACK RETURN|TRUCK|the evenly bold requests. furious|
-612|185|6|1|5|5425.90|0.07|0.00|R|F|1992-11-08|1992-11-20|1992-12-03|TAKE BACK RETURN|RAIL|structions. q|
-612|195|7|2|28|30665.32|0.07|0.06|R|F|1993-01-02|1992-12-11|1993-01-30|DELIVER IN PERSON|TRUCK|regular instructions affix bl|
-612|67|4|3|49|47385.94|0.00|0.08|A|F|1993-01-08|1992-11-25|1993-01-17|TAKE BACK RETURN|REG AIR|theodolite|
-612|39|5|4|28|26292.84|0.05|0.00|A|F|1992-11-12|1992-12-05|1992-12-02|TAKE BACK RETURN|REG AIR|lyly regular asym|
-612|88|9|5|1|988.08|0.08|0.04|R|F|1992-12-18|1992-12-13|1992-12-20|TAKE BACK RETURN|FOB| requests.|
-612|189|10|6|33|35942.94|0.10|0.03|R|F|1992-11-30|1992-12-01|1992-12-12|COLLECT COD|MAIL|bove the blithely even ideas. careful|
-613|91|5|1|17|16848.53|0.06|0.06|N|O|1995-09-23|1995-08-04|1995-10-15|NONE|SHIP|ar dependencie|
-613|79|7|2|6|5874.42|0.05|0.05|N|O|1995-08-05|1995-08-09|1995-08-08|TAKE BACK RETURN|MAIL|y ironic deposits eat |
-613|186|7|3|3|3258.54|0.03|0.01|N|O|1995-09-27|1995-09-11|1995-10-05|NONE|TRUCK|ccounts cajole. |
-613|159|10|4|7|7414.05|0.02|0.04|N|O|1995-09-07|1995-08-02|1995-09-16|DELIVER IN PERSON|MAIL|ously blithely final pinto beans. regula|
-614|195|8|1|21|22998.99|0.00|0.03|R|F|1993-03-29|1993-01-06|1993-04-16|TAKE BACK RETURN|TRUCK|arefully. slyly express packag|
-614|187|8|2|48|52184.64|0.07|0.07|A|F|1993-03-09|1993-01-19|1993-03-19|DELIVER IN PERSON|SHIP|riously special excuses haggle along the|
-614|167|2|3|43|45887.88|0.05|0.00|A|F|1993-03-07|1993-02-22|1993-03-18|DELIVER IN PERSON|SHIP| express accounts wake. slyly ironic ins|
-614|147|6|4|14|14659.96|0.04|0.06|A|F|1992-12-03|1993-02-14|1992-12-27|DELIVER IN PERSON|SHIP|ular packages haggle about the pack|
-614|196|8|5|30|32885.70|0.08|0.07|R|F|1993-01-16|1993-02-08|1993-02-12|TAKE BACK RETURN|FOB|tructions are f|
-614|137|8|6|48|49782.24|0.04|0.08|A|F|1992-12-14|1993-01-22|1993-01-11|NONE|TRUCK| regular platelets cajole quickly eve|
-615|105|6|1|36|36183.60|0.10|0.01|A|F|1992-06-01|1992-07-14|1992-06-27|NONE|FOB| packages. carefully final pinto bea|
-640|93|7|1|49|48661.41|0.09|0.02|R|F|1993-03-27|1993-04-17|1993-04-15|NONE|RAIL|s haggle slyly|
-640|1|4|2|40|36040.00|0.09|0.05|A|F|1993-05-11|1993-04-11|1993-05-15|COLLECT COD|TRUCK|oach according to the bol|
-640|180|8|3|22|23763.96|0.05|0.07|A|F|1993-05-07|1993-04-14|1993-05-21|TAKE BACK RETURN|TRUCK|osits across the slyly regular theodo|
-640|32|3|4|45|41941.35|0.07|0.07|R|F|1993-04-15|1993-04-23|1993-04-21|DELIVER IN PERSON|REG AIR|ong the qui|
-641|126|9|1|18|18470.16|0.01|0.08|R|F|1993-10-17|1993-10-11|1993-10-29|DELIVER IN PERSON|AIR|p blithely bold packages. quick|
-641|100|2|2|1|1000.10|0.09|0.02|R|F|1993-12-03|1993-10-28|1993-12-26|TAKE BACK RETURN|RAIL| nag across the regular foxes.|
-641|95|7|3|40|39803.60|0.05|0.06|R|F|1993-11-22|1993-10-20|1993-12-11|DELIVER IN PERSON|REG AIR|lets. furiously regular requests cajo|
-641|71|10|4|25|24276.75|0.03|0.02|A|F|1993-12-04|1993-11-18|1993-12-18|TAKE BACK RETURN|FOB|d, regular d|
-641|4|9|5|41|37064.00|0.07|0.04|R|F|1993-11-29|1993-10-27|1993-12-04|TAKE BACK RETURN|FOB| asymptotes are quickly. bol|
-642|54|5|1|26|24805.30|0.10|0.03|A|F|1994-04-16|1994-02-01|1994-04-27|COLLECT COD|REG AIR|quests according to the unu|
-643|13|3|1|28|25564.28|0.00|0.08|A|F|1995-04-13|1995-05-12|1995-04-14|TAKE BACK RETURN|TRUCK|ly regular requests nag sly|
-643|51|2|2|48|45650.40|0.01|0.02|N|O|1995-07-10|1995-06-07|1995-08-01|NONE|FOB|ly ironic accounts|
-643|163|2|3|23|24452.68|0.05|0.03|N|O|1995-07-09|1995-05-18|1995-07-31|COLLECT COD|RAIL|sits are carefully according to the e|
-643|45|4|4|39|36856.56|0.08|0.04|A|F|1995-06-08|1995-06-16|1995-06-13|COLLECT COD|RAIL| the pains. carefully s|
-643|190|1|5|47|51238.93|0.10|0.03|R|F|1995-04-05|1995-06-14|1995-04-26|DELIVER IN PERSON|RAIL|y against |
-644|134|10|1|46|47569.98|0.02|0.01|A|F|1992-05-20|1992-06-14|1992-06-14|DELIVER IN PERSON|RAIL| special requests was sometimes expre|
-644|130|3|2|11|11331.43|0.05|0.02|A|F|1992-08-20|1992-07-21|1992-09-11|TAKE BACK RETURN|TRUCK|ealthy pinto beans use carefu|
-644|101|6|3|44|44048.40|0.04|0.04|R|F|1992-08-17|1992-07-26|1992-08-20|COLLECT COD|REG AIR|iously ironic pinto beans. bold packa|
-644|80|8|4|7|6860.56|0.01|0.02|A|F|1992-05-18|1992-07-01|1992-06-07|COLLECT COD|RAIL| regular requests are blithely. slyly|
-644|50|1|5|23|21851.15|0.02|0.04|R|F|1992-07-31|1992-07-28|1992-08-13|DELIVER IN PERSON|TRUCK|uctions nag quickly alongside of t|
-644|85|6|6|33|32507.64|0.00|0.07|R|F|1992-08-26|1992-07-27|1992-08-28|NONE|AIR|ages sleep. bold, bo|
-644|51|9|7|38|36139.90|0.08|0.06|R|F|1992-05-17|1992-07-10|1992-06-06|TAKE BACK RETURN|MAIL| packages. blithely slow accounts nag quic|
-645|160|8|1|33|34985.28|0.01|0.02|A|F|1994-12-09|1995-02-21|1995-01-03|NONE|TRUCK|heodolites b|
-645|170|1|2|47|50297.99|0.07|0.05|R|F|1995-02-16|1995-02-15|1995-02-25|COLLECT COD|TRUCK|hely regular instructions alon|
-645|70|7|3|46|44623.22|0.10|0.01|A|F|1995-01-04|1995-02-21|1995-01-21|COLLECT COD|REG AIR| regular dependencies across the speci|
-645|96|9|4|49|48808.41|0.05|0.03|R|F|1995-01-24|1995-01-06|1995-02-17|NONE|TRUCK|y. slyly iron|
-645|5|8|5|43|38915.00|0.06|0.02|A|F|1995-02-12|1995-02-27|1995-03-06|TAKE BACK RETURN|REG AIR| furiously accounts. slyly|
-645|34|5|6|18|16812.54|0.10|0.08|A|F|1995-03-02|1995-02-08|1995-03-03|COLLECT COD|RAIL|ep. slyly even |
-645|28|9|7|9|8352.18|0.03|0.03|A|F|1994-12-25|1995-01-04|1995-01-15|COLLECT COD|REG AIR|special deposits. regular, final th|
-646|109|6|1|31|31282.10|0.00|0.05|R|F|1994-12-17|1995-02-16|1995-01-04|COLLECT COD|MAIL|ag furiousl|
-646|127|8|2|1|1027.12|0.07|0.01|A|F|1994-12-05|1995-01-07|1994-12-31|TAKE BACK RETURN|MAIL|t blithely regular deposits. quic|
-646|30|9|3|24|22320.72|0.06|0.02|A|F|1995-02-20|1994-12-30|1995-03-16|TAKE BACK RETURN|TRUCK|regular accounts haggle dog|
-646|99|2|4|34|33969.06|0.01|0.00|R|F|1994-12-28|1994-12-27|1994-12-31|COLLECT COD|SHIP|slow accounts. fluffily idle instructions|
-646|90|1|5|17|16831.53|0.04|0.01|A|F|1994-12-31|1994-12-26|1995-01-01|DELIVER IN PERSON|REG AIR|inal packages haggle carefully |
-646|115|2|6|40|40604.40|0.10|0.01|R|F|1995-01-01|1995-01-13|1995-01-11|COLLECT COD|TRUCK|ronic packages sleep across th|
-647|17|1|1|41|37597.41|0.08|0.08|N|O|1997-11-19|1997-09-24|1997-12-15|COLLECT COD|REG AIR|r instructions. quickly unusu|
-647|113|10|2|5|5065.55|0.10|0.00|N|O|1997-09-25|1997-09-22|1997-10-25|TAKE BACK RETURN|AIR|ly express packages haggle caref|
-647|153|8|3|15|15797.25|0.08|0.00|N|O|1997-09-23|1997-10-09|1997-10-21|NONE|MAIL|ve the even, bold foxes sleep |
-672|173|4|1|41|43999.97|0.06|0.06|R|F|1994-06-20|1994-07-03|1994-06-22|COLLECT COD|REG AIR| dependencies in|
-672|190|1|2|9|9811.71|0.03|0.04|R|F|1994-06-25|1994-06-06|1994-07-19|TAKE BACK RETURN|TRUCK|haggle carefully carefully reg|
-672|143|2|3|35|36509.90|0.02|0.01|R|F|1994-07-13|1994-06-04|1994-07-14|COLLECT COD|RAIL| dependencies haggle quickly. theo|
-673|71|10|1|22|21363.54|0.03|0.02|R|F|1994-03-15|1994-04-27|1994-03-29|TAKE BACK RETURN|TRUCK| the regular, even requests. carefully fin|
-674|102|5|1|23|23048.30|0.06|0.07|A|F|1992-10-25|1992-10-15|1992-11-03|COLLECT COD|SHIP|ve the quickly even deposits. blithe|
-674|59|4|2|4|3836.20|0.02|0.07|R|F|1992-10-05|1992-11-22|1992-10-22|NONE|RAIL|ly express pinto beans sleep car|
-675|157|9|1|1|1057.15|0.04|0.08|N|O|1997-11-27|1997-09-30|1997-12-12|DELIVER IN PERSON|REG AIR|ide of the slyly regular packages. unus|
-675|137|3|2|35|36299.55|0.08|0.07|N|O|1997-08-19|1997-10-16|1997-09-17|DELIVER IN PERSON|REG AIR|s. furiously expre|
-675|176|6|3|34|36589.78|0.10|0.04|N|O|1997-11-17|1997-10-07|1997-11-27|NONE|FOB|y final accounts unwind around the |
-675|100|4|4|15|15001.50|0.09|0.05|N|O|1997-10-18|1997-09-28|1997-11-13|COLLECT COD|TRUCK|posits after the furio|
-675|5|8|5|46|41630.00|0.09|0.05|N|O|1997-09-18|1997-10-14|1997-10-01|DELIVER IN PERSON|AIR| deposits along the express foxes |
-676|51|3|1|9|8559.45|0.09|0.02|N|O|1997-04-03|1997-02-02|1997-04-08|COLLECT COD|REG AIR|aintain sl|
-676|78|6|2|20|19561.40|0.07|0.07|N|O|1997-02-02|1997-02-01|1997-02-11|NONE|REG AIR|riously around the blithely |
-676|163|4|3|35|37210.60|0.05|0.01|N|O|1996-12-30|1997-01-13|1997-01-19|DELIVER IN PERSON|RAIL|into beans. blithe|
-676|73|1|4|24|23353.68|0.01|0.06|N|O|1997-02-05|1997-01-16|1997-03-07|TAKE BACK RETURN|TRUCK|ress, regular dep|
-676|166|1|5|31|33050.96|0.01|0.06|N|O|1997-02-06|1997-02-28|1997-03-08|COLLECT COD|TRUCK|ial deposits cajo|
-676|76|7|6|33|32210.31|0.09|0.05|N|O|1997-03-02|1997-02-22|1997-03-19|TAKE BACK RETURN|TRUCK|as wake slyly furiously close pinto b|
-676|143|6|7|11|11474.54|0.07|0.02|N|O|1997-03-09|1997-03-06|1997-03-31|TAKE BACK RETURN|MAIL|he final acco|
-677|59|7|1|32|30689.60|0.04|0.08|R|F|1994-01-06|1994-01-31|1994-02-02|NONE|RAIL|slyly final|
-677|168|9|2|39|41658.24|0.00|0.07|R|F|1993-12-19|1994-02-11|1994-01-05|TAKE BACK RETURN|SHIP|ges. furiously regular packages use |
-677|24|5|3|46|42504.92|0.01|0.02|R|F|1993-12-02|1994-02-12|1993-12-06|COLLECT COD|RAIL|ng theodolites. furiously unusual theodo|
-677|148|7|4|1|1048.14|0.06|0.05|R|F|1993-12-01|1994-01-14|1993-12-26|DELIVER IN PERSON|MAIL|ly. regular |
-677|150|9|5|25|26253.75|0.00|0.05|A|F|1994-03-12|1994-02-02|1994-03-28|DELIVER IN PERSON|AIR| packages integrate blithely|
-678|146|7|1|20|20922.80|0.05|0.08|R|F|1993-06-21|1993-04-07|1993-07-10|TAKE BACK RETURN|MAIL|furiously express excuses. foxes eat fu|
-678|37|3|2|22|20614.66|0.01|0.02|A|F|1993-05-10|1993-04-29|1993-06-08|NONE|REG AIR|de of the carefully even requests. bl|
-678|143|10|3|16|16690.24|0.06|0.02|R|F|1993-03-20|1993-04-13|1993-04-16|DELIVER IN PERSON|REG AIR|equests cajole around the carefully regular|
-678|199|10|4|48|52761.12|0.08|0.08|R|F|1993-02-28|1993-04-04|1993-03-24|NONE|REG AIR|ithely. slyly express foxes|
-678|98|9|5|16|15969.44|0.06|0.04|R|F|1993-03-09|1993-04-18|1993-04-07|NONE|AIR| about the |
-678|43|4|6|11|10373.44|0.09|0.00|R|F|1993-04-28|1993-05-16|1993-05-11|COLLECT COD|TRUCK|ess deposits dazzle f|
-679|192|3|1|9|9829.71|0.09|0.00|N|O|1995-12-20|1996-01-27|1996-01-07|COLLECT COD|REG AIR|leep slyly. entici|
-704|190|1|1|40|43607.60|0.05|0.05|N|O|1997-01-30|1997-01-10|1997-02-20|COLLECT COD|AIR|ggle quickly. r|
-704|4|5|2|14|12656.00|0.07|0.08|N|O|1997-02-02|1996-12-26|1997-02-19|DELIVER IN PERSON|REG AIR|ve the quickly final forges. furiously p|
-705|189|10|1|46|50102.28|0.05|0.06|N|O|1997-04-18|1997-05-06|1997-05-05|DELIVER IN PERSON|SHIP|ss deposits. ironic packa|
-705|117|7|2|35|35598.85|0.10|0.04|N|O|1997-03-25|1997-03-20|1997-04-23|TAKE BACK RETURN|FOB|carefully ironic accounts|
-706|197|9|1|23|25235.37|0.05|0.00|N|O|1995-12-06|1995-12-02|1995-12-16|COLLECT COD|SHIP|ckey players. requests above the|
-707|155|6|1|34|35875.10|0.01|0.02|R|F|1994-12-08|1995-01-15|1995-01-02|NONE|RAIL| dependencies|
-707|43|10|2|22|20746.88|0.00|0.06|A|F|1995-01-12|1994-12-28|1995-01-16|DELIVER IN PERSON|REG AIR| kindle ironically|
-708|124|7|1|3|3072.36|0.05|0.02|N|O|1998-10-09|1998-09-22|1998-11-07|COLLECT COD|FOB|e slyly pending foxes. |
-708|180|1|2|19|20523.42|0.06|0.00|N|O|1998-10-28|1998-09-23|1998-11-25|COLLECT COD|SHIP| requests. even, thin ideas|
-708|122|5|3|33|33729.96|0.09|0.06|N|O|1998-09-10|1998-09-20|1998-09-22|COLLECT COD|RAIL|s boost carefully ruthless theodolites. f|
-708|56|7|4|5|4780.25|0.07|0.07|N|O|1998-07-22|1998-08-15|1998-07-28|TAKE BACK RETURN|REG AIR|c pinto beans nag after the account|
-708|143|2|5|36|37553.04|0.08|0.01|N|O|1998-07-16|1998-09-04|1998-08-11|NONE|SHIP|ests. even, regular hockey p|
-708|23|6|6|7|6461.14|0.10|0.03|N|O|1998-08-16|1998-08-15|1998-09-10|COLLECT COD|REG AIR|lly express ac|
-709|87|8|1|7|6909.56|0.00|0.00|N|O|1998-06-14|1998-06-08|1998-06-18|TAKE BACK RETURN|RAIL| special orbits cajole |
-709|198|10|2|15|16472.85|0.08|0.00|N|O|1998-07-10|1998-06-26|1998-08-09|NONE|RAIL|ily regular deposits. sauternes was accor|
-709|169|8|3|10|10691.60|0.01|0.02|N|O|1998-06-04|1998-06-30|1998-06-11|NONE|REG AIR|ts cajole boldly |
-709|108|9|4|40|40324.00|0.10|0.08|N|O|1998-08-12|1998-06-20|1998-08-20|DELIVER IN PERSON|RAIL|ggle fluffily carefully ironic|
-710|163|8|1|47|49968.52|0.06|0.08|A|F|1993-01-18|1993-03-24|1993-01-24|TAKE BACK RETURN|MAIL|usual ideas into th|
-710|193|4|2|38|41541.22|0.07|0.02|R|F|1993-04-18|1993-03-12|1993-05-15|COLLECT COD|FOB|sts boost fluffily aft|
-710|139|5|3|7|7273.91|0.04|0.06|R|F|1993-01-20|1993-03-28|1993-02-15|TAKE BACK RETURN|REG AIR|xpress, special ideas. bl|
-710|90|1|4|25|24752.25|0.00|0.05|R|F|1993-03-31|1993-02-05|1993-04-22|COLLECT COD|FOB|eas detect do|
-710|186|7|5|12|13034.16|0.01|0.02|A|F|1993-02-18|1993-02-27|1993-03-07|DELIVER IN PERSON|MAIL|ions. slyly express theodolites al|
-710|114|4|6|21|21296.31|0.04|0.06|R|F|1993-03-22|1993-03-05|1993-03-27|DELIVER IN PERSON|SHIP|es. furiously p|
-710|160|2|7|46|48767.36|0.03|0.07|R|F|1993-04-16|1993-03-27|1993-05-05|COLLECT COD|MAIL|ges use; blithely pending excuses inte|
-711|146|3|1|2|2092.28|0.10|0.04|R|F|1993-12-01|1993-12-09|1993-12-16|DELIVER IN PERSON|REG AIR|ely across t|
-711|103|8|2|27|27083.70|0.00|0.08|A|F|1993-10-02|1993-10-26|1993-10-08|DELIVER IN PERSON|MAIL|slyly. ironic asy|
-711|128|7|3|46|47293.52|0.10|0.00|R|F|1993-12-26|1993-11-19|1994-01-21|TAKE BACK RETURN|MAIL|deposits. permanen|
-711|128|9|4|20|20562.40|0.09|0.00|A|F|1994-01-17|1993-11-10|1994-01-31|DELIVER IN PERSON|TRUCK|kly regular acco|
-736|158|9|1|46|48674.90|0.05|0.01|N|O|1998-07-16|1998-09-01|1998-08-09|NONE|AIR|uctions cajole|
-736|80|1|2|23|22541.84|0.02|0.05|N|O|1998-10-08|1998-08-27|1998-10-19|TAKE BACK RETURN|AIR|k accounts are carefully|
-736|57|9|3|13|12441.65|0.00|0.03|N|O|1998-08-16|1998-07-26|1998-08-19|DELIVER IN PERSON|FOB|st furiously among the |
-736|98|2|4|14|13973.26|0.06|0.04|N|O|1998-10-04|1998-08-14|1998-10-16|COLLECT COD|REG AIR|nstructions.|
-736|169|6|5|32|34213.12|0.04|0.03|N|O|1998-07-30|1998-08-22|1998-08-12|DELIVER IN PERSON|RAIL|iously final accoun|
-737|182|3|1|12|12986.16|0.01|0.01|R|F|1992-04-28|1992-06-30|1992-05-08|COLLECT COD|RAIL|posits after the slyly bold du|
-738|198|1|1|34|37338.46|0.00|0.06|R|F|1993-06-09|1993-04-15|1993-07-09|TAKE BACK RETURN|TRUCK|s against the ironic exc|
-738|188|9|2|4|4352.72|0.00|0.03|A|F|1993-06-20|1993-04-08|1993-07-09|NONE|AIR|ar packages. fluffily bo|
-738|170|1|3|23|24613.91|0.04|0.08|A|F|1993-03-17|1993-04-02|1993-04-05|TAKE BACK RETURN|SHIP|nic, final excuses promise quickly regula|
-738|141|10|4|12|12493.68|0.04|0.08|A|F|1993-06-16|1993-05-05|1993-06-22|NONE|SHIP|ove the slyly regular p|
-738|175|4|5|30|32255.10|0.02|0.00|A|F|1993-06-12|1993-05-29|1993-06-25|NONE|AIR|ecial instructions haggle blithely regula|
-739|85|6|1|28|27582.24|0.00|0.03|N|O|1998-06-03|1998-08-04|1998-06-29|TAKE BACK RETURN|RAIL|elets about the pe|
-739|4|7|2|50|45200.00|0.07|0.06|N|O|1998-08-26|1998-07-16|1998-09-02|COLLECT COD|MAIL|ndencies. blith|
-739|49|2|3|12|11388.48|0.05|0.00|N|O|1998-08-20|1998-07-24|1998-08-22|NONE|MAIL|le slyly along the close i|
-739|44|3|4|47|44369.88|0.09|0.07|N|O|1998-08-12|1998-07-09|1998-08-28|NONE|REG AIR|deas according to the theodolites sn|
-739|188|9|5|30|32645.40|0.07|0.06|N|O|1998-06-19|1998-08-26|1998-07-02|DELIVER IN PERSON|REG AIR|above the even deposits. ironic requests|
-740|2|9|1|22|19844.00|0.10|0.02|N|O|1995-07-24|1995-09-11|1995-08-11|TAKE BACK RETURN|FOB|odolites cajole ironic, pending instruc|
-740|66|1|2|35|33812.10|0.00|0.00|N|O|1995-09-06|1995-08-22|1995-10-02|NONE|TRUCK|p quickly. fu|
-740|199|10|3|29|31876.51|0.06|0.05|N|O|1995-10-26|1995-09-17|1995-10-29|DELIVER IN PERSON|FOB|ntly bold pinto beans sleep quickl|
-741|187|8|1|25|27179.50|0.03|0.06|N|O|1998-07-15|1998-08-27|1998-08-12|DELIVER IN PERSON|MAIL|accounts. blithely bold pa|
-741|91|4|2|22|21803.98|0.09|0.01|N|O|1998-09-07|1998-09-28|1998-09-12|COLLECT COD|AIR|ven deposits about the regular, ironi|
-742|102|3|1|46|46096.60|0.04|0.08|A|F|1995-03-12|1995-03-20|1995-03-16|TAKE BACK RETURN|SHIP|e slyly bold deposits cajole according to|
-742|96|8|2|15|14941.35|0.08|0.05|A|F|1995-02-26|1995-03-20|1995-03-03|NONE|SHIP|blithely unusual pinto|
-742|102|5|3|24|24050.40|0.08|0.08|A|F|1995-02-12|1995-03-12|1995-02-14|DELIVER IN PERSON|SHIP|affix slyly. furiously i|
-742|192|4|4|16|17475.04|0.01|0.05|A|F|1995-01-15|1995-02-25|1995-01-24|COLLECT COD|AIR|eodolites haggle carefully regul|
-742|101|4|5|48|48052.80|0.09|0.08|R|F|1995-03-24|1995-01-23|1995-04-08|TAKE BACK RETURN|TRUCK| platelets |
-742|192|6|6|49|53517.31|0.02|0.07|A|F|1995-01-13|1995-02-13|1995-01-26|TAKE BACK RETURN|RAIL| carefully bold foxes sle|
-743|192|5|1|21|22935.99|0.01|0.04|N|O|1996-10-26|1996-11-05|1996-11-11|COLLECT COD|MAIL|d requests. packages afte|
-768|196|7|1|39|42751.41|0.06|0.08|N|O|1996-09-25|1996-10-27|1996-10-20|NONE|SHIP|out the ironic|
-768|18|9|2|2|1836.02|0.00|0.04|N|O|1996-11-13|1996-10-03|1996-11-25|DELIVER IN PERSON|SHIP|ular courts. slyly dogged accou|
-768|6|1|3|30|27180.00|0.06|0.05|N|O|1996-09-22|1996-11-03|1996-10-13|NONE|MAIL| furiously fluffy pinto beans haggle along|
-768|25|8|4|37|34225.74|0.10|0.00|N|O|1996-10-02|1996-09-23|1996-10-14|TAKE BACK RETURN|REG AIR|ending requests across the quickly|
-768|47|10|5|47|44510.88|0.06|0.05|N|O|1996-11-28|1996-10-30|1996-12-12|NONE|TRUCK|foxes. slyly ironic deposits a|
-768|112|9|6|43|43520.73|0.10|0.06|N|O|1996-09-22|1996-11-03|1996-10-22|TAKE BACK RETURN|AIR|sual ideas wake quickly|
-768|49|10|7|33|31318.32|0.01|0.04|N|O|1996-09-06|1996-09-29|1996-10-01|COLLECT COD|RAIL|sly ironic instructions. excuses can hagg|
-769|176|6|1|36|38742.12|0.02|0.02|A|F|1993-10-01|1993-08-07|1993-10-15|NONE|AIR|es. furiously iro|
-769|160|8|2|4|4240.64|0.01|0.04|R|F|1993-06-25|1993-08-12|1993-07-15|DELIVER IN PERSON|FOB| ideas. even|
-770|181|2|1|39|42166.02|0.09|0.06|N|O|1998-07-19|1998-08-09|1998-08-04|NONE|REG AIR|osits. foxes cajole |
-770|54|2|2|25|23851.25|0.03|0.02|N|O|1998-05-26|1998-07-23|1998-06-04|TAKE BACK RETURN|AIR| deposits dazzle fluffily alongside of |
-771|7|4|1|12|10884.00|0.10|0.08|N|O|1995-07-18|1995-08-02|1995-08-07|COLLECT COD|TRUCK|carefully. pending in|
-771|161|10|2|38|40324.08|0.03|0.08|N|O|1995-07-22|1995-09-10|1995-07-29|TAKE BACK RETURN|REG AIR| quickly final requests are final packages.|
-771|7|8|3|14|12698.00|0.02|0.05|N|O|1995-07-31|1995-08-13|1995-08-07|DELIVER IN PERSON|AIR|r, final packages are slyly iro|
-771|42|3|4|7|6594.28|0.06|0.02|N|O|1995-06-18|1995-08-31|1995-06-20|NONE|REG AIR|theodolites after the fluffily express |
-771|78|6|5|13|12714.91|0.09|0.01|N|O|1995-08-10|1995-08-21|1995-08-30|NONE|FOB|packages affix slyly about the quickly |
-771|82|3|6|23|22587.84|0.08|0.03|N|O|1995-06-19|1995-09-07|1995-07-09|COLLECT COD|FOB|cajole besides the quickly ironic pin|
-772|53|5|1|35|33356.75|0.10|0.06|R|F|1993-07-05|1993-06-05|1993-08-02|NONE|SHIP|kly thin packages wake slowly|
-772|84|5|2|10|9840.80|0.05|0.01|R|F|1993-05-20|1993-05-19|1993-06-15|DELIVER IN PERSON|MAIL| deposits cajole carefully instructions. t|
-772|86|7|3|35|34512.80|0.03|0.04|R|F|1993-04-18|1993-06-13|1993-05-01|COLLECT COD|MAIL|ng ideas. special packages haggle alon|
-772|180|8|4|10|10801.80|0.08|0.02|A|F|1993-05-17|1993-06-09|1993-05-29|COLLECT COD|AIR|o the furiously final deposits. furi|
-772|54|5|5|42|40070.10|0.02|0.07|A|F|1993-06-09|1993-07-16|1993-06-12|DELIVER IN PERSON|MAIL| express foxes abo|
-773|100|1|1|5|5000.50|0.06|0.04|A|F|1993-11-21|1993-12-19|1993-12-21|COLLECT COD|MAIL|ar requests. regular, thin packages u|
-773|11|5|2|31|28241.31|0.02|0.06|A|F|1993-12-30|1993-11-02|1994-01-01|TAKE BACK RETURN|MAIL|e slyly unusual deposit|
-773|151|3|3|39|40994.85|0.06|0.05|A|F|1994-01-04|1993-12-23|1994-01-26|DELIVER IN PERSON|FOB|quickly eve|
-773|29|8|4|28|26012.56|0.10|0.06|R|F|1994-01-19|1993-11-05|1994-01-23|NONE|TRUCK|he furiously slow deposits.|
-773|134|5|5|9|9307.17|0.09|0.02|R|F|1993-10-09|1993-12-25|1993-11-04|TAKE BACK RETURN|FOB|ent orbits haggle fluffily after the |
-773|40|1|6|43|40421.72|0.07|0.03|A|F|1993-11-06|1993-11-20|1993-11-08|TAKE BACK RETURN|SHIP|furiously bold dependencies. blithel|
-774|183|4|1|49|53075.82|0.08|0.03|N|O|1995-12-06|1996-01-07|1995-12-14|DELIVER IN PERSON|SHIP|ess accounts are carefully |
-774|17|4|2|3|2751.03|0.10|0.06|N|O|1996-02-13|1996-01-14|1996-03-04|COLLECT COD|FOB| slyly even courts nag blith|
-774|148|7|3|34|35636.76|0.02|0.07|N|O|1996-03-16|1996-01-03|1996-03-22|COLLECT COD|FOB|lar excuses are furiously final instr|
-774|15|6|4|8|7320.08|0.00|0.02|N|O|1996-01-24|1996-01-15|1996-02-13|COLLECT COD|RAIL|ully ironic requests c|
-774|177|5|5|44|47395.48|0.09|0.07|N|O|1996-02-29|1996-01-16|1996-03-06|NONE|REG AIR|s according to the deposits unwind ca|
-774|120|1|6|2|2040.24|0.07|0.03|N|O|1995-12-11|1996-02-10|1995-12-14|TAKE BACK RETURN|SHIP|accounts; slyly regular|
-775|32|3|1|16|14912.48|0.10|0.06|N|F|1995-05-23|1995-05-07|1995-06-19|NONE|TRUCK|un quickly slyly|
-775|174|2|2|21|22557.57|0.01|0.06|R|F|1995-05-01|1995-06-02|1995-05-13|DELIVER IN PERSON|FOB| quickly sile|
-775|108|5|3|20|20162.00|0.01|0.08|N|F|1995-06-17|1995-05-22|1995-07-13|COLLECT COD|AIR|en dependencies nag slowly |
-800|72|1|1|38|36938.66|0.00|0.05|N|O|1998-07-21|1998-09-25|1998-08-07|TAKE BACK RETURN|TRUCK|according to the bold, final dependencies |
-800|85|6|2|21|20686.68|0.04|0.05|N|O|1998-07-23|1998-10-01|1998-08-20|TAKE BACK RETURN|RAIL|ckly even requests after the carefully r|
-800|176|5|3|26|27980.42|0.01|0.02|N|O|1998-07-23|1998-10-08|1998-07-25|DELIVER IN PERSON|FOB|bove the pending requests.|
-801|6|3|1|13|11778.00|0.10|0.02|R|F|1992-04-25|1992-04-24|1992-05-16|COLLECT COD|RAIL|s are fluffily stealthily expres|
-801|95|8|2|21|20896.89|0.05|0.02|A|F|1992-03-14|1992-04-01|1992-04-05|COLLECT COD|AIR|wake silently furiously idle deposits. |
-801|3|4|3|21|18963.00|0.05|0.03|A|F|1992-04-25|1992-03-20|1992-05-04|COLLECT COD|REG AIR|cial, special packages.|
-801|164|9|4|12|12769.92|0.08|0.04|A|F|1992-06-06|1992-04-14|1992-06-12|TAKE BACK RETURN|RAIL|s. ironic pinto b|
-801|74|2|5|45|43833.15|0.01|0.06|R|F|1992-03-22|1992-03-22|1992-03-25|COLLECT COD|REG AIR| even asymptotes|
-801|122|7|6|10|10221.20|0.08|0.01|A|F|1992-06-05|1992-05-15|1992-06-21|DELIVER IN PERSON|MAIL|al accounts. carefully regular foxes wake|
-801|26|5|7|11|10186.22|0.01|0.03|A|F|1992-05-09|1992-04-19|1992-05-15|DELIVER IN PERSON|REG AIR|y special pinto beans cajole |
-802|143|6|1|40|41725.60|0.08|0.08|A|F|1995-01-07|1995-04-03|1995-01-23|DELIVER IN PERSON|RAIL|y bold accou|
-802|133|4|2|34|35126.42|0.08|0.06|A|F|1995-03-01|1995-03-15|1995-03-12|COLLECT COD|AIR|instructions cajole carefully. quietl|
-802|131|2|3|44|45369.72|0.07|0.04|R|F|1995-01-09|1995-02-04|1995-01-18|TAKE BACK RETURN|SHIP|rmanently idly special requ|
-802|157|2|4|18|19028.70|0.09|0.02|R|F|1995-03-06|1995-02-07|1995-03-19|TAKE BACK RETURN|RAIL|y regular requests engage furiously final d|
-802|132|3|5|19|19610.47|0.08|0.06|A|F|1995-04-01|1995-02-20|1995-04-23|DELIVER IN PERSON|REG AIR|old, furious|
-803|54|9|1|8|7632.40|0.07|0.01|N|O|1997-08-04|1997-06-19|1997-08-12|NONE|SHIP|ronic theodo|
-803|99|10|2|21|20980.89|0.08|0.06|N|O|1997-08-25|1997-06-30|1997-09-10|TAKE BACK RETURN|AIR|ironic packages cajole slyly. un|
-804|126|7|1|30|30783.60|0.08|0.04|A|F|1993-03-29|1993-05-07|1993-04-14|COLLECT COD|REG AIR|ehind the quietly regular pac|
-804|199|3|2|2|2198.38|0.02|0.00|A|F|1993-06-23|1993-04-30|1993-06-25|NONE|TRUCK|slyly silent |
-804|76|5|3|44|42947.08|0.04|0.05|R|F|1993-07-06|1993-04-13|1993-07-28|DELIVER IN PERSON|TRUCK|ly final deposits? special |
-804|38|9|4|21|19698.63|0.01|0.00|A|F|1993-04-12|1993-06-06|1993-04-20|DELIVER IN PERSON|RAIL|ular, ironic foxes. quickly even accounts|
-805|198|10|1|25|27454.75|0.07|0.06|N|O|1995-08-05|1995-09-30|1995-08-06|NONE|AIR|ide of the pending, sly requests. quickly f|
-805|57|5|2|29|27754.45|0.07|0.01|N|O|1995-08-24|1995-08-15|1995-09-16|TAKE BACK RETURN|AIR|dolites according to the slyly f|
-805|47|8|3|12|11364.48|0.01|0.06|N|O|1995-07-13|1995-09-27|1995-08-02|TAKE BACK RETURN|REG AIR| regular foxes. furio|
-805|76|6|4|26|25377.82|0.08|0.07|N|O|1995-08-28|1995-09-24|1995-09-11|TAKE BACK RETURN|RAIL|. ironic deposits sleep across |
-806|105|2|1|1|1005.10|0.04|0.07|N|O|1996-07-14|1996-09-12|1996-07-25|COLLECT COD|RAIL|ar accounts? pending, pending foxes a|
-806|160|5|2|22|23323.52|0.08|0.02|N|O|1996-10-03|1996-08-11|1996-10-20|DELIVER IN PERSON|REG AIR|fily pending |
-806|91|3|3|4|3964.36|0.04|0.03|N|O|1996-08-09|1996-09-18|1996-08-13|COLLECT COD|TRUCK|eans. quickly ironic ideas |
-807|117|7|1|49|49838.39|0.00|0.00|R|F|1993-12-05|1994-01-13|1993-12-25|COLLECT COD|REG AIR| furiously according to the un|
-807|155|10|2|49|51702.35|0.01|0.06|A|F|1994-01-17|1994-01-24|1994-01-22|COLLECT COD|TRUCK|y regular requests haggle.|
-807|181|2|3|48|51896.64|0.07|0.07|A|F|1994-01-08|1994-02-02|1994-01-15|DELIVER IN PERSON|SHIP|kly across the f|
-807|80|1|4|10|9800.80|0.09|0.00|R|F|1994-01-19|1994-02-12|1994-01-28|NONE|TRUCK|furiously final depths sleep a|
-807|143|6|5|30|31294.20|0.02|0.01|R|F|1994-01-19|1994-01-09|1994-01-27|NONE|RAIL|cial accoun|
-807|12|2|6|11|10032.11|0.02|0.04|R|F|1994-03-25|1994-01-26|1994-04-14|NONE|FOB|unts above the slyly final ex|
-807|1|6|7|19|17119.00|0.08|0.05|A|F|1994-02-10|1994-02-20|1994-03-06|NONE|SHIP|ns haggle quickly across the furi|
-832|103|6|1|45|45139.50|0.01|0.02|A|F|1992-05-08|1992-06-06|1992-06-04|COLLECT COD|MAIL|foxes engage slyly alon|
-832|48|1|2|24|22752.96|0.05|0.06|A|F|1992-06-15|1992-07-14|1992-06-17|NONE|TRUCK|ully. carefully speci|
-833|54|5|1|1|954.05|0.04|0.04|R|F|1994-04-26|1994-04-05|1994-04-29|COLLECT COD|MAIL|ffily ironic theodolites|
-833|112|6|2|38|38460.18|0.05|0.05|A|F|1994-04-05|1994-04-21|1994-05-01|COLLECT COD|TRUCK| platelets promise furiously. |
-833|162|7|3|9|9559.44|0.05|0.07|A|F|1994-02-28|1994-04-26|1994-03-20|TAKE BACK RETURN|FOB|ecial, even requests. even, bold instructi|
-834|145|2|1|36|37625.04|0.06|0.04|R|F|1994-06-28|1994-07-25|1994-07-07|TAKE BACK RETURN|SHIP|ccounts haggle after the furiously |
-834|7|2|2|11|9977.00|0.03|0.00|A|F|1994-09-18|1994-08-03|1994-10-02|DELIVER IN PERSON|TRUCK|inst the regular packa|
-835|107|2|1|33|33234.30|0.09|0.06|N|O|1995-11-01|1995-12-02|1995-11-24|DELIVER IN PERSON|RAIL|onic instructions among the carefully iro|
-835|185|6|2|28|30385.04|0.02|0.02|N|O|1995-12-27|1995-12-11|1996-01-21|NONE|SHIP| fluffily furious pinto beans|
-836|188|9|1|6|6529.08|0.09|0.03|N|O|1996-12-09|1997-01-31|1996-12-29|COLLECT COD|TRUCK|fully bold theodolites are daringly across|
-836|84|5|2|18|17713.44|0.03|0.05|N|O|1997-02-27|1997-02-11|1997-03-22|NONE|REG AIR|y pending packages use alon|
-836|141|8|3|46|47892.44|0.05|0.07|N|O|1997-03-21|1997-02-06|1997-04-05|NONE|REG AIR|boldly final pinto beans haggle furiously|
-837|57|5|1|39|37324.95|0.03|0.08|A|F|1994-07-22|1994-08-10|1994-08-11|NONE|RAIL|ecial pinto bea|
-837|88|9|2|24|23713.92|0.08|0.00|R|F|1994-06-27|1994-09-02|1994-07-27|DELIVER IN PERSON|FOB|p carefully. theodolites use. bold courts a|
-838|134|10|1|20|20682.60|0.10|0.07|N|O|1998-04-11|1998-03-25|1998-04-19|COLLECT COD|TRUCK| furiously final ideas. slow, bold |
-838|29|10|2|27|25083.54|0.05|0.07|N|O|1998-02-15|1998-04-03|1998-02-20|DELIVER IN PERSON|SHIP| pending pinto beans haggle about t|
-838|95|7|3|23|22887.07|0.10|0.07|N|O|1998-03-26|1998-04-17|1998-04-02|COLLECT COD|AIR|ets haggle furiously furiously regular r|
-838|44|5|4|18|16992.72|0.09|0.00|N|O|1998-03-28|1998-04-06|1998-03-31|TAKE BACK RETURN|AIR|hely unusual foxes. furio|
-839|158|10|1|23|24337.45|0.07|0.02|N|O|1995-10-17|1995-11-03|1995-11-04|COLLECT COD|AIR|ng ideas haggle accord|
-839|189|10|2|47|51191.46|0.08|0.00|N|O|1995-10-17|1995-11-06|1995-11-10|NONE|AIR|refully final excuses about |
-864|130|5|1|34|35024.42|0.03|0.04|N|O|1997-12-16|1997-10-23|1998-01-12|TAKE BACK RETURN|SHIP|gside of the furiously special|
-864|98|1|2|7|6986.63|0.01|0.02|N|O|1997-11-13|1997-10-07|1997-12-13|TAKE BACK RETURN|MAIL|ven requests should sleep along |
-864|80|10|3|34|33322.72|0.03|0.00|N|O|1997-09-14|1997-11-04|1997-09-21|TAKE BACK RETURN|REG AIR|to the furiously ironic platelets! |
-865|198|10|1|16|17571.04|0.07|0.03|R|F|1993-08-24|1993-06-26|1993-08-28|TAKE BACK RETURN|TRUCK|y even accounts. quickly bold decoys|
-865|20|7|2|3|2760.06|0.02|0.05|A|F|1993-07-17|1993-07-14|1993-08-01|NONE|MAIL|fully regular the|
-865|87|8|3|15|14806.20|0.00|0.06|R|F|1993-07-05|1993-06-25|1993-07-26|NONE|SHIP| deposits sleep quickl|
-865|169|4|4|34|36351.44|0.09|0.06|A|F|1993-05-09|1993-07-28|1993-05-18|DELIVER IN PERSON|REG AIR|furiously fluffily unusual account|
-866|136|7|1|5|5180.65|0.08|0.00|R|F|1993-01-22|1993-01-14|1993-02-07|TAKE BACK RETURN|AIR|tegrate fluffily. carefully f|
-867|139|10|1|7|7273.91|0.04|0.07|A|F|1994-02-19|1993-12-25|1994-02-25|DELIVER IN PERSON|TRUCK|pendencies-- slyly unusual packages hagg|
-868|168|9|1|8|8545.28|0.06|0.03|R|F|1992-10-07|1992-08-01|1992-10-16|NONE|MAIL|l deposits. blithely regular pint|
-868|29|8|2|13|12077.26|0.05|0.07|R|F|1992-07-25|1992-08-26|1992-08-04|NONE|AIR|gged instructi|
-868|68|5|3|19|18393.14|0.09|0.06|R|F|1992-06-22|1992-08-27|1992-07-04|COLLECT COD|SHIP|lyly ironic platelets wake. rut|
-868|122|1|4|43|43951.16|0.02|0.04|A|F|1992-07-02|1992-07-22|1992-07-21|COLLECT COD|SHIP|kly silent deposits wake dar|
-868|25|8|5|27|24975.54|0.04|0.01|R|F|1992-08-01|1992-08-25|1992-08-12|TAKE BACK RETURN|RAIL|oss the fluffily unusual pinto |
-868|125|6|6|19|19477.28|0.02|0.05|R|F|1992-09-20|1992-07-18|1992-10-04|NONE|FOB|ely even deposits lose blithe|
-869|63|2|1|27|26002.62|0.07|0.07|N|O|1997-01-30|1997-02-17|1997-02-26|TAKE BACK RETURN|TRUCK|uffily even excuses? slyly even deposits |
-869|47|4|2|36|34093.44|0.04|0.01|N|O|1997-05-03|1997-03-17|1997-05-24|NONE|RAIL|ong the furiously bold instructi|
-870|50|9|1|36|34201.80|0.04|0.07|A|F|1993-10-18|1993-09-16|1993-11-15|COLLECT COD|MAIL|fily. furiously final accounts are |
-870|186|7|2|5|5430.90|0.06|0.05|A|F|1993-08-13|1993-09-11|1993-08-24|COLLECT COD|FOB|e slyly excuses. ironi|
-871|97|8|1|48|47860.32|0.10|0.03|N|O|1996-02-25|1996-02-09|1996-03-18|NONE|AIR|coys dazzle slyly slow notornis. f|
-871|55|10|2|47|44887.35|0.07|0.03|N|O|1995-12-25|1996-02-01|1996-01-24|TAKE BACK RETURN|RAIL|ss, final dep|
-871|108|5|3|13|13105.30|0.09|0.01|N|O|1996-01-25|1996-01-24|1996-02-03|NONE|REG AIR| haggle furiou|
-871|190|1|4|29|31615.51|0.06|0.07|N|O|1995-11-16|1996-01-27|1995-12-16|DELIVER IN PERSON|RAIL|ests are carefu|
-871|128|7|5|8|8224.96|0.00|0.01|N|O|1995-11-25|1996-01-12|1995-12-12|DELIVER IN PERSON|AIR|lar ideas-- slyly even accou|
-871|143|2|6|26|27121.64|0.00|0.06|N|O|1996-02-07|1996-01-05|1996-02-25|COLLECT COD|AIR|symptotes use quickly near the |
-871|174|3|7|4|4296.68|0.00|0.07|N|O|1996-03-09|1996-01-20|1996-03-26|COLLECT COD|FOB|l, regular dependencies w|
-896|39|10|1|47|44134.41|0.07|0.08|R|F|1993-05-28|1993-05-15|1993-06-15|DELIVER IN PERSON|TRUCK|ly even pinto beans integrate. b|
-896|198|2|2|10|10981.90|0.03|0.07|A|F|1993-07-07|1993-06-03|1993-07-24|COLLECT COD|SHIP| quickly even theodolites. carefully regu|
-896|2|9|3|7|6314.00|0.09|0.02|A|F|1993-05-02|1993-05-24|1993-05-31|DELIVER IN PERSON|MAIL| requests |
-896|152|3|4|11|11573.65|0.08|0.04|A|F|1993-05-19|1993-05-22|1993-06-08|COLLECT COD|MAIL|the multipliers sleep|
-896|188|9|5|34|36998.12|0.00|0.05|R|F|1993-05-21|1993-06-01|1993-05-23|NONE|TRUCK|ular, close requests cajo|
-896|177|6|6|44|47395.48|0.09|0.08|R|F|1993-05-19|1993-04-14|1993-06-02|DELIVER IN PERSON|FOB|lar, pending packages. deposits are q|
-896|109|2|7|11|11100.10|0.01|0.07|A|F|1993-05-01|1993-04-09|1993-05-06|TAKE BACK RETURN|FOB|rding to the pinto beans wa|
-897|91|4|1|15|14866.35|0.07|0.04|R|F|1995-05-25|1995-05-09|1995-06-07|COLLECT COD|REG AIR|r ideas. slyly spec|
-897|184|5|2|26|28188.68|0.05|0.08|N|O|1995-07-01|1995-06-10|1995-07-14|COLLECT COD|MAIL|tions sleep according to the special|
-897|126|1|3|13|13339.56|0.07|0.00|A|F|1995-03-30|1995-05-17|1995-04-21|TAKE BACK RETURN|MAIL|bold accounts mold carefully! braids|
-897|102|7|4|2|2004.20|0.08|0.08|R|F|1995-05-22|1995-05-07|1995-06-16|COLLECT COD|RAIL|into beans. slyly special fox|
-898|161|2|1|9|9550.44|0.07|0.08|A|F|1993-07-04|1993-07-09|1993-07-25|NONE|AIR|e slyly across the blithe|
-898|179|7|2|37|39929.29|0.03|0.05|A|F|1993-08-17|1993-08-04|1993-09-01|DELIVER IN PERSON|REG AIR|packages sleep furiously|
-898|49|8|3|11|10439.44|0.01|0.00|A|F|1993-09-13|1993-08-31|1993-09-25|TAKE BACK RETURN|MAIL|etly bold accounts |
-898|193|6|4|36|39354.84|0.04|0.07|R|F|1993-08-04|1993-07-25|1993-08-23|DELIVER IN PERSON|REG AIR| after the carefully |
-899|61|10|1|18|17299.08|0.04|0.05|N|O|1998-08-06|1998-05-09|1998-09-05|DELIVER IN PERSON|AIR|re daring, pending deposits. blit|
-899|47|4|2|25|23676.00|0.00|0.07|N|O|1998-07-21|1998-05-12|1998-08-16|NONE|REG AIR|rly final sentiments. bold pinto beans |
-899|85|6|3|4|3940.32|0.09|0.05|N|O|1998-06-02|1998-06-28|1998-06-14|TAKE BACK RETURN|REG AIR|ter the carefully regular deposits are agai|
-899|180|9|4|14|15122.52|0.05|0.03|N|O|1998-05-21|1998-05-28|1998-06-03|TAKE BACK RETURN|FOB|ades impress carefully|
-899|71|10|5|4|3884.28|0.06|0.02|N|O|1998-04-11|1998-05-14|1998-04-27|NONE|TRUCK|ges. blithe, ironic waters cajole care|
-899|120|4|6|47|47945.64|0.00|0.04|N|O|1998-04-14|1998-05-30|1998-05-13|DELIVER IN PERSON|TRUCK|furiously final foxes after the s|
-899|14|1|7|11|10054.11|0.02|0.08|N|O|1998-06-03|1998-06-15|1998-06-20|COLLECT COD|REG AIR|t the ironic|
-900|199|1|1|44|48364.36|0.01|0.06|R|F|1994-12-15|1994-12-03|1994-12-27|COLLECT COD|MAIL| detect quick|
-900|115|6|2|48|48725.28|0.08|0.04|A|F|1994-12-22|1994-11-08|1995-01-19|COLLECT COD|TRUCK|cial pinto beans nag |
-900|75|6|3|24|23401.68|0.03|0.00|R|F|1994-10-21|1994-12-25|1994-10-22|TAKE BACK RETURN|SHIP|-ray furiously un|
-901|22|7|1|36|33192.72|0.01|0.01|N|O|1998-08-11|1998-10-09|1998-08-27|DELIVER IN PERSON|REG AIR|. accounts are care|
-901|46|7|2|2|1892.08|0.09|0.02|N|O|1998-10-25|1998-09-27|1998-11-01|DELIVER IN PERSON|AIR|d foxes use slyly|
-901|43|10|3|37|34892.48|0.04|0.08|N|O|1998-11-01|1998-09-13|1998-11-05|NONE|AIR|ickly final deposits |
-901|18|9|4|11|10098.11|0.00|0.06|N|O|1998-11-13|1998-10-19|1998-11-14|TAKE BACK RETURN|TRUCK|ourts among the quickly expre|
-902|111|2|1|3|3033.33|0.06|0.00|R|F|1994-10-01|1994-10-25|1994-10-28|COLLECT COD|MAIL|into beans thrash blithely about the flu|
-902|118|2|2|8|8144.88|0.06|0.07|R|F|1994-10-25|1994-09-20|1994-11-07|COLLECT COD|RAIL| orbits al|
-902|165|2|3|24|25563.84|0.02|0.05|R|F|1994-11-08|1994-10-12|1994-11-26|NONE|FOB|. blithely even accounts poach furiously i|
-903|65|10|1|27|26056.62|0.04|0.03|N|O|1995-09-18|1995-09-20|1995-10-02|TAKE BACK RETURN|SHIP|lly pending foxes. furiously|
-903|9|2|2|35|31815.00|0.06|0.05|N|O|1995-09-18|1995-08-21|1995-10-12|TAKE BACK RETURN|TRUCK|rets wake fin|
-903|9|2|3|33|29997.00|0.02|0.03|N|O|1995-09-24|1995-09-01|1995-10-12|COLLECT COD|MAIL|ely ironic packages wake blithely|
-903|56|1|4|9|8604.45|0.09|0.00|N|O|1995-10-06|1995-09-14|1995-10-24|NONE|TRUCK|he slyly ev|
-903|42|3|5|1|942.04|0.04|0.00|N|O|1995-10-22|1995-09-13|1995-11-03|NONE|AIR|y final platelets sublate among the |
-903|168|9|6|13|13886.08|0.07|0.02|N|O|1995-09-11|1995-10-04|1995-10-03|COLLECT COD|SHIP|sleep along the final|
-928|169|10|1|29|31005.64|0.07|0.02|R|F|1995-05-17|1995-05-12|1995-05-21|NONE|REG AIR|ly alongside of the s|
-928|48|7|2|24|22752.96|0.05|0.08|A|F|1995-04-06|1995-05-08|1995-04-24|DELIVER IN PERSON|AIR|s the furiously regular warthogs im|
-928|152|10|3|46|48398.90|0.08|0.00|A|F|1995-05-09|1995-04-09|1995-06-01|DELIVER IN PERSON|REG AIR| beans sleep against the carefully ir|
-928|52|4|4|43|40938.15|0.10|0.05|A|F|1995-04-14|1995-04-21|1995-05-09|NONE|REG AIR|blithely. express, silent requests doze at|
-928|12|3|5|38|34656.38|0.02|0.08|N|F|1995-06-08|1995-04-15|1995-06-30|TAKE BACK RETURN|SHIP|xpress grouc|
-928|55|6|6|50|47752.50|0.05|0.00|N|F|1995-06-07|1995-04-15|1995-07-01|DELIVER IN PERSON|TRUCK| slyly slyly special request|
-928|11|5|7|11|10021.11|0.00|0.01|A|F|1995-04-29|1995-04-16|1995-04-30|NONE|AIR|longside of|
-929|129|8|1|45|46310.40|0.09|0.01|R|F|1993-01-24|1992-12-06|1993-02-16|DELIVER IN PERSON|REG AIR|ges haggle careful|
-929|175|5|2|44|47307.48|0.02|0.00|A|F|1992-10-09|1992-11-20|1992-10-22|DELIVER IN PERSON|SHIP|s. excuses cajole. carefully regu|
-929|74|5|3|14|13636.98|0.06|0.07|A|F|1992-10-21|1992-11-17|1992-11-15|NONE|FOB|gainst the|
-929|102|5|4|7|7014.70|0.06|0.01|A|F|1992-12-24|1992-12-19|1993-01-08|TAKE BACK RETURN|TRUCK|ithely. slyly c|
-930|45|4|1|36|34021.44|0.10|0.04|R|F|1994-12-21|1995-02-20|1994-12-24|COLLECT COD|RAIL|quickly regular pinto beans sle|
-930|18|8|2|47|43146.47|0.08|0.00|A|F|1995-03-20|1995-02-04|1995-04-04|DELIVER IN PERSON|AIR|ackages. fluffily e|
-930|65|10|3|10|9650.60|0.07|0.08|A|F|1994-12-18|1995-01-27|1995-01-16|COLLECT COD|AIR|ckly regular requests: regular instructions|
-930|100|2|4|21|21002.10|0.06|0.02|A|F|1995-02-16|1995-03-03|1995-03-13|DELIVER IN PERSON|SHIP|foxes. regular deposits integrate carefu|
-930|164|9|5|50|53208.00|0.03|0.06|A|F|1995-04-03|1995-01-29|1995-04-22|COLLECT COD|MAIL| excuses among the furiously express ideas |
-930|145|4|6|10|10451.40|0.00|0.04|A|F|1995-02-09|1995-02-17|1995-02-16|NONE|SHIP|blithely bold i|
-930|167|4|7|30|32014.80|0.07|0.08|R|F|1995-01-20|1995-02-28|1995-02-04|TAKE BACK RETURN|RAIL|g accounts sleep along the platelets.|
-931|40|1|1|18|16920.72|0.00|0.05|A|F|1993-04-04|1993-01-11|1993-04-13|NONE|RAIL|slyly ironic re|
-931|17|7|2|10|9170.10|0.05|0.07|A|F|1993-03-01|1993-01-09|1993-03-07|TAKE BACK RETURN|SHIP|ajole quickly. slyly sil|
-931|147|6|3|48|50262.72|0.01|0.08|A|F|1993-02-03|1993-03-02|1993-02-09|TAKE BACK RETURN|FOB|ep alongside of the fluffy |
-931|82|3|4|38|37319.04|0.08|0.08|A|F|1993-03-06|1993-02-24|1993-03-27|DELIVER IN PERSON|RAIL|usly final packages integrate carefully|
-932|44|1|1|41|38705.64|0.01|0.05|N|O|1997-06-05|1997-07-22|1997-06-26|COLLECT COD|RAIL|foxes. ironic pl|
-933|49|8|1|23|21827.92|0.02|0.04|R|F|1992-08-13|1992-09-18|1992-08-25|DELIVER IN PERSON|MAIL| the furiously bold dinos. sly|
-933|13|4|2|27|24651.27|0.02|0.01|R|F|1992-10-03|1992-10-02|1992-10-26|DELIVER IN PERSON|RAIL|ests. express|
-933|100|2|3|26|26002.60|0.05|0.00|A|F|1992-11-09|1992-11-03|1992-11-16|DELIVER IN PERSON|AIR| the deposits affix slyly after t|
-934|118|5|1|18|18325.98|0.07|0.01|N|O|1996-09-10|1996-09-20|1996-09-25|COLLECT COD|RAIL|y unusual requests dazzle above t|
-935|28|3|1|23|21344.46|0.05|0.00|N|O|1997-11-11|1997-11-22|1997-11-29|COLLECT COD|REG AIR|ular accounts about|
-935|65|10|2|23|22196.38|0.02|0.01|N|O|1998-01-11|1997-11-25|1998-02-05|COLLECT COD|TRUCK|hes haggle furiously dolphins. qu|
-935|135|1|3|36|37264.68|0.06|0.00|N|O|1997-11-05|1997-12-05|1997-11-25|TAKE BACK RETURN|AIR|leep about the exp|
-935|58|3|4|13|12454.65|0.08|0.04|N|O|1998-01-13|1997-11-30|1998-02-08|DELIVER IN PERSON|TRUCK|ld platelet|
-935|13|7|5|8|7304.08|0.02|0.05|N|O|1998-01-12|1997-11-02|1998-02-05|NONE|TRUCK|cept the quickly regular p|
-935|59|1|6|1|959.05|0.01|0.08|N|O|1997-12-14|1997-11-22|1998-01-08|DELIVER IN PERSON|TRUCK| instructions. ironic acc|
-960|107|10|1|1|1007.10|0.07|0.00|A|F|1994-12-24|1994-10-26|1995-01-20|DELIVER IN PERSON|AIR|y ironic packages. quickly even |
-960|117|7|2|25|25427.75|0.06|0.08|R|F|1994-12-01|1994-10-29|1994-12-27|DELIVER IN PERSON|RAIL|ts. fluffily regular requests |
-960|175|3|3|32|34405.44|0.01|0.08|R|F|1995-01-19|1994-12-17|1995-02-04|DELIVER IN PERSON|FOB|around the blithe, even pl|
-961|118|5|1|7|7126.77|0.10|0.00|N|O|1995-07-23|1995-07-20|1995-08-11|TAKE BACK RETURN|RAIL|usual dolphins. ironic pearls sleep blit|
-961|91|2|2|18|17839.62|0.09|0.05|N|O|1995-07-01|1995-08-14|1995-07-04|DELIVER IN PERSON|AIR|rmanent foxes haggle speci|
-961|97|8|3|42|41877.78|0.06|0.01|N|O|1995-08-24|1995-08-21|1995-09-10|TAKE BACK RETURN|SHIP|ests do cajole blithely. furiously bo|
-961|34|10|4|29|27086.87|0.00|0.07|N|F|1995-06-10|1995-08-20|1995-06-26|TAKE BACK RETURN|TRUCK|l accounts use blithely against the|
-961|26|7|5|38|35188.76|0.03|0.05|N|O|1995-08-21|1995-07-19|1995-08-27|NONE|RAIL|he blithely special requests. furiousl|
-961|197|8|6|30|32915.70|0.09|0.03|N|O|1995-07-06|1995-07-20|1995-07-26|DELIVER IN PERSON|MAIL|warhorses slee|
-962|57|8|1|36|34453.80|0.01|0.03|R|F|1994-08-09|1994-07-10|1994-09-02|COLLECT COD|TRUCK|al foxes. iron|
-962|36|2|2|27|25272.81|0.09|0.02|A|F|1994-05-11|1994-07-10|1994-06-03|TAKE BACK RETURN|SHIP|y slyly express deposits. final i|
-962|80|1|3|3|2940.24|0.07|0.08|A|F|1994-05-08|1994-07-06|1994-06-02|DELIVER IN PERSON|FOB|ag furiously. even pa|
-962|57|5|4|20|19141.00|0.04|0.02|R|F|1994-08-26|1994-06-27|1994-09-11|DELIVER IN PERSON|SHIP| deposits use fluffily according to |
-962|152|7|5|12|12625.80|0.02|0.00|A|F|1994-06-09|1994-06-07|1994-06-11|COLLECT COD|TRUCK|across the furiously regular escapades daz|
-962|188|9|6|5|5440.90|0.02|0.05|A|F|1994-08-29|1994-07-15|1994-09-19|COLLECT COD|TRUCK|efully bold packages run slyly caref|
-963|194|8|1|7|7659.33|0.01|0.00|R|F|1994-09-12|1994-07-18|1994-09-17|DELIVER IN PERSON|REG AIR|s. slyly regular depe|
-963|98|10|2|48|47908.32|0.10|0.06|R|F|1994-08-25|1994-08-12|1994-09-21|DELIVER IN PERSON|RAIL|ages. quickly express deposits cajole pe|
-964|199|10|1|39|42868.41|0.04|0.01|N|O|1995-06-21|1995-07-24|1995-06-24|NONE|AIR|se furiously regular instructions. blith|
-964|113|4|2|1|1013.11|0.02|0.05|N|O|1995-08-20|1995-07-29|1995-09-10|DELIVER IN PERSON|REG AIR|unts. quickly even platelets s|
-964|57|5|3|49|46895.45|0.01|0.03|N|O|1995-09-06|1995-08-10|1995-10-05|NONE|MAIL|ounts. blithely regular packag|
-964|55|3|4|44|42022.20|0.05|0.02|N|O|1995-09-18|1995-08-02|1995-10-17|TAKE BACK RETURN|TRUCK|ronic deposit|
-965|108|1|1|20|20162.00|0.04|0.05|N|F|1995-06-16|1995-07-20|1995-07-06|COLLECT COD|MAIL|kly. carefully pending requ|
-965|18|5|2|23|21114.23|0.06|0.08|N|O|1995-07-12|1995-07-08|1995-08-11|COLLECT COD|MAIL|ld kindle carefully across th|
-966|180|8|1|19|20523.42|0.07|0.01|N|O|1998-05-26|1998-07-15|1998-05-29|COLLECT COD|FOB|efully final pinto beans. quickly |
-966|117|4|2|42|42718.62|0.02|0.06|N|O|1998-06-28|1998-06-20|1998-07-05|NONE|TRUCK|tions boost furiously car|
-966|22|1|3|42|38724.84|0.06|0.08|N|O|1998-06-15|1998-06-08|1998-07-05|NONE|RAIL|sly ironic asymptotes hagg|
-966|5|2|4|20|18100.00|0.04|0.01|N|O|1998-07-19|1998-07-15|1998-07-27|NONE|TRUCK|pecial ins|
-967|59|4|1|41|39321.05|0.05|0.05|R|F|1992-09-21|1992-08-15|1992-10-21|NONE|MAIL|ld foxes wake closely special|
-967|85|6|2|4|3940.32|0.01|0.02|A|F|1992-07-15|1992-07-27|1992-07-18|DELIVER IN PERSON|REG AIR|platelets hang carefully along |
-967|132|8|3|10|10321.30|0.00|0.02|A|F|1992-09-18|1992-08-06|1992-09-19|DELIVER IN PERSON|MAIL|old pinto beans alongside of the exp|
-967|148|7|4|49|51358.86|0.01|0.04|A|F|1992-09-28|1992-09-15|1992-10-14|NONE|SHIP|the slyly even ideas. carefully even|
-967|17|1|5|41|37597.41|0.08|0.04|A|F|1992-07-23|1992-08-07|1992-08-13|TAKE BACK RETURN|FOB|efully special ide|
-967|106|9|6|17|17103.70|0.05|0.06|A|F|1992-10-02|1992-08-19|1992-10-25|NONE|MAIL|y ironic foxes caj|
-967|161|8|7|18|19100.88|0.00|0.02|A|F|1992-10-06|1992-08-05|1992-10-15|DELIVER IN PERSON|RAIL|ngage blith|
-992|60|2|1|14|13440.84|0.10|0.03|N|O|1998-01-29|1997-12-29|1998-02-18|TAKE BACK RETURN|MAIL|the unusual, even dependencies affix fluff|
-992|38|9|2|34|31893.02|0.02|0.00|N|O|1997-11-29|1998-01-21|1997-11-30|NONE|RAIL|s use silently. blithely regular ideas b|
-992|105|6|3|30|30153.00|0.10|0.00|N|O|1997-12-15|1998-02-02|1998-01-12|NONE|SHIP|nic instructions n|
-992|48|5|4|21|19908.84|0.06|0.06|N|O|1997-11-13|1997-12-28|1997-12-10|NONE|TRUCK|fily. quickly special deposit|
-992|92|4|5|7|6944.63|0.09|0.05|N|O|1997-11-30|1997-12-24|1997-12-16|DELIVER IN PERSON|TRUCK|ideas haggle. special theodolit|
-992|75|3|6|41|39977.87|0.10|0.01|N|O|1997-11-14|1998-02-04|1997-11-23|TAKE BACK RETURN|AIR|eodolites cajole across the accounts.|
-993|175|5|1|33|35480.61|0.01|0.05|N|O|1996-01-03|1995-11-28|1996-01-23|DELIVER IN PERSON|AIR| the deposits affix agains|
-993|3|6|2|28|25284.00|0.06|0.08|N|O|1995-10-24|1995-11-20|1995-11-06|DELIVER IN PERSON|RAIL|lites. even theodolite|
-993|40|1|3|10|9400.40|0.03|0.08|N|O|1995-12-17|1995-11-13|1995-12-20|NONE|RAIL|encies wake fur|
-993|191|4|4|40|43647.60|0.01|0.01|N|O|1995-11-16|1995-11-01|1995-12-05|TAKE BACK RETURN|RAIL|gle above the furiously |
-993|146|7|5|33|34522.62|0.09|0.08|N|O|1995-09-28|1995-10-24|1995-10-03|COLLECT COD|RAIL|fluffily. quiet excuses sleep furiously sly|
-993|137|3|6|35|36299.55|0.04|0.02|N|O|1995-10-26|1995-10-20|1995-11-05|DELIVER IN PERSON|FOB|es. ironic, ironic requests|
-993|5|2|7|15|13575.00|0.09|0.03|N|O|1995-09-27|1995-10-21|1995-10-17|DELIVER IN PERSON|MAIL|sits. pending pinto beans haggle? ca|
-994|65|6|1|4|3860.24|0.07|0.03|R|F|1994-07-05|1994-05-21|1994-07-20|COLLECT COD|SHIP|aggle carefully acc|
-994|10|3|2|11|10010.11|0.01|0.00|R|F|1994-05-03|1994-06-10|1994-05-22|NONE|AIR|ular accounts sleep |
-994|31|7|3|5|4655.15|0.08|0.08|A|F|1994-06-24|1994-06-14|1994-06-26|NONE|MAIL|ainst the pending requests. packages sl|
-994|131|7|4|25|25778.25|0.10|0.00|A|F|1994-06-03|1994-06-02|1994-06-06|COLLECT COD|RAIL|usual pinto beans.|
-995|173|1|1|15|16097.55|0.08|0.05|N|O|1995-06-30|1995-08-04|1995-07-27|NONE|REG AIR|uses. fluffily fina|
-995|129|4|2|28|28815.36|0.08|0.03|N|F|1995-06-12|1995-07-20|1995-06-19|DELIVER IN PERSON|SHIP|pades. quick, final frays use flu|
-995|166|3|3|45|47977.20|0.00|0.05|N|O|1995-08-02|1995-07-21|1995-08-03|DELIVER IN PERSON|SHIP|lar packages detect blithely above t|
-995|66|3|4|25|24151.50|0.01|0.08|N|O|1995-09-08|1995-08-05|1995-09-28|NONE|TRUCK|lyly even |
-995|24|5|5|18|16632.36|0.06|0.03|N|O|1995-07-03|1995-07-29|1995-07-22|TAKE BACK RETURN|AIR| even accounts unwind c|
-996|173|2|1|43|46146.31|0.03|0.06|N|O|1998-03-27|1998-03-25|1998-04-06|COLLECT COD|SHIP| the blithely ironic foxes. slyly silent d|
-997|163|4|1|11|11694.76|0.00|0.02|N|O|1997-06-16|1997-07-21|1997-07-14|DELIVER IN PERSON|TRUCK|p furiously according to t|
-997|48|9|2|17|16116.68|0.03|0.00|N|O|1997-07-28|1997-07-26|1997-08-20|DELIVER IN PERSON|SHIP|aggle quickly furiously|
-998|10|7|1|22|20020.22|0.04|0.05|A|F|1994-12-03|1995-02-17|1994-12-19|TAKE BACK RETURN|RAIL|lites. qui|
-998|181|2|2|7|7568.26|0.10|0.05|R|F|1995-03-24|1995-01-18|1995-04-03|NONE|MAIL|nic deposits. even asym|
-998|142|9|3|30|31264.20|0.05|0.07|A|F|1994-12-02|1995-01-23|1994-12-23|NONE|SHIP|lyly idle Tir|
-998|11|8|4|6|5466.06|0.09|0.05|R|F|1995-03-20|1994-12-27|1995-04-13|DELIVER IN PERSON|MAIL|refully accounts. carefully express ac|
-998|73|2|5|1|973.07|0.04|0.00|R|F|1995-01-05|1995-01-06|1995-01-13|NONE|SHIP|es sleep. regular dependencies use bl|
-999|61|6|1|34|32676.04|0.00|0.08|R|F|1993-10-30|1993-10-17|1993-10-31|TAKE BACK RETURN|SHIP|its. daringly final instruc|
-999|199|1|2|41|45066.79|0.08|0.01|A|F|1993-10-16|1993-12-04|1993-11-03|DELIVER IN PERSON|REG AIR|us depths. carefully ironic instruc|
-999|118|5|3|15|15271.65|0.07|0.06|A|F|1993-12-12|1993-10-18|1994-01-08|COLLECT COD|REG AIR|y ironic requests. carefully regu|
-999|3|4|4|10|9030.00|0.05|0.02|A|F|1993-11-23|1993-12-02|1993-11-29|NONE|MAIL|efully pending|
-999|19|10|5|3|2757.03|0.03|0.00|R|F|1993-09-17|1993-10-22|1993-10-13|NONE|FOB|nic, pending ideas. bl|
-999|181|2|6|37|40003.66|0.00|0.04|R|F|1994-01-03|1993-10-28|1994-01-12|DELIVER IN PERSON|TRUCK|ckly slyly unusual packages: packages hagg|
-1024|199|2|1|49|53860.31|0.03|0.05|N|O|1998-03-06|1998-01-26|1998-03-29|TAKE BACK RETURN|FOB|ts. asymptotes nag fur|
-1024|126|5|2|34|34888.08|0.00|0.01|N|O|1998-01-06|1998-02-05|1998-01-26|COLLECT COD|SHIP|des the slyly even|
-1024|44|3|3|28|26433.12|0.04|0.01|N|O|1998-03-04|1998-03-12|1998-03-15|TAKE BACK RETURN|TRUCK|e blithely regular pi|
-1024|184|5|4|13|14094.34|0.02|0.04|N|O|1998-04-11|1998-02-26|1998-04-18|NONE|FOB|e slyly around the slyly special instructi|
-1024|21|4|5|49|45129.98|0.02|0.04|N|O|1998-02-27|1998-03-10|1998-03-27|COLLECT COD|FOB| carefully bold |
-1025|150|1|1|36|37805.40|0.03|0.04|A|F|1995-05-15|1995-07-05|1995-06-10|COLLECT COD|FOB|e unusual, regular instr|
-1025|69|10|2|23|22288.38|0.08|0.03|N|F|1995-06-02|1995-07-29|1995-06-23|COLLECT COD|RAIL| regular platelets nag carefu|
-1025|23|2|3|25|23075.50|0.06|0.05|R|F|1995-05-29|1995-06-21|1995-06-13|DELIVER IN PERSON|REG AIR|xpress foxes. furiousl|
-1026|38|4|1|36|33769.08|0.10|0.02|N|O|1997-06-14|1997-07-20|1997-06-23|NONE|SHIP|st the ide|
-1026|37|8|2|6|5622.18|0.10|0.08|N|O|1997-07-07|1997-08-16|1997-07-14|TAKE BACK RETURN|TRUCK|to beans. special, regular packages hagg|
-1027|156|1|1|43|45414.45|0.07|0.08|R|F|1992-06-17|1992-08-28|1992-07-10|DELIVER IN PERSON|MAIL|oxes. carefully regular deposits|
-1027|113|10|2|20|20262.20|0.01|0.02|A|F|1992-06-08|1992-08-29|1992-06-14|NONE|TRUCK|ar excuses eat f|
-1027|126|9|3|2|2052.24|0.01|0.02|R|F|1992-08-28|1992-07-09|1992-09-10|NONE|FOB|s. quickly unusual waters inside |
-1027|100|4|4|13|13001.30|0.08|0.01|R|F|1992-08-22|1992-07-10|1992-09-12|DELIVER IN PERSON|RAIL|ily ironic ideas use|
-1027|136|2|5|22|22794.86|0.02|0.00|A|F|1992-09-03|1992-08-14|1992-10-01|DELIVER IN PERSON|FOB|the furiously express ex|
-1027|105|8|6|10|10051.00|0.06|0.08|R|F|1992-08-28|1992-08-06|1992-09-03|COLLECT COD|REG AIR|ilent, express foxes near the blithely sp|
-1028|128|3|1|2|2056.24|0.09|0.03|A|F|1994-01-10|1994-03-22|1994-01-26|COLLECT COD|FOB|s alongside of the regular asymptotes sleep|
-1028|112|9|2|39|39472.29|0.06|0.05|R|F|1994-02-18|1994-03-22|1994-03-06|TAKE BACK RETURN|MAIL| final dependencies affix a|
-1028|100|3|3|8|8000.80|0.03|0.07|A|F|1994-02-14|1994-03-28|1994-02-22|NONE|AIR|e carefully final packages. furiously fi|
-1028|32|8|4|26|24232.78|0.07|0.02|A|F|1994-03-18|1994-02-08|1994-03-19|TAKE BACK RETURN|RAIL|ronic platelets. carefully f|
-1028|29|2|5|27|25083.54|0.00|0.04|A|F|1994-04-03|1994-02-07|1994-04-26|NONE|REG AIR|ial accounts nag. slyly|
-1028|26|1|6|39|36114.78|0.03|0.02|A|F|1994-02-27|1994-02-16|1994-03-02|DELIVER IN PERSON|AIR|c theodoli|
-1028|31|2|7|22|20482.66|0.03|0.00|R|F|1994-04-24|1994-02-27|1994-05-08|NONE|REG AIR| Tiresias alongside of the carefully spec|
-1029|137|3|1|45|46670.85|0.05|0.07|R|F|1994-07-21|1994-08-30|1994-07-29|TAKE BACK RETURN|FOB|sits boost blithely|
-1030|65|10|1|17|16406.02|0.06|0.06|R|F|1994-10-13|1994-08-01|1994-11-10|DELIVER IN PERSON|RAIL|ly. carefully even packages dazz|
-1031|46|7|1|15|14190.60|0.10|0.08|A|F|1994-11-07|1994-10-29|1994-11-09|TAKE BACK RETURN|FOB|about the carefully bold a|
-1031|165|4|2|28|29824.48|0.05|0.01|A|F|1994-12-10|1994-10-29|1994-12-18|COLLECT COD|FOB|ly ironic accounts across the q|
-1031|187|8|3|27|29353.86|0.07|0.02|R|F|1994-09-20|1994-10-18|1994-10-10|DELIVER IN PERSON|SHIP|gular deposits cajole. blithely unus|
-1031|88|9|4|7|6916.56|0.03|0.03|R|F|1994-12-07|1994-11-11|1994-12-30|COLLECT COD|FOB|r instructions. car|
-1031|191|5|5|44|48012.36|0.01|0.07|R|F|1994-11-20|1994-11-24|1994-12-11|NONE|AIR|re slyly above the furio|
-1056|121|6|1|37|37781.44|0.04|0.06|R|F|1995-02-18|1995-04-01|1995-03-20|NONE|TRUCK| special packages. qui|
-1057|193|5|1|29|31702.51|0.10|0.01|A|F|1992-05-05|1992-05-05|1992-06-03|TAKE BACK RETURN|SHIP|es wake according to the q|
-1057|169|8|2|11|11760.76|0.00|0.02|R|F|1992-03-31|1992-04-18|1992-04-18|COLLECT COD|AIR|yly final theodolites. furi|
-1057|85|6|3|21|20686.68|0.03|0.04|A|F|1992-02-28|1992-05-01|1992-03-10|NONE|REG AIR|ar orbits boost bli|
-1057|182|3|4|20|21643.60|0.06|0.03|R|F|1992-03-02|1992-05-19|1992-03-13|DELIVER IN PERSON|TRUCK|s wake bol|
-1057|97|1|5|7|6979.63|0.06|0.05|R|F|1992-06-05|1992-04-30|1992-06-20|NONE|TRUCK|y slyly express theodolites. slyly bo|
-1057|52|7|6|19|18088.95|0.04|0.07|A|F|1992-05-31|1992-05-09|1992-06-02|DELIVER IN PERSON|FOB|r-- packages haggle alon|
-1058|140|6|1|24|24963.36|0.08|0.04|A|F|1993-07-09|1993-05-28|1993-07-22|DELIVER IN PERSON|TRUCK|fully ironic accounts. express accou|
-1058|89|10|2|5|4945.40|0.04|0.07|R|F|1993-05-11|1993-05-29|1993-05-27|COLLECT COD|TRUCK|refully even requests boost along|
-1058|90|1|3|44|43563.96|0.10|0.01|R|F|1993-06-26|1993-06-21|1993-07-20|COLLECT COD|TRUCK|uriously f|
-1058|5|2|4|25|22625.00|0.09|0.01|A|F|1993-05-27|1993-06-10|1993-06-20|TAKE BACK RETURN|MAIL| the final requests believe carefully |
-1059|178|9|1|16|17250.72|0.07|0.02|A|F|1994-04-24|1994-03-31|1994-04-28|DELIVER IN PERSON|SHIP|y ironic pinto |
-1059|29|2|2|7|6503.14|0.07|0.06|R|F|1994-03-30|1994-04-01|1994-04-24|DELIVER IN PERSON|MAIL|the furiously silent excuses are e|
-1059|88|9|3|45|44463.60|0.00|0.02|R|F|1994-06-10|1994-05-08|1994-06-21|COLLECT COD|RAIL|riously even theodolites. slyly regula|
-1059|110|7|4|26|26262.86|0.09|0.01|A|F|1994-03-17|1994-04-18|1994-03-26|DELIVER IN PERSON|TRUCK|ar pinto beans at the furiously |
-1059|139|5|5|37|38447.81|0.09|0.04|R|F|1994-03-31|1994-05-08|1994-04-06|COLLECT COD|RAIL| packages lose in place of the slyly unusu|
-1059|190|1|6|50|54509.50|0.00|0.03|A|F|1994-06-15|1994-05-11|1994-06-29|NONE|MAIL|s impress furiously about|
-1059|123|4|7|13|13300.56|0.01|0.03|R|F|1994-06-12|1994-05-11|1994-07-02|COLLECT COD|TRUCK|usly regular theodo|
-1060|196|10|1|8|8769.52|0.07|0.04|R|F|1993-05-21|1993-05-06|1993-06-10|DELIVER IN PERSON|FOB|iously. furiously regular in|
-1060|8|5|2|26|23608.00|0.06|0.08|R|F|1993-04-12|1993-04-01|1993-04-20|DELIVER IN PERSON|TRUCK|counts; even deposits are carefull|
-1060|164|3|3|11|11705.76|0.01|0.07|A|F|1993-05-13|1993-05-08|1993-05-17|TAKE BACK RETURN|MAIL|e regular deposits: re|
-1060|110|7|4|16|16161.76|0.03|0.06|A|F|1993-06-15|1993-04-18|1993-07-05|COLLECT COD|SHIP|ccounts. foxes maintain care|
-1060|53|8|5|1|953.05|0.04|0.06|A|F|1993-06-19|1993-05-10|1993-06-21|COLLECT COD|RAIL|posits detect carefully abo|
-1060|72|2|6|26|25273.82|0.01|0.03|A|F|1993-02-28|1993-04-01|1993-03-09|TAKE BACK RETURN|FOB|quickly abo|
-1060|121|10|7|36|36760.32|0.09|0.01|R|F|1993-03-14|1993-03-24|1993-04-02|TAKE BACK RETURN|FOB|r the quickly|
-1061|151|6|1|7|7358.05|0.04|0.04|N|O|1998-08-09|1998-08-12|1998-08-16|COLLECT COD|FOB|es are slyly expr|
-1061|119|3|2|2|2038.22|0.06|0.02|N|O|1998-08-15|1998-08-05|1998-08-24|COLLECT COD|MAIL|. regular accounts impre|
-1061|111|8|3|26|26288.86|0.08|0.02|N|O|1998-06-18|1998-07-25|1998-06-24|TAKE BACK RETURN|AIR|ave to slee|
-1061|136|7|4|41|42481.33|0.00|0.05|N|O|1998-06-29|1998-07-02|1998-07-27|NONE|MAIL|s are. ironic theodolites cajole. dep|
-1061|131|2|5|50|51556.50|0.04|0.08|N|O|1998-05-25|1998-07-22|1998-06-22|COLLECT COD|AIR|nding excuses are around the e|
-1061|144|1|6|35|36544.90|0.09|0.05|N|O|1998-07-05|1998-07-07|1998-07-30|TAKE BACK RETURN|MAIL|ending requests nag careful|
-1062|137|8|1|38|39410.94|0.00|0.01|N|O|1997-01-27|1997-03-07|1997-02-16|DELIVER IN PERSON|TRUCK|deas. pending acc|
-1063|96|9|1|42|41835.78|0.03|0.02|A|F|1994-07-10|1994-05-25|1994-07-26|NONE|RAIL|tructions about the blithely ex|
-1088|107|8|1|30|30213.00|0.07|0.03|A|F|1992-05-22|1992-06-25|1992-06-11|TAKE BACK RETURN|SHIP|long the packages snooze careful|
-1088|37|3|2|11|10307.33|0.06|0.00|A|F|1992-08-30|1992-07-25|1992-09-10|TAKE BACK RETURN|AIR|inal requests. fluffily express theod|
-1088|181|2|3|5|5405.90|0.03|0.07|A|F|1992-07-01|1992-07-25|1992-07-02|NONE|AIR|refully ironic packages. r|
-1088|124|5|4|3|3072.36|0.09|0.03|A|F|1992-06-15|1992-08-02|1992-06-18|DELIVER IN PERSON|MAIL|pecial theodolites |
-1089|151|3|1|47|49404.05|0.05|0.06|N|O|1996-06-26|1996-06-25|1996-07-11|NONE|TRUCK|aggle furiously among the bravely eve|
-1089|50|7|2|35|33251.75|0.03|0.00|N|O|1996-08-14|1996-07-10|1996-08-26|NONE|TRUCK|ly express deposits haggle|
-1089|26|7|3|23|21298.46|0.10|0.05|N|O|1996-06-24|1996-07-25|1996-07-20|DELIVER IN PERSON|AIR|g dolphins. deposits integrate. s|
-1089|141|10|4|1|1041.14|0.01|0.03|N|O|1996-07-08|1996-07-07|1996-07-17|COLLECT COD|RAIL|n courts among the caref|
-1090|22|3|1|5|4610.10|0.02|0.05|N|O|1998-02-19|1997-12-25|1998-02-24|DELIVER IN PERSON|AIR|s above the |
-1090|113|10|2|28|28367.08|0.08|0.08|N|O|1998-02-20|1998-01-03|1998-03-19|NONE|FOB|s cajole above the regular|
-1091|38|9|1|40|37521.20|0.10|0.06|N|O|1996-12-17|1996-10-14|1996-12-24|TAKE BACK RETURN|REG AIR|platelets. regular packag|
-1092|184|5|1|48|52040.64|0.04|0.04|N|O|1995-06-25|1995-04-06|1995-07-18|DELIVER IN PERSON|AIR|unusual accounts. fluffi|
-1092|153|5|2|1|1053.15|0.01|0.06|A|F|1995-03-10|1995-04-21|1995-04-06|COLLECT COD|RAIL|lent, pending requests-- requests nag accor|
-1092|161|8|3|28|29712.48|0.05|0.08|R|F|1995-04-08|1995-05-01|1995-05-02|DELIVER IN PERSON|FOB|affix carefully. u|
-1092|86|7|4|2|1972.16|0.05|0.07|R|F|1995-04-09|1995-05-12|1995-05-03|TAKE BACK RETURN|TRUCK|ans. slyly eve|
-1093|87|8|1|7|6909.56|0.04|0.02|N|O|1997-11-24|1997-09-23|1997-11-25|TAKE BACK RETURN|SHIP|bold deposits. blithely ironic depos|
-1093|177|5|2|37|39855.29|0.08|0.04|N|O|1997-11-06|1997-10-08|1997-11-22|COLLECT COD|FOB|le furiously across the carefully sp|
-1093|61|2|3|34|32676.04|0.01|0.06|N|O|1997-11-07|1997-09-06|1997-11-28|TAKE BACK RETURN|REG AIR|sits. express accounts play carefully. bol|
-1094|115|6|1|9|9135.99|0.07|0.06|N|O|1997-12-28|1998-03-16|1998-01-18|DELIVER IN PERSON|AIR|as. slyly pe|
-1095|137|3|1|33|34225.29|0.01|0.02|N|O|1995-10-03|1995-09-22|1995-10-13|NONE|MAIL|slyly around the iron|
-1095|136|2|2|24|24867.12|0.04|0.06|N|O|1995-08-24|1995-10-20|1995-09-09|COLLECT COD|TRUCK|packages nod furiously above the carefully |
-1095|156|4|3|13|13729.95|0.06|0.01|N|O|1995-08-24|1995-10-19|1995-09-02|TAKE BACK RETURN|REG AIR|ously even accounts. slyly bold a|
-1095|135|1|4|28|28983.64|0.08|0.03|N|O|1995-09-20|1995-11-18|1995-10-02|DELIVER IN PERSON|SHIP| regular pac|
-1095|112|2|5|40|40484.40|0.09|0.03|N|O|1995-10-18|1995-11-14|1995-11-09|NONE|MAIL| bold accounts haggle slyly furiously even|
-1095|181|2|6|37|40003.66|0.07|0.08|N|O|1995-10-04|1995-11-13|1995-10-12|NONE|SHIP|. quickly even dolphins sle|
-1120|178|8|1|10|10781.70|0.08|0.05|N|O|1997-12-17|1998-01-21|1997-12-23|DELIVER IN PERSON|MAIL|dependencies. blithel|
-1120|20|1|2|49|45080.98|0.01|0.07|N|O|1998-01-03|1998-02-02|1998-01-09|TAKE BACK RETURN|RAIL|heodolites. quick re|
-1120|76|6|3|21|20497.47|0.06|0.01|N|O|1998-01-11|1998-02-04|1998-01-19|COLLECT COD|REG AIR|s: fluffily even packages c|
-1120|46|9|4|22|20812.88|0.09|0.08|N|O|1997-11-15|1998-01-25|1997-12-07|TAKE BACK RETURN|REG AIR|ons. slyly silent requests sleep silent|
-1120|83|4|5|10|9830.80|0.07|0.08|N|O|1997-11-10|1998-02-01|1997-11-28|TAKE BACK RETURN|AIR|ages haggle furiously |
-1121|168|3|1|42|44862.72|0.04|0.05|N|O|1997-03-05|1997-03-18|1997-03-14|DELIVER IN PERSON|SHIP|nts are slyly special packages. f|
-1121|161|10|2|27|28651.32|0.08|0.00|N|O|1997-05-08|1997-03-28|1997-05-14|NONE|MAIL|ly ironic accounts cajole slyly abou|
-1121|157|5|3|10|10571.50|0.00|0.04|N|O|1997-04-17|1997-03-18|1997-05-02|TAKE BACK RETURN|RAIL|dencies. quickly regular theodolites n|
-1121|166|1|4|29|30918.64|0.02|0.01|N|O|1997-03-07|1997-04-02|1997-04-01|DELIVER IN PERSON|REG AIR| use furiously. quickly silent package|
-1121|30|9|5|47|43711.41|0.09|0.03|N|O|1997-04-27|1997-03-28|1997-05-14|COLLECT COD|FOB|ly idle, i|
-1121|200|1|6|50|55010.00|0.06|0.03|N|O|1997-04-21|1997-02-16|1997-04-25|NONE|TRUCK|odolites. slyly even accounts|
-1121|80|8|7|37|36262.96|0.06|0.01|N|O|1997-02-27|1997-03-04|1997-03-02|COLLECT COD|RAIL|special packages. fluffily final requests s|
-1122|92|6|1|8|7936.72|0.10|0.06|N|O|1997-02-02|1997-04-03|1997-02-22|TAKE BACK RETURN|RAIL|c foxes are along the slyly r|
-1122|182|3|2|29|31383.22|0.05|0.04|N|O|1997-05-07|1997-04-07|1997-05-15|COLLECT COD|SHIP|ptotes. quickl|
-1122|147|6|3|25|26178.50|0.09|0.01|N|O|1997-03-21|1997-03-03|1997-04-07|TAKE BACK RETURN|RAIL|d furiously. pinto |
-1122|106|9|4|40|40244.00|0.08|0.08|N|O|1997-02-07|1997-03-25|1997-02-25|NONE|REG AIR|packages sleep after the asym|
-1122|151|2|5|15|15767.25|0.05|0.03|N|O|1997-04-15|1997-03-15|1997-05-07|COLLECT COD|SHIP|olve blithely regular, |
-1122|162|7|6|24|25491.84|0.04|0.01|N|O|1997-03-08|1997-02-20|1997-04-05|NONE|RAIL|blithely requests. slyly pending r|
-1122|1|6|7|38|34238.00|0.00|0.08|N|O|1997-01-23|1997-04-02|1997-02-16|NONE|TRUCK|t theodolites sleep. even, ironic|
-1123|12|2|1|10|9120.10|0.05|0.08|N|O|1996-11-12|1996-10-04|1996-11-30|NONE|MAIL|ckages are above the depths. slyly ir|
-1123|178|8|2|39|42048.63|0.03|0.08|N|O|1996-08-25|1996-10-21|1996-09-04|DELIVER IN PERSON|REG AIR|rding to the furiously ironic requests: r|
-1123|101|4|3|38|38041.80|0.03|0.08|N|O|1996-09-23|1996-10-04|1996-09-27|DELIVER IN PERSON|FOB| blithely carefully unusual reques|
-1124|198|2|1|1|1098.19|0.09|0.08|N|O|1998-10-06|1998-10-02|1998-10-30|NONE|REG AIR| instructions cajole qu|
-1124|6|1|2|13|11778.00|0.05|0.04|N|O|1998-09-05|1998-10-03|1998-09-30|DELIVER IN PERSON|SHIP|t the slyly |
-1124|93|5|3|35|34758.15|0.10|0.05|N|O|1998-11-25|1998-10-08|1998-12-25|TAKE BACK RETURN|AIR|ut the slyly bold pinto beans; fi|
-1124|50|1|4|25|23751.25|0.08|0.05|N|O|1998-08-05|1998-10-14|1998-08-11|NONE|MAIL|ggle slyly according|
-1124|75|5|5|33|32177.31|0.05|0.04|N|O|1998-10-19|1998-09-17|1998-10-26|TAKE BACK RETURN|SHIP|eposits sleep slyly. stealthily f|
-1124|27|6|6|43|39861.86|0.01|0.03|N|O|1998-09-19|1998-10-28|1998-10-10|COLLECT COD|MAIL|across the |
-1124|95|6|7|1|995.09|0.09|0.01|N|O|1998-10-07|1998-08-31|1998-10-12|NONE|TRUCK|ly bold accou|
-1125|133|4|1|4|4132.52|0.08|0.02|A|F|1994-12-10|1994-12-28|1994-12-30|NONE|MAIL| quickly express packages a|
-1125|138|9|2|24|24915.12|0.10|0.03|R|F|1995-01-31|1994-12-02|1995-02-20|COLLECT COD|AIR|es about the slyly s|
-1125|122|7|3|26|26575.12|0.05|0.04|A|F|1995-02-24|1995-01-18|1995-03-05|COLLECT COD|TRUCK|l instruction|
-1125|98|1|4|29|28944.61|0.06|0.00|A|F|1994-11-29|1994-12-20|1994-12-10|DELIVER IN PERSON|RAIL| platelets wake against the carefully i|
-1126|36|2|1|44|41185.32|0.08|0.03|N|O|1998-05-07|1998-04-02|1998-05-29|NONE|TRUCK|es. carefully special|
-1126|58|3|2|7|6706.35|0.06|0.01|N|O|1998-05-02|1998-03-22|1998-05-21|COLLECT COD|MAIL|ons. final, unusual|
-1126|147|10|3|14|14659.96|0.07|0.07|N|O|1998-04-17|1998-04-15|1998-05-12|DELIVER IN PERSON|TRUCK|nstructions. blithe|
-1127|43|10|1|35|33006.40|0.02|0.03|N|O|1995-11-25|1995-11-03|1995-12-17|NONE|TRUCK|l instructions boost blithely according |
-1127|110|5|2|38|38384.18|0.09|0.05|N|O|1995-11-07|1995-11-11|1995-11-26|DELIVER IN PERSON|RAIL|. never final packages boost acro|
-1127|20|1|3|29|26680.58|0.09|0.07|N|O|1995-09-20|1995-11-21|1995-10-11|DELIVER IN PERSON|REG AIR|y. blithely r|
-1127|175|6|4|7|7526.19|0.07|0.05|N|O|1995-11-05|1995-11-02|1995-11-11|DELIVER IN PERSON|FOB| idly pending pains |
-1152|9|10|1|23|20907.00|0.06|0.04|A|F|1994-10-14|1994-10-22|1994-10-21|DELIVER IN PERSON|MAIL|equests alongside of the unusual |
-1152|100|2|2|25|25002.50|0.04|0.08|R|F|1994-10-20|1994-09-18|1994-10-28|DELIVER IN PERSON|REG AIR|efully ironic accounts. sly instructions wa|
-1152|42|9|3|6|5652.24|0.07|0.03|A|F|1994-12-07|1994-11-05|1994-12-25|DELIVER IN PERSON|FOB|p furiously; packages above th|
-1153|86|7|1|15|14791.20|0.00|0.08|N|O|1996-04-24|1996-07-17|1996-04-29|TAKE BACK RETURN|SHIP|uctions boost fluffily according to|
-1153|169|8|2|50|53458.00|0.00|0.07|N|O|1996-06-27|1996-07-13|1996-07-05|COLLECT COD|REG AIR|ronic asymptotes nag slyly. |
-1153|44|5|3|25|23601.00|0.00|0.05|N|O|1996-06-18|1996-06-28|1996-07-09|NONE|TRUCK| theodolites|
-1153|92|3|4|43|42659.87|0.01|0.00|N|O|1996-06-09|1996-06-01|1996-07-04|DELIVER IN PERSON|MAIL|special instructions are. unusual, final du|
-1153|142|5|5|45|46896.30|0.00|0.02|N|O|1996-06-18|1996-06-20|1996-07-03|TAKE BACK RETURN|AIR|oss the ex|
-1153|136|7|6|26|26939.38|0.02|0.03|N|O|1996-08-16|1996-07-12|1996-09-08|NONE|MAIL|kages haggle carefully. f|
-1153|192|4|7|5|5460.95|0.02|0.03|N|O|1996-05-03|1996-06-12|1996-05-28|TAKE BACK RETURN|FOB|special excuses promi|
-1154|143|10|1|31|32337.34|0.06|0.06|A|F|1992-04-17|1992-04-26|1992-05-17|COLLECT COD|AIR|ithely. final, blithe |
-1154|148|7|2|50|52407.00|0.07|0.06|A|F|1992-04-22|1992-04-21|1992-05-01|NONE|TRUCK|ove the furiously bold Tires|
-1154|97|1|3|5|4985.45|0.09|0.04|A|F|1992-06-07|1992-05-07|1992-07-05|DELIVER IN PERSON|MAIL|the furiously |
-1154|1|2|4|35|31535.00|0.00|0.07|A|F|1992-03-30|1992-04-02|1992-04-21|DELIVER IN PERSON|TRUCK|the carefully regular pinto beans boost|
-1154|36|2|5|18|16848.54|0.02|0.03|A|F|1992-02-26|1992-03-24|1992-03-20|TAKE BACK RETURN|REG AIR|y regular excuses cajole blithely. fi|
-1154|196|8|6|50|54809.50|0.06|0.03|A|F|1992-03-04|1992-04-01|1992-04-01|TAKE BACK RETURN|TRUCK| even, special |
-1155|70|1|1|4|3880.28|0.09|0.05|N|O|1997-10-19|1997-12-09|1997-11-02|DELIVER IN PERSON|SHIP|ic foxes according to the carefully final |
-1155|196|9|2|39|42751.41|0.08|0.05|N|O|1998-01-29|1998-01-03|1998-02-01|COLLECT COD|TRUCK|ckly final pinto beans was.|
-1155|147|4|3|23|24084.22|0.08|0.03|N|O|1997-11-24|1997-11-28|1997-12-06|DELIVER IN PERSON|FOB|ly unusual packages. iro|
-1155|140|1|4|12|12481.68|0.01|0.06|N|O|1997-11-01|1998-01-03|1997-11-19|DELIVER IN PERSON|RAIL|packages do|
-1155|5|2|5|49|44345.00|0.04|0.08|N|O|1997-12-07|1997-12-30|1997-12-08|NONE|AIR|ccounts are alongside of t|
-1156|87|8|1|15|14806.20|0.07|0.06|N|O|1996-12-21|1997-01-03|1997-01-10|TAKE BACK RETURN|AIR|the furiously pen|
-1156|33|4|2|21|19593.63|0.02|0.08|N|O|1996-11-07|1997-01-14|1996-12-03|NONE|AIR|dolphins. fluffily ironic packages sleep re|
-1156|12|2|3|29|26448.29|0.09|0.06|N|O|1997-01-24|1996-12-26|1997-02-04|DELIVER IN PERSON|TRUCK|ts sleep sly|
-1156|172|3|4|42|45031.14|0.02|0.00|N|O|1997-01-18|1997-01-12|1997-02-13|NONE|REG AIR|s. quickly bold pains are|
-1156|74|4|5|49|47729.43|0.04|0.01|N|O|1996-11-16|1996-12-02|1996-12-05|COLLECT COD|AIR|ithely unusual in|
-1156|195|9|6|42|45997.98|0.02|0.06|N|O|1997-01-27|1997-01-09|1997-01-28|DELIVER IN PERSON|MAIL|even requests boost ironic deposits. pe|
-1156|47|6|7|20|18940.80|0.08|0.07|N|O|1997-01-01|1997-01-06|1997-01-16|COLLECT COD|MAIL|deposits sleep bravel|
-1157|49|2|1|16|15184.64|0.06|0.00|N|O|1998-04-12|1998-03-09|1998-04-23|DELIVER IN PERSON|MAIL|tions hang|
-1157|83|4|2|4|3932.32|0.10|0.05|N|O|1998-02-24|1998-03-30|1998-03-24|DELIVER IN PERSON|SHIP|ounts. ironic deposits|
-1157|48|7|3|8|7584.32|0.02|0.00|N|O|1998-03-25|1998-03-16|1998-03-29|NONE|REG AIR|blithely even pa|
-1157|77|8|4|46|44945.22|0.07|0.08|N|O|1998-04-19|1998-03-13|1998-04-23|NONE|FOB|slyly regular excuses. accounts|
-1157|160|5|5|14|14842.24|0.03|0.03|N|O|1998-04-17|1998-03-03|1998-05-01|NONE|FOB|theodolites. fluffily re|
-1158|45|2|1|5|4725.20|0.02|0.04|N|O|1996-10-20|1996-07-30|1996-11-14|COLLECT COD|AIR|symptotes along the care|
-1158|157|9|2|23|24314.45|0.00|0.08|N|O|1996-10-21|1996-08-19|1996-10-31|COLLECT COD|MAIL|ularly ironic requests use care|
-1159|109|10|1|39|39354.90|0.01|0.00|A|F|1992-11-20|1992-10-28|1992-12-18|TAKE BACK RETURN|FOB| blithely express reques|
-1159|96|9|2|7|6972.63|0.08|0.00|A|F|1992-11-25|1992-10-27|1992-12-20|NONE|AIR|olve somet|
-1159|98|10|3|11|10978.99|0.10|0.03|R|F|1992-12-09|1992-12-07|1992-12-18|DELIVER IN PERSON|MAIL|h furiousl|
-1184|47|4|1|27|25570.08|0.01|0.00|N|O|1998-01-10|1997-12-02|1998-02-06|TAKE BACK RETURN|REG AIR|s wake fluffily. fl|
-1184|147|10|2|4|4188.56|0.04|0.03|N|O|1997-12-25|1998-01-24|1998-01-18|DELIVER IN PERSON|RAIL| express packages. slyly expres|
-1184|164|5|3|7|7449.12|0.05|0.00|N|O|1998-02-14|1998-01-06|1998-03-11|COLLECT COD|TRUCK|ckly warthogs. blithely bold foxes hag|
-1184|126|9|4|3|3078.36|0.02|0.05|N|O|1998-01-15|1997-12-19|1998-02-02|NONE|REG AIR|ar packages. final packages cajol|
-1185|72|1|1|8|7776.56|0.01|0.06|A|F|1992-12-05|1992-10-05|1992-12-28|DELIVER IN PERSON|MAIL|ely according to the furiously regular r|
-1185|31|2|2|28|26068.84|0.07|0.06|A|F|1992-09-24|1992-10-07|1992-10-10|DELIVER IN PERSON|REG AIR|ke. slyly regular t|
-1185|190|1|3|12|13082.28|0.05|0.06|R|F|1992-10-12|1992-09-26|1992-11-11|NONE|REG AIR|instructions. daringly pend|
-1186|3|4|1|28|25284.00|0.08|0.07|N|O|1996-12-08|1996-10-17|1996-12-15|TAKE BACK RETURN|TRUCK|ffily spec|
-1186|92|5|2|11|10912.99|0.07|0.05|N|O|1996-10-03|1996-10-21|1996-10-17|DELIVER IN PERSON|AIR|s haggle furiously; slyl|
-1186|101|2|3|20|20022.00|0.07|0.07|N|O|1996-08-20|1996-10-23|1996-09-05|COLLECT COD|FOB|ely alongside of the blithel|
-1186|106|7|4|27|27164.70|0.06|0.04|N|O|1996-10-08|1996-11-06|1996-10-09|TAKE BACK RETURN|SHIP|accounts. express, e|
-1187|178|6|1|29|31266.93|0.01|0.04|R|F|1992-12-10|1993-02-09|1992-12-29|TAKE BACK RETURN|RAIL|riously express ac|
-1187|131|7|2|15|15466.95|0.03|0.04|A|F|1992-12-22|1993-01-13|1993-01-01|NONE|TRUCK|ests. foxes wake. carefu|
-1187|78|8|3|40|39122.80|0.08|0.06|R|F|1993-03-05|1992-12-31|1993-03-12|NONE|TRUCK|ar, brave deposits nag blithe|
-1188|115|9|1|2|2030.22|0.00|0.04|N|O|1996-05-22|1996-05-23|1996-06-06|COLLECT COD|RAIL|its breach blit|
-1188|113|4|2|9|9117.99|0.01|0.08|N|O|1996-08-04|1996-06-04|1996-08-19|NONE|REG AIR|ow carefully ironic d|
-1188|179|10|3|41|44245.97|0.07|0.04|N|O|1996-06-29|1996-05-21|1996-07-21|TAKE BACK RETURN|TRUCK|althy packages. fluffily unusual ideas h|
-1189|51|2|1|23|21874.15|0.06|0.00|R|F|1994-07-25|1994-06-07|1994-08-02|COLLECT COD|FOB|s. fluffy Tiresias run quickly. bra|
-1189|105|2|2|32|32163.20|0.09|0.02|R|F|1994-05-06|1994-07-03|1994-05-15|TAKE BACK RETURN|FOB|e regular deposits. quickly quiet deposi|
-1189|57|5|3|22|21055.10|0.05|0.03|R|F|1994-06-09|1994-06-29|1994-06-23|DELIVER IN PERSON|TRUCK|quickly unusual platelets lose forges. ca|
-1190|84|5|1|32|31490.56|0.07|0.06|N|O|1997-05-08|1997-04-17|1997-06-01|COLLECT COD|FOB|y final packages? slyly even|
-1191|49|6|1|29|27522.16|0.00|0.04|N|O|1996-01-24|1996-01-28|1996-02-17|COLLECT COD|AIR| regular pin|
-1216|97|1|1|8|7976.72|0.03|0.04|R|F|1993-02-01|1993-03-06|1993-02-08|TAKE BACK RETURN|TRUCK| of the carefully express|
-1216|75|3|2|48|46803.36|0.10|0.01|R|F|1993-01-17|1993-02-01|1993-02-13|COLLECT COD|SHIP|symptotes use against th|
-1216|42|3|3|18|16956.72|0.00|0.03|A|F|1993-01-20|1993-01-28|1993-02-02|COLLECT COD|MAIL|y final packages nod |
-1217|60|5|1|45|43202.70|0.07|0.02|A|F|1992-07-01|1992-06-23|1992-07-06|COLLECT COD|AIR|riously close ideas|
-1218|140|6|1|16|16642.24|0.04|0.07|A|F|1994-06-26|1994-08-07|1994-06-30|TAKE BACK RETURN|FOB|ven realms be|
-1218|94|6|2|41|40757.69|0.06|0.06|R|F|1994-08-04|1994-08-05|1994-08-11|TAKE BACK RETURN|SHIP|dolphins. theodolites beyond th|
-1218|48|7|3|44|41713.76|0.07|0.06|A|F|1994-10-05|1994-09-03|1994-10-30|COLLECT COD|TRUCK|thely ironic accounts wake slyly|
-1218|42|9|4|1|942.04|0.01|0.08|R|F|1994-09-15|1994-09-07|1994-10-03|COLLECT COD|TRUCK|press furio|
-1219|132|3|1|6|6192.78|0.08|0.04|N|O|1995-11-13|1995-12-24|1995-11-18|NONE|MAIL|pecial, ironic requ|
-1219|129|4|2|4|4116.48|0.01|0.04|N|O|1995-11-24|1995-11-22|1995-12-07|TAKE BACK RETURN|SHIP|lly quick requests. blithely even h|
-1220|169|4|1|25|26729.00|0.10|0.03|N|O|1996-10-15|1996-11-07|1996-11-06|COLLECT COD|REG AIR| regular orbi|
-1220|160|5|2|36|38165.76|0.01|0.02|N|O|1996-12-10|1996-11-14|1997-01-07|COLLECT COD|SHIP|ar packages. blithely final acc|
-1220|37|8|3|3|2811.09|0.08|0.06|N|O|1996-09-06|1996-11-03|1996-09-10|COLLECT COD|REG AIR| final theodolites. blithely silent |
-1220|6|1|4|36|32616.00|0.07|0.03|N|O|1996-12-12|1996-10-03|1996-12-15|TAKE BACK RETURN|TRUCK|unusual, silent pinto beans aga|
-1220|49|2|5|25|23726.00|0.03|0.08|N|O|1996-09-11|1996-10-09|1996-09-25|DELIVER IN PERSON|RAIL|packages affi|
-1221|81|2|1|43|42186.44|0.05|0.05|R|F|1992-06-22|1992-07-15|1992-07-20|DELIVER IN PERSON|FOB|y slyly above the slyly unusual ideas|
-1221|170|1|2|12|12842.04|0.00|0.08|R|F|1992-08-07|1992-06-24|1992-08-13|COLLECT COD|AIR|yly ironic |
-1221|69|6|3|3|2907.18|0.10|0.08|R|F|1992-07-01|1992-06-04|1992-07-27|COLLECT COD|TRUCK|ing to the fluffily|
-1221|120|10|4|41|41824.92|0.06|0.02|A|F|1992-04-28|1992-07-02|1992-05-19|NONE|RAIL|ns. bold deposit|
-1221|108|1|5|13|13105.30|0.10|0.00|R|F|1992-08-01|1992-06-29|1992-08-27|TAKE BACK RETURN|AIR|ajole furiously. blithely expres|
-1221|85|6|6|7|6895.56|0.08|0.06|A|F|1992-06-27|1992-06-16|1992-07-23|TAKE BACK RETURN|RAIL|xpress accounts |
-1222|72|10|1|12|11664.84|0.09|0.02|A|F|1993-02-12|1993-03-14|1993-03-12|TAKE BACK RETURN|RAIL|s print permanently unusual packages. |
-1222|159|7|2|12|12709.80|0.08|0.01|A|F|1993-05-05|1993-03-27|1993-05-18|TAKE BACK RETURN|REG AIR| furiously bold instructions|
-1222|8|1|3|26|23608.00|0.02|0.08|R|F|1993-02-13|1993-03-20|1993-02-22|TAKE BACK RETURN|MAIL|, even accounts are ironic|
-1223|100|1|1|28|28002.80|0.10|0.06|N|O|1996-08-07|1996-07-24|1996-08-13|TAKE BACK RETURN|MAIL| quickly ironic requests. furious|
-1248|164|5|1|45|47887.20|0.00|0.08|A|F|1992-04-17|1992-03-31|1992-05-13|NONE|RAIL|ter the pending pl|
-1248|151|9|2|37|38892.55|0.06|0.06|R|F|1992-01-26|1992-02-05|1992-02-13|COLLECT COD|TRUCK|. final requests integrate quickly. blit|
-1248|56|8|3|26|24857.30|0.09|0.06|A|F|1992-01-16|1992-03-01|1992-02-06|TAKE BACK RETURN|AIR| ironic dependen|
-1248|156|7|4|49|51751.35|0.02|0.01|A|F|1992-04-24|1992-02-18|1992-05-03|TAKE BACK RETURN|AIR|beans run quickly according to the carefu|
-1248|122|7|5|20|20442.40|0.08|0.00|A|F|1992-03-12|1992-03-23|1992-04-07|TAKE BACK RETURN|AIR|nal foxes cajole carefully slyl|
-1248|62|9|6|30|28861.80|0.10|0.01|R|F|1992-02-01|1992-03-24|1992-02-08|TAKE BACK RETURN|MAIL|fily special foxes kindle am|
-1249|59|4|1|49|46993.45|0.07|0.05|A|F|1994-03-03|1994-02-28|1994-03-08|NONE|RAIL|ffily express theodo|
-1250|2|3|1|15|13530.00|0.10|0.06|A|F|1992-11-05|1992-12-17|1992-12-03|TAKE BACK RETURN|SHIP| regular, i|
-1251|4|5|1|37|33448.00|0.08|0.08|N|O|1997-12-21|1998-01-12|1997-12-26|COLLECT COD|AIR|. furiously|
-1251|78|9|2|36|35210.52|0.07|0.04|N|O|1997-11-29|1998-01-07|1997-12-03|TAKE BACK RETURN|RAIL|y ironic Tiresias are slyly furio|
-1251|99|3|3|37|36966.33|0.09|0.02|N|O|1998-01-11|1997-12-01|1998-01-23|DELIVER IN PERSON|RAIL|finally bold requests|
-1251|150|9|4|7|7351.05|0.07|0.00|N|O|1998-01-08|1997-12-27|1998-01-18|COLLECT COD|MAIL|riously pe|
-1251|188|9|5|1|1088.18|0.02|0.03|N|O|1997-12-08|1998-01-06|1998-01-01|DELIVER IN PERSON|REG AIR| use quickly final packages. iron|
-1252|87|8|1|13|12832.04|0.10|0.01|N|O|1997-09-07|1997-09-12|1997-10-01|COLLECT COD|REG AIR|sts dazzle|
-1252|111|8|2|27|27299.97|0.00|0.08|N|O|1997-10-22|1997-10-10|1997-11-10|TAKE BACK RETURN|REG AIR|packages hag|
-1252|40|1|3|19|17860.76|0.07|0.02|N|O|1997-10-13|1997-10-23|1997-10-18|NONE|AIR|ts wake carefully-- packages sleep. quick |
-1252|92|4|4|11|10912.99|0.10|0.01|N|O|1997-10-16|1997-09-22|1997-10-28|COLLECT COD|AIR|s are. slyly final requests among the|
-1252|79|10|5|26|25455.82|0.05|0.05|N|O|1997-08-05|1997-10-24|1997-08-07|DELIVER IN PERSON|SHIP|onic pinto beans haggle furiously |
-1253|180|8|1|14|15122.52|0.00|0.06|R|F|1993-04-03|1993-04-16|1993-04-27|TAKE BACK RETURN|MAIL|lar foxes sleep furiously final, final pack|
-1253|54|9|2|13|12402.65|0.01|0.06|A|F|1993-03-05|1993-04-26|1993-03-08|DELIVER IN PERSON|FOB|al packages|
-1253|70|1|3|22|21341.54|0.05|0.06|A|F|1993-02-23|1993-04-06|1993-03-07|TAKE BACK RETURN|SHIP|telets cajole alongside of the final reques|
-1253|176|5|4|23|24751.91|0.09|0.02|R|F|1993-04-18|1993-04-18|1993-05-07|COLLECT COD|FOB| the slyly silent re|
-1253|114|8|5|19|19268.09|0.05|0.05|A|F|1993-04-01|1993-04-22|1993-04-14|TAKE BACK RETURN|AIR|al pinto bea|
-1254|193|5|1|6|6559.14|0.08|0.01|N|O|1996-02-02|1996-03-21|1996-02-29|NONE|REG AIR|lithely even deposits eat!|
-1254|200|3|2|47|51709.40|0.05|0.06|N|O|1996-03-07|1996-02-20|1996-04-05|COLLECT COD|MAIL| platelets cajol|
-1254|135|6|3|35|36229.55|0.05|0.06|N|O|1996-04-08|1996-02-29|1996-04-18|DELIVER IN PERSON|FOB|ckages boost. furious warhorses cajole|
-1255|192|4|1|12|13106.28|0.00|0.02|A|F|1994-08-17|1994-06-29|1994-09-04|TAKE BACK RETURN|REG AIR| regular, express accounts are |
-1255|194|8|2|46|50332.74|0.07|0.05|R|F|1994-07-06|1994-07-14|1994-08-05|NONE|MAIL|ons nag qui|
-1280|129|8|1|17|17495.04|0.01|0.01|A|F|1993-02-04|1993-04-10|1993-02-07|NONE|FOB|ructions integrate across the th|
-1280|189|10|2|6|6535.08|0.05|0.06|R|F|1993-03-30|1993-02-16|1993-04-18|DELIVER IN PERSON|AIR|gular deposits |
-1280|33|4|3|13|12129.39|0.03|0.02|R|F|1993-03-06|1993-03-11|1993-03-18|DELIVER IN PERSON|TRUCK|blithely final accounts use evenly |
-1280|175|3|4|5|5375.85|0.06|0.03|R|F|1993-02-03|1993-02-11|1993-02-23|DELIVER IN PERSON|AIR|beans haggle. quickly bold instructions h|
-1280|52|10|5|24|22849.20|0.07|0.02|R|F|1993-03-20|1993-03-01|1993-04-09|COLLECT COD|RAIL|y pending orbits boost after the slyly|
-1280|66|3|6|9|8694.54|0.00|0.05|R|F|1993-04-18|1993-03-28|1993-05-04|DELIVER IN PERSON|FOB|usual accou|
-1280|92|6|7|19|18849.71|0.02|0.06|A|F|1993-02-07|1993-02-28|1993-02-12|NONE|TRUCK|lyly along the furiously regular |
-1281|138|4|1|33|34258.29|0.07|0.08|R|F|1995-02-01|1995-01-18|1995-03-03|NONE|REG AIR|dencies. thinly final pinto beans wake|
-1281|7|2|2|37|33559.00|0.08|0.03|A|F|1995-03-19|1995-02-02|1995-03-27|NONE|AIR|ounts detect|
-1281|94|7|3|2|1988.18|0.05|0.06|A|F|1994-12-27|1995-01-26|1995-01-21|TAKE BACK RETURN|FOB|ly unusual requests. final reques|
-1281|154|2|4|38|40057.70|0.04|0.06|R|F|1995-03-28|1995-01-11|1995-04-14|TAKE BACK RETURN|MAIL| ideas-- blithely regular|
-1281|152|10|5|13|13677.95|0.03|0.07|A|F|1995-02-06|1995-02-13|1995-02-18|DELIVER IN PERSON|TRUCK|fully final platelets wa|
-1281|50|9|6|4|3800.20|0.07|0.04|R|F|1995-03-15|1995-02-21|1995-03-20|NONE|SHIP|ggle against the even requests. requests |
-1281|78|6|7|43|42057.01|0.10|0.02|R|F|1995-01-28|1995-02-08|1995-02-10|DELIVER IN PERSON|AIR|final accounts. final packages slee|
-1282|23|4|1|14|12922.28|0.04|0.02|R|F|1992-06-29|1992-04-05|1992-07-21|TAKE BACK RETURN|REG AIR|ecial deposit|
-1282|30|9|2|10|9300.30|0.09|0.06|R|F|1992-04-10|1992-04-16|1992-05-01|DELIVER IN PERSON|SHIP|r theodolite|
-1282|160|1|3|19|20143.04|0.01|0.03|R|F|1992-05-07|1992-04-07|1992-05-13|NONE|RAIL|ts x-ray across the furi|
-1282|59|10|4|19|18221.95|0.00|0.05|A|F|1992-06-20|1992-04-17|1992-07-05|DELIVER IN PERSON|REG AIR|nto beans. carefully close theodo|
-1283|93|7|1|47|46675.23|0.05|0.03|N|O|1996-10-21|1996-10-29|1996-11-12|DELIVER IN PERSON|TRUCK|even instructions boost slyly blithely |
-1283|106|1|2|1|1006.10|0.00|0.08|N|O|1996-10-07|1996-10-12|1996-10-08|NONE|RAIL|d the sauternes. slyly ev|
-1283|138|4|3|18|18686.34|0.02|0.01|N|O|1996-10-14|1996-11-07|1996-10-22|DELIVER IN PERSON|AIR|equests use along the fluff|
-1283|192|4|4|40|43687.60|0.07|0.03|N|O|1996-11-09|1996-11-23|1996-11-28|NONE|MAIL|riously. even, ironic instructions after|
-1283|124|9|5|43|44037.16|0.01|0.04|N|O|1996-09-29|1996-11-19|1996-10-26|TAKE BACK RETURN|RAIL|requests sleep slyly about the |
-1283|8|5|6|30|27240.00|0.06|0.07|N|O|1996-11-22|1996-11-22|1996-12-15|COLLECT COD|TRUCK|t the fluffily|
-1283|197|8|7|21|23040.99|0.04|0.03|N|O|1996-09-12|1996-10-02|1996-10-12|NONE|REG AIR|fully regular |
-1284|178|7|1|49|52830.33|0.00|0.06|N|O|1996-04-11|1996-03-04|1996-04-16|NONE|MAIL|lar packages. special packages ac|
-1284|6|7|2|4|3624.00|0.07|0.06|N|O|1996-02-29|1996-02-11|1996-03-01|TAKE BACK RETURN|TRUCK| regular asymptotes. |
-1284|133|4|3|39|40292.07|0.08|0.00|N|O|1996-01-11|1996-02-07|1996-02-05|COLLECT COD|MAIL|even accoun|
-1284|59|10|4|1|959.05|0.01|0.07|N|O|1996-04-28|1996-04-02|1996-05-08|DELIVER IN PERSON|SHIP|al packages use carefully express de|
-1284|34|5|5|9|8406.27|0.05|0.06|N|O|1996-03-03|1996-03-19|1996-04-01|DELIVER IN PERSON|REG AIR|after the pending|
-1285|22|3|1|12|11064.24|0.00|0.06|A|F|1992-06-21|1992-08-16|1992-07-12|COLLECT COD|MAIL|ss foxes. blithe theodolites cajole slyly|
-1285|143|10|2|45|46941.30|0.01|0.02|R|F|1992-09-05|1992-08-08|1992-10-02|COLLECT COD|REG AIR| special requests haggle blithely.|
-1285|189|10|3|4|4356.72|0.09|0.06|A|F|1992-07-20|1992-08-17|1992-07-26|DELIVER IN PERSON|FOB|l packages sleep slyly quiet i|
-1285|188|9|4|39|42439.02|0.05|0.01|A|F|1992-09-15|1992-08-05|1992-10-05|DELIVER IN PERSON|TRUCK|uctions. car|
-1285|84|5|5|33|32474.64|0.00|0.08|R|F|1992-09-08|1992-08-25|1992-09-16|NONE|SHIP|ites affix|
-1286|178|9|1|49|52830.33|0.08|0.01|R|F|1993-06-24|1993-08-12|1993-06-26|DELIVER IN PERSON|SHIP|gged accoun|
-1286|49|6|2|48|45553.92|0.01|0.04|A|F|1993-07-11|1993-07-11|1993-08-01|COLLECT COD|TRUCK|unts alongs|
-1286|189|10|3|11|11980.98|0.03|0.04|R|F|1993-08-08|1993-07-30|1993-09-05|DELIVER IN PERSON|FOB| slyly even packages. requ|
-1286|184|5|4|37|40114.66|0.00|0.02|R|F|1993-05-27|1993-07-11|1993-06-01|COLLECT COD|SHIP|lyly ironic pinto beans cajole furiously s|
-1286|165|10|5|14|14912.24|0.00|0.01|R|F|1993-05-23|1993-08-09|1993-06-01|NONE|REG AIR|blithely bo|
-1286|146|5|6|41|42891.74|0.04|0.05|R|F|1993-08-02|1993-08-06|1993-08-07|TAKE BACK RETURN|FOB| the furiously expre|
-1287|174|3|1|35|37595.95|0.09|0.06|A|F|1994-09-07|1994-09-12|1994-09-30|TAKE BACK RETURN|FOB|s wake unusual grou|
-1287|95|8|2|10|9950.90|0.08|0.03|R|F|1994-07-08|1994-08-28|1994-07-10|TAKE BACK RETURN|RAIL|thely alongside of the unusual, ironic pa|
-1287|1|2|3|30|27030.00|0.00|0.07|R|F|1994-07-12|1994-09-23|1994-08-07|NONE|RAIL|ar packages. even, even|
-1287|62|7|4|10|9620.60|0.01|0.05|A|F|1994-09-03|1994-08-12|1994-09-16|TAKE BACK RETURN|REG AIR|ding, regular accounts|
-1287|179|8|5|21|22662.57|0.06|0.02|A|F|1994-10-06|1994-09-25|1994-10-16|TAKE BACK RETURN|TRUCK|y quickly bold theodoli|
-1287|21|10|6|26|23946.52|0.03|0.08|R|F|1994-10-03|1994-09-27|1994-10-30|DELIVER IN PERSON|RAIL|egular foxes. theodolites nag along t|
-1312|81|2|1|9|8829.72|0.04|0.08|R|F|1994-07-19|1994-06-29|1994-07-24|TAKE BACK RETURN|MAIL|. furiously |
-1312|136|7|2|28|29011.64|0.06|0.06|A|F|1994-09-09|1994-08-01|1994-10-02|TAKE BACK RETURN|FOB|uriously final frays should use quick|
-1312|173|1|3|18|19317.06|0.03|0.07|A|F|1994-09-13|1994-07-08|1994-09-22|TAKE BACK RETURN|MAIL|. slyly ironic|
-1313|52|4|1|48|45698.40|0.01|0.03|A|F|1994-12-20|1994-10-29|1995-01-07|COLLECT COD|MAIL|s are quick|
-1314|198|10|1|5|5490.95|0.03|0.01|A|F|1994-05-26|1994-08-06|1994-05-31|TAKE BACK RETURN|AIR|equests nag across the furious|
-1314|110|5|2|39|39394.29|0.01|0.03|R|F|1994-08-09|1994-06-14|1994-08-31|TAKE BACK RETURN|TRUCK| unusual accounts slee|
-1314|41|2|3|11|10351.44|0.01|0.04|A|F|1994-05-16|1994-07-30|1994-05-31|COLLECT COD|REG AIR|tegrate furious|
-1315|96|8|1|27|26894.43|0.01|0.03|N|O|1998-07-04|1998-06-13|1998-07-28|NONE|SHIP|latelets. fluffily ironic account|
-1315|16|6|2|15|13740.15|0.05|0.01|N|O|1998-07-12|1998-06-10|1998-08-07|COLLECT COD|AIR|. foxes integrate carefully special|
-1315|168|3|3|25|26704.00|0.01|0.08|N|O|1998-06-26|1998-06-10|1998-07-06|TAKE BACK RETURN|FOB|lites. unusual foxes affi|
-1315|161|6|4|19|20162.04|0.02|0.05|N|O|1998-07-05|1998-05-23|1998-08-04|TAKE BACK RETURN|SHIP|nal, regular warhorses about the fu|
-1315|159|7|5|32|33892.80|0.10|0.05|N|O|1998-03-30|1998-06-12|1998-04-25|NONE|SHIP|neath the final p|
-1316|127|6|1|46|47247.52|0.05|0.04|A|F|1994-01-13|1994-01-24|1994-02-03|COLLECT COD|TRUCK|ges haggle of the|
-1316|79|9|2|15|14686.05|0.02|0.01|R|F|1994-03-12|1994-03-02|1994-03-14|COLLECT COD|FOB|se. furiously final depo|
-1316|198|9|3|33|36240.27|0.10|0.06|R|F|1994-03-31|1994-01-23|1994-04-20|TAKE BACK RETURN|AIR|manently; blithely special deposits|
-1316|66|3|4|15|14490.90|0.00|0.06|R|F|1993-12-17|1994-02-04|1993-12-20|NONE|RAIL|fully express dugouts. furiously silent ide|
-1316|41|2|5|40|37641.60|0.01|0.03|R|F|1994-02-04|1994-02-09|1994-02-27|NONE|REG AIR|l dugouts. co|
-1316|4|7|6|7|6328.00|0.05|0.04|A|F|1993-12-09|1994-01-12|1993-12-30|TAKE BACK RETURN|MAIL|. furiously even accounts a|
-1316|163|8|7|8|8505.28|0.10|0.04|A|F|1994-03-26|1994-02-08|1994-04-19|NONE|SHIP|packages against the express requests wa|
-1317|134|5|1|34|35160.42|0.08|0.04|N|O|1995-08-13|1995-08-08|1995-09-10|COLLECT COD|RAIL|deposits boost thinly blithely final id|
-1317|160|2|2|7|7421.12|0.05|0.01|A|F|1995-06-08|1995-08-03|1995-06-16|TAKE BACK RETURN|SHIP| pinto beans according to the final, pend|
-1317|158|9|3|26|27511.90|0.01|0.02|N|O|1995-07-13|1995-06-26|1995-08-06|COLLECT COD|RAIL|leep along th|
-1317|106|3|4|35|35213.50|0.05|0.02|N|O|1995-07-16|1995-07-07|1995-07-22|TAKE BACK RETURN|FOB|r packages impress blithely car|
-1317|150|9|5|36|37805.40|0.02|0.00|N|O|1995-09-03|1995-07-06|1995-09-04|DELIVER IN PERSON|AIR| deposits. quic|
-1318|114|4|1|24|24338.64|0.08|0.06|N|O|1998-09-27|1998-09-15|1998-10-12|TAKE BACK RETURN|AIR|ual, unusual packages. fluffy, iro|
-1318|46|3|2|26|24597.04|0.01|0.03|N|O|1998-09-26|1998-08-09|1998-10-07|DELIVER IN PERSON|FOB|ly. regular, u|
-1318|129|4|3|31|31902.72|0.01|0.04|N|O|1998-08-25|1998-07-31|1998-08-31|COLLECT COD|AIR|ve the carefully expr|
-1319|61|8|1|21|20182.26|0.03|0.04|N|O|1996-10-05|1996-12-02|1996-10-28|COLLECT COD|FOB|s: carefully express |
-1319|37|8|2|12|11244.36|0.09|0.05|N|O|1996-11-05|1996-12-12|1996-11-29|DELIVER IN PERSON|TRUCK|packages integrate furiously. expres|
-1344|141|4|1|15|15617.10|0.10|0.07|A|F|1992-06-22|1992-06-24|1992-06-23|TAKE BACK RETURN|MAIL|rding to the blithely ironic theodolite|
-1344|190|1|2|29|31615.51|0.09|0.00|A|F|1992-07-17|1992-06-07|1992-07-21|NONE|REG AIR|ffily quiet foxes wake blithely. slyly |
-1345|198|9|1|49|53811.31|0.08|0.00|A|F|1992-12-27|1993-01-23|1993-01-06|NONE|FOB|sly. furiously final accounts are blithely |
-1345|12|9|2|37|33744.37|0.10|0.07|A|F|1992-11-27|1992-12-11|1992-12-07|COLLECT COD|FOB|e slyly express requests. ironic accounts c|
-1345|57|8|3|31|29668.55|0.08|0.07|R|F|1992-12-02|1992-12-29|1992-12-14|COLLECT COD|REG AIR|. slyly silent accounts sublat|
-1346|160|8|1|29|30744.64|0.07|0.05|A|F|1992-08-18|1992-09-15|1992-09-17|TAKE BACK RETURN|REG AIR|the pinto |
-1346|125|6|2|48|49205.76|0.06|0.03|A|F|1992-09-28|1992-07-22|1992-10-13|TAKE BACK RETURN|REG AIR| along the carefully spec|
-1346|54|5|3|13|12402.65|0.10|0.04|A|F|1992-07-22|1992-08-10|1992-08-06|NONE|SHIP|arefully brave deposits into the slyly iro|
-1346|124|5|4|6|6144.72|0.02|0.02|R|F|1992-09-13|1992-07-21|1992-09-27|TAKE BACK RETURN|AIR|inst the furiously final theodolites. caref|
-1346|187|8|5|30|32615.40|0.01|0.07|R|F|1992-10-01|1992-07-22|1992-10-24|NONE|SHIP| nag blithely. unusual, ru|
-1346|16|6|6|45|41220.45|0.02|0.04|A|F|1992-09-11|1992-08-06|1992-09-12|COLLECT COD|FOB|press deposits.|
-1347|81|2|1|45|44148.60|0.02|0.05|N|O|1997-08-24|1997-09-03|1997-09-08|COLLECT COD|AIR|ages wake around t|
-1347|143|6|2|34|35466.76|0.07|0.04|N|O|1997-06-25|1997-09-08|1997-07-24|COLLECT COD|FOB|r packages. f|
-1347|185|6|3|23|24959.14|0.03|0.04|N|O|1997-07-31|1997-08-25|1997-08-21|COLLECT COD|SHIP|ronic pinto beans. express reques|
-1347|113|7|4|28|28367.08|0.01|0.00|N|O|1997-07-30|1997-07-22|1997-08-18|TAKE BACK RETURN|FOB|foxes after the blithely special i|
-1347|65|6|5|9|8685.54|0.01|0.03|N|O|1997-08-28|1997-09-16|1997-09-26|DELIVER IN PERSON|AIR| detect blithely above the fina|
-1347|153|8|6|21|22116.15|0.06|0.04|N|O|1997-10-10|1997-08-16|1997-11-02|NONE|FOB|g pinto beans affix car|
-1347|51|3|7|10|9510.50|0.02|0.07|N|O|1997-07-04|1997-07-23|1997-07-05|DELIVER IN PERSON|SHIP|y ironic pin|
-1348|95|7|1|13|12936.17|0.01|0.01|N|O|1998-04-28|1998-06-05|1998-05-12|TAKE BACK RETURN|SHIP| blithely r|
-1348|22|5|2|41|37802.82|0.07|0.03|N|O|1998-05-02|1998-05-26|1998-05-09|COLLECT COD|RAIL|kages. platelets about the ca|
-1348|199|10|3|40|43967.60|0.07|0.05|N|O|1998-08-14|1998-07-10|1998-08-27|COLLECT COD|AIR|fter the regu|
-1348|98|1|4|2|1996.18|0.01|0.04|N|O|1998-05-30|1998-06-20|1998-06-05|COLLECT COD|MAIL|lly final packages use fluffily express ac|
-1349|181|2|1|1|1081.18|0.06|0.03|N|O|1998-01-07|1998-01-14|1998-02-03|COLLECT COD|REG AIR| express inst|
-1349|118|2|2|45|45814.95|0.03|0.02|N|O|1997-12-24|1998-01-17|1997-12-28|NONE|AIR| ironic, unusual deposits wake carefu|
-1350|54|9|1|21|20035.05|0.04|0.04|A|F|1993-12-17|1993-10-17|1993-12-25|COLLECT COD|REG AIR|lyly above the evenly |
-1350|44|5|2|32|30209.28|0.03|0.00|R|F|1993-11-18|1993-09-30|1993-12-16|COLLECT COD|MAIL|ic, final |
-1351|108|9|1|25|25202.50|0.06|0.04|N|O|1998-06-02|1998-05-25|1998-06-22|COLLECT COD|SHIP|iously regul|
-1376|169|8|1|22|23521.52|0.01|0.03|N|O|1997-08-05|1997-07-08|1997-09-03|NONE|REG AIR|inst the final, pending |
-1377|154|6|1|5|5270.75|0.06|0.05|N|O|1998-05-06|1998-07-08|1998-06-01|TAKE BACK RETURN|FOB| final, final grouches. accoun|
-1377|33|9|2|3|2799.09|0.10|0.04|N|O|1998-04-30|1998-07-02|1998-05-14|DELIVER IN PERSON|REG AIR|yly enticing requ|
-1377|84|5|3|26|25586.08|0.07|0.07|N|O|1998-05-28|1998-06-11|1998-06-25|COLLECT COD|SHIP|egular deposits. quickly regular acco|
-1377|121|4|4|39|39823.68|0.00|0.03|N|O|1998-07-27|1998-07-18|1998-08-13|DELIVER IN PERSON|SHIP|e ironic, regular requests. carefully |
-1377|33|9|5|19|17727.57|0.10|0.00|N|O|1998-06-20|1998-06-27|1998-07-20|NONE|AIR|ught to are bold foxes|
-1377|154|6|6|17|17920.55|0.03|0.04|N|O|1998-06-19|1998-07-20|1998-07-14|NONE|REG AIR|s must have to mold b|
-1378|197|10|1|34|37304.46|0.09|0.07|N|O|1996-07-08|1996-04-23|1996-07-09|COLLECT COD|RAIL|le furiously slyly final accounts. careful|
-1378|124|9|2|18|18434.16|0.05|0.02|N|O|1996-06-19|1996-05-16|1996-06-21|DELIVER IN PERSON|RAIL| theodolites. i|
-1378|73|4|3|11|10703.77|0.10|0.03|N|O|1996-06-07|1996-05-09|1996-07-05|COLLECT COD|TRUCK| blithely express hoc|
-1378|171|2|4|12|12854.04|0.02|0.06|N|O|1996-06-16|1996-05-23|1996-07-09|COLLECT COD|SHIP|notornis. b|
-1378|156|7|5|9|9505.35|0.06|0.05|N|O|1996-04-20|1996-04-13|1996-05-09|COLLECT COD|REG AIR|e carefully. carefully iron|
-1378|194|6|6|29|31731.51|0.05|0.05|N|O|1996-04-15|1996-04-23|1996-05-14|NONE|REG AIR|ual packages are furiously blith|
-1379|73|3|1|13|12649.91|0.04|0.01|N|O|1998-06-08|1998-07-13|1998-06-16|NONE|AIR|ully across the furiously iron|
-1379|118|2|2|50|50905.50|0.07|0.08|N|O|1998-08-31|1998-07-13|1998-09-02|TAKE BACK RETURN|FOB|olphins. ca|
-1379|13|7|3|24|21912.24|0.05|0.02|N|O|1998-07-06|1998-07-09|1998-07-29|DELIVER IN PERSON|MAIL|ages cajole carefully idly express re|
-1380|149|2|1|6|6294.84|0.00|0.04|N|O|1996-08-06|1996-10-01|1996-08-14|NONE|RAIL|e foxes. slyly specia|
-1380|141|4|2|40|41645.60|0.02|0.02|N|O|1996-10-01|1996-08-14|1996-10-20|COLLECT COD|RAIL|ly final frets. ironic,|
-1380|78|9|3|15|14671.05|0.05|0.02|N|O|1996-07-14|1996-08-12|1996-08-03|NONE|FOB|riously ironic foxes aff|
-1380|61|10|4|33|31714.98|0.04|0.07|N|O|1996-08-23|1996-10-01|1996-09-18|TAKE BACK RETURN|SHIP|e ironic, even excuses haggle |
-1381|144|1|1|47|49074.58|0.08|0.04|N|O|1998-09-22|1998-08-12|1998-10-12|DELIVER IN PERSON|AIR|ly ironic deposits|
-1381|34|10|2|12|11208.36|0.07|0.08|N|O|1998-08-13|1998-08-12|1998-08-28|TAKE BACK RETURN|AIR| furiously regular package|
-1382|162|3|1|18|19118.88|0.08|0.03|R|F|1993-08-30|1993-10-19|1993-09-03|DELIVER IN PERSON|AIR|hely regular deposits. fluffy s|
-1382|181|2|2|29|31354.22|0.08|0.04|A|F|1993-10-08|1993-11-11|1993-10-10|COLLECT COD|FOB| haggle: closely even asymptot|
-1382|178|7|3|43|46361.31|0.10|0.04|A|F|1993-09-02|1993-10-06|1993-09-15|DELIVER IN PERSON|AIR|ress deposits. slyly ironic foxes are blit|
-1382|181|2|4|11|11892.98|0.04|0.04|R|F|1993-09-17|1993-09-29|1993-09-21|NONE|SHIP|furiously unusual packages play quickly |
-1382|157|8|5|31|32771.65|0.07|0.03|R|F|1993-10-26|1993-10-15|1993-11-09|TAKE BACK RETURN|FOB|hely regular dependencies. f|
-1382|10|5|6|38|34580.38|0.07|0.07|R|F|1993-11-17|1993-09-28|1993-11-20|COLLECT COD|SHIP|ake pending pinto beans. s|
-1382|23|4|7|5|4615.10|0.07|0.01|R|F|1993-10-02|1993-09-29|1993-10-12|DELIVER IN PERSON|REG AIR|ter the carefully final excuses. blit|
-1383|193|7|1|14|15304.66|0.07|0.06|A|F|1993-08-25|1993-07-09|1993-09-12|DELIVER IN PERSON|RAIL|ole carefully silent requests. car|
-1383|161|10|2|19|20162.04|0.06|0.04|R|F|1993-05-24|1993-07-07|1993-06-14|NONE|AIR|lyly unusual accounts sle|
-1408|148|7|1|29|30396.06|0.03|0.04|N|O|1998-03-12|1998-02-14|1998-03-17|COLLECT COD|MAIL|en accounts grow furiousl|
-1408|173|2|2|7|7512.19|0.05|0.06|N|O|1998-01-14|1998-03-21|1998-01-29|COLLECT COD|AIR|fully final instructions. theodolites ca|
-1408|76|6|3|11|10736.77|0.00|0.03|N|O|1998-04-04|1998-01-29|1998-04-18|NONE|REG AIR|y even accounts thrash care|
-1408|148|5|4|20|20962.80|0.06|0.00|N|O|1998-04-21|1998-01-25|1998-05-12|DELIVER IN PERSON|TRUCK| blithely fluffi|
-1408|170|1|5|41|43876.97|0.02|0.06|N|O|1998-02-25|1998-02-03|1998-03-13|COLLECT COD|REG AIR|ep along the fina|
-1408|134|10|6|42|43433.46|0.05|0.08|N|O|1998-01-30|1998-02-07|1998-02-18|TAKE BACK RETURN|REG AIR|even packages. even accounts cajole|
-1408|55|6|7|26|24831.30|0.00|0.00|N|O|1998-03-19|1998-03-14|1998-04-01|COLLECT COD|RAIL|ic foxes ca|
-1409|99|1|1|23|22979.07|0.01|0.03|A|F|1993-04-18|1993-02-25|1993-05-06|DELIVER IN PERSON|FOB|ions. slyly ironic packages wake quick|
-1409|65|2|2|36|34742.16|0.09|0.02|A|F|1993-01-27|1993-01-31|1993-02-07|COLLECT COD|FOB|ncies sleep carefully r|
-1409|160|1|3|17|18022.72|0.07|0.00|R|F|1993-04-15|1993-03-01|1993-04-29|NONE|REG AIR|pending accounts poach. care|
-1410|121|10|1|15|15316.80|0.06|0.05|N|O|1997-05-25|1997-07-08|1997-06-15|NONE|SHIP| bold packages are fluf|
-1410|179|9|2|18|19425.06|0.03|0.00|N|O|1997-06-03|1997-05-17|1997-06-07|TAKE BACK RETURN|RAIL|gle furiously fluffily regular requests|
-1410|109|4|3|37|37336.70|0.02|0.01|N|O|1997-04-17|1997-06-18|1997-04-19|COLLECT COD|TRUCK|to beans b|
-1410|188|9|4|22|23939.96|0.10|0.00|N|O|1997-07-31|1997-05-17|1997-08-19|TAKE BACK RETURN|RAIL|gular account|
-1410|66|1|5|25|24151.50|0.09|0.02|N|O|1997-05-07|1997-07-10|1997-05-16|NONE|REG AIR|unts haggle against the furiously fina|
-1411|17|7|1|9|8253.09|0.06|0.04|A|F|1995-03-08|1995-03-04|1995-03-11|DELIVER IN PERSON|AIR|accounts. furiou|
-1411|107|8|2|26|26184.60|0.02|0.02|A|F|1995-04-12|1995-01-24|1995-05-03|TAKE BACK RETURN|TRUCK|c packages. |
-1411|27|6|3|37|34299.74|0.00|0.06|A|F|1995-02-27|1995-03-02|1995-03-24|NONE|MAIL|d excuses. furiously final pear|
-1411|200|3|4|20|22004.00|0.01|0.03|R|F|1995-04-06|1995-03-16|1995-04-17|COLLECT COD|FOB|s against the|
-1411|83|4|5|46|45221.68|0.08|0.05|A|F|1995-04-03|1995-01-20|1995-04-05|DELIVER IN PERSON|REG AIR|ly daring instructions|
-1411|77|6|6|30|29312.10|0.09|0.04|A|F|1995-01-12|1995-02-01|1995-01-23|DELIVER IN PERSON|MAIL|ious foxes wake courts. caref|
-1412|58|3|1|37|35447.85|0.06|0.01|A|F|1993-04-10|1993-04-19|1993-04-12|DELIVER IN PERSON|RAIL|hely express excuses are |
-1412|156|1|2|20|21123.00|0.10|0.05|A|F|1993-07-04|1993-05-18|1993-07-22|DELIVER IN PERSON|REG AIR|odolites sleep ironically|
-1412|23|2|3|2|1846.04|0.10|0.07|R|F|1993-04-01|1993-05-03|1993-04-12|DELIVER IN PERSON|REG AIR|s among the requests are a|
-1412|167|8|4|11|11738.76|0.05|0.07|R|F|1993-05-27|1993-05-30|1993-06-07|DELIVER IN PERSON|MAIL|en packages. regular packages dete|
-1412|158|6|5|11|11639.65|0.08|0.06|A|F|1993-03-30|1993-05-25|1993-04-21|NONE|FOB|se slyly. special, unusual accounts nag bl|
-1413|178|9|1|18|19407.06|0.08|0.05|N|O|1997-10-11|1997-08-17|1997-10-25|NONE|FOB|yly bold packages haggle quickly acr|
-1413|165|10|2|49|52192.84|0.07|0.06|N|O|1997-08-28|1997-08-23|1997-09-12|DELIVER IN PERSON|MAIL|nstructions br|
-1413|42|9|3|6|5652.24|0.04|0.02|N|O|1997-09-07|1997-07-30|1997-09-21|TAKE BACK RETURN|MAIL|lithely excuses. f|
-1414|38|4|1|39|36583.17|0.10|0.03|N|O|1995-09-22|1995-09-30|1995-10-07|NONE|MAIL|quickly aro|
-1414|107|8|2|4|4028.40|0.02|0.05|N|O|1995-09-16|1995-11-01|1995-10-02|COLLECT COD|AIR| haggle quickly|
-1415|149|10|1|25|26228.50|0.06|0.00|A|F|1994-09-03|1994-07-12|1994-09-13|DELIVER IN PERSON|RAIL|ect never fluff|
-1440|193|6|1|3|3279.57|0.06|0.01|N|O|1995-10-30|1995-10-17|1995-11-08|COLLECT COD|SHIP|instructions boost. fluffily regul|
-1440|114|4|2|46|46649.06|0.02|0.03|N|O|1995-09-21|1995-10-19|1995-10-19|NONE|RAIL|blithely even instructions. |
-1441|144|7|1|5|5220.70|0.04|0.01|N|O|1997-05-17|1997-05-11|1997-05-30|COLLECT COD|MAIL|egular courts. fluffily even grouches |
-1441|177|7|2|5|5385.85|0.02|0.05|N|O|1997-04-25|1997-04-16|1997-05-23|COLLECT COD|FOB|he quickly enticing pac|
-1441|118|5|3|14|14253.54|0.01|0.03|N|O|1997-06-30|1997-04-29|1997-07-24|DELIVER IN PERSON|REG AIR|special requests ha|
-1441|160|8|4|37|39225.92|0.01|0.00|N|O|1997-04-26|1997-04-27|1997-04-29|NONE|REG AIR|accounts. slyly special dolphins b|
-1441|72|10|5|34|33050.38|0.09|0.00|N|O|1997-06-12|1997-05-11|1997-06-29|TAKE BACK RETURN|RAIL|e carefully. blithely ironic dep|
-1441|25|4|6|15|13875.30|0.09|0.08|N|O|1997-05-21|1997-05-06|1997-06-04|NONE|REG AIR| dependencies-- cour|
-1441|96|10|7|50|49804.50|0.03|0.01|N|O|1997-06-07|1997-05-12|1997-06-08|NONE|SHIP| requests. blithely e|
-1442|26|5|1|8|7408.16|0.05|0.01|A|F|1994-10-31|1994-09-04|1994-11-25|COLLECT COD|AIR|c deposits haggle after the even|
-1443|34|10|1|47|43899.41|0.04|0.06|N|O|1997-02-05|1997-02-02|1997-03-03|NONE|RAIL|carefully ironic requests sl|
-1444|170|5|1|42|44947.14|0.01|0.02|R|F|1994-12-22|1995-03-03|1994-12-31|NONE|SHIP|ly bold packages boost regular ideas. spe|
-1444|57|2|2|34|32539.70|0.04|0.08|A|F|1995-02-22|1995-02-15|1995-03-19|TAKE BACK RETURN|AIR|y. doggedly pend|
-1444|155|3|3|34|35875.10|0.02|0.07|R|F|1994-12-17|1995-01-12|1995-01-03|COLLECT COD|AIR|ular accounts |
-1444|119|6|4|6|6114.66|0.06|0.03|A|F|1995-01-07|1995-03-05|1995-01-17|COLLECT COD|RAIL|al accounts. br|
-1444|20|1|5|35|32200.70|0.02|0.05|A|F|1995-02-25|1995-03-05|1995-03-24|DELIVER IN PERSON|SHIP|aggle furiou|
-1444|33|4|6|42|39187.26|0.00|0.02|A|F|1994-12-16|1995-02-18|1994-12-22|DELIVER IN PERSON|RAIL|ss requests. ironic ideas wake above|
-1444|82|3|7|12|11784.96|0.00|0.03|R|F|1994-12-23|1995-01-15|1995-01-13|COLLECT COD|TRUCK|ly among the bol|
-1445|100|1|1|24|24002.40|0.01|0.00|A|F|1995-02-21|1995-02-22|1995-03-18|DELIVER IN PERSON|SHIP|al accounts use furiously a|
-1445|67|8|2|48|46418.88|0.10|0.02|A|F|1995-02-28|1995-03-16|1995-03-12|COLLECT COD|MAIL|. final ideas are carefully dar|
-1445|192|4|3|7|7645.33|0.10|0.04|A|F|1995-04-25|1995-02-25|1995-05-10|NONE|SHIP|structions: slyly regular re|
-1445|28|1|4|17|15776.34|0.04|0.07|A|F|1995-04-02|1995-04-04|1995-05-01|COLLECT COD|FOB|ges. furiously regular pint|
-1445|135|1|5|24|24843.12|0.10|0.06|R|F|1995-04-23|1995-02-16|1995-05-18|NONE|REG AIR|rate after the carefully reg|
-1445|168|9|6|39|41658.24|0.03|0.02|A|F|1995-02-05|1995-02-20|1995-02-06|NONE|MAIL|ully unusual reques|
-1446|72|3|1|31|30134.17|0.10|0.02|N|O|1998-05-01|1998-05-17|1998-05-30|NONE|REG AIR|. slyly reg|
-1447|167|4|1|19|20276.04|0.06|0.04|A|F|1993-01-31|1992-12-07|1993-02-04|COLLECT COD|MAIL|. quickly ironic |
-1447|32|3|2|6|5592.18|0.01|0.05|A|F|1992-10-24|1992-12-10|1992-11-05|DELIVER IN PERSON|AIR|as! regular packages poach above the|
-1447|39|5|3|9|8451.27|0.04|0.00|R|F|1992-11-15|1993-01-07|1992-11-29|DELIVER IN PERSON|MAIL|counts wake s|
-1447|22|5|4|8|7376.16|0.09|0.08|R|F|1992-11-20|1993-01-12|1992-12-14|COLLECT COD|FOB|ost carefully |
-1447|130|1|5|23|23692.99|0.02|0.07|A|F|1992-12-07|1992-12-25|1993-01-06|TAKE BACK RETURN|AIR| dazzle quickly deposits. f|
-1447|200|3|6|41|45108.20|0.08|0.02|R|F|1993-01-06|1993-01-05|1993-01-13|TAKE BACK RETURN|MAIL|rts boost s|
-1472|8|5|1|36|32688.00|0.04|0.05|N|O|1996-11-06|1996-11-13|1996-11-12|COLLECT COD|SHIP|riously silent deposits to the pending d|
-1472|133|4|2|26|26861.38|0.03|0.05|N|O|1996-11-08|1996-11-13|1996-12-02|DELIVER IN PERSON|FOB|ic packages w|
-1472|1|8|3|6|5406.00|0.08|0.01|N|O|1996-10-24|1996-11-19|1996-11-23|COLLECT COD|FOB|onic theodolites hinder slyly slyly r|
-1473|54|9|1|50|47702.50|0.04|0.03|N|O|1997-05-05|1997-05-20|1997-05-09|NONE|TRUCK|requests wake express deposits. special, ir|
-1473|68|3|2|32|30977.92|0.00|0.08|N|O|1997-04-18|1997-05-12|1997-05-10|DELIVER IN PERSON|REG AIR|out the packages lose furiously ab|
-1474|15|5|1|5|4575.05|0.05|0.04|A|F|1995-04-22|1995-02-20|1995-05-06|COLLECT COD|SHIP|ully final a|
-1474|123|8|2|30|30693.60|0.04|0.02|A|F|1995-03-23|1995-02-11|1995-04-17|DELIVER IN PERSON|TRUCK|usly. evenly express |
-1474|92|5|3|18|17857.62|0.06|0.02|A|F|1995-01-23|1995-03-28|1995-02-03|NONE|RAIL|after the special|
-1475|168|3|1|15|16022.40|0.08|0.06|N|O|1998-02-12|1997-12-17|1998-03-02|TAKE BACK RETURN|SHIP|xpress requests haggle after the final, fi|
-1475|118|9|2|18|18325.98|0.07|0.00|N|O|1998-03-08|1998-01-18|1998-03-10|TAKE BACK RETURN|AIR|al deposits use. ironic packages along the |
-1475|144|1|3|30|31324.20|0.03|0.02|N|O|1998-03-11|1997-12-30|1998-03-15|COLLECT COD|REG AIR| regular theodolites mold across th|
-1475|187|8|4|50|54359.00|0.03|0.05|N|O|1997-12-14|1997-12-13|1997-12-21|COLLECT COD|AIR|. slyly bold re|
-1475|32|3|5|33|30756.99|0.01|0.06|N|O|1998-01-02|1998-01-27|1998-01-11|NONE|FOB|quickly fluffy|
-1475|50|7|6|12|11400.60|0.04|0.04|N|O|1998-01-09|1997-12-30|1998-01-23|NONE|TRUCK|arefully-- excuses sublate|
-1475|112|3|7|23|23278.53|0.02|0.00|N|O|1998-02-13|1998-02-05|1998-03-08|NONE|TRUCK|hely regular hocke|
-1476|31|7|1|20|18620.60|0.02|0.03|N|O|1996-08-11|1996-09-18|1996-08-26|TAKE BACK RETURN|AIR|. bold deposits are carefully amo|
-1477|72|1|1|31|30134.17|0.00|0.06|N|O|1997-12-16|1997-09-30|1997-12-17|COLLECT COD|RAIL| requests. fluffily final |
-1477|110|7|2|8|8080.88|0.09|0.05|N|O|1997-10-25|1997-10-18|1997-11-16|COLLECT COD|MAIL|ironic realms wake unusual, even ac|
-1477|125|6|3|42|43055.04|0.06|0.00|N|O|1997-11-02|1997-11-02|1997-11-20|DELIVER IN PERSON|SHIP|lithely after the ir|
-1477|107|8|4|32|32227.20|0.05|0.08|N|O|1997-09-12|1997-10-26|1997-10-12|TAKE BACK RETURN|AIR|; quickly regula|
-1477|115|6|5|41|41619.51|0.04|0.06|N|O|1997-12-16|1997-10-31|1998-01-12|DELIVER IN PERSON|REG AIR|y. final pearls kindle. accounts |
-1477|69|6|6|49|47483.94|0.06|0.00|N|O|1997-11-18|1997-11-06|1997-11-27|COLLECT COD|FOB|ise according to the sly, bold p|
-1477|120|4|7|33|33663.96|0.06|0.00|N|O|1997-11-12|1997-11-06|1997-11-24|DELIVER IN PERSON|TRUCK|yly regular p|
-1478|34|5|1|21|19614.63|0.00|0.06|N|O|1997-09-20|1997-10-25|1997-10-06|TAKE BACK RETURN|MAIL| fluffily pending acc|
-1479|149|6|1|33|34621.62|0.10|0.01|N|O|1996-03-12|1996-02-28|1996-03-31|DELIVER IN PERSON|FOB| carefully special courts affix. fluff|
-1504|82|3|1|42|41247.36|0.02|0.03|R|F|1992-10-18|1992-10-14|1992-11-10|TAKE BACK RETURN|FOB|ep. carefully ironic excuses haggle quickl|
-1504|103|10|2|22|22068.20|0.04|0.03|A|F|1992-09-09|1992-10-29|1992-09-10|NONE|REG AIR| accounts sleep. furiou|
-1504|178|8|3|9|9703.53|0.07|0.02|R|F|1992-11-02|1992-10-12|1992-11-15|TAKE BACK RETURN|RAIL|y slyly regular courts.|
-1504|115|2|4|10|10151.10|0.04|0.07|A|F|1992-09-22|1992-10-22|1992-10-13|TAKE BACK RETURN|TRUCK|final theodolites. furiously e|
-1504|20|10|5|7|6440.14|0.02|0.00|R|F|1992-11-20|1992-11-23|1992-12-13|COLLECT COD|MAIL|y final packa|
-1505|120|7|1|4|4080.48|0.09|0.00|A|F|1992-12-14|1992-11-11|1993-01-02|COLLECT COD|SHIP|side of the s|
-1505|123|8|2|50|51156.00|0.00|0.02|R|F|1992-11-22|1992-09-24|1992-11-26|TAKE BACK RETURN|FOB|lyly special platelets. requests ar|
-1506|133|4|1|46|47523.98|0.04|0.05|R|F|1993-01-18|1992-11-11|1993-02-09|COLLECT COD|REG AIR|sits whithout the blithely ironic packages|
-1506|114|4|2|30|30423.30|0.07|0.02|A|F|1992-11-22|1992-10-25|1992-12-04|DELIVER IN PERSON|FOB|deposits cajole |
-1506|191|3|3|28|30553.32|0.10|0.06|A|F|1992-09-22|1992-11-19|1992-10-09|TAKE BACK RETURN|AIR| unwind carefully: theodolit|
-1506|28|7|4|37|34336.74|0.00|0.03|R|F|1992-11-04|1992-12-01|1992-11-23|TAKE BACK RETURN|TRUCK|carefully bold dolphins. accounts su|
-1506|195|8|5|15|16427.85|0.05|0.00|R|F|1992-09-24|1992-11-11|1992-10-05|NONE|REG AIR| carefully fluffy packages-- caref|
-1506|50|3|6|38|36101.90|0.05|0.02|R|F|1992-12-02|1992-12-19|1992-12-29|NONE|REG AIR|xpress, regular excuse|
-1506|169|6|7|4|4276.64|0.07|0.00|R|F|1993-01-03|1992-12-06|1993-01-05|COLLECT COD|REG AIR|posits. furiou|
-1507|68|5|1|25|24201.50|0.01|0.08|R|F|1994-01-07|1994-01-06|1994-01-11|NONE|RAIL|xes. slyly busy de|
-1507|40|6|2|33|31021.32|0.04|0.02|A|F|1993-10-29|1993-12-23|1993-11-14|DELIVER IN PERSON|REG AIR| asymptotes nag furiously above t|
-1507|86|7|3|39|38457.12|0.03|0.07|R|F|1993-11-04|1993-12-16|1993-12-03|TAKE BACK RETURN|REG AIR|ly even instructions.|
-1508|51|3|1|16|15216.80|0.02|0.06|N|O|1998-06-21|1998-05-30|1998-07-11|COLLECT COD|MAIL|riously across the ironic, unusua|
-1508|25|4|2|20|18500.40|0.06|0.01|N|O|1998-04-17|1998-06-11|1998-05-17|DELIVER IN PERSON|MAIL|nic platelets. carefully final fra|
-1508|93|7|3|43|42702.87|0.01|0.02|N|O|1998-06-01|1998-06-24|1998-06-03|TAKE BACK RETURN|TRUCK|ndencies h|
-1508|148|7|4|1|1048.14|0.02|0.02|N|O|1998-07-13|1998-06-03|1998-07-17|TAKE BACK RETURN|AIR|s the blithely bold instruction|
-1508|135|6|5|29|30018.77|0.02|0.00|N|O|1998-08-03|1998-07-08|1998-08-22|COLLECT COD|RAIL|r instructions. carefully|
-1508|3|10|6|5|4515.00|0.06|0.08|N|O|1998-05-22|1998-07-06|1998-06-04|COLLECT COD|REG AIR|cording to the furiously ironic depe|
-1508|117|8|7|38|38650.18|0.03|0.06|N|O|1998-04-30|1998-06-23|1998-05-18|DELIVER IN PERSON|RAIL|tes wake furiously regular w|
-1509|28|7|1|14|12992.28|0.04|0.01|A|F|1993-10-04|1993-09-25|1993-10-21|NONE|TRUCK|nal realms|
-1509|11|2|2|46|41906.46|0.08|0.02|A|F|1993-10-15|1993-10-04|1993-11-01|TAKE BACK RETURN|FOB|uriously regula|
-1509|107|8|3|17|17120.70|0.06|0.05|A|F|1993-07-25|1993-08-28|1993-08-19|DELIVER IN PERSON|AIR| furiously. blithely regular ideas haggle c|
-1509|20|4|4|11|10120.22|0.03|0.08|R|F|1993-11-04|1993-10-03|1993-11-14|TAKE BACK RETURN|FOB|ily ironic packages nod carefully.|
-1509|90|1|5|37|36633.33|0.01|0.08|A|F|1993-08-31|1993-09-10|1993-09-24|NONE|FOB|he slyly even deposits wake a|
-1509|187|8|6|31|33702.58|0.04|0.03|A|F|1993-07-14|1993-08-21|1993-08-06|COLLECT COD|SHIP|ic deposits cajole carefully. quickly bold |
-1509|157|2|7|27|28543.05|0.01|0.01|A|F|1993-09-29|1993-09-08|1993-10-04|TAKE BACK RETURN|FOB|lithely after the |
-1510|98|2|1|11|10978.99|0.09|0.04|N|O|1996-09-23|1996-12-03|1996-10-01|DELIVER IN PERSON|RAIL|e of the unusual accounts. stealthy deposit|
-1510|84|5|2|24|23617.92|0.05|0.04|N|O|1996-10-07|1996-10-22|1996-11-03|DELIVER IN PERSON|REG AIR|yly brave theod|
-1510|190|1|3|36|39246.84|0.07|0.02|N|O|1996-10-02|1996-11-23|1996-10-05|NONE|SHIP|old deposits along the carefully|
-1510|182|3|4|8|8657.44|0.01|0.08|N|O|1996-10-26|1996-11-07|1996-10-30|TAKE BACK RETURN|RAIL|blithely express|
-1510|59|10|5|27|25894.35|0.08|0.06|N|O|1996-10-20|1996-12-05|1996-11-02|NONE|MAIL|he blithely regular req|
-1510|14|5|6|3|2742.03|0.05|0.02|N|O|1996-10-31|1996-12-03|1996-11-13|COLLECT COD|RAIL|along the slyly regular pin|
-1510|22|1|7|50|46101.00|0.04|0.05|N|O|1996-11-01|1996-10-17|1996-11-28|NONE|MAIL|even packages. carefully regular fo|
-1511|98|2|1|29|28944.61|0.01|0.04|N|O|1997-03-17|1997-02-11|1997-03-27|DELIVER IN PERSON|AIR|s cajole furiously against |
-1511|62|9|2|32|30785.92|0.04|0.01|N|O|1997-01-06|1997-03-21|1997-01-26|TAKE BACK RETURN|REG AIR| deposits. carefully ironi|
-1536|194|5|1|5|5470.95|0.08|0.03|N|O|1997-02-08|1997-03-11|1997-03-02|COLLECT COD|MAIL|requests sleep pe|
-1537|18|2|1|17|15606.17|0.01|0.03|A|F|1992-04-12|1992-04-19|1992-04-13|NONE|TRUCK|he regular pack|
-1537|179|8|2|50|53958.50|0.08|0.00|R|F|1992-05-30|1992-05-14|1992-06-23|TAKE BACK RETURN|MAIL|special packages haggle slyly at the silent|
-1537|13|4|3|44|40172.44|0.05|0.04|R|F|1992-04-01|1992-03-31|1992-04-21|NONE|TRUCK|lar courts.|
-1537|140|6|4|3|3120.42|0.08|0.07|R|F|1992-03-20|1992-04-14|1992-03-21|TAKE BACK RETURN|SHIP|s, final ideas detect sl|
-1538|102|5|1|32|32067.20|0.05|0.05|N|O|1995-07-08|1995-07-29|1995-08-01|TAKE BACK RETURN|RAIL|uses maintain blithely. fluffily|
-1538|192|3|2|27|29489.13|0.05|0.01|N|O|1995-09-19|1995-08-03|1995-09-24|DELIVER IN PERSON|TRUCK|ngly even packag|
-1538|130|3|3|36|37084.68|0.08|0.04|N|O|1995-07-11|1995-09-10|1995-07-26|DELIVER IN PERSON|MAIL|al deposits mo|
-1538|104|1|4|28|28114.80|0.10|0.04|N|O|1995-09-19|1995-08-27|1995-10-10|COLLECT COD|RAIL|bout the fluffily unusual|
-1538|178|7|5|13|14016.21|0.01|0.05|N|O|1995-06-26|1995-07-30|1995-07-25|NONE|SHIP|ly. packages sleep f|
-1538|128|3|6|42|43181.04|0.08|0.08|N|O|1995-10-10|1995-09-12|1995-11-08|DELIVER IN PERSON|TRUCK|equests cajole blithely |
-1539|196|9|1|21|23019.99|0.08|0.02|R|F|1995-04-19|1995-05-10|1995-04-27|COLLECT COD|TRUCK|ounts haggle. busy|
-1539|86|7|2|11|10846.88|0.01|0.08|A|F|1995-05-27|1995-04-13|1995-06-10|TAKE BACK RETURN|TRUCK|ly express requests. furiously |
-1539|68|5|3|7|6776.42|0.09|0.04|R|F|1995-05-14|1995-04-16|1995-05-30|DELIVER IN PERSON|AIR|. fluffily reg|
-1540|173|1|1|38|40780.46|0.03|0.01|R|F|1992-09-30|1992-10-27|1992-10-12|TAKE BACK RETURN|SHIP| final grouches bo|
-1540|60|2|2|35|33602.10|0.02|0.07|R|F|1992-10-31|1992-09-04|1992-11-05|TAKE BACK RETURN|SHIP|e blithely a|
-1540|8|3|3|25|22700.00|0.08|0.04|R|F|1992-11-15|1992-10-24|1992-12-14|DELIVER IN PERSON|SHIP|ironic deposits amo|
-1540|25|8|4|6|5550.12|0.09|0.03|R|F|1992-08-28|1992-09-17|1992-09-14|COLLECT COD|MAIL|ing to the slyly express asymptote|
-1540|87|8|5|27|26651.16|0.10|0.08|R|F|1992-12-02|1992-10-18|1992-12-31|NONE|SHIP|carefully final packages; b|
-1541|64|3|1|44|42418.64|0.10|0.05|N|O|1995-08-24|1995-07-13|1995-08-26|TAKE BACK RETURN|MAIL|o beans boost fluffily abou|
-1541|26|7|2|8|7408.16|0.10|0.08|N|F|1995-06-05|1995-08-07|1995-06-21|TAKE BACK RETURN|TRUCK|y pending packages. blithely fi|
-1542|58|9|1|37|35447.85|0.07|0.06|A|F|1993-12-15|1993-10-17|1994-01-07|TAKE BACK RETURN|REG AIR|e blithely unusual accounts. quic|
-1542|3|6|2|12|10836.00|0.09|0.06|R|F|1993-10-29|1993-11-02|1993-11-09|TAKE BACK RETURN|RAIL|carefully |
-1542|6|7|3|18|16308.00|0.05|0.05|R|F|1993-10-17|1993-11-15|1993-10-26|TAKE BACK RETURN|FOB|pending instr|
-1542|143|10|4|21|21905.94|0.01|0.05|R|F|1993-10-13|1993-12-13|1993-11-12|NONE|RAIL|y pending foxes nag blithely |
-1542|155|7|5|46|48536.90|0.00|0.00|R|F|1993-09-28|1993-11-03|1993-10-15|COLLECT COD|FOB|ial instructions. ironically|
-1543|71|10|1|34|33016.38|0.02|0.08|N|O|1997-05-25|1997-03-30|1997-06-04|NONE|AIR|ic requests are ac|
-1543|115|9|2|6|6090.66|0.09|0.01|N|O|1997-04-16|1997-05-20|1997-05-16|DELIVER IN PERSON|MAIL| among the carefully bold or|
-1543|67|8|3|42|40616.52|0.06|0.01|N|O|1997-05-26|1997-03-30|1997-06-12|DELIVER IN PERSON|FOB|its sleep until the fur|
-1543|189|10|4|42|45745.56|0.05|0.06|N|O|1997-04-11|1997-04-11|1997-04-23|TAKE BACK RETURN|MAIL|xpress instructions. regular acc|
-1543|40|1|5|9|8460.36|0.08|0.06|N|O|1997-03-14|1997-05-19|1997-03-26|DELIVER IN PERSON|FOB|ravely special requests |
-1543|49|8|6|3|2847.12|0.10|0.04|N|O|1997-03-29|1997-05-10|1997-04-22|COLLECT COD|MAIL|sleep along the furiou|
-1543|68|7|7|3|2904.18|0.00|0.02|N|O|1997-03-22|1997-04-06|1997-03-30|NONE|AIR|quickly. final accounts haggle slyl|
-1568|90|1|1|36|35643.24|0.02|0.03|N|O|1997-05-31|1997-04-22|1997-06-21|TAKE BACK RETURN|RAIL|platelets-- furiously sly excu|
-1568|9|2|2|46|41814.00|0.04|0.00|N|O|1997-04-06|1997-04-08|1997-04-23|TAKE BACK RETURN|MAIL|g the blithely even acco|
-1569|75|3|1|5|4875.35|0.07|0.00|N|O|1998-04-16|1998-06-21|1998-04-18|COLLECT COD|REG AIR| packages. ironic, even excuses a|
-1569|39|10|2|16|15024.48|0.01|0.08|N|O|1998-04-26|1998-06-16|1998-05-26|COLLECT COD|MAIL|deposits. blithely final asymptotes ac|
-1569|49|10|3|43|40808.72|0.10|0.03|N|O|1998-06-05|1998-05-31|1998-06-28|DELIVER IN PERSON|FOB| instructions.|
-1569|70|1|4|30|29102.10|0.02|0.03|N|O|1998-07-19|1998-06-04|1998-08-10|NONE|SHIP|packages. excuses lose evenly carefully reg|
-1570|183|4|1|25|27079.50|0.00|0.06|N|O|1998-05-03|1998-06-02|1998-06-02|DELIVER IN PERSON|REG AIR|its. slyly regular sentiments|
-1570|86|7|2|7|6902.56|0.05|0.05|N|O|1998-07-10|1998-06-01|1998-07-23|TAKE BACK RETURN|MAIL|requests boost quickly re|
-1571|52|3|1|47|44746.35|0.00|0.05|R|F|1992-12-07|1993-02-24|1993-01-01|TAKE BACK RETURN|REG AIR|ng to the fluffily unusual |
-1571|183|4|2|6|6499.08|0.03|0.00|A|F|1993-01-08|1993-02-13|1993-02-07|COLLECT COD|SHIP| special, ironic depo|
-1571|59|7|3|18|17262.90|0.05|0.08|A|F|1993-01-09|1993-01-12|1993-01-31|COLLECT COD|AIR| pending grouches |
-1571|101|4|4|48|48052.80|0.05|0.05|A|F|1992-12-28|1993-01-04|1993-01-04|DELIVER IN PERSON|RAIL|slyly pending p|
-1571|42|5|5|10|9420.40|0.03|0.06|R|F|1992-12-12|1993-02-13|1992-12-29|DELIVER IN PERSON|AIR|lets. carefully regular ideas wake|
-1571|34|10|6|24|22416.72|0.05|0.07|A|F|1993-03-22|1993-01-31|1993-04-09|NONE|TRUCK|warthogs wake carefully acro|
-1572|24|5|1|41|37884.82|0.02|0.00|N|O|1996-05-16|1996-04-09|1996-05-28|TAKE BACK RETURN|REG AIR|. pinto beans alongside|
-1572|93|7|2|10|9930.90|0.04|0.06|N|O|1996-05-17|1996-03-26|1996-05-19|NONE|AIR| accounts affix slyly. |
-1573|186|7|1|5|5430.90|0.05|0.01|A|F|1993-04-24|1993-03-13|1993-05-17|TAKE BACK RETURN|MAIL|ymptotes could u|
-1573|31|2|2|17|15827.51|0.00|0.06|R|F|1993-02-24|1993-02-16|1993-03-08|TAKE BACK RETURN|TRUCK|carefully regular deposits. |
-1573|83|4|3|16|15729.28|0.04|0.03|A|F|1993-03-15|1993-03-16|1993-03-31|COLLECT COD|AIR|ely. furiously final requests wake slyl|
-1573|194|7|4|11|12036.09|0.09|0.01|R|F|1993-03-23|1993-03-24|1993-04-12|TAKE BACK RETURN|RAIL|nently pending|
-1573|137|8|5|7|7259.91|0.00|0.01|R|F|1993-01-30|1993-03-14|1993-02-27|DELIVER IN PERSON|SHIP|eodolites sleep slyly. slyly f|
-1573|154|6|6|30|31624.50|0.03|0.01|A|F|1992-12-29|1993-03-06|1993-01-02|DELIVER IN PERSON|TRUCK|. blithely even theodolites boos|
-1574|48|7|1|41|38869.64|0.06|0.02|N|O|1997-03-08|1997-02-09|1997-04-01|COLLECT COD|AIR|s. slyly regular depen|
-1574|191|5|2|50|54559.50|0.00|0.05|N|O|1996-12-14|1997-02-14|1996-12-16|TAKE BACK RETURN|FOB|le regular, regular foxes. blithely e|
-1574|55|3|3|25|23876.25|0.06|0.02|N|O|1997-01-16|1997-02-14|1997-02-12|DELIVER IN PERSON|TRUCK|ly silent accounts.|
-1574|191|4|4|6|6547.14|0.03|0.05|N|O|1997-02-24|1997-02-03|1997-03-01|NONE|AIR|e silent, final packages. speci|
-1574|109|4|5|6|6054.60|0.05|0.05|N|O|1997-02-09|1997-03-02|1997-02-14|COLLECT COD|MAIL|nic, final ideas snooze. |
-1574|5|2|6|42|38010.00|0.07|0.01|N|O|1996-12-19|1997-01-13|1996-12-28|NONE|FOB|o beans according t|
-1574|136|7|7|14|14505.82|0.04|0.01|N|O|1996-12-30|1997-01-19|1997-01-20|NONE|AIR|ily bold a|
-1575|29|10|1|42|39018.84|0.05|0.08|N|O|1995-10-21|1995-11-25|1995-10-24|DELIVER IN PERSON|RAIL|ly pending pinto beans.|
-1575|36|7|2|39|36505.17|0.00|0.06|N|O|1995-10-30|1995-10-15|1995-11-10|COLLECT COD|TRUCK| ironic requests snooze ironic, regular acc|
-1575|2|5|3|12|10824.00|0.01|0.05|N|O|1995-12-27|1995-11-11|1996-01-23|TAKE BACK RETURN|AIR| bold accounts. furi|
-1575|111|1|4|39|39433.29|0.07|0.00|N|O|1995-09-23|1995-11-05|1995-09-25|TAKE BACK RETURN|TRUCK| after the unusual asym|
-1575|83|4|5|10|9830.80|0.09|0.00|N|O|1996-01-10|1995-11-20|1996-01-13|DELIVER IN PERSON|RAIL|k excuses. pinto beans wake a|
-1575|178|6|6|14|15094.38|0.08|0.06|N|O|1995-10-31|1995-12-06|1995-11-30|NONE|AIR|beans breach among the furiously specia|
-1575|117|1|7|48|48821.28|0.08|0.04|N|O|1995-11-19|1995-10-25|1995-12-07|DELIVER IN PERSON|TRUCK|cies. regu|
-1600|172|10|1|20|21443.40|0.02|0.01|R|F|1993-06-16|1993-04-23|1993-07-02|COLLECT COD|FOB|pths sleep blithely about the|
-1600|44|3|2|48|45313.92|0.07|0.02|R|F|1993-04-17|1993-04-14|1993-05-03|DELIVER IN PERSON|FOB|furiously silent foxes could wake. car|
-1600|39|10|3|8|7512.24|0.04|0.07|R|F|1993-03-07|1993-04-22|1993-03-26|TAKE BACK RETURN|FOB|cajole furiously fluf|
-1600|69|8|4|25|24226.50|0.00|0.06|A|F|1993-05-25|1993-04-07|1993-06-05|TAKE BACK RETURN|REG AIR|press packages. ironic excuses bo|
-1600|147|8|5|30|31414.20|0.03|0.08|R|F|1993-06-03|1993-05-03|1993-06-07|DELIVER IN PERSON|RAIL|al escapades alongside of the depo|
-1601|167|8|1|6|6402.96|0.00|0.00|A|F|1994-10-19|1994-09-28|1994-10-23|COLLECT COD|SHIP| bold sheaves. furiously per|
-1601|175|3|2|50|53758.50|0.03|0.02|R|F|1994-12-24|1994-10-23|1995-01-11|COLLECT COD|FOB|ideas doubt|
-1601|90|1|3|14|13861.26|0.04|0.08|R|F|1994-09-17|1994-11-22|1994-10-03|DELIVER IN PERSON|RAIL|he special, fin|
-1602|183|4|1|4|4332.72|0.08|0.06|R|F|1993-10-31|1993-09-05|1993-11-21|NONE|RAIL|y. even excuses|
-1603|39|5|1|1|939.03|0.08|0.00|R|F|1993-08-17|1993-09-04|1993-08-22|TAKE BACK RETURN|REG AIR|d accounts. special warthogs use fur|
-1603|66|5|2|29|28015.74|0.06|0.08|A|F|1993-09-28|1993-09-20|1993-10-28|NONE|SHIP|ses wake furiously. theodolite|
-1604|42|3|1|15|14130.60|0.09|0.08|R|F|1993-09-22|1993-09-03|1993-09-29|TAKE BACK RETURN|MAIL| instructions haggle|
-1604|141|4|2|37|38522.18|0.06|0.06|A|F|1993-08-22|1993-09-21|1993-09-10|COLLECT COD|SHIP|requests. blithely ironic somas s|
-1604|114|8|3|19|19268.09|0.09|0.07|A|F|1993-10-15|1993-10-04|1993-11-09|COLLECT COD|RAIL| ideas. bol|
-1604|175|4|4|15|16127.55|0.03|0.00|R|F|1993-09-10|1993-08-31|1993-09-30|TAKE BACK RETURN|RAIL|ending realms along the special, p|
-1604|21|4|5|23|21183.46|0.08|0.05|A|F|1993-10-11|1993-08-30|1993-10-18|DELIVER IN PERSON|RAIL|en requests. blithely fin|
-1605|142|1|1|47|48980.58|0.00|0.01|N|O|1998-04-29|1998-06-12|1998-05-20|DELIVER IN PERSON|AIR|. carefully r|
-1605|180|8|2|18|19443.24|0.10|0.00|N|O|1998-05-13|1998-06-17|1998-06-03|COLLECT COD|REG AIR|ly regular foxes wake carefully. bol|
-1605|59|10|3|39|37402.95|0.02|0.03|N|O|1998-07-12|1998-06-05|1998-08-09|DELIVER IN PERSON|MAIL|nal dependencies-- quickly final frets acc|
-1605|183|4|4|25|27079.50|0.06|0.02|N|O|1998-05-26|1998-06-14|1998-06-05|COLLECT COD|AIR|ole carefully car|
-1606|115|6|1|21|21317.31|0.04|0.00|N|O|1997-06-02|1997-07-02|1997-06-27|DELIVER IN PERSON|RAIL| pending theodolites prom|
-1606|174|3|2|35|37595.95|0.00|0.02|N|O|1997-06-20|1997-06-19|1997-06-22|COLLECT COD|TRUCK|carefully sil|
-1606|100|4|3|23|23002.30|0.00|0.06|N|O|1997-04-19|1997-06-26|1997-04-30|NONE|MAIL|ously final requests. slowly ironic ex|
-1606|97|9|4|20|19941.80|0.02|0.04|N|O|1997-05-01|1997-05-26|1997-05-28|TAKE BACK RETURN|TRUCK|fily carefu|
-1606|71|10|5|14|13594.98|0.10|0.01|N|O|1997-05-19|1997-07-05|1997-06-10|COLLECT COD|FOB|structions haggle f|
-1607|190|1|1|2|2180.38|0.02|0.00|N|O|1996-01-11|1996-02-15|1996-01-19|DELIVER IN PERSON|MAIL|packages haggle. regular requests boost s|
-1607|119|3|2|37|37707.07|0.05|0.02|N|O|1996-02-27|1996-02-18|1996-03-16|NONE|AIR|alongside |
-1607|123|4|3|39|39901.68|0.00|0.00|N|O|1996-02-01|1996-02-12|1996-02-16|NONE|FOB|uches cajole. accounts ar|
-1607|76|6|4|34|33186.38|0.05|0.06|N|O|1996-01-06|1996-02-24|1996-01-10|DELIVER IN PERSON|SHIP| quickly above the |
-1607|178|8|5|48|51752.16|0.00|0.05|N|O|1996-02-22|1996-02-13|1996-03-09|TAKE BACK RETURN|MAIL|ular forges. deposits a|
-1632|191|5|1|47|51285.93|0.08|0.00|N|O|1997-01-25|1997-02-09|1997-02-19|TAKE BACK RETURN|RAIL|g to the closely special no|
-1632|148|7|2|14|14673.96|0.08|0.05|N|O|1997-01-15|1997-02-25|1997-01-28|NONE|RAIL|oxes. deposits nag slyly along the slyly |
-1632|177|6|3|47|50626.99|0.03|0.04|N|O|1997-01-29|1997-03-03|1997-02-21|NONE|MAIL|sts. blithely regular |
-1632|57|9|4|33|31582.65|0.09|0.02|N|O|1997-04-01|1997-02-24|1997-04-29|TAKE BACK RETURN|REG AIR|ructions! slyly|
-1632|142|1|5|43|44812.02|0.10|0.03|N|O|1997-02-24|1997-02-19|1997-03-25|DELIVER IN PERSON|FOB|ts. blithe, bold ideas cajo|
-1633|178|7|1|35|37735.95|0.01|0.02|N|O|1996-01-09|1995-12-02|1996-01-21|COLLECT COD|REG AIR|ly against the dolph|
-1633|5|6|2|15|13575.00|0.00|0.05|N|O|1995-12-13|1995-11-13|1996-01-04|TAKE BACK RETURN|FOB|ges wake fluffil|
-1634|48|9|1|21|19908.84|0.00|0.00|N|O|1996-10-04|1996-10-22|1996-11-01|NONE|MAIL|counts alo|
-1634|172|3|2|44|47175.48|0.05|0.01|N|O|1996-09-17|1996-11-09|1996-10-03|COLLECT COD|SHIP|requests affix slyly. quickly even pack|
-1634|19|10|3|21|19299.21|0.06|0.07|N|O|1996-11-16|1996-10-21|1996-11-27|NONE|TRUCK|y along the excuses.|
-1634|68|3|4|17|16457.02|0.08|0.07|N|O|1996-10-29|1996-10-15|1996-11-02|TAKE BACK RETURN|SHIP|cial, bold platelets alongside of the f|
-1634|76|7|5|2|1952.14|0.07|0.04|N|O|1996-11-22|1996-10-28|1996-12-17|NONE|SHIP|ly. carefully regular asymptotes wake|
-1634|170|9|6|11|11771.87|0.01|0.08|N|O|1996-10-04|1996-12-06|1996-10-14|DELIVER IN PERSON|SHIP|final requests |
-1634|13|7|7|35|31955.35|0.06|0.02|N|O|1996-11-25|1996-11-25|1996-12-12|TAKE BACK RETURN|RAIL|cies. regular, special de|
-1635|71|1|1|3|2913.21|0.06|0.08|N|O|1997-03-13|1997-03-25|1997-03-27|COLLECT COD|FOB| quickly ironic r|
-1635|90|1|2|8|7920.72|0.04|0.05|N|O|1997-04-30|1997-04-21|1997-05-09|DELIVER IN PERSON|AIR|ravely carefully express |
-1635|114|5|3|20|20282.20|0.07|0.01|N|O|1997-05-19|1997-04-01|1997-06-17|TAKE BACK RETURN|FOB|oost according to the carefully even accou|
-1635|77|5|4|40|39082.80|0.01|0.04|N|O|1997-02-25|1997-03-20|1997-03-12|TAKE BACK RETURN|RAIL|uriously up the ironic deposits. slyly i|
-1636|85|6|1|2|1970.16|0.09|0.03|N|O|1997-09-26|1997-08-22|1997-10-05|NONE|TRUCK|nal foxes cajole above the blithely reg|
-1636|169|10|2|45|48112.20|0.03|0.01|N|O|1997-07-14|1997-08-08|1997-07-27|COLLECT COD|RAIL|ely express reque|
-1636|108|1|3|24|24194.40|0.07|0.08|N|O|1997-10-07|1997-08-12|1997-11-04|TAKE BACK RETURN|MAIL|e carefully unusual ideas are f|
-1636|153|1|4|43|45285.45|0.06|0.00|N|O|1997-08-23|1997-08-10|1997-09-17|NONE|REG AIR|blithely special r|
-1636|19|6|5|22|20218.22|0.05|0.02|N|O|1997-07-22|1997-08-18|1997-08-03|COLLECT COD|AIR|ular, regu|
-1636|63|2|6|34|32744.04|0.10|0.01|N|O|1997-08-11|1997-09-09|1997-08-23|NONE|TRUCK|ular depos|
-1636|114|1|7|7|7098.77|0.04|0.00|N|O|1997-07-28|1997-09-10|1997-07-31|NONE|MAIL|ronic instructions. final|
-1637|86|7|1|49|48317.92|0.02|0.03|N|F|1995-06-08|1995-04-19|1995-07-01|COLLECT COD|REG AIR|. blithely i|
-1637|73|2|2|1|973.07|0.10|0.02|A|F|1995-02-14|1995-03-26|1995-03-09|TAKE BACK RETURN|AIR|ly final pinto beans. furiously|
-1637|22|1|3|10|9220.20|0.02|0.05|R|F|1995-02-21|1995-03-17|1995-03-11|NONE|AIR|uriously? blithely even sauternes wake. |
-1637|93|5|4|42|41709.78|0.06|0.01|A|F|1995-03-18|1995-04-24|1995-03-31|COLLECT COD|SHIP|blithely a|
-1637|5|8|5|25|22625.00|0.05|0.00|R|F|1995-06-07|1995-03-26|1995-06-08|COLLECT COD|RAIL| haggle carefully silent accou|
-1637|109|4|6|38|38345.80|0.02|0.08|R|F|1995-03-20|1995-05-05|1995-04-14|DELIVER IN PERSON|SHIP|even, pending foxes nod regular|
-1637|52|10|7|21|19993.05|0.07|0.08|A|F|1995-04-30|1995-04-30|1995-05-05|COLLECT COD|SHIP|ly ironic theodolites use b|
-1638|6|7|1|46|41676.00|0.03|0.02|N|O|1997-10-16|1997-10-28|1997-11-09|COLLECT COD|MAIL|otes haggle before the slyly bold instructi|
-1638|149|10|2|30|31474.20|0.00|0.04|N|O|1997-12-05|1997-09-17|1997-12-06|NONE|REG AIR|s cajole boldly bold requests. closely |
-1638|31|7|3|5|4655.15|0.08|0.07|N|O|1997-10-15|1997-11-01|1997-11-08|DELIVER IN PERSON|FOB|xcuses sleep furiou|
-1638|56|8|4|19|18164.95|0.00|0.08|N|O|1997-10-15|1997-10-27|1997-11-03|DELIVER IN PERSON|MAIL| quickly expres|
-1638|143|6|5|25|26078.50|0.05|0.03|N|O|1997-10-06|1997-09-30|1997-11-02|DELIVER IN PERSON|REG AIR|gle final, ironic pinto beans. |
-1638|155|10|6|46|48536.90|0.07|0.08|N|O|1997-08-20|1997-10-10|1997-09-09|COLLECT COD|AIR|ckages are carefully even instru|
-1639|187|8|1|24|26092.32|0.07|0.00|N|O|1995-08-24|1995-10-06|1995-08-31|COLLECT COD|REG AIR| the regular packages. courts dou|
-1639|43|6|2|38|35835.52|0.01|0.04|N|O|1995-08-23|1995-11-09|1995-08-29|TAKE BACK RETURN|FOB|y regular packages. b|
-1639|171|10|3|41|43917.97|0.04|0.02|N|O|1995-12-19|1995-11-11|1996-01-12|DELIVER IN PERSON|FOB|structions w|
-1664|118|5|1|48|48869.28|0.04|0.02|N|O|1996-06-21|1996-05-01|1996-07-19|TAKE BACK RETURN|RAIL| use. ironic deposits integrate. slyly unu|
-1664|173|2|2|30|32195.10|0.06|0.05|N|O|1996-04-04|1996-05-04|1996-05-03|COLLECT COD|FOB|ess multip|
-1664|151|2|3|10|10511.50|0.00|0.06|N|O|1996-04-10|1996-05-13|1996-05-07|TAKE BACK RETURN|RAIL|instructions up the acc|
-1664|155|3|4|35|36930.25|0.00|0.04|N|O|1996-03-06|1996-05-16|1996-03-09|DELIVER IN PERSON|REG AIR|y regular ide|
-1664|57|8|5|9|8613.45|0.07|0.04|N|O|1996-04-15|1996-05-14|1996-05-11|DELIVER IN PERSON|TRUCK|ges. fluffil|
-1664|141|8|6|40|41645.60|0.09|0.07|N|O|1996-04-02|1996-04-22|1996-04-17|COLLECT COD|REG AIR|se blithely unusual pains. carefully|
-1665|47|6|1|4|3788.16|0.02|0.03|A|F|1994-09-01|1994-06-07|1994-09-12|DELIVER IN PERSON|TRUCK|ely final requests. requests|
-1665|78|6|2|1|978.07|0.03|0.05|R|F|1994-05-22|1994-07-06|1994-05-24|TAKE BACK RETURN|TRUCK|sly final p|
-1666|185|6|1|30|32555.40|0.04|0.03|N|O|1995-10-28|1995-11-30|1995-11-18|TAKE BACK RETURN|AIR| breach evenly final accounts. r|
-1666|64|1|2|20|19281.20|0.01|0.00|N|O|1996-01-27|1995-12-12|1996-01-31|NONE|REG AIR|uietly regular foxes wake quick|
-1666|134|10|3|31|32058.03|0.05|0.07|N|O|1996-02-11|1996-01-11|1996-02-28|COLLECT COD|RAIL|ding to the express, bold accounts. fu|
-1666|169|8|4|41|43835.56|0.06|0.08|N|O|1995-11-29|1996-01-04|1995-12-24|NONE|TRUCK|ly regular excuses; regular ac|
-1667|21|4|1|6|5526.12|0.04|0.02|N|O|1997-12-07|1997-11-16|1998-01-02|COLLECT COD|FOB|riously busy requests. blithely final a|
-1667|22|1|2|29|26738.58|0.06|0.07|N|O|1997-10-15|1997-11-09|1997-11-11|TAKE BACK RETURN|MAIL|l accounts. furiously final courts h|
-1667|95|8|3|48|47764.32|0.05|0.01|N|O|1998-01-27|1998-01-06|1998-02-09|TAKE BACK RETURN|SHIP|tes sleep furiously. carefully eve|
-1667|59|1|4|24|23017.20|0.04|0.01|N|O|1997-10-14|1997-12-01|1997-11-09|TAKE BACK RETURN|MAIL|hrash final requests. care|
-1667|195|9|5|2|2190.38|0.07|0.00|N|O|1997-12-17|1997-11-22|1998-01-16|NONE|SHIP|pecial requests hag|
-1667|48|7|6|6|5688.24|0.01|0.03|N|O|1998-01-21|1997-12-19|1998-01-28|NONE|TRUCK| nag quickly above th|
-1667|40|6|7|19|17860.76|0.09|0.03|N|O|1998-01-23|1997-11-24|1998-01-26|DELIVER IN PERSON|SHIP|around the pinto beans. express, special|
-1668|132|8|1|8|8257.04|0.06|0.01|N|O|1997-07-23|1997-10-09|1997-08-06|DELIVER IN PERSON|FOB|arefully regular tithes! slyl|
-1668|1|8|2|25|22525.00|0.01|0.06|N|O|1997-08-08|1997-09-28|1997-09-01|NONE|TRUCK|y ironic requests. bold, final ideas a|
-1668|75|5|3|42|40952.94|0.08|0.01|N|O|1997-08-09|1997-09-08|1997-08-31|NONE|FOB|ole carefully excuses. final|
-1668|191|5|4|9|9820.71|0.05|0.03|N|O|1997-10-17|1997-09-05|1997-11-01|COLLECT COD|RAIL|wake furiously even instructions. sil|
-1668|128|9|5|25|25703.00|0.01|0.02|N|O|1997-10-08|1997-09-20|1997-10-11|DELIVER IN PERSON|REG AIR|even platelets across the silent |
-1668|10|3|6|38|34580.38|0.07|0.01|N|O|1997-08-26|1997-09-17|1997-09-05|DELIVER IN PERSON|TRUCK|ep slyly across the furi|
-1669|79|10|1|24|23497.68|0.04|0.08|N|O|1997-09-04|1997-07-30|1997-09-20|DELIVER IN PERSON|RAIL| regular, final deposits use quick|
-1670|32|3|1|41|38213.23|0.07|0.01|N|O|1997-07-19|1997-08-20|1997-07-23|DELIVER IN PERSON|TRUCK|thely according to the sly|
-1670|122|3|2|10|10221.20|0.07|0.03|N|O|1997-09-14|1997-08-16|1997-09-23|NONE|SHIP|fily special ideas |
-1670|186|7|3|41|44533.38|0.07|0.07|N|O|1997-07-19|1997-08-05|1997-07-26|COLLECT COD|SHIP|al gifts. speci|
-1671|149|2|1|21|22031.94|0.02|0.07|N|O|1996-07-28|1996-09-28|1996-08-08|TAKE BACK RETURN|AIR|s accounts slee|
-1671|96|10|2|4|3984.36|0.05|0.00|N|O|1996-08-30|1996-09-19|1996-09-23|DELIVER IN PERSON|TRUCK|lyly regular ac|
-1671|124|3|3|11|11265.32|0.06|0.08|N|O|1996-09-16|1996-10-21|1996-09-18|NONE|SHIP|tes sleep blithely|
-1671|178|7|4|5|5390.85|0.00|0.00|N|O|1996-11-14|1996-10-20|1996-11-25|TAKE BACK RETURN|FOB|luffily regular deposits|
-1671|127|8|5|12|12325.44|0.07|0.04|N|O|1996-11-17|1996-09-02|1996-12-17|COLLECT COD|RAIL|special, ironic|
-1671|197|9|6|46|50470.74|0.08|0.05|N|O|1996-09-13|1996-10-14|1996-09-28|TAKE BACK RETURN|REG AIR|. slyly bold instructions boost. furiousl|
-1696|16|3|1|8|7328.08|0.04|0.02|N|O|1998-04-28|1998-02-07|1998-05-10|NONE|TRUCK|the blithely|
-1696|139|5|2|13|13508.69|0.08|0.06|N|O|1998-03-01|1998-03-25|1998-03-24|TAKE BACK RETURN|TRUCK|tructions play slyly q|
-1696|2|5|3|19|17138.00|0.08|0.05|N|O|1998-05-03|1998-03-13|1998-05-28|TAKE BACK RETURN|REG AIR|its maintain alongside of the f|
-1696|193|4|4|21|22956.99|0.05|0.00|N|O|1998-05-04|1998-02-18|1998-05-07|NONE|MAIL|y players sleep along the final, pending |
-1696|94|7|5|43|42745.87|0.03|0.06|N|O|1998-02-14|1998-03-29|1998-02-20|COLLECT COD|FOB|arefully regular dep|
-1697|75|5|1|6|5850.42|0.05|0.00|N|O|1997-01-28|1996-11-27|1997-01-31|NONE|FOB|accounts breach slyly even de|
-1697|104|7|2|24|24098.40|0.00|0.08|N|O|1996-12-29|1996-12-19|1997-01-10|NONE|SHIP|ts cajole carefully above the carefully|
-1697|124|9|3|27|27651.24|0.06|0.00|N|O|1997-01-20|1996-12-02|1997-02-05|COLLECT COD|MAIL|ly regular packages across the silent, b|
-1697|94|5|4|49|48710.41|0.08|0.04|N|O|1996-12-07|1997-01-02|1996-12-31|COLLECT COD|TRUCK|lar foxes. fluffily furious ideas doubt qu|
-1697|35|1|5|19|17765.57|0.03|0.07|N|O|1997-01-08|1996-11-12|1997-01-11|DELIVER IN PERSON|FOB|ons? special, special accounts after|
-1698|97|8|1|44|43871.96|0.05|0.05|N|O|1997-05-16|1997-07-05|1997-05-27|NONE|RAIL|ts wake slyly after t|
-1698|93|5|2|6|5958.54|0.08|0.00|N|O|1997-08-21|1997-06-08|1997-09-03|DELIVER IN PERSON|RAIL| pending packages affix ne|
-1698|21|6|3|22|20262.44|0.03|0.04|N|O|1997-08-07|1997-05-28|1997-08-24|DELIVER IN PERSON|TRUCK|oward the furiously iro|
-1698|112|6|4|19|19230.09|0.00|0.07|N|O|1997-07-04|1997-06-21|1997-08-01|NONE|RAIL| fluffily e|
-1698|53|4|5|37|35262.85|0.00|0.03|N|O|1997-05-16|1997-05-29|1997-05-27|NONE|AIR|ly regular ideas. deposit|
-1698|166|7|6|15|15992.40|0.10|0.01|N|O|1997-07-20|1997-06-07|1997-07-21|TAKE BACK RETURN|RAIL|final ideas. even, ironic |
-1699|38|9|1|50|46901.50|0.00|0.06|A|F|1994-03-26|1994-03-23|1994-04-20|NONE|FOB|to the final requests are carefully silent |
-1699|135|6|2|17|17597.21|0.07|0.02|R|F|1994-01-12|1994-03-12|1994-02-08|NONE|AIR|haggle blithely slyly|
-1700|140|1|1|38|39525.32|0.04|0.04|N|O|1996-10-03|1996-07-27|1996-10-22|NONE|RAIL|ular dependencies engage slyly |
-1700|156|7|2|49|51751.35|0.04|0.00|N|O|1996-09-26|1996-07-28|1996-10-16|NONE|TRUCK|kly even dependencies haggle fluffi|
-1701|150|9|1|47|49357.05|0.08|0.05|R|F|1992-05-25|1992-06-29|1992-06-15|NONE|RAIL|slyly final requests cajole requests. f|
-1701|54|5|2|2|1908.10|0.01|0.04|R|F|1992-06-24|1992-07-12|1992-06-29|COLLECT COD|SHIP|ween the pending, final accounts. |
-1701|35|1|3|26|24310.78|0.10|0.06|R|F|1992-06-04|1992-07-11|1992-07-04|DELIVER IN PERSON|FOB| accounts. blithely pending pinto be|
-1702|67|2|1|19|18374.14|0.02|0.01|N|F|1995-06-02|1995-06-30|1995-06-29|NONE|REG AIR|ies haggle blith|
-1702|30|5|2|38|35341.14|0.00|0.00|N|O|1995-09-01|1995-06-10|1995-09-10|DELIVER IN PERSON|REG AIR|as believe blithely. bo|
-1702|195|6|3|46|50378.74|0.00|0.08|N|O|1995-07-14|1995-06-30|1995-07-20|NONE|FOB|y even foxes. carefully final dependencies |
-1702|93|4|4|28|27806.52|0.07|0.05|R|F|1995-06-10|1995-07-26|1995-06-16|TAKE BACK RETURN|AIR|nts haggle along the packa|
-1702|89|10|5|34|33628.72|0.01|0.06|N|O|1995-07-04|1995-06-08|1995-07-28|DELIVER IN PERSON|AIR|y careful packages; dogged acco|
-1702|42|9|6|28|26377.12|0.10|0.00|N|O|1995-08-14|1995-07-31|1995-09-08|COLLECT COD|RAIL|ackages sleep. furiously even excuses snooz|
-1703|166|5|1|36|38381.76|0.09|0.01|R|F|1993-04-22|1993-03-05|1993-04-24|DELIVER IN PERSON|SHIP|riously express |
-1703|137|8|2|35|36299.55|0.01|0.08|R|F|1993-04-14|1993-03-31|1993-04-27|NONE|RAIL|he carefully|
-1703|124|5|3|48|49157.76|0.06|0.02|R|F|1993-02-07|1993-04-20|1993-02-24|TAKE BACK RETURN|AIR|ggle slyly furiously regular theodol|
-1728|126|5|1|1|1026.12|0.07|0.04|N|O|1996-09-16|1996-08-19|1996-09-18|COLLECT COD|FOB|lly. carefully ex|
-1728|105|8|2|23|23117.30|0.05|0.02|N|O|1996-09-08|1996-07-24|1996-09-20|NONE|FOB|ns. pending, final ac|
-1728|165|10|3|44|46867.04|0.08|0.07|N|O|1996-07-31|1996-06-22|1996-08-06|COLLECT COD|FOB|ide of the slyly blithe|
-1728|27|8|4|34|31518.68|0.08|0.05|N|O|1996-08-28|1996-07-20|1996-09-12|DELIVER IN PERSON|MAIL|special req|
-1728|199|2|5|31|34074.89|0.09|0.02|N|O|1996-07-26|1996-06-28|1996-08-14|NONE|REG AIR|kly sly theodolites.|
-1729|157|8|1|12|12685.80|0.08|0.04|A|F|1992-08-11|1992-07-24|1992-08-16|COLLECT COD|RAIL|y pending packages detect. carefully re|
-1730|166|5|1|41|43712.56|0.01|0.03|N|O|1998-08-11|1998-08-29|1998-09-02|TAKE BACK RETURN|TRUCK| instructions. unusual, even Tiresi|
-1730|162|3|2|15|15932.40|0.07|0.04|N|O|1998-09-07|1998-09-12|1998-09-30|TAKE BACK RETURN|AIR|pinto beans cajole. bravely bold|
-1730|162|1|3|9|9559.44|0.10|0.00|N|O|1998-09-18|1998-09-15|1998-09-21|DELIVER IN PERSON|FOB|gular dependencies wake. blithely final e|
-1730|10|7|4|40|36400.40|0.02|0.03|N|O|1998-10-02|1998-10-06|1998-10-03|NONE|SHIP|ven dinos slee|
-1730|141|4|5|43|44769.02|0.04|0.06|N|O|1998-10-26|1998-10-22|1998-11-02|DELIVER IN PERSON|TRUCK|ng deposits cajo|
-1731|184|5|1|36|39030.48|0.10|0.00|N|O|1996-04-18|1996-04-03|1996-04-29|TAKE BACK RETURN|MAIL|ngside of the even instruct|
-1731|139|10|2|7|7273.91|0.04|0.07|N|O|1996-04-11|1996-02-13|1996-04-30|DELIVER IN PERSON|REG AIR|fily quick asymptotes|
-1731|51|9|3|50|47552.50|0.05|0.04|N|O|1996-01-14|1996-03-13|1996-01-29|COLLECT COD|RAIL|ly slyly speci|
-1731|196|10|4|23|25212.37|0.10|0.04|N|O|1996-04-22|1996-02-25|1996-05-16|TAKE BACK RETURN|RAIL|rays? bold, express pac|
-1731|53|4|5|37|35262.85|0.10|0.05|N|O|1996-04-30|1996-03-17|1996-05-27|TAKE BACK RETURN|RAIL| beans use furiously slyly b|
-1731|124|7|6|41|41988.92|0.03|0.08|N|O|1996-04-05|1996-02-28|1996-05-01|TAKE BACK RETURN|RAIL|haggle across the blithely ironi|
-1732|5|6|1|50|45250.00|0.02|0.01|R|F|1993-12-05|1994-01-23|1993-12-20|TAKE BACK RETURN|FOB|fily final asymptotes according |
-1732|99|10|2|36|35967.24|0.01|0.03|A|F|1994-03-15|1994-02-09|1994-04-02|DELIVER IN PERSON|TRUCK|ve the accounts. slowly ironic multip|
-1732|161|8|3|41|43507.56|0.00|0.04|R|F|1994-02-20|1994-01-07|1994-02-27|TAKE BACK RETURN|AIR|quests sublate against the silent |
-1732|152|3|4|9|9469.35|0.04|0.04|A|F|1994-02-25|1994-01-29|1994-03-16|TAKE BACK RETURN|FOB|ular platelets. deposits wak|
-1732|169|8|5|25|26729.00|0.02|0.05|A|F|1994-02-15|1994-01-07|1994-02-21|COLLECT COD|REG AIR|nag slyly. even, special de|
-1732|73|1|6|16|15569.12|0.01|0.05|R|F|1994-01-07|1994-01-02|1994-01-25|COLLECT COD|SHIP|ix carefully at the furiously regular pac|
-1733|111|5|1|41|41455.51|0.08|0.01|N|O|1996-06-13|1996-07-08|1996-07-07|TAKE BACK RETURN|AIR|ess notornis. fur|
-1733|24|7|2|16|14784.32|0.00|0.04|N|O|1996-08-28|1996-07-25|1996-09-27|COLLECT COD|MAIL|slyly express deposits sleep abo|
-1733|120|10|3|29|29583.48|0.10|0.06|N|O|1996-07-16|1996-08-08|1996-07-28|NONE|TRUCK|ns detect among the special accounts. qu|
-1733|136|7|4|38|39372.94|0.01|0.03|N|O|1996-08-26|1996-07-23|1996-08-28|NONE|FOB| deposits |
-1733|34|5|5|22|20548.66|0.06|0.07|N|O|1996-07-16|1996-07-24|1996-07-30|COLLECT COD|AIR|gainst the final deposits. carefully final |
-1733|66|7|6|9|8694.54|0.06|0.08|N|O|1996-05-25|1996-07-23|1996-06-10|COLLECT COD|TRUCK|ven foxes was according to t|
-1733|146|9|7|13|13599.82|0.02|0.03|N|O|1996-08-03|1996-08-02|1996-08-18|NONE|MAIL|olites sleep furious|
-1734|155|3|1|38|40095.70|0.03|0.03|R|F|1994-08-09|1994-09-07|1994-08-12|COLLECT COD|FOB|ts doubt b|
-1734|118|2|2|4|4072.44|0.06|0.03|A|F|1994-08-20|1994-07-17|1994-08-25|DELIVER IN PERSON|AIR|final warhorses.|
-1735|156|7|1|43|45414.45|0.02|0.06|A|F|1993-01-14|1993-03-25|1993-02-02|DELIVER IN PERSON|FOB|iously after the |
-1735|139|5|2|49|50917.37|0.03|0.04|A|F|1992-12-31|1993-02-03|1993-01-25|TAKE BACK RETURN|TRUCK|y express accounts above the exp|
-1760|96|9|1|38|37851.42|0.09|0.03|N|O|1996-06-15|1996-06-29|1996-07-11|NONE|MAIL|tions. blithely regular orbits against the |
-1760|8|9|2|3|2724.00|0.00|0.06|N|O|1996-07-18|1996-07-01|1996-08-01|NONE|RAIL|lyly bold dolphins haggle carefully. sl|
-1760|137|8|3|44|45633.72|0.05|0.01|N|O|1996-06-11|1996-06-16|1996-07-02|COLLECT COD|REG AIR|instructions poach slyly ironic theodolites|
-1761|52|4|1|33|31417.65|0.09|0.03|R|F|1994-01-03|1994-01-23|1994-01-31|NONE|FOB|s. excuses a|
-1761|52|3|2|37|35225.85|0.02|0.07|R|F|1994-02-17|1994-03-08|1994-03-16|NONE|RAIL| integrate. quickly unusual|
-1761|49|6|3|37|35114.48|0.06|0.04|R|F|1994-01-02|1994-03-12|1994-01-25|DELIVER IN PERSON|TRUCK|regular packages wake after|
-1761|73|1|4|49|47680.43|0.06|0.07|R|F|1994-01-08|1994-03-03|1994-02-05|TAKE BACK RETURN|FOB|y even packages promise|
-1761|157|5|5|37|39114.55|0.03|0.04|R|F|1994-04-24|1994-03-14|1994-04-29|TAKE BACK RETURN|MAIL|express requests print blithely around the|
-1761|24|7|6|12|11088.24|0.01|0.05|A|F|1994-04-16|1994-03-08|1994-04-21|DELIVER IN PERSON|AIR| sleep furiously. deposits are acco|
-1761|1|6|7|13|11713.00|0.03|0.08|R|F|1994-03-06|1994-03-18|1994-03-22|DELIVER IN PERSON|TRUCK|ons boost fu|
-1762|26|5|1|15|13890.30|0.04|0.08|A|F|1994-12-18|1994-10-29|1995-01-17|TAKE BACK RETURN|REG AIR|old packages thrash. care|
-1762|50|3|2|39|37051.95|0.10|0.02|A|F|1994-09-12|1994-11-09|1994-10-08|DELIVER IN PERSON|MAIL| ironic platelets sleep along t|
-1762|32|8|3|7|6524.21|0.05|0.01|R|F|1994-09-03|1994-10-02|1994-09-10|NONE|REG AIR|uickly express packages wake slyly-- regul|
-1762|145|2|4|24|25083.36|0.03|0.03|A|F|1994-11-30|1994-11-02|1994-12-20|NONE|REG AIR|accounts solve alongside of the fluffily |
-1762|8|9|5|49|44492.00|0.08|0.05|A|F|1994-10-20|1994-11-02|1994-11-10|TAKE BACK RETURN|SHIP| packages sleep fluffily pen|
-1762|94|7|6|35|34793.15|0.05|0.05|A|F|1994-11-25|1994-10-21|1994-11-28|COLLECT COD|AIR|ind quickly. accounts ca|
-1762|73|3|7|47|45734.29|0.03|0.01|A|F|1994-11-02|1994-10-07|1994-11-08|NONE|SHIP| blithely brave|
-1763|12|9|1|22|20064.22|0.09|0.06|N|O|1997-01-17|1997-01-15|1997-02-03|TAKE BACK RETURN|SHIP|ld. fluffily final ideas boos|
-1763|157|5|2|43|45457.45|0.04|0.04|N|O|1996-11-04|1996-12-09|1996-11-28|DELIVER IN PERSON|FOB|r deposits integrate blithely pending, quic|
-1763|25|10|3|16|14800.32|0.06|0.02|N|O|1996-12-12|1996-12-04|1996-12-25|DELIVER IN PERSON|RAIL|ously pending asymptotes a|
-1763|61|6|4|44|42286.64|0.04|0.05|N|O|1996-12-04|1997-01-06|1996-12-25|DELIVER IN PERSON|REG AIR| instructions need to integrate deposits. |
-1763|147|4|5|13|13612.82|0.03|0.05|N|O|1996-11-23|1997-01-24|1996-12-05|TAKE BACK RETURN|SHIP|s sleep carefully. fluffily unusua|
-1763|143|4|6|3|3129.42|0.05|0.03|N|O|1996-12-10|1996-12-06|1997-01-04|TAKE BACK RETURN|FOB|ut the slyly pending deposi|
-1763|184|5|7|2|2168.36|0.05|0.07|N|O|1997-02-27|1996-12-04|1997-03-27|COLLECT COD|FOB|even pinto beans snooze fluffi|
-1764|121|2|1|20|20422.40|0.09|0.02|A|F|1992-06-09|1992-05-22|1992-07-06|COLLECT COD|MAIL|y quickly regular packages. car|
-1764|67|4|2|3|2901.18|0.07|0.07|R|F|1992-05-13|1992-06-07|1992-05-26|COLLECT COD|RAIL|es wake slowly. |
-1764|78|6|3|27|26407.89|0.07|0.04|A|F|1992-05-06|1992-05-11|1992-05-23|COLLECT COD|TRUCK|ly final foxes wake blithely even requests|
-1765|161|2|1|36|38201.76|0.08|0.04|N|O|1996-03-02|1996-02-17|1996-03-14|DELIVER IN PERSON|SHIP|he blithely pending accou|
-1766|87|8|1|32|31586.56|0.08|0.01|N|O|1997-01-08|1996-11-11|1997-01-31|TAKE BACK RETURN|AIR|ess accounts. stealthily ironic accou|
-1766|34|10|2|12|11208.36|0.05|0.01|N|O|1996-10-28|1996-12-18|1996-11-15|DELIVER IN PERSON|AIR|heodolites above the final, regular acc|
-1766|111|1|3|1|1011.11|0.10|0.02|N|O|1997-01-21|1997-01-07|1997-02-19|NONE|TRUCK|ly blithely pending accounts. reg|
-1767|25|4|1|32|29600.64|0.08|0.04|A|F|1995-05-22|1995-05-14|1995-05-23|COLLECT COD|SHIP|to the bravely ironic requests i|
-1767|42|1|2|1|942.04|0.09|0.05|N|O|1995-06-23|1995-05-25|1995-07-03|TAKE BACK RETURN|RAIL|ing to the slyly fin|
-1767|174|5|3|24|25780.08|0.06|0.03|R|F|1995-03-16|1995-04-29|1995-04-11|DELIVER IN PERSON|RAIL|luffy theodolites need to detect furi|
-1767|23|8|4|50|46151.00|0.01|0.02|R|F|1995-05-29|1995-04-14|1995-06-15|NONE|REG AIR|y unusual foxe|
-1767|52|10|5|40|38082.00|0.06|0.00|R|F|1995-04-16|1995-05-06|1995-04-21|TAKE BACK RETURN|AIR|ep. accounts nag blithely fu|
-1792|88|9|1|9|8892.72|0.09|0.04|R|F|1994-02-28|1993-12-11|1994-03-12|TAKE BACK RETURN|AIR|final packages s|
-1792|9|6|2|5|4545.00|0.04|0.02|R|F|1994-02-13|1994-01-03|1994-02-28|DELIVER IN PERSON|TRUCK|ely regular accounts are slyly. pending, bo|
-1792|9|2|3|8|7272.00|0.01|0.04|A|F|1994-02-21|1994-01-26|1994-02-27|DELIVER IN PERSON|RAIL|nts. fluffily special instructions integr|
-1792|191|3|4|45|49103.55|0.00|0.01|A|F|1994-02-27|1993-12-24|1994-03-07|DELIVER IN PERSON|MAIL|ests are. ironic, regular asy|
-1792|199|2|5|35|38471.65|0.06|0.05|R|F|1994-01-31|1994-01-20|1994-02-17|NONE|FOB|e against the quic|
-1793|48|5|1|29|27493.16|0.01|0.06|R|F|1992-10-24|1992-09-20|1992-11-23|NONE|MAIL|ar excuses. |
-1793|126|9|2|4|4104.48|0.07|0.05|A|F|1992-07-28|1992-08-26|1992-08-21|COLLECT COD|RAIL|nic foxes along the even|
-1793|131|7|3|6|6186.78|0.01|0.05|R|F|1992-09-21|1992-09-05|1992-10-01|DELIVER IN PERSON|REG AIR|uctions; depo|
-1793|118|8|4|4|4072.44|0.00|0.08|R|F|1992-09-27|1992-09-21|1992-10-07|DELIVER IN PERSON|AIR|equests nod ac|
-1793|25|6|5|42|38850.84|0.03|0.03|A|F|1992-10-13|1992-10-02|1992-11-06|NONE|RAIL|uctions sleep carefully special, fl|
-1794|168|9|1|36|38453.76|0.09|0.08|N|O|1997-11-07|1997-11-01|1997-11-18|TAKE BACK RETURN|FOB|ely fluffily ironi|
-1794|95|8|2|3|2985.27|0.02|0.03|N|O|1997-11-15|1997-12-16|1997-11-20|DELIVER IN PERSON|FOB| sentiments according to the q|
-1794|117|8|3|23|23393.53|0.08|0.04|N|O|1997-10-13|1997-11-30|1997-10-28|TAKE BACK RETURN|AIR|usly unusual theodolites doze about |
-1794|85|6|4|34|33492.72|0.06|0.08|N|O|1997-09-29|1997-11-13|1997-10-07|TAKE BACK RETURN|SHIP|rs above the accoun|
-1794|117|4|5|47|47804.17|0.10|0.06|N|O|1998-01-15|1997-11-30|1998-02-14|DELIVER IN PERSON|TRUCK| haggle slyly. furiously express orbit|
-1794|91|3|6|37|36670.33|0.01|0.01|N|O|1998-01-12|1997-12-21|1998-01-17|DELIVER IN PERSON|MAIL|ackages. pinto|
-1795|137|8|1|44|45633.72|0.08|0.08|A|F|1994-04-28|1994-05-24|1994-05-27|NONE|AIR|ites sleep carefully slyly p|
-1795|114|5|2|34|34479.74|0.08|0.00|A|F|1994-04-24|1994-06-01|1994-05-08|DELIVER IN PERSON|SHIP|closely regular instructions wake. |
-1795|168|3|3|25|26704.00|0.07|0.01|A|F|1994-05-18|1994-05-22|1994-05-20|TAKE BACK RETURN|RAIL|he always express accounts ca|
-1795|125|8|4|32|32803.84|0.03|0.06|R|F|1994-05-10|1994-04-21|1994-05-17|DELIVER IN PERSON|SHIP| asymptotes across the bold,|
-1795|163|8|5|11|11694.76|0.08|0.02|R|F|1994-06-19|1994-04-24|1994-07-02|TAKE BACK RETURN|TRUCK|slyly. special pa|
-1796|10|1|1|28|25480.28|0.08|0.04|A|F|1992-12-01|1993-01-01|1992-12-24|DELIVER IN PERSON|FOB|y quickly ironic accounts.|
-1796|185|6|2|8|8681.44|0.00|0.08|R|F|1993-01-07|1993-01-04|1993-01-10|NONE|SHIP|slyly bold accounts are furiously agains|
-1797|31|7|1|17|15827.51|0.01|0.02|N|O|1996-08-06|1996-07-11|1996-08-29|NONE|TRUCK| cajole carefully. unusual Tiresias e|
-1797|145|2|2|16|16722.24|0.01|0.00|N|O|1996-06-03|1996-07-21|1996-06-07|NONE|FOB|o beans wake regular accounts. blit|
-1797|12|9|3|21|19152.21|0.02|0.01|N|O|1996-08-05|1996-08-05|1996-08-06|DELIVER IN PERSON|AIR|ns. regular, regular deposit|
-1798|109|10|1|43|43391.30|0.01|0.08|N|O|1997-08-27|1997-10-23|1997-09-09|DELIVER IN PERSON|MAIL|ld packages sleep furiously. depend|
-1799|52|10|1|8|7616.40|0.04|0.08|R|F|1994-06-14|1994-05-27|1994-06-27|TAKE BACK RETURN|MAIL|ealms upon the special, ironic waters|
-1799|27|10|2|42|38934.84|0.02|0.02|R|F|1994-04-05|1994-04-28|1994-04-09|DELIVER IN PERSON|FOB|es pending |
-1824|120|10|1|45|45905.40|0.03|0.02|R|F|1994-08-21|1994-06-21|1994-09-19|NONE|RAIL|ent Tiresias. quickly express |
-1824|69|4|2|40|38762.40|0.10|0.03|A|F|1994-05-08|1994-07-24|1994-06-06|NONE|FOB|es mold furiously final instructions. s|
-1825|156|1|1|43|45414.45|0.05|0.05|A|F|1994-02-18|1994-02-19|1994-03-02|TAKE BACK RETURN|RAIL| accounts breach fluffily spe|
-1825|148|5|2|39|40877.46|0.00|0.00|R|F|1994-04-01|1994-01-12|1994-04-21|DELIVER IN PERSON|REG AIR|ual, bold ideas haggle above the quickly ir|
-1825|17|4|3|7|6419.07|0.04|0.03|A|F|1994-01-02|1994-01-30|1994-01-30|TAKE BACK RETURN|REG AIR|fully ironic requests. requests cajole ex|
-1825|121|10|4|23|23485.76|0.05|0.01|R|F|1994-01-08|1994-02-08|1994-01-19|NONE|MAIL| wake express, even r|
-1825|178|9|5|33|35579.61|0.04|0.04|A|F|1993-12-07|1994-03-01|1993-12-16|TAKE BACK RETURN|RAIL|about the ne|
-1826|27|10|1|4|3708.08|0.06|0.00|R|F|1992-07-05|1992-06-12|1992-08-04|DELIVER IN PERSON|MAIL|alongside of the quickly unusual re|
-1826|68|3|2|9|8712.54|0.07|0.07|R|F|1992-07-12|1992-07-11|1992-07-15|DELIVER IN PERSON|TRUCK| blithely special|
-1826|176|4|3|14|15066.38|0.05|0.01|A|F|1992-04-28|1992-05-31|1992-05-25|COLLECT COD|TRUCK|uriously bold pinto beans are carefully ag|
-1826|180|9|4|6|6481.08|0.05|0.04|R|F|1992-06-30|1992-05-17|1992-07-30|DELIVER IN PERSON|RAIL|kages. blithely silent|
-1826|135|1|5|46|47615.98|0.05|0.06|R|F|1992-05-02|1992-06-25|1992-05-26|TAKE BACK RETURN|FOB|ously? quickly pe|
-1826|108|3|6|43|43348.30|0.02|0.03|A|F|1992-07-28|1992-06-14|1992-08-03|NONE|MAIL|ss tithes use even ideas. fluffily final t|
-1827|90|1|1|47|46534.23|0.00|0.01|N|O|1996-08-01|1996-08-07|1996-08-23|TAKE BACK RETURN|RAIL|. pending courts about the even e|
-1827|154|9|2|48|50599.20|0.03|0.05|N|O|1996-08-28|1996-09-15|1996-09-01|COLLECT COD|RAIL|oxes. special, final asymptote|
-1827|200|1|3|37|40707.40|0.01|0.07|N|O|1996-07-20|1996-08-18|1996-08-08|DELIVER IN PERSON|REG AIR|ously ironic theodolites serve quickly af|
-1827|127|10|4|4|4108.48|0.04|0.04|N|O|1996-07-22|1996-09-10|1996-08-11|DELIVER IN PERSON|RAIL|special requests. blithely|
-1827|80|10|5|24|23521.92|0.00|0.08|N|O|1996-08-07|1996-09-01|1996-09-04|DELIVER IN PERSON|SHIP|al gifts! re|
-1827|21|2|6|7|6447.14|0.10|0.02|N|O|1996-08-28|1996-08-07|1996-08-31|DELIVER IN PERSON|AIR|egular foxes|
-1827|6|7|7|38|34428.00|0.05|0.01|N|O|1996-10-17|1996-08-29|1996-11-07|TAKE BACK RETURN|SHIP| blithely. express, bo|
-1828|100|4|1|33|33003.30|0.05|0.04|R|F|1994-06-27|1994-06-10|1994-07-24|COLLECT COD|FOB|s boost carefully. pending d|
-1828|13|3|2|40|36520.40|0.08|0.07|R|F|1994-05-05|1994-07-02|1994-05-19|COLLECT COD|REG AIR|s use above the quietly fin|
-1828|196|7|3|11|12058.09|0.07|0.08|R|F|1994-07-21|1994-05-28|1994-08-13|DELIVER IN PERSON|FOB| wake blithely |
-1828|8|3|4|45|40860.00|0.02|0.05|R|F|1994-05-15|1994-05-29|1994-05-28|COLLECT COD|RAIL| accounts run slyly |
-1828|79|7|5|14|13706.98|0.01|0.08|A|F|1994-05-20|1994-06-02|1994-05-25|TAKE BACK RETURN|SHIP|. final packages along the carefully bold|
-1829|150|7|1|12|12601.80|0.05|0.06|A|F|1994-08-23|1994-07-13|1994-09-04|DELIVER IN PERSON|FOB|ges wake furiously express pinto|
-1829|5|6|2|11|9955.00|0.04|0.05|A|F|1994-05-18|1994-06-13|1994-06-07|COLLECT COD|MAIL|ding orbits|
-1829|104|9|3|49|49200.90|0.09|0.08|A|F|1994-08-26|1994-08-01|1994-09-16|NONE|TRUCK|ound the quickly |
-1829|153|4|4|14|14744.10|0.03|0.06|A|F|1994-08-15|1994-06-08|1994-08-30|TAKE BACK RETURN|AIR|regular deposits alongside of the flu|
-1829|166|5|5|6|6396.96|0.02|0.07|A|F|1994-08-09|1994-08-05|1994-09-05|DELIVER IN PERSON|MAIL|s haggle! slyl|
-1829|115|5|6|36|36543.96|0.09|0.04|R|F|1994-06-10|1994-06-23|1994-06-22|NONE|FOB|ackages-- express requests sleep; pen|
-1830|120|4|1|38|38764.56|0.00|0.07|R|F|1995-04-20|1995-05-22|1995-04-24|TAKE BACK RETURN|TRUCK|ely even a|
-1830|25|10|2|9|8325.18|0.05|0.07|R|F|1995-03-09|1995-05-24|1995-03-14|NONE|SHIP|st furiously among |
-1830|82|3|3|36|35354.88|0.07|0.07|R|F|1995-04-21|1995-04-14|1995-05-10|DELIVER IN PERSON|SHIP| slowly unusual orbits. carefull|
-1831|136|2|1|9|9325.17|0.02|0.03|A|F|1993-12-17|1994-01-27|1993-12-26|NONE|TRUCK|mptotes. furiously regular dolphins al|
-1831|48|9|2|9|8532.36|0.07|0.06|R|F|1994-03-22|1994-01-07|1994-04-06|COLLECT COD|MAIL|ent deposits. regular saute|
-1831|115|5|3|17|17256.87|0.02|0.08|R|F|1994-01-18|1994-02-12|1994-01-30|TAKE BACK RETURN|MAIL|s boost ironic foxe|
-1831|95|8|4|23|22887.07|0.06|0.02|R|F|1993-12-21|1994-02-08|1994-01-04|NONE|SHIP|ests. express pinto beans abou|
-1856|55|10|1|10|9550.50|0.05|0.07|R|F|1992-05-11|1992-05-20|1992-06-02|TAKE BACK RETURN|FOB|he furiously even theodolites. account|
-1856|97|10|2|47|46863.23|0.07|0.07|R|F|1992-03-22|1992-06-09|1992-04-17|DELIVER IN PERSON|FOB|ingly blithe theodolites. slyly pending |
-1856|117|7|3|20|20342.20|0.04|0.06|R|F|1992-05-04|1992-05-06|1992-05-11|DELIVER IN PERSON|MAIL|ost carefully. slyly bold accounts|
-1856|150|1|4|22|23103.30|0.08|0.02|A|F|1992-05-02|1992-05-26|1992-05-20|TAKE BACK RETURN|REG AIR|platelets detect slyly regular packages. ca|
-1856|190|1|5|14|15262.66|0.01|0.01|A|F|1992-04-14|1992-05-02|1992-05-11|COLLECT COD|SHIP|ans are even requests. deposits caj|
-1856|23|6|6|36|33228.72|0.03|0.05|A|F|1992-06-19|1992-05-12|1992-06-28|TAKE BACK RETURN|TRUCK|ly even foxes kindle blithely even realm|
-1856|130|3|7|42|43265.46|0.04|0.00|R|F|1992-05-23|1992-06-06|1992-06-19|COLLECT COD|RAIL|usly final deposits|
-1857|174|5|1|15|16112.55|0.10|0.03|R|F|1993-04-05|1993-02-28|1993-04-13|COLLECT COD|RAIL|egular, regular inst|
-1857|167|6|2|40|42686.40|0.10|0.00|R|F|1993-02-15|1993-03-08|1993-02-21|NONE|AIR|slyly close d|
-1857|119|3|3|8|8152.88|0.01|0.07|R|F|1993-01-27|1993-04-04|1993-02-20|TAKE BACK RETURN|AIR|slyly about the fluffily silent req|
-1857|100|3|4|41|41004.10|0.07|0.07|A|F|1993-04-16|1993-02-16|1993-04-18|NONE|REG AIR| the slyly|
-1858|14|8|1|33|30162.33|0.01|0.02|N|O|1997-12-28|1998-02-03|1998-01-13|NONE|RAIL|tect along the slyly final|
-1859|75|6|1|18|17551.26|0.10|0.00|N|O|1997-08-08|1997-06-30|1997-08-26|TAKE BACK RETURN|SHIP|e carefully a|
-1859|188|9|2|36|39174.48|0.02|0.01|N|O|1997-05-05|1997-07-08|1997-05-25|TAKE BACK RETURN|REG AIR|regular requests. carefully unusual theo|
-1859|158|10|3|5|5290.75|0.06|0.03|N|O|1997-06-20|1997-05-20|1997-07-19|TAKE BACK RETURN|AIR|across the p|
-1859|191|2|4|21|22914.99|0.00|0.03|N|O|1997-08-06|1997-05-29|1997-08-26|TAKE BACK RETURN|REG AIR|lar packages wake quickly exp|
-1859|46|3|5|11|10406.44|0.06|0.06|N|O|1997-07-15|1997-06-05|1997-07-29|TAKE BACK RETURN|SHIP|ffily ironic pac|
-1859|105|8|6|12|12061.20|0.08|0.03|N|O|1997-05-22|1997-06-08|1997-06-07|COLLECT COD|TRUCK|es. unusual, silent request|
-1860|113|4|1|9|9117.99|0.04|0.04|N|O|1996-08-03|1996-05-31|1996-08-04|DELIVER IN PERSON|TRUCK|c realms print carefully car|
-1861|68|5|1|7|6776.42|0.08|0.05|A|F|1994-01-14|1994-04-03|1994-01-16|COLLECT COD|RAIL|s foxes. slyly|
-1861|27|8|2|31|28737.62|0.10|0.05|R|F|1994-01-29|1994-03-07|1994-02-15|TAKE BACK RETURN|RAIL|arefully unusual|
-1861|24|9|3|23|21252.46|0.00|0.08|A|F|1994-04-09|1994-03-04|1994-04-11|DELIVER IN PERSON|MAIL|in packages sleep silent dolphins; sly|
-1861|116|6|4|38|38612.18|0.10|0.05|R|F|1994-02-26|1994-02-05|1994-03-01|NONE|RAIL|pending deposits cajole quic|
-1861|16|3|5|2|1832.02|0.03|0.08|R|F|1994-04-26|1994-03-15|1994-05-15|TAKE BACK RETURN|MAIL|e final, regular requests. carefully |
-1862|30|5|1|41|38131.23|0.10|0.00|N|O|1998-06-05|1998-05-17|1998-07-04|COLLECT COD|FOB| carefully along|
-1862|166|7|2|37|39447.92|0.06|0.02|N|O|1998-04-15|1998-05-15|1998-05-14|TAKE BACK RETURN|MAIL|l deposits. carefully even dep|
-1862|104|1|3|26|26106.60|0.02|0.01|N|O|1998-03-25|1998-05-17|1998-04-17|TAKE BACK RETURN|TRUCK|g carefully: thinly ironic deposits af|
-1863|63|2|1|48|46226.88|0.09|0.04|A|F|1993-10-10|1993-12-09|1993-10-19|NONE|FOB|ans hinder furiou|
-1863|157|2|2|48|50743.20|0.04|0.08|A|F|1993-11-08|1993-11-05|1993-12-08|COLLECT COD|AIR|onic theodolites alongside of the pending a|
-1888|98|10|1|27|26948.43|0.03|0.06|R|F|1994-02-13|1994-01-16|1994-02-25|NONE|REG AIR|. carefully special dolphins sle|
-1888|74|5|2|38|37014.66|0.03|0.03|R|F|1993-11-29|1994-01-16|1993-12-08|TAKE BACK RETURN|TRUCK|dazzle carefull|
-1888|80|1|3|49|48023.92|0.07|0.05|A|F|1994-02-27|1994-01-14|1994-03-28|DELIVER IN PERSON|FOB|lar accounts haggle carefu|
-1888|19|10|4|9|8271.09|0.01|0.04|A|F|1994-02-09|1994-01-22|1994-02-19|NONE|AIR| packages are blithely. carefu|
-1888|160|1|5|4|4240.64|0.03|0.06|R|F|1993-12-28|1993-12-19|1994-01-11|COLLECT COD|FOB|lphins. ironically special theodolit|
-1888|53|8|6|48|45746.40|0.08|0.08|R|F|1994-02-28|1993-12-16|1994-03-15|COLLECT COD|TRUCK|ar ideas cajole. regular p|
-1888|167|6|7|50|53358.00|0.04|0.07|R|F|1993-12-22|1994-01-10|1994-01-06|DELIVER IN PERSON|FOB|ependencies affix blithely regular warhors|
-1889|152|4|1|41|43138.15|0.10|0.02|N|O|1997-06-15|1997-05-10|1997-07-08|NONE|AIR|s! furiously pending r|
-1889|172|3|2|13|13938.21|0.05|0.00|N|O|1997-06-12|1997-04-28|1997-06-23|NONE|REG AIR|to the regular accounts. carefully express|
-1889|138|9|3|36|37372.68|0.05|0.07|N|O|1997-05-19|1997-06-14|1997-05-23|NONE|SHIP|l pinto beans kindle |
-1889|168|5|4|5|5340.80|0.02|0.07|N|O|1997-06-26|1997-06-09|1997-07-21|COLLECT COD|AIR|ording to the blithely silent r|
-1890|141|8|1|26|27069.64|0.03|0.07|N|O|1997-04-02|1997-03-13|1997-04-22|DELIVER IN PERSON|FOB|ngage. slyly ironic |
-1890|100|1|2|43|43004.30|0.07|0.03|N|O|1996-12-30|1997-01-31|1997-01-19|DELIVER IN PERSON|FOB|p ironic, express accounts. fu|
-1890|59|1|3|24|23017.20|0.06|0.04|N|O|1997-02-09|1997-02-10|1997-02-12|COLLECT COD|MAIL|is wake carefully above the even id|
-1890|68|9|4|43|41626.58|0.09|0.04|N|O|1997-04-08|1997-02-19|1997-04-30|TAKE BACK RETURN|FOB|lyly. instructions across the furiously|
-1890|122|3|5|45|45995.40|0.08|0.05|N|O|1997-04-15|1997-03-16|1997-04-19|COLLECT COD|FOB|he carefully regular sauternes. ironic fret|
-1890|181|2|6|16|17298.88|0.08|0.02|N|O|1997-02-13|1997-02-18|1997-03-12|TAKE BACK RETURN|TRUCK|ged pinto beans. regular, regular id|
-1890|121|4|7|10|10211.20|0.01|0.04|N|O|1996-12-24|1997-02-19|1997-01-01|DELIVER IN PERSON|AIR|. even, unusual inst|
-1891|77|8|1|45|43968.15|0.07|0.04|A|F|1994-12-20|1995-01-16|1995-01-05|NONE|RAIL|ests along|
-1891|184|5|2|18|19515.24|0.06|0.00|A|F|1995-01-24|1995-01-29|1995-02-14|NONE|RAIL| foxes above the carefu|
-1891|198|9|3|15|16472.85|0.03|0.00|R|F|1995-03-11|1995-03-05|1995-03-18|TAKE BACK RETURN|MAIL| accounts are furiou|
-1892|113|7|1|48|48629.28|0.02|0.01|A|F|1994-06-16|1994-06-16|1994-06-28|NONE|RAIL|tornis detect regul|
-1892|43|2|2|35|33006.40|0.04|0.08|R|F|1994-04-05|1994-05-09|1994-05-03|NONE|MAIL|hes nod furiously around the instruc|
-1892|134|5|3|37|38262.81|0.10|0.03|R|F|1994-04-11|1994-06-04|1994-04-24|TAKE BACK RETURN|SHIP|nts. slyly regular asymptot|
-1892|197|9|4|14|15360.66|0.06|0.07|R|F|1994-04-08|1994-06-12|1994-04-27|DELIVER IN PERSON|FOB|furiously about the furiously|
-1893|99|1|1|43|42960.87|0.10|0.00|N|O|1998-01-25|1998-01-06|1998-02-14|COLLECT COD|SHIP|he carefully regular |
-1893|148|9|2|49|51358.86|0.03|0.05|N|O|1998-01-19|1998-01-28|1998-02-02|TAKE BACK RETURN|FOB|y final foxes bo|
-1893|45|6|3|3|2835.12|0.03|0.02|N|O|1998-02-10|1998-01-18|1998-02-25|DELIVER IN PERSON|MAIL|gular, even ideas. fluffily bol|
-1893|101|6|4|18|18019.80|0.07|0.06|N|O|1998-01-24|1998-01-12|1998-02-13|TAKE BACK RETURN|RAIL|g packages. fluffily final reques|
-1893|53|4|5|6|5718.30|0.10|0.02|N|O|1998-01-23|1997-12-22|1998-02-09|DELIVER IN PERSON|TRUCK|ar accounts use. daringly ironic packag|
-1894|169|10|1|40|42766.40|0.03|0.07|R|F|1992-06-07|1992-05-11|1992-07-01|DELIVER IN PERSON|FOB|ily furiously bold packages. flu|
-1895|161|6|1|43|45629.88|0.09|0.07|R|F|1994-07-26|1994-07-19|1994-08-11|NONE|AIR| carefully eve|
-1920|96|7|1|24|23906.16|0.04|0.05|N|O|1998-09-27|1998-08-23|1998-10-15|DELIVER IN PERSON|AIR|thely. bold, pend|
-1920|51|6|2|31|29482.55|0.05|0.06|N|O|1998-08-01|1998-08-30|1998-08-17|COLLECT COD|SHIP|lly. ideas wa|
-1920|18|2|3|6|5508.06|0.01|0.05|N|O|1998-10-01|1998-08-20|1998-10-24|COLLECT COD|SHIP|l ideas boost slyly pl|
-1920|84|5|4|50|49204.00|0.09|0.06|N|O|1998-10-03|1998-08-04|1998-10-29|DELIVER IN PERSON|MAIL|e blithely unusual foxes. brave packages|
-1920|34|10|5|14|13076.42|0.08|0.05|N|O|1998-10-22|1998-08-10|1998-10-27|DELIVER IN PERSON|AIR|ickly ironic d|
-1921|21|10|1|9|8289.18|0.08|0.00|R|F|1994-02-01|1994-03-20|1994-03-01|DELIVER IN PERSON|FOB|to beans. even excuses integrate specia|
-1921|140|6|2|21|21842.94|0.02|0.06|R|F|1994-02-08|1994-03-28|1994-02-15|COLLECT COD|FOB|ckly regula|
-1921|71|2|3|27|26218.89|0.00|0.04|A|F|1994-04-26|1994-04-07|1994-04-30|TAKE BACK RETURN|FOB|ing pinto beans above the pend|
-1922|10|5|1|13|11830.13|0.05|0.03|N|O|1996-10-24|1996-09-21|1996-11-15|NONE|SHIP|quests. furiously|
-1923|37|8|1|9|8433.27|0.01|0.08|N|O|1997-08-29|1997-09-13|1997-09-07|NONE|FOB|lites. ironic instructions integrate bravel|
-1923|178|8|2|23|24797.91|0.07|0.05|N|O|1997-09-08|1997-08-11|1997-09-14|TAKE BACK RETURN|MAIL|aggle carefully. furiously permanent|
-1923|180|1|3|11|11881.98|0.03|0.03|N|O|1997-07-12|1997-09-04|1997-08-01|TAKE BACK RETURN|REG AIR|ages wake slyly about the furiously regular|
-1923|193|5|4|49|53566.31|0.06|0.05|N|O|1997-07-21|1997-08-08|1997-07-26|NONE|AIR|de of the carefully expre|
-1923|184|5|5|25|27104.50|0.10|0.08|N|O|1997-08-18|1997-08-20|1997-09-12|DELIVER IN PERSON|TRUCK|the ideas: slyly pendin|
-1923|37|3|6|50|46851.50|0.03|0.03|N|O|1997-11-04|1997-08-08|1997-11-25|NONE|TRUCK|uickly along the bold courts. bold the|
-1924|73|1|1|7|6811.49|0.06|0.07|N|O|1997-01-01|1996-12-02|1997-01-08|COLLECT COD|SHIP|osits. even accounts nag furious|
-1924|18|8|2|47|43146.47|0.02|0.06|N|O|1996-11-24|1996-10-18|1996-12-13|COLLECT COD|REG AIR|silent requests cajole blithely final pack|
-1924|57|8|3|40|38282.00|0.04|0.08|N|O|1996-10-31|1996-11-30|1996-11-21|NONE|REG AIR|ains sleep carefully|
-1924|34|5|4|31|28954.93|0.03|0.03|N|O|1996-09-20|1996-10-19|1996-10-19|DELIVER IN PERSON|SHIP| the slyly regular foxes. ruthle|
-1924|36|7|5|17|15912.51|0.04|0.05|N|O|1996-12-31|1996-11-12|1997-01-25|COLLECT COD|TRUCK|e carefully theodolites. ironically ironic |
-1924|76|4|6|15|14641.05|0.02|0.04|N|O|1997-01-04|1996-11-13|1997-01-27|NONE|SHIP|he package|
-1924|40|1|7|21|19740.84|0.09|0.03|N|O|1996-09-21|1996-11-12|1996-10-02|TAKE BACK RETURN|AIR| blithely reg|
-1925|184|5|1|50|54209.00|0.01|0.02|R|F|1992-04-12|1992-04-23|1992-05-08|TAKE BACK RETURN|TRUCK|usual pinto|
-1925|135|1|2|35|36229.55|0.06|0.06|R|F|1992-05-11|1992-04-10|1992-05-14|TAKE BACK RETURN|AIR|counts. carefully ironic packages boost ab|
-1925|116|10|3|40|40644.40|0.08|0.08|A|F|1992-05-17|1992-05-20|1992-06-08|TAKE BACK RETURN|AIR|e carefully regul|
-1925|30|5|4|17|15810.51|0.06|0.02|R|F|1992-05-18|1992-04-06|1992-06-16|TAKE BACK RETURN|MAIL|instructions sleep. pinto bea|
-1926|51|9|1|24|22825.20|0.06|0.05|N|O|1996-05-04|1996-03-14|1996-06-01|DELIVER IN PERSON|RAIL|e theodolites.|
-1926|106|9|2|29|29176.90|0.09|0.08|N|O|1996-02-26|1996-03-14|1996-03-14|TAKE BACK RETURN|TRUCK|es. dependencies according to the fl|
-1926|178|6|3|10|10781.70|0.02|0.03|N|O|1996-05-23|1996-03-02|1996-06-04|NONE|AIR|usly bold accounts. express accounts|
-1926|68|9|4|13|12584.78|0.04|0.02|N|O|1996-04-26|1996-04-13|1996-05-08|DELIVER IN PERSON|MAIL|eans wake bli|
-1926|40|1|5|29|27261.16|0.06|0.00|N|O|1996-02-29|1996-03-13|1996-03-24|DELIVER IN PERSON|MAIL|hily unusual packages are fluffily am|
-1927|68|5|1|3|2904.18|0.00|0.05|N|O|1995-10-06|1995-12-08|1995-11-05|COLLECT COD|FOB|ccounts affi|
-1927|73|2|2|15|14596.05|0.08|0.08|N|O|1995-12-25|1995-12-26|1995-12-31|COLLECT COD|RAIL| carefully regular requests sleep car|
-1927|65|10|3|6|5790.36|0.05|0.05|N|O|1995-11-29|1995-11-20|1995-12-08|TAKE BACK RETURN|TRUCK|furiously even wat|
-1952|53|8|1|7|6671.35|0.04|0.05|A|F|1994-05-06|1994-06-11|1994-05-12|NONE|RAIL|about the express, even requ|
-1952|142|5|2|6|6252.84|0.06|0.05|A|F|1994-05-09|1994-05-21|1994-05-26|DELIVER IN PERSON|AIR|packages haggle. |
-1953|128|1|1|25|25703.00|0.07|0.06|A|F|1994-01-07|1994-01-28|1994-01-29|TAKE BACK RETURN|RAIL|ular, regular i|
-1953|14|5|2|35|31990.35|0.06|0.06|R|F|1994-02-03|1994-02-25|1994-02-14|DELIVER IN PERSON|FOB|among the fur|
-1954|152|7|1|31|32616.65|0.06|0.06|N|O|1997-08-18|1997-07-07|1997-09-03|DELIVER IN PERSON|RAIL|against the packages. bold, ironic e|
-1954|182|3|2|1|1082.18|0.03|0.01|N|O|1997-09-16|1997-07-08|1997-10-07|COLLECT COD|MAIL|te. furiously final deposits hag|
-1954|199|2|3|11|12091.09|0.07|0.07|N|O|1997-08-07|1997-07-23|1997-08-25|DELIVER IN PERSON|TRUCK|y carefully ironi|
-1954|159|4|4|12|12709.80|0.02|0.08|N|O|1997-07-19|1997-07-04|1997-08-06|COLLECT COD|AIR|ongside of the slyly unusual requests. reg|
-1954|170|7|5|29|31034.93|0.08|0.08|N|O|1997-08-25|1997-07-15|1997-09-02|DELIVER IN PERSON|RAIL|use thinly furiously regular asy|
-1954|177|8|6|13|14003.21|0.00|0.07|N|O|1997-06-15|1997-08-22|1997-06-20|TAKE BACK RETURN|MAIL|y ironic instructions cajole|
-1954|194|5|7|49|53615.31|0.05|0.06|N|O|1997-06-04|1997-08-29|1997-06-14|COLLECT COD|TRUCK|eans. final pinto beans sleep furiousl|
-1955|137|3|1|32|33188.16|0.02|0.02|A|F|1992-07-05|1992-06-29|1992-08-03|TAKE BACK RETURN|TRUCK|g to the carefully sile|
-1955|18|8|2|2|1836.02|0.03|0.01|R|F|1992-07-06|1992-07-06|1992-08-01|COLLECT COD|TRUCK|ickly aroun|
-1955|158|6|3|41|43384.15|0.08|0.06|A|F|1992-08-01|1992-06-04|1992-08-07|COLLECT COD|AIR| carefully against the furiously reg|
-1955|9|4|4|16|14544.00|0.03|0.07|A|F|1992-04-30|1992-06-23|1992-05-23|TAKE BACK RETURN|FOB|odolites eat s|
-1955|159|10|5|11|11650.65|0.09|0.01|A|F|1992-06-03|1992-07-04|1992-06-07|NONE|REG AIR|ously quickly pendi|
-1956|177|8|1|8|8617.36|0.02|0.04|A|F|1992-12-25|1992-11-24|1993-01-12|TAKE BACK RETURN|AIR|efully about the ironic, ironic de|
-1956|103|6|2|16|16049.60|0.00|0.05|R|F|1992-11-11|1992-11-11|1992-11-30|NONE|FOB|es cajole blithely. pen|
-1956|139|5|3|39|40526.07|0.08|0.02|A|F|1992-09-24|1992-11-26|1992-10-15|DELIVER IN PERSON|REG AIR|r theodolites sleep above the b|
-1956|29|10|4|11|10219.22|0.10|0.00|A|F|1992-12-19|1992-10-29|1993-01-07|TAKE BACK RETURN|AIR| the braids slee|
-1956|155|10|5|16|16882.40|0.08|0.02|R|F|1992-09-28|1992-10-21|1992-09-30|TAKE BACK RETURN|FOB| wake after the |
-1957|79|9|1|50|48953.50|0.09|0.05|N|O|1998-08-08|1998-09-28|1998-08-27|COLLECT COD|FOB|gainst the re|
-1957|119|3|2|31|31592.41|0.10|0.08|N|O|1998-08-13|1998-08-31|1998-08-16|NONE|REG AIR|express packages maintain fluffi|
-1958|73|2|1|9|8757.63|0.01|0.05|N|O|1995-12-08|1995-12-17|1995-12-18|DELIVER IN PERSON|REG AIR|ickly. slyly bold |
-1958|176|7|2|29|31208.93|0.05|0.06|N|O|1996-01-19|1995-12-05|1996-02-14|COLLECT COD|SHIP|d pinto beans|
-1958|102|3|3|4|4008.40|0.04|0.02|N|O|1995-10-24|1995-12-09|1995-10-28|DELIVER IN PERSON|AIR|he slyly even dependencies |
-1958|83|4|4|38|37357.04|0.09|0.07|N|O|1995-10-09|1995-11-26|1995-11-05|COLLECT COD|TRUCK|yly. slyly regular courts use silentl|
-1958|101|8|5|31|31034.10|0.08|0.01|N|O|1995-10-31|1995-11-12|1995-11-07|TAKE BACK RETURN|TRUCK|r deposits c|
-1958|17|4|6|44|40348.44|0.08|0.04|N|O|1995-12-17|1995-11-30|1996-01-15|TAKE BACK RETURN|RAIL|c theodolites after the unusual deposit|
-1958|39|5|7|29|27231.87|0.02|0.05|N|O|1995-10-14|1995-11-06|1995-11-01|NONE|REG AIR|final requests nag according to the |
-1959|169|10|1|46|49181.36|0.04|0.00|N|O|1997-05-05|1997-03-03|1997-05-24|TAKE BACK RETURN|AIR| furiously ex|
-1959|120|7|2|15|15301.80|0.08|0.07|N|O|1997-01-20|1997-02-18|1997-02-08|DELIVER IN PERSON|MAIL| quickly sp|
-1984|53|5|1|45|42887.25|0.03|0.04|N|O|1998-04-09|1998-06-11|1998-05-01|COLLECT COD|AIR|p. quickly final ideas sle|
-1984|70|7|2|35|33952.45|0.01|0.07|N|O|1998-05-18|1998-05-04|1998-06-01|COLLECT COD|RAIL|tes. quickly pending packages haggle boldl|
-1985|28|1|1|33|30624.66|0.10|0.03|R|F|1994-12-04|1994-11-01|1994-12-05|DELIVER IN PERSON|FOB|s are express packages. pendin|
-1985|21|6|2|50|46051.00|0.04|0.02|R|F|1994-09-30|1994-10-18|1994-10-12|COLLECT COD|AIR|ate carefully. carefully|
-1985|134|10|3|20|20682.60|0.07|0.03|R|F|1994-10-29|1994-11-12|1994-11-27|NONE|TRUCK|regular requests. furiously express|
-1985|199|10|4|30|32975.70|0.05|0.07|R|F|1994-09-06|1994-10-10|1994-09-26|NONE|RAIL|uickly. instr|
-1985|124|9|5|42|43013.04|0.05|0.05|R|F|1994-10-25|1994-11-03|1994-11-19|DELIVER IN PERSON|SHIP| patterns? final requests after the sp|
-1985|20|7|6|2|1840.04|0.02|0.00|A|F|1994-11-25|1994-10-09|1994-12-25|TAKE BACK RETURN|FOB| silent inst|
-1986|92|3|1|12|11905.08|0.06|0.05|A|F|1994-08-17|1994-06-28|1994-09-02|COLLECT COD|RAIL|sleep furiously fluffily final|
-1986|105|8|2|10|10051.00|0.10|0.03|R|F|1994-05-14|1994-06-21|1994-06-02|COLLECT COD|REG AIR|yly into the carefully even |
-1986|63|2|3|14|13482.84|0.04|0.02|R|F|1994-07-14|1994-06-19|1994-08-08|NONE|SHIP|the packages. pending, unusual|
-1987|16|6|1|7|6412.07|0.03|0.03|A|F|1994-07-30|1994-07-06|1994-08-29|NONE|REG AIR| regular a|
-1988|72|1|1|36|34994.52|0.09|0.04|N|O|1996-01-21|1995-11-24|1996-01-27|NONE|RAIL|gular theodolites. |
-1988|199|3|2|19|20884.61|0.08|0.08|N|O|1996-02-03|1995-12-10|1996-02-14|COLLECT COD|FOB|lly about the slyly thin instructions. f|
-1988|54|6|3|8|7632.40|0.06|0.01|N|O|1995-10-20|1995-11-11|1995-11-18|DELIVER IN PERSON|AIR|le quickly ac|
-1988|36|2|4|27|25272.81|0.08|0.00|N|O|1996-01-27|1995-12-24|1996-02-24|TAKE BACK RETURN|TRUCK|uests. regular requests are according to t|
-1988|79|8|5|26|25455.82|0.08|0.04|N|O|1996-01-25|1995-12-15|1996-01-26|COLLECT COD|SHIP| ironic dolphins haggl|
-1988|86|7|6|9|8874.72|0.08|0.03|N|O|1995-12-26|1996-01-02|1996-01-25|DELIVER IN PERSON|MAIL|lar platelets. slyly ironic packa|
-1989|10|7|1|47|42770.47|0.10|0.02|R|F|1994-06-21|1994-05-27|1994-06-22|TAKE BACK RETURN|REG AIR|final deposits s|
-1990|101|2|1|46|46050.60|0.01|0.07|R|F|1994-12-29|1995-03-14|1995-01-13|NONE|TRUCK|ar sentiments.|
-1991|110|3|1|39|39394.29|0.06|0.02|A|F|1993-01-01|1992-11-29|1993-01-10|TAKE BACK RETURN|TRUCK|ckages? carefully bold depos|
-1991|53|1|2|49|46699.45|0.08|0.06|R|F|1992-10-19|1992-11-29|1992-10-25|NONE|SHIP|nd the ideas affi|
-1991|174|5|3|6|6445.02|0.02|0.01|A|F|1992-11-02|1992-10-08|1992-11-14|TAKE BACK RETURN|REG AIR|hes nag slyly|
-1991|138|9|4|6|6228.78|0.10|0.06|A|F|1992-11-21|1992-11-03|1992-11-27|NONE|RAIL|uickly blithely final de|
-1991|60|8|5|49|47042.94|0.06|0.00|R|F|1992-09-10|1992-11-30|1992-10-07|NONE|AIR|quests cajole blithely|
-2016|147|4|1|2|2094.28|0.02|0.07|N|O|1996-10-12|1996-11-09|1996-10-31|DELIVER IN PERSON|TRUCK|carefully according to the |
-2016|63|8|2|15|14445.90|0.04|0.05|N|O|1996-09-24|1996-10-05|1996-10-21|TAKE BACK RETURN|MAIL|uests haggle carefully furiously regul|
-2016|122|7|3|8|8176.96|0.09|0.02|N|O|1996-09-19|1996-10-21|1996-10-13|TAKE BACK RETURN|SHIP|mptotes haggle ideas. packages wake flu|
-2017|103|4|1|49|49151.90|0.10|0.06|N|O|1998-05-26|1998-07-01|1998-06-06|COLLECT COD|TRUCK| after the unusual instructions. sly|
-2017|71|2|2|14|13594.98|0.07|0.04|N|O|1998-06-28|1998-06-15|1998-07-11|NONE|TRUCK|ily final w|
-2017|84|5|3|11|10824.88|0.05|0.02|N|O|1998-05-22|1998-07-13|1998-05-26|TAKE BACK RETURN|TRUCK|gside of the slyly dogged dolp|
-2018|195|6|1|2|2190.38|0.02|0.07|N|O|1995-06-25|1995-06-20|1995-07-04|NONE|TRUCK|ly ironic accounts against the slyly sly|
-2018|129|10|2|23|23669.76|0.05|0.01|R|F|1995-05-05|1995-05-12|1995-05-22|TAKE BACK RETURN|RAIL|ingly even theodolites s|
-2019|4|9|1|31|28024.00|0.07|0.03|R|F|1992-11-18|1992-12-26|1992-11-24|DELIVER IN PERSON|FOB|l ideas across the slowl|
-2019|52|7|2|18|17136.90|0.04|0.03|R|F|1993-01-24|1992-12-22|1993-02-02|NONE|MAIL|are carefully furiously regular requ|
-2020|34|10|1|50|46701.50|0.06|0.01|R|F|1993-07-12|1993-08-28|1993-08-02|COLLECT COD|TRUCK|ts against the pending ideas serve along|
-2020|176|4|2|40|43046.80|0.09|0.00|A|F|1993-10-17|1993-09-14|1993-10-29|TAKE BACK RETURN|RAIL|ently across the|
-2020|14|4|3|30|27420.30|0.07|0.04|A|F|1993-09-08|1993-08-11|1993-09-29|TAKE BACK RETURN|AIR|ly about the blithely ironic foxes. bold|
-2020|61|8|4|27|25948.62|0.05|0.06|A|F|1993-07-14|1993-09-02|1993-08-03|NONE|FOB|e of the bold foxes haggle |
-2021|85|6|1|7|6895.56|0.08|0.04|N|O|1995-10-17|1995-09-29|1995-10-20|NONE|MAIL| accounts boost blithely. blithely reg|
-2021|166|3|2|19|20257.04|0.04|0.05|N|O|1995-08-14|1995-09-05|1995-08-23|NONE|RAIL| above the slyly fl|
-2022|169|8|1|38|40628.08|0.00|0.08|R|F|1992-07-05|1992-04-20|1992-07-13|TAKE BACK RETURN|REG AIR| against the express accounts wake ca|
-2022|55|3|2|38|36291.90|0.05|0.04|R|F|1992-06-17|1992-05-15|1992-06-28|COLLECT COD|SHIP|instructions dazzle carefull|
-2022|49|10|3|48|45553.92|0.10|0.02|A|F|1992-06-14|1992-06-04|1992-07-12|DELIVER IN PERSON|SHIP|counts. slyly enticing accounts are during |
-2022|182|3|4|16|17314.88|0.05|0.03|R|F|1992-06-23|1992-05-22|1992-07-07|NONE|TRUCK|ages wake slyly care|
-2022|100|1|5|36|36003.60|0.05|0.02|R|F|1992-03-24|1992-05-07|1992-04-13|NONE|MAIL|ly after the foxes. regular, final inst|
-2022|129|2|6|20|20582.40|0.08|0.08|A|F|1992-03-31|1992-04-17|1992-04-02|NONE|SHIP|r deposits kindle |
-2022|78|9|7|13|12714.91|0.06|0.08|R|F|1992-04-04|1992-05-30|1992-04-21|NONE|FOB| orbits haggle fluffily fl|
-2023|127|10|1|9|9244.08|0.05|0.04|R|F|1992-06-04|1992-06-30|1992-06-10|NONE|AIR|ly regular pinto beans poa|
-2023|38|4|2|2|1876.06|0.01|0.00|R|F|1992-08-27|1992-07-16|1992-08-29|DELIVER IN PERSON|RAIL|ing packages. fluffily silen|
-2023|19|6|3|25|22975.25|0.10|0.03|A|F|1992-07-19|1992-07-07|1992-08-15|NONE|REG AIR| wake furiously among the slyly final|
-2023|185|6|4|9|9766.62|0.02|0.00|A|F|1992-07-23|1992-07-04|1992-08-20|TAKE BACK RETURN|AIR|nts maintain blithely alongside of the|
-2023|20|10|5|22|20240.44|0.04|0.06|A|F|1992-06-15|1992-07-13|1992-06-21|TAKE BACK RETURN|SHIP|ronic attainments. |
-2023|43|2|6|29|27348.16|0.02|0.06|A|F|1992-08-29|1992-07-28|1992-09-18|COLLECT COD|RAIL|usual instructions. bli|
-2023|134|10|7|50|51706.50|0.00|0.03|R|F|1992-06-20|1992-07-04|1992-06-23|DELIVER IN PERSON|FOB|its! carefully ex|
-2048|35|1|1|7|6545.21|0.06|0.01|R|F|1993-12-07|1994-01-31|1994-01-05|TAKE BACK RETURN|REG AIR|lent platelets boost deposits. carefully sp|
-2048|8|5|2|5|4540.00|0.04|0.04|A|F|1994-01-18|1994-02-01|1994-01-29|TAKE BACK RETURN|TRUCK|affix carefully against |
-2048|101|2|3|12|12013.20|0.01|0.05|R|F|1994-01-28|1994-01-19|1994-02-08|NONE|AIR| even theodoli|
-2048|97|1|4|11|10967.99|0.10|0.03|R|F|1993-12-20|1994-01-19|1994-01-04|TAKE BACK RETURN|MAIL|totes. idly ironic packages nag|
-2049|189|10|1|25|27229.50|0.08|0.00|N|O|1996-03-31|1996-02-29|1996-04-15|DELIVER IN PERSON|MAIL| excuses above the |
-2049|35|1|2|31|28985.93|0.10|0.05|N|O|1995-12-25|1996-02-25|1995-12-29|TAKE BACK RETURN|MAIL| packages are slyly alongside|
-2049|67|6|3|18|17407.08|0.05|0.05|N|O|1996-01-09|1996-01-22|1996-01-25|TAKE BACK RETURN|AIR| sleep fluffily. dependencies use never|
-2049|6|7|4|39|35334.00|0.02|0.05|N|O|1996-01-17|1996-01-21|1996-02-03|TAKE BACK RETURN|MAIL|the even pinto beans |
-2049|126|1|5|30|30783.60|0.04|0.06|N|O|1995-12-16|1996-02-04|1995-12-22|NONE|TRUCK|ial accounts are among the furiously perma|
-2049|84|5|6|17|16729.36|0.07|0.00|N|O|1996-02-04|1996-03-01|1996-02-24|NONE|FOB|al, regular foxes. pending, |
-2050|73|2|1|47|45734.29|0.05|0.03|A|F|1994-08-25|1994-07-18|1994-09-15|DELIVER IN PERSON|TRUCK|tside the blithely pending packages eat f|
-2050|152|3|2|48|50503.20|0.05|0.01|A|F|1994-09-30|1994-08-23|1994-10-29|COLLECT COD|AIR| final packages. pinto|
-2050|113|4|3|41|41537.51|0.10|0.04|A|F|1994-06-08|1994-08-27|1994-06-23|NONE|AIR| final theodolites. depende|
-2050|32|8|4|11|10252.33|0.02|0.01|A|F|1994-07-27|1994-08-18|1994-08-02|DELIVER IN PERSON|REG AIR|ns. bold, final ideas cajole among the fi|
-2050|168|9|5|16|17090.56|0.07|0.01|R|F|1994-08-17|1994-07-28|1994-09-05|DELIVER IN PERSON|REG AIR|al accounts. closely even |
-2050|49|2|6|29|27522.16|0.00|0.05|A|F|1994-09-23|1994-08-01|1994-10-23|TAKE BACK RETURN|MAIL|oxes alongsid|
-2050|48|5|7|25|23701.00|0.10|0.00|R|F|1994-08-18|1994-07-04|1994-09-04|TAKE BACK RETURN|RAIL|y according to |
-2051|25|6|1|43|39775.86|0.08|0.04|N|O|1996-04-22|1996-06-16|1996-04-28|COLLECT COD|RAIL|ounts sleep fluffily even requ|
-2051|130|1|2|48|49446.24|0.01|0.02|N|O|1996-05-04|1996-06-14|1996-05-19|NONE|TRUCK|unts. pending platelets believe about|
-2052|68|7|1|50|48403.00|0.09|0.08|R|F|1992-06-22|1992-06-03|1992-07-19|DELIVER IN PERSON|AIR|wake after the decoy|
-2052|135|1|2|35|36229.55|0.09|0.05|A|F|1992-05-29|1992-05-24|1992-06-11|NONE|TRUCK|ts according t|
-2052|43|2|3|16|15088.64|0.01|0.08|A|F|1992-06-30|1992-07-09|1992-07-12|NONE|SHIP|y final deposits cajole according |
-2052|96|7|4|47|46816.23|0.08|0.01|A|F|1992-06-18|1992-05-16|1992-07-02|TAKE BACK RETURN|REG AIR|final requests. stealt|
-2053|101|4|1|20|20022.00|0.09|0.00|A|F|1995-04-25|1995-04-12|1995-05-13|NONE|TRUCK|ly ironic foxes haggle slyly speci|
-2053|33|4|2|34|31723.02|0.07|0.00|A|F|1995-03-15|1995-03-20|1995-04-09|TAKE BACK RETURN|TRUCK|ions. unusual dependencies|
-2053|65|2|3|46|44392.76|0.01|0.03|R|F|1995-04-01|1995-04-02|1995-04-18|NONE|RAIL|tions. furiously even requests hagg|
-2053|121|6|4|31|31654.72|0.06|0.08|R|F|1995-03-23|1995-03-13|1995-04-16|DELIVER IN PERSON|SHIP|ts. fluffily final mul|
-2054|113|4|1|11|11144.21|0.03|0.05|R|F|1992-08-13|1992-08-26|1992-08-22|NONE|AIR|ular accou|
-2054|120|7|2|31|31623.72|0.05|0.08|A|F|1992-08-18|1992-09-04|1992-08-24|NONE|FOB|se bold, regular accounts. unusual depos|
-2054|121|2|3|32|32675.84|0.06|0.00|A|F|1992-06-23|1992-07-08|1992-07-22|NONE|FOB| packages thrash. carefully final|
-2054|174|3|4|14|15038.38|0.10|0.05|R|F|1992-06-25|1992-09-05|1992-07-14|DELIVER IN PERSON|SHIP|uickly final|
-2054|6|1|5|40|36240.00|0.08|0.06|R|F|1992-06-23|1992-08-09|1992-07-04|TAKE BACK RETURN|RAIL|n pinto beans. ironic courts are iro|
-2054|134|10|6|17|17580.21|0.08|0.01|A|F|1992-06-09|1992-08-28|1992-06-16|NONE|AIR|ges nag acc|
-2054|11|1|7|4|3644.04|0.00|0.08|R|F|1992-08-12|1992-08-31|1992-08-15|DELIVER IN PERSON|AIR|lyly careful requests wake fl|
-2055|45|6|1|15|14175.60|0.04|0.06|A|F|1993-09-15|1993-10-06|1993-10-07|NONE|REG AIR|furiously bold |
-2055|9|10|2|15|13635.00|0.06|0.05|R|F|1993-10-30|1993-11-21|1993-11-22|COLLECT COD|RAIL|gular foxes. b|
-2055|135|1|3|12|12421.56|0.00|0.02|A|F|1993-10-26|1993-11-23|1993-11-22|COLLECT COD|TRUCK|al pains. acco|
-2055|134|10|4|16|16546.08|0.02|0.02|A|F|1993-11-16|1993-11-12|1993-11-28|NONE|TRUCK|arefully daringly regular accounts.|
-2080|7|4|1|5|4535.00|0.08|0.05|R|F|1993-08-26|1993-08-07|1993-09-02|DELIVER IN PERSON|TRUCK|refully unusual theo|
-2080|197|9|2|39|42790.41|0.07|0.04|A|F|1993-08-22|1993-09-09|1993-08-23|COLLECT COD|FOB|ic deposits haggle slyly carefully eve|
-2081|89|10|1|26|25716.08|0.03|0.08|N|O|1997-10-21|1997-10-03|1997-11-10|NONE|FOB|among the slyly express accounts. silen|
-2081|149|2|2|13|13638.82|0.07|0.05|N|O|1997-08-23|1997-08-22|1997-09-09|TAKE BACK RETURN|MAIL|fter the even deposi|
-2081|13|10|3|32|29216.32|0.09|0.07|N|O|1997-09-05|1997-09-26|1997-10-03|TAKE BACK RETURN|SHIP|e. final, regular dependencies sleep slyly!|
-2081|85|6|4|23|22656.84|0.03|0.08|N|O|1997-07-06|1997-09-11|1997-07-21|TAKE BACK RETURN|MAIL|ual requests wake blithely above the|
-2081|113|7|5|19|19249.09|0.02|0.06|N|O|1997-10-01|1997-08-12|1997-10-18|COLLECT COD|SHIP|s affix sometimes express requests. quickly|
-2081|142|9|6|31|32306.34|0.03|0.06|N|O|1997-09-19|1997-09-13|1997-09-27|NONE|AIR| silent, spe|
-2082|75|3|1|36|35102.52|0.00|0.00|R|F|1995-01-20|1995-03-18|1995-01-31|COLLECT COD|MAIL|haggle furiously silent pinto beans|
-2082|105|10|2|12|12061.20|0.08|0.05|A|F|1995-01-27|1995-02-11|1995-02-07|NONE|FOB| ironic instructions. carefull|
-2083|24|3|1|37|34188.74|0.07|0.00|R|F|1993-09-07|1993-09-30|1993-09-18|TAKE BACK RETURN|MAIL|ng the special foxes wake packages. f|
-2084|182|3|1|42|45451.56|0.03|0.05|A|F|1993-03-29|1993-05-05|1993-04-22|COLLECT COD|REG AIR|y fluffily even foxes. |
-2084|180|10|2|23|24844.14|0.09|0.08|A|F|1993-06-05|1993-05-26|1993-06-06|DELIVER IN PERSON|AIR|es against |
-2084|136|2|3|37|38336.81|0.07|0.05|A|F|1993-07-16|1993-04-20|1993-08-06|NONE|AIR|y careful courts.|
-2084|94|8|4|9|8946.81|0.02|0.02|A|F|1993-03-18|1993-06-08|1993-03-30|NONE|TRUCK|heaves boost slyly after the pla|
-2084|27|10|5|28|25956.56|0.07|0.02|R|F|1993-05-04|1993-05-14|1993-05-31|COLLECT COD|TRUCK|cajole quickly carefu|
-2084|115|9|6|15|15226.65|0.09|0.04|A|F|1993-06-23|1993-04-25|1993-07-23|COLLECT COD|SHIP|tithes. bravely pendi|
-2084|194|6|7|34|37202.46|0.09|0.02|R|F|1993-06-20|1993-05-28|1993-06-25|DELIVER IN PERSON|RAIL| carefully ironic requests. fluffil|
-2085|41|8|1|45|42346.80|0.00|0.07|R|F|1994-02-27|1994-01-11|1994-03-29|TAKE BACK RETURN|MAIL|. carefully e|
-2086|60|1|1|22|21121.32|0.03|0.07|R|F|1994-12-04|1994-12-16|1994-12-20|DELIVER IN PERSON|RAIL|idly busy acc|
-2086|141|10|2|32|33316.48|0.04|0.06|A|F|1994-11-15|1995-01-05|1994-12-09|TAKE BACK RETURN|TRUCK|e carefully along th|
-2086|105|6|3|44|44224.40|0.02|0.01|A|F|1994-12-04|1994-11-30|1994-12-21|DELIVER IN PERSON|FOB|latelets s|
-2086|84|5|4|27|26570.16|0.02|0.00|A|F|1994-11-04|1995-01-14|1994-11-25|COLLECT COD|REG AIR|theodolites haggle blithely blithe p|
-2086|156|1|5|33|34852.95|0.04|0.00|A|F|1995-02-06|1994-11-25|1995-02-15|NONE|SHIP| slyly regular foxes. un|
-2086|200|3|6|20|22004.00|0.01|0.03|R|F|1994-11-30|1994-12-28|1994-12-07|COLLECT COD|FOB|lithely ironic acc|
-2086|156|8|7|7|7393.05|0.04|0.05|R|F|1994-12-27|1994-12-10|1995-01-05|COLLECT COD|RAIL| beans haggle car|
-2087|127|8|1|1|1027.12|0.05|0.04|N|O|1998-03-27|1998-03-24|1998-04-18|DELIVER IN PERSON|REG AIR|the quickly idle acco|
-2087|168|3|2|46|49135.36|0.10|0.03|N|O|1998-02-24|1998-04-02|1998-03-04|DELIVER IN PERSON|AIR|ter the dolphins.|
-2087|62|3|3|1|962.06|0.02|0.05|N|O|1998-05-27|1998-04-11|1998-06-12|COLLECT COD|REG AIR|hely final acc|
-2087|59|1|4|6|5754.30|0.03|0.08|N|O|1998-04-23|1998-03-27|1998-05-18|DELIVER IN PERSON|REG AIR|dazzle after the slyly si|
-2112|71|2|1|18|17479.26|0.02|0.05|N|O|1997-05-02|1997-03-16|1997-05-25|TAKE BACK RETURN|TRUCK|lphins solve ideas. even, special reque|
-2113|123|8|1|40|40924.80|0.04|0.06|N|O|1998-01-16|1997-12-11|1998-02-06|TAKE BACK RETURN|TRUCK|bout the quickly ironic t|
-2113|112|2|2|24|24290.64|0.03|0.02|N|O|1998-02-19|1998-01-08|1998-03-16|COLLECT COD|MAIL|kly regular accounts hinder about the|
-2114|168|9|1|50|53408.00|0.05|0.05|A|F|1995-02-05|1995-03-18|1995-02-13|COLLECT COD|RAIL|pecial pinto bean|
-2114|186|7|2|26|28240.68|0.02|0.02|A|F|1995-04-30|1995-04-16|1995-05-28|NONE|SHIP|ar asymptotes sleep |
-2114|162|1|3|25|26554.00|0.07|0.01|A|F|1995-02-15|1995-03-13|1995-02-22|COLLECT COD|AIR|unts. regular, express accounts wake. b|
-2115|196|8|1|27|29597.13|0.06|0.03|N|O|1998-09-01|1998-07-29|1998-09-04|NONE|AIR|de of the carefully bold accounts |
-2115|184|5|2|43|46619.74|0.06|0.02|N|O|1998-07-14|1998-07-25|1998-07-24|COLLECT COD|FOB| carefully pending requests alongs|
-2115|51|3|3|3|2853.15|0.03|0.04|N|O|1998-07-23|1998-07-30|1998-08-14|DELIVER IN PERSON|FOB|quickly ironic dolphin|
-2115|49|10|4|47|44604.88|0.06|0.07|N|O|1998-08-29|1998-07-30|1998-09-05|TAKE BACK RETURN|REG AIR|regular accounts integrate brav|
-2115|199|3|5|13|14289.47|0.04|0.00|N|O|1998-08-07|1998-08-06|1998-08-13|DELIVER IN PERSON|REG AIR|into beans. even accounts abou|
-2116|131|2|1|2|2062.26|0.00|0.02|R|F|1994-10-16|1994-11-24|1994-11-09|DELIVER IN PERSON|TRUCK|r theodolites use blithely about the ir|
-2116|140|1|2|47|48886.58|0.10|0.06|R|F|1994-09-01|1994-11-18|1994-09-25|COLLECT COD|MAIL|iously ironic dependencies around the iro|
-2116|184|5|3|11|11925.98|0.03|0.05|R|F|1994-09-15|1994-10-21|1994-09-21|NONE|FOB| pinto beans. final, final sauternes play |
-2117|165|2|1|36|38345.76|0.10|0.01|N|O|1997-08-06|1997-07-15|1997-08-07|DELIVER IN PERSON|SHIP|ronic accounts wake|
-2117|61|6|2|19|18260.14|0.04|0.00|N|O|1997-07-30|1997-06-18|1997-08-13|DELIVER IN PERSON|REG AIR|s between the slyly regula|
-2117|58|3|3|43|41196.15|0.04|0.03|N|O|1997-06-27|1997-06-12|1997-07-22|DELIVER IN PERSON|SHIP| foxes sleep furiously |
-2117|91|4|4|24|23786.16|0.00|0.07|N|O|1997-06-15|1997-05-27|1997-06-18|COLLECT COD|SHIP|thely slyly pending platelets. ironic, |
-2117|147|8|5|3|3141.42|0.02|0.05|N|O|1997-05-05|1997-07-20|1997-05-26|TAKE BACK RETURN|TRUCK|tes cajole|
-2117|1|4|6|27|24327.00|0.09|0.08|N|O|1997-06-30|1997-06-27|1997-07-11|TAKE BACK RETURN|REG AIR| the carefully ironic ideas|
-2118|160|1|1|24|25443.84|0.10|0.03|N|O|1997-01-06|1996-12-14|1997-01-14|TAKE BACK RETURN|RAIL|about the slyly bold depende|
-2118|184|5|2|4|4336.72|0.08|0.01|N|O|1996-10-25|1996-11-10|1996-11-22|COLLECT COD|AIR|theodolites affix according |
-2118|145|4|3|11|11496.54|0.05|0.04|N|O|1996-12-23|1996-12-20|1997-01-01|COLLECT COD|RAIL|y ironic accounts sleep upon the packages. |
-2119|102|7|1|36|36075.60|0.04|0.00|N|O|1996-11-10|1996-10-25|1996-12-03|TAKE BACK RETURN|RAIL|ly bold foxes. ironic accoun|
-2144|92|6|1|33|32738.97|0.00|0.07|R|F|1994-04-04|1994-06-20|1994-04-23|NONE|AIR| ironic excuses haggle final dependencies. |
-2144|51|9|2|46|43748.30|0.03|0.08|R|F|1994-04-08|1994-04-29|1994-05-07|COLLECT COD|SHIP| foxes haggle blithel|
-2144|4|9|3|29|26216.00|0.00|0.07|R|F|1994-05-03|1994-05-16|1994-06-01|DELIVER IN PERSON|FOB|ns wake carefully carefully ironic|
-2144|158|9|4|10|10581.50|0.00|0.04|R|F|1994-06-16|1994-05-03|1994-07-05|COLLECT COD|AIR| furiously unusual ideas. carefull|
-2145|78|8|1|13|12714.91|0.04|0.05|A|F|1992-11-12|1992-12-13|1992-12-07|TAKE BACK RETURN|MAIL|alongside of the slyly final|
-2145|154|6|2|6|6324.90|0.05|0.01|A|F|1992-10-10|1992-11-29|1992-10-14|NONE|AIR|s. fluffily express accounts sleep. slyl|
-2146|57|5|1|42|40196.10|0.10|0.01|A|F|1992-09-21|1992-11-02|1992-09-23|NONE|AIR|ns according to the doggedly |
-2146|157|5|2|6|6342.90|0.07|0.05|A|F|1993-01-03|1992-10-24|1993-01-24|DELIVER IN PERSON|RAIL|ing to the requests. dependencies boost |
-2146|25|8|3|14|12950.28|0.03|0.01|R|F|1992-09-16|1992-10-16|1992-09-20|COLLECT COD|SHIP|ecial, express a|
-2146|26|9|4|31|28706.62|0.02|0.00|A|F|1993-01-04|1992-10-24|1993-01-15|DELIVER IN PERSON|TRUCK|lly even deposit|
-2146|169|4|5|28|29936.48|0.02|0.05|R|F|1993-01-03|1992-10-17|1993-01-08|COLLECT COD|MAIL|r accounts sleep furio|
-2146|71|9|6|32|31074.24|0.07|0.03|R|F|1993-01-10|1992-10-19|1993-02-05|COLLECT COD|TRUCK|y regular foxes wake among the final|
-2146|25|6|7|39|36075.78|0.07|0.06|R|F|1993-01-05|1992-11-06|1993-01-14|DELIVER IN PERSON|TRUCK|uickly regular excuses detect. regular c|
-2147|29|8|1|50|46451.00|0.04|0.06|R|F|1992-11-18|1992-11-30|1992-11-30|NONE|RAIL|al accounts. even, even foxes wake|
-2147|101|2|2|4|4004.40|0.01|0.04|A|F|1992-09-27|1992-11-15|1992-10-22|NONE|AIR|mong the blithely special|
-2147|44|7|3|34|32097.36|0.10|0.04|R|F|1992-11-29|1992-11-08|1992-12-22|TAKE BACK RETURN|REG AIR|egular deposits hang car|
-2147|11|8|4|11|10021.11|0.06|0.07|A|F|1992-09-27|1992-11-16|1992-10-16|NONE|AIR| the fluffily|
-2148|116|6|1|21|21338.31|0.09|0.01|R|F|1995-05-28|1995-05-26|1995-06-15|NONE|FOB|deposits ag|
-2149|19|9|1|12|11028.12|0.05|0.07|R|F|1993-06-01|1993-05-06|1993-06-11|TAKE BACK RETURN|TRUCK|riously bl|
-2149|99|10|2|10|9990.90|0.06|0.01|R|F|1993-06-09|1993-04-17|1993-06-16|DELIVER IN PERSON|TRUCK|eposits sleep above|
-2149|49|2|3|47|44604.88|0.00|0.04|R|F|1993-06-27|1993-05-12|1993-07-11|COLLECT COD|AIR|hely final depo|
-2149|129|8|4|18|18524.16|0.06|0.00|A|F|1993-04-05|1993-05-11|1993-04-23|DELIVER IN PERSON|REG AIR|uriously final pac|
-2149|60|5|5|22|21121.32|0.06|0.04|R|F|1993-05-24|1993-04-23|1993-06-20|TAKE BACK RETURN|SHIP|ptotes sleep along the blithely ir|
-2150|78|7|1|26|25429.82|0.00|0.03|A|F|1994-06-21|1994-08-05|1994-06-23|NONE|TRUCK|. always unusual packages|
-2150|18|8|2|29|26622.29|0.04|0.03|A|F|1994-09-02|1994-08-04|1994-10-02|TAKE BACK RETURN|RAIL|y ironic theodolites. foxes ca|
-2150|107|2|3|29|29205.90|0.04|0.08|R|F|1994-06-10|1994-07-31|1994-06-26|COLLECT COD|RAIL|arefully final att|
-2150|54|6|4|39|37207.95|0.05|0.02|R|F|1994-07-31|1994-08-17|1994-08-11|TAKE BACK RETURN|TRUCK|ess accounts nag. unusual asymptotes haggl|
-2150|183|4|5|35|37911.30|0.01|0.01|A|F|1994-09-27|1994-08-17|1994-10-13|COLLECT COD|RAIL|refully pending dependen|
-2150|7|10|6|12|10884.00|0.09|0.03|A|F|1994-08-27|1994-08-22|1994-09-18|COLLECT COD|AIR|press platelets haggle until the slyly fi|
-2151|167|2|1|23|24544.68|0.06|0.02|N|O|1996-11-20|1996-12-17|1996-11-30|DELIVER IN PERSON|AIR| silent dependencies about the slyl|
-2151|15|9|2|29|26535.29|0.00|0.02|N|O|1997-03-04|1996-12-27|1997-03-21|TAKE BACK RETURN|SHIP| bold packages acro|
-2151|165|2|3|49|52192.84|0.07|0.01|N|O|1997-01-20|1997-02-09|1997-02-18|NONE|FOB| packages. f|
-2151|18|5|4|28|25704.28|0.10|0.08|N|O|1996-12-11|1996-12-26|1996-12-12|DELIVER IN PERSON|AIR|y special packages. carefully ironic instru|
-2176|191|4|1|38|41465.22|0.02|0.08|R|F|1992-11-29|1993-01-14|1992-12-22|DELIVER IN PERSON|REG AIR|lithely ironic pinto beans. furious|
-2176|95|8|2|14|13931.26|0.00|0.06|A|F|1992-11-17|1993-01-07|1992-12-03|DELIVER IN PERSON|SHIP|ely ironic platelets |
-2176|160|1|3|25|26504.00|0.02|0.02|R|F|1993-02-23|1993-01-05|1993-03-07|COLLECT COD|RAIL| ruthless deposits according to the ent|
-2176|143|6|4|2|2086.28|0.05|0.06|A|F|1993-02-26|1993-01-08|1993-03-23|DELIVER IN PERSON|AIR|s pinto beans|
-2177|129|10|1|45|46310.40|0.02|0.01|N|O|1997-02-11|1997-02-27|1997-02-17|NONE|SHIP|. theodolites haggle carefu|
-2177|139|5|2|27|28056.51|0.04|0.08|N|O|1997-01-29|1997-03-20|1997-02-04|DELIVER IN PERSON|SHIP|even, regula|
-2177|81|2|3|23|22564.84|0.07|0.05|N|O|1997-01-28|1997-03-02|1997-02-13|DELIVER IN PERSON|AIR|he silent foxes. iro|
-2177|55|3|4|34|32471.70|0.05|0.07|N|O|1997-02-03|1997-04-10|1997-02-21|COLLECT COD|REG AIR|tes are doggedly quickly|
-2177|57|9|5|46|44024.30|0.09|0.05|N|O|1997-05-10|1997-02-23|1997-05-28|COLLECT COD|RAIL|ending asymptotes.|
-2177|122|7|6|11|11243.32|0.02|0.04|N|O|1997-03-20|1997-03-07|1997-04-09|DELIVER IN PERSON|MAIL|gainst the ca|
-2178|157|2|1|15|15857.25|0.10|0.01|N|O|1997-03-27|1997-03-10|1997-04-18|NONE|REG AIR|l accounts. quickly expr|
-2178|16|10|2|27|24732.27|0.01|0.02|N|O|1997-02-26|1997-02-19|1997-03-25|NONE|MAIL| across the ironic reques|
-2178|5|2|3|40|36200.00|0.00|0.03|N|O|1997-03-17|1997-02-09|1997-04-15|COLLECT COD|RAIL|foxes are slowly regularly specia|
-2178|78|6|4|3|2934.21|0.07|0.07|N|O|1997-04-07|1997-01-23|1997-04-18|COLLECT COD|MAIL| permanentl|
-2179|130|9|1|22|22662.86|0.05|0.08|N|O|1996-11-16|1996-11-03|1996-11-25|DELIVER IN PERSON|FOB|lphins cajole acr|
-2179|139|5|2|20|20782.60|0.03|0.01|N|O|1996-09-30|1996-11-10|1996-10-30|NONE|REG AIR|ncies. fin|
-2179|104|9|3|5|5020.50|0.03|0.02|N|O|1996-11-09|1996-10-08|1996-11-11|DELIVER IN PERSON|REG AIR|ts haggle blithely. ironic, careful theodol|
-2179|6|3|4|24|21744.00|0.04|0.04|N|O|1996-10-26|1996-11-05|1996-11-16|COLLECT COD|RAIL| cajole carefully. |
-2179|108|5|5|7|7056.70|0.00|0.02|N|O|1996-10-24|1996-11-14|1996-11-21|TAKE BACK RETURN|RAIL|gular dependencies. ironic packages haggle|
-2180|16|3|1|31|28396.31|0.06|0.04|N|O|1996-10-20|1996-11-21|1996-11-06|COLLECT COD|REG AIR|n requests are furiously at the quickly|
-2180|193|7|2|39|42634.41|0.01|0.00|N|O|1997-01-03|1996-10-29|1997-01-25|NONE|RAIL|ep furiously furiously final request|
-2180|197|9|3|24|26332.56|0.03|0.00|N|O|1997-01-03|1996-10-24|1997-01-19|NONE|SHIP|uriously f|
-2180|111|5|4|47|47522.17|0.07|0.02|N|O|1996-09-23|1996-12-08|1996-10-12|NONE|FOB|pending, regular ideas. iron|
-2180|143|2|5|23|23992.22|0.02|0.06|N|O|1996-11-08|1996-10-25|1996-11-28|NONE|TRUCK|ggle alongside of the fluffily speci|
-2180|55|6|6|48|45842.40|0.09|0.03|N|O|1996-12-30|1996-11-22|1997-01-16|DELIVER IN PERSON|RAIL|nic instructions haggle careful|
-2181|178|9|1|4|4312.68|0.05|0.04|N|O|1995-09-25|1995-11-12|1995-09-28|COLLECT COD|FOB|tes. slyly silent packages use along th|
-2181|88|9|2|46|45451.68|0.00|0.02|N|O|1995-11-28|1995-10-17|1995-12-26|COLLECT COD|AIR|osits. final packages sleep|
-2181|91|2|3|15|14866.35|0.08|0.05|N|O|1995-10-05|1995-10-27|1995-11-03|DELIVER IN PERSON|FOB|e above the fluffily regul|
-2181|55|10|4|28|26741.40|0.04|0.05|N|O|1995-12-21|1995-10-23|1996-01-04|TAKE BACK RETURN|AIR|s excuses sleep car|
-2181|96|7|5|9|8964.81|0.06|0.07|N|O|1996-01-05|1995-12-05|1996-01-08|COLLECT COD|TRUCK|ward the quietly even requests. ir|
-2182|132|8|1|27|27867.51|0.02|0.07|R|F|1994-05-10|1994-07-04|1994-06-04|DELIVER IN PERSON|SHIP|en platele|
-2182|190|1|2|3|3270.57|0.05|0.03|R|F|1994-04-20|1994-07-04|1994-04-24|TAKE BACK RETURN|SHIP|y bold theodolites wi|
-2182|94|6|3|34|33799.06|0.02|0.03|R|F|1994-05-28|1994-06-02|1994-06-10|COLLECT COD|MAIL| slow tithes. ironi|
-2182|7|4|4|12|10884.00|0.04|0.07|A|F|1994-05-08|1994-06-02|1994-05-09|COLLECT COD|REG AIR|ments are fu|
-2182|179|9|5|37|39929.29|0.06|0.02|A|F|1994-04-08|1994-06-29|1994-04-18|TAKE BACK RETURN|TRUCK|ges. blithely ironic|
-2183|71|1|1|29|28161.03|0.05|0.01|N|O|1996-07-21|1996-08-24|1996-08-15|TAKE BACK RETURN|RAIL|ly unusual deposits sleep carefully|
-2183|52|3|2|25|23801.25|0.06|0.02|N|O|1996-07-06|1996-08-21|1996-08-05|NONE|RAIL|he quickly f|
-2208|58|3|1|48|45986.40|0.08|0.07|A|F|1995-05-13|1995-06-30|1995-05-20|COLLECT COD|MAIL|sits. idly permanent request|
-2208|97|1|2|11|10967.99|0.08|0.01|A|F|1995-05-06|1995-07-19|1995-05-22|COLLECT COD|TRUCK|ding waters lose. furiously regu|
-2208|74|4|3|41|39936.87|0.08|0.02|N|O|1995-08-18|1995-06-19|1995-09-05|COLLECT COD|RAIL|nd the furious, express dependencies.|
-2208|43|2|4|50|47152.00|0.07|0.07|N|F|1995-06-11|1995-05-31|1995-06-29|TAKE BACK RETURN|FOB|al foxes will hav|
-2208|30|5|5|43|39991.29|0.03|0.06|A|F|1995-05-10|1995-06-02|1995-06-09|TAKE BACK RETURN|MAIL|es. accounts cajole. fi|
-2208|167|2|6|18|19208.88|0.02|0.08|R|F|1995-06-06|1995-06-10|1995-06-11|TAKE BACK RETURN|TRUCK|packages are quickly bold de|
-2208|7|2|7|45|40815.00|0.00|0.08|A|F|1995-05-05|1995-06-10|1995-05-11|NONE|SHIP|e fluffily regular theodolites caj|
-2209|23|2|1|40|36920.80|0.05|0.01|R|F|1992-11-01|1992-09-25|1992-11-08|DELIVER IN PERSON|SHIP|ully special sheaves serve|
-2209|103|4|2|10|10031.00|0.00|0.02|R|F|1992-09-02|1992-09-24|1992-09-21|DELIVER IN PERSON|AIR|players. carefully reg|
-2209|64|1|3|11|10604.66|0.01|0.01|A|F|1992-07-12|1992-08-24|1992-08-10|DELIVER IN PERSON|REG AIR|express, regular pinto be|
-2209|181|2|4|39|42166.02|0.08|0.07|R|F|1992-11-04|1992-09-02|1992-11-11|TAKE BACK RETURN|MAIL|ly around the final packages. deposits ca|
-2209|124|7|5|24|24578.88|0.08|0.06|R|F|1992-08-09|1992-08-18|1992-08-25|COLLECT COD|AIR| along the bol|
-2209|178|7|6|7|7547.19|0.09|0.07|A|F|1992-08-18|1992-09-09|1992-09-12|DELIVER IN PERSON|AIR| quickly regular pack|
-2210|78|7|1|36|35210.52|0.10|0.00|A|F|1992-03-04|1992-03-24|1992-03-21|DELIVER IN PERSON|AIR| requests wake enticingly final|
-2211|48|1|1|25|23701.00|0.04|0.01|A|F|1994-10-09|1994-08-04|1994-11-03|TAKE BACK RETURN|RAIL|deas. carefully special theodolites along|
-2211|140|6|2|40|41605.60|0.09|0.06|A|F|1994-09-30|1994-09-10|1994-10-26|NONE|MAIL|posits among the express dolphins|
-2211|160|2|3|25|26504.00|0.00|0.07|A|F|1994-08-13|1994-08-17|1994-08-16|NONE|AIR|ly regular, express|
-2211|85|6|4|23|22656.84|0.03|0.02|R|F|1994-10-05|1994-09-13|1994-10-17|DELIVER IN PERSON|AIR|ependencies |
-2211|135|1|5|3|3105.39|0.02|0.04|A|F|1994-08-28|1994-09-10|1994-09-06|TAKE BACK RETURN|SHIP|pendencies after the regular f|
-2211|187|8|6|18|19569.24|0.05|0.08|A|F|1994-08-31|1994-09-07|1994-09-22|NONE|TRUCK|c grouches. slyly express pinto |
-2211|79|9|7|3|2937.21|0.06|0.05|R|F|1994-09-21|1994-08-10|1994-10-19|TAKE BACK RETURN|RAIL|y slyly final|
-2212|71|10|1|18|17479.26|0.07|0.06|R|F|1994-06-22|1994-06-18|1994-06-25|TAKE BACK RETURN|FOB| cajole. final, pending ideas should are bl|
-2213|118|8|1|20|20362.20|0.01|0.00|A|F|1993-01-21|1993-04-14|1993-01-29|COLLECT COD|REG AIR|iously express accounts; |
-2213|60|1|2|4|3840.24|0.09|0.05|R|F|1993-04-15|1993-04-15|1993-05-05|COLLECT COD|SHIP| affix carefully furiously |
-2213|70|5|3|1|970.07|0.05|0.05|A|F|1993-04-25|1993-04-06|1993-04-28|TAKE BACK RETURN|AIR|s along the ironic reques|
-2213|174|3|4|39|41892.63|0.09|0.05|A|F|1993-05-12|1993-04-07|1993-05-23|TAKE BACK RETURN|SHIP|the blithely |
-2213|38|9|5|43|40335.29|0.04|0.03|A|F|1993-04-18|1993-03-11|1993-05-11|TAKE BACK RETURN|RAIL|r packages are along the carefully bol|
-2213|48|5|6|41|38869.64|0.01|0.00|R|F|1993-01-31|1993-03-31|1993-02-28|COLLECT COD|FOB| carefully pend|
-2213|64|9|7|3|2892.18|0.02|0.04|A|F|1993-03-09|1993-03-17|1993-04-07|TAKE BACK RETURN|AIR|o wake. ironic platel|
-2214|76|5|1|27|26353.89|0.04|0.04|N|O|1998-05-31|1998-06-07|1998-06-19|DELIVER IN PERSON|REG AIR|x fluffily along the even packages-- |
-2214|194|5|2|50|54709.50|0.00|0.02|N|O|1998-07-06|1998-06-16|1998-07-16|TAKE BACK RETURN|MAIL|accounts. blith|
-2214|113|7|3|42|42550.62|0.04|0.08|N|O|1998-05-26|1998-07-13|1998-06-22|COLLECT COD|FOB|ons. deposi|
-2214|196|9|4|22|24116.18|0.01|0.01|N|O|1998-05-30|1998-07-02|1998-06-09|DELIVER IN PERSON|RAIL|t the blithely|
-2215|73|1|1|33|32111.31|0.00|0.00|N|O|1996-07-19|1996-08-10|1996-07-30|COLLECT COD|RAIL|dolites cajole b|
-2215|33|9|2|30|27990.90|0.01|0.00|N|O|1996-08-15|1996-09-10|1996-08-25|NONE|FOB|ckages caj|
-2215|57|5|3|30|28711.50|0.07|0.03|N|O|1996-09-09|1996-07-20|1996-09-28|COLLECT COD|TRUCK|against the carefu|
-2215|146|3|4|20|20922.80|0.02|0.02|N|O|1996-09-09|1996-08-10|1996-09-19|NONE|MAIL| unusual deposits haggle carefully. ide|
-2240|164|3|1|6|6384.96|0.01|0.00|A|F|1992-06-23|1992-05-17|1992-07-20|COLLECT COD|AIR|ymptotes boost. furiously bold p|
-2240|28|1|2|37|34336.74|0.03|0.07|R|F|1992-03-16|1992-05-31|1992-04-05|COLLECT COD|FOB| quickly after the packages? blithely si|
-2240|53|5|3|39|37168.95|0.08|0.06|A|F|1992-05-22|1992-05-10|1992-06-08|NONE|FOB|y orbits. final depos|
-2240|86|7|4|10|9860.80|0.09|0.00|A|F|1992-05-25|1992-04-14|1992-06-23|DELIVER IN PERSON|REG AIR|are across the ironic packages.|
-2240|161|10|5|29|30773.64|0.02|0.06|A|F|1992-03-29|1992-05-08|1992-04-09|COLLECT COD|MAIL|lyly even ideas w|
-2240|81|2|6|32|31394.56|0.06|0.06|R|F|1992-04-11|1992-04-18|1992-04-22|NONE|MAIL|ss thinly deposits. blithely bold package|
-2240|78|7|7|24|23473.68|0.04|0.05|R|F|1992-05-13|1992-04-09|1992-05-14|DELIVER IN PERSON|FOB|ng the silent accounts. slyly ironic t|
-2241|5|6|1|25|22625.00|0.00|0.08|R|F|1993-08-11|1993-07-23|1993-09-01|DELIVER IN PERSON|MAIL| final deposits use fluffily. even f|
-2241|195|8|2|38|41617.22|0.04|0.06|A|F|1993-08-04|1993-07-31|1993-08-06|TAKE BACK RETURN|TRUCK| silent, unusual d|
-2241|97|10|3|48|47860.32|0.08|0.04|A|F|1993-05-14|1993-07-30|1993-05-26|TAKE BACK RETURN|RAIL|ss accounts engage furiously. slyly even re|
-2241|167|4|4|19|20276.04|0.10|0.00|A|F|1993-06-01|1993-08-05|1993-06-07|TAKE BACK RETURN|TRUCK| are furiously quickl|
-2241|82|3|5|2|1964.16|0.04|0.03|A|F|1993-08-16|1993-08-02|1993-08-24|NONE|REG AIR|, express deposits. pear|
-2241|116|3|6|22|22354.42|0.02|0.08|R|F|1993-08-13|1993-06-15|1993-08-16|DELIVER IN PERSON|TRUCK|, ironic depen|
-2241|142|3|7|9|9379.26|0.09|0.03|A|F|1993-05-14|1993-07-12|1993-05-29|NONE|AIR|lyly final |
-2242|123|4|1|15|15346.80|0.09|0.08|N|O|1997-08-04|1997-09-21|1997-08-11|COLLECT COD|FOB|its. carefully express packages cajole. bli|
-2243|127|8|1|10|10271.20|0.04|0.06|N|O|1995-07-26|1995-07-18|1995-08-03|NONE|RAIL|express, daring foxes affix fur|
-2244|51|6|1|3|2853.15|0.02|0.02|A|F|1993-04-30|1993-03-15|1993-05-19|TAKE BACK RETURN|FOB| beans for the regular platel|
-2244|193|6|2|16|17491.04|0.01|0.06|R|F|1993-02-12|1993-03-09|1993-02-28|COLLECT COD|FOB|rate around the reques|
-2245|76|7|1|44|42947.08|0.03|0.03|A|F|1993-06-12|1993-06-10|1993-06-16|NONE|TRUCK|refully even sheaves|
-2245|74|3|2|28|27273.96|0.05|0.03|R|F|1993-08-19|1993-07-27|1993-09-04|COLLECT COD|TRUCK|e requests sleep furiou|
-2245|86|7|3|33|32540.64|0.03|0.01|R|F|1993-06-26|1993-06-11|1993-07-17|TAKE BACK RETURN|AIR|ing to the carefully ruthless accounts|
-2245|189|10|4|14|15248.52|0.02|0.04|R|F|1993-05-06|1993-07-21|1993-05-19|DELIVER IN PERSON|RAIL|nts. always unusual dep|
-2245|80|8|5|33|32342.64|0.03|0.07|R|F|1993-06-16|1993-06-05|1993-07-07|NONE|MAIL| across the express reques|
-2246|53|4|1|22|20967.10|0.02|0.01|N|O|1996-07-25|1996-08-03|1996-08-24|DELIVER IN PERSON|SHIP|ructions wake carefully fina|
-2246|104|5|2|43|43176.30|0.07|0.06|N|O|1996-08-25|1996-08-23|1996-09-19|DELIVER IN PERSON|AIR|ainst the ironic theodolites haggle fi|
-2246|18|8|3|11|10098.11|0.10|0.00|N|O|1996-06-21|1996-07-24|1996-07-18|TAKE BACK RETURN|TRUCK|quests alongside o|
-2246|163|8|4|13|13821.08|0.08|0.05|N|O|1996-09-15|1996-07-21|1996-10-08|DELIVER IN PERSON|AIR|equests. fluffily special epitaphs use|
-2247|172|2|1|12|12866.04|0.02|0.07|A|F|1992-09-06|1992-09-18|1992-09-26|NONE|MAIL|final accounts. requests across the furiou|
-2272|90|1|1|18|17821.62|0.04|0.00|R|F|1993-08-01|1993-07-06|1993-08-25|NONE|MAIL|ons along the blithely e|
-2272|34|10|2|40|37361.20|0.07|0.00|A|F|1993-04-25|1993-07-12|1993-05-15|DELIVER IN PERSON|FOB|lithely ir|
-2272|56|4|3|36|34417.80|0.03|0.02|A|F|1993-05-25|1993-05-23|1993-06-09|TAKE BACK RETURN|RAIL|about the ironic packages; quickly iron|
-2272|138|4|4|30|31143.90|0.09|0.07|A|F|1993-07-27|1993-05-15|1993-08-13|NONE|RAIL|quests at the foxes haggle evenly pack|
-2272|76|4|5|12|11712.84|0.03|0.03|A|F|1993-04-19|1993-05-14|1993-04-23|NONE|RAIL| accounts cajole. quickly b|
-2273|184|5|1|34|36862.12|0.02|0.03|N|O|1997-01-08|1997-02-02|1997-01-23|COLLECT COD|MAIL| furiously carefully bold de|
-2273|85|6|2|35|34477.80|0.00|0.05|N|O|1997-01-02|1997-01-19|1997-01-14|NONE|REG AIR|arefully f|
-2273|95|8|3|8|7960.72|0.00|0.04|N|O|1996-12-15|1997-02-27|1997-01-10|NONE|FOB|dependencies. slyly ir|
-2273|161|6|4|20|21223.20|0.06|0.04|N|O|1997-03-05|1997-02-25|1997-04-01|NONE|RAIL|cuses. quickly enticing requests wake |
-2273|162|7|5|18|19118.88|0.07|0.00|N|O|1996-12-16|1997-01-21|1997-01-03|COLLECT COD|TRUCK| beans. doggedly final packages wake|
-2273|155|7|6|16|16882.40|0.10|0.03|N|O|1997-01-10|1997-02-03|1997-02-01|TAKE BACK RETURN|RAIL|furiously above the ironic requests. |
-2273|20|1|7|7|6440.14|0.05|0.05|N|O|1997-02-19|1997-01-22|1997-02-21|TAKE BACK RETURN|TRUCK|ts. furiou|
-2274|12|6|1|18|16416.18|0.04|0.03|R|F|1993-09-06|1993-12-03|1993-09-22|COLLECT COD|SHIP|usly final re|
-2274|111|8|2|23|23255.53|0.04|0.03|R|F|1993-10-28|1993-11-03|1993-11-05|NONE|MAIL|kly special warhorse|
-2274|129|10|3|18|18524.16|0.03|0.06|R|F|1993-09-28|1993-11-22|1993-10-12|DELIVER IN PERSON|SHIP| express packages. even accounts hagg|
-2275|34|5|1|30|28020.90|0.08|0.05|R|F|1993-01-10|1992-11-21|1993-01-22|NONE|REG AIR|re slyly slyly special idea|
-2275|91|4|2|11|10901.99|0.08|0.03|A|F|1993-01-16|1992-12-10|1993-01-25|COLLECT COD|REG AIR|ost across the never express instruction|
-2276|119|9|1|5|5095.55|0.07|0.08|N|O|1996-05-09|1996-06-18|1996-05-13|DELIVER IN PERSON|FOB|ias instea|
-2276|135|1|2|13|13456.69|0.08|0.04|N|O|1996-07-24|1996-06-18|1996-08-16|COLLECT COD|RAIL|arefully ironic foxes cajole q|
-2276|171|2|3|27|28921.59|0.07|0.08|N|O|1996-07-30|1996-06-10|1996-07-31|DELIVER IN PERSON|RAIL|the carefully unusual accoun|
-2276|109|6|4|38|38345.80|0.06|0.03|N|O|1996-07-07|1996-06-28|1996-07-17|COLLECT COD|RAIL|ans. pinto beans boost c|
-2276|153|5|5|50|52657.50|0.03|0.05|N|O|1996-07-13|1996-06-25|1996-07-22|DELIVER IN PERSON|REG AIR| accounts dete|
-2276|6|9|6|4|3624.00|0.10|0.03|N|O|1996-07-05|1996-06-30|1996-08-04|COLLECT COD|FOB|s. deposits |
-2277|137|8|1|38|39410.94|0.03|0.07|R|F|1995-04-23|1995-03-25|1995-05-20|TAKE BACK RETURN|TRUCK|fully bold|
-2277|8|1|2|2|1816.00|0.10|0.08|A|F|1995-02-01|1995-02-04|1995-03-02|TAKE BACK RETURN|AIR|endencies sleep idly pending p|
-2277|198|10|3|4|4392.76|0.05|0.06|R|F|1995-04-27|1995-03-16|1995-04-29|TAKE BACK RETURN|SHIP|. quickly unusual deposi|
-2277|159|4|4|31|32833.65|0.02|0.00|R|F|1995-03-07|1995-03-19|1995-03-26|TAKE BACK RETURN|MAIL|ic instructions detect ru|
-2278|45|2|1|36|34021.44|0.04|0.05|N|O|1998-06-04|1998-06-06|1998-06-30|NONE|TRUCK|y ironic pinto beans br|
-2278|45|2|2|50|47252.00|0.02|0.00|N|O|1998-08-09|1998-07-08|1998-09-05|DELIVER IN PERSON|RAIL|into beans. blit|
-2278|97|9|3|22|21935.98|0.03|0.00|N|O|1998-05-15|1998-07-14|1998-06-04|TAKE BACK RETURN|REG AIR|ep regular accounts. blithely even|
-2279|14|5|1|12|10968.12|0.07|0.08|A|F|1993-05-10|1993-03-25|1993-06-02|COLLECT COD|REG AIR|lets across the excuses nag quickl|
-2279|41|2|2|38|35759.52|0.08|0.07|R|F|1993-06-09|1993-04-06|1993-06-26|COLLECT COD|TRUCK|s above the furiously express dep|
-2279|4|7|3|3|2712.00|0.09|0.04|A|F|1993-05-31|1993-05-07|1993-06-05|COLLECT COD|REG AIR|ing foxes above the even accounts use slyly|
-2279|52|4|4|42|39986.10|0.02|0.00|R|F|1993-02-28|1993-04-25|1993-03-02|TAKE BACK RETURN|REG AIR| above the furiously ironic deposits. |
-2279|169|8|5|9|9622.44|0.05|0.04|R|F|1993-05-21|1993-03-29|1993-06-17|DELIVER IN PERSON|MAIL|ns cajole after the final platelets. s|
-2279|147|10|6|12|12565.68|0.02|0.00|R|F|1993-05-04|1993-04-26|1993-05-28|DELIVER IN PERSON|FOB|ccounts. slyl|
-2279|119|9|7|32|32611.52|0.05|0.05|A|F|1993-04-20|1993-05-22|1993-05-18|DELIVER IN PERSON|RAIL|re quickly. furiously ironic ide|
-2304|200|2|1|42|46208.40|0.00|0.01|A|F|1994-01-20|1994-03-04|1994-02-05|COLLECT COD|RAIL|quests are blithely alongside of|
-2304|19|9|2|48|44112.48|0.00|0.00|R|F|1994-02-12|1994-02-16|1994-03-10|COLLECT COD|REG AIR| deposits cajole blithely e|
-2304|48|9|3|3|2844.12|0.00|0.05|R|F|1994-03-19|1994-03-04|1994-03-20|DELIVER IN PERSON|AIR|l excuses after the ev|
-2305|174|4|1|3|3222.51|0.00|0.01|A|F|1993-03-24|1993-04-05|1993-03-29|NONE|AIR|kages haggle quickly across the blithely |
-2305|60|8|2|39|37442.34|0.07|0.00|R|F|1993-04-16|1993-04-17|1993-04-22|COLLECT COD|MAIL|ms after the foxes |
-2305|102|3|3|32|32067.20|0.03|0.06|A|F|1993-04-02|1993-03-18|1993-04-03|NONE|AIR| haggle caref|
-2305|112|3|4|17|17205.87|0.00|0.05|A|F|1993-02-21|1993-03-30|1993-03-19|TAKE BACK RETURN|MAIL| carefully alongside of |
-2305|155|7|5|26|27433.90|0.06|0.07|A|F|1993-05-14|1993-02-28|1993-06-04|NONE|SHIP|arefully final theodo|
-2305|51|3|6|7|6657.35|0.06|0.00|R|F|1993-05-15|1993-04-25|1993-06-09|DELIVER IN PERSON|RAIL|gular deposits boost about the foxe|
-2306|196|9|1|50|54809.50|0.09|0.01|N|O|1995-07-27|1995-09-26|1995-08-06|DELIVER IN PERSON|FOB|y quickly |
-2306|149|2|2|39|40916.46|0.04|0.00|N|O|1995-09-07|1995-09-13|1995-10-03|COLLECT COD|SHIP|f the slyly unusual accounts. furiousl|
-2306|178|6|3|35|37735.95|0.01|0.07|N|O|1995-08-18|1995-08-30|1995-08-20|TAKE BACK RETURN|RAIL|raids along the furiously unusual asympto|
-2306|119|3|4|21|21401.31|0.06|0.01|N|O|1995-10-07|1995-09-18|1995-10-17|COLLECT COD|MAIL| ironic pinto |
-2306|142|9|5|42|43769.88|0.04|0.07|N|O|1995-09-05|1995-08-25|1995-09-28|COLLECT COD|MAIL|furiously final acco|
-2306|124|5|6|29|29699.48|0.00|0.03|N|O|1995-11-01|1995-09-01|1995-11-22|DELIVER IN PERSON|REG AIR|uld have to mold. s|
-2306|176|4|7|19|20447.23|0.07|0.01|N|O|1995-11-17|1995-09-06|1995-11-30|DELIVER IN PERSON|AIR|tainments nag furiously carefull|
-2307|142|9|1|24|25011.36|0.10|0.05|R|F|1993-10-07|1993-08-05|1993-10-20|COLLECT COD|AIR|stealthily special packages nag a|
-2307|140|6|2|2|2080.28|0.01|0.00|A|F|1993-09-21|1993-08-22|1993-10-03|COLLECT COD|SHIP|ously. furiously furious requ|
-2307|34|10|3|7|6538.21|0.07|0.04|R|F|1993-08-03|1993-09-04|1993-08-28|DELIVER IN PERSON|AIR|ven instructions wake fluffily |
-2307|165|6|4|19|20238.04|0.08|0.06|R|F|1993-10-23|1993-09-09|1993-11-09|TAKE BACK RETURN|TRUCK|olites haggle furiously around the |
-2307|143|4|5|7|7301.98|0.01|0.06|R|F|1993-09-01|1993-08-08|1993-09-29|NONE|AIR| packages cajo|
-2308|118|9|1|24|24434.64|0.06|0.04|R|F|1993-02-23|1992-12-24|1993-03-10|NONE|MAIL|ts sleep. busy excuses along the s|
-2308|56|1|2|36|34417.80|0.05|0.06|A|F|1992-11-11|1992-11-27|1992-11-23|NONE|MAIL|ong the pending hockey players. blithe|
-2309|170|7|1|14|14982.38|0.10|0.03|N|O|1996-01-01|1995-10-22|1996-01-23|NONE|AIR|asymptotes. furiously pending acco|
-2309|169|8|2|1|1069.16|0.01|0.05|N|O|1995-12-08|1995-11-03|1995-12-31|COLLECT COD|RAIL|eposits alongside of the final re|
-2309|15|2|3|5|4575.05|0.01|0.00|N|O|1995-12-10|1995-10-29|1996-01-06|TAKE BACK RETURN|SHIP|s. requests wake blithely specia|
-2309|139|10|4|46|47799.98|0.08|0.04|N|O|1995-10-02|1995-10-30|1995-10-30|NONE|REG AIR|sly according to the carefully |
-2309|137|3|5|9|9334.17|0.00|0.07|N|O|1995-12-21|1995-10-10|1996-01-20|COLLECT COD|AIR|ding, unusual instructions. dep|
-2309|195|8|6|21|22998.99|0.09|0.00|N|O|1995-11-05|1995-11-07|1995-11-22|NONE|AIR|unts around the dolphins ar|
-2309|138|4|7|48|49830.24|0.03|0.05|N|O|1995-10-21|1995-11-21|1995-11-09|NONE|MAIL|ccounts. id|
-2310|58|6|1|36|34489.80|0.03|0.03|N|O|1996-10-09|1996-10-28|1996-10-29|TAKE BACK RETURN|RAIL|iously against the slyly special accounts|
-2310|171|2|2|6|6427.02|0.07|0.01|N|O|1996-11-08|1996-12-09|1996-12-07|COLLECT COD|REG AIR|e slyly about the quickly ironic theodo|
-2310|42|1|3|48|45217.92|0.08|0.02|N|O|1996-10-04|1996-11-20|1996-10-25|TAKE BACK RETURN|FOB|ep slyly alongside of the |
-2311|141|8|1|18|18740.52|0.01|0.01|N|F|1995-06-11|1995-06-18|1995-07-02|NONE|FOB| fluffily even patterns haggle blithely. re|
-2311|122|1|2|49|50083.88|0.09|0.02|R|F|1995-05-14|1995-07-11|1995-05-20|COLLECT COD|FOB|ideas sleep|
-2311|54|5|3|15|14310.75|0.08|0.04|N|O|1995-06-23|1995-06-06|1995-07-09|COLLECT COD|AIR|ve the blithely pending accounts. furio|
-2311|90|1|4|42|41583.78|0.01|0.06|R|F|1995-06-03|1995-06-27|1995-06-11|DELIVER IN PERSON|MAIL|gle furiously. bold |
-2311|47|10|5|1|947.04|0.05|0.02|A|F|1995-06-07|1995-06-20|1995-06-10|NONE|AIR|ptotes. furiously regular theodolite|
-2311|12|9|6|32|29184.32|0.01|0.03|N|O|1995-07-19|1995-06-26|1995-07-26|NONE|RAIL|sts along the slyly|
-2336|193|5|1|20|21863.80|0.01|0.03|N|O|1996-03-12|1996-02-25|1996-03-18|NONE|REG AIR|across the fi|
-2337|45|2|1|49|46306.96|0.06|0.05|N|O|1997-08-08|1997-08-15|1997-08-31|TAKE BACK RETURN|FOB| along the packages. furiously p|
-2338|52|7|1|30|28561.50|0.07|0.06|N|O|1997-12-10|1997-10-15|1997-12-11|TAKE BACK RETURN|REG AIR|ould have to nag quickly|
-2339|192|3|1|22|24028.18|0.03|0.03|A|F|1994-01-06|1994-03-06|1994-01-10|NONE|FOB| furiously above |
-2339|30|5|2|28|26040.84|0.00|0.00|R|F|1994-01-25|1994-01-22|1994-01-28|DELIVER IN PERSON|RAIL|e bold, even packag|
-2339|117|4|3|13|13222.43|0.06|0.08|R|F|1994-03-10|1994-02-18|1994-03-20|TAKE BACK RETURN|REG AIR|ges. blithely special depend|
-2340|138|4|1|9|9343.17|0.08|0.02|N|O|1996-05-01|1996-02-24|1996-05-16|COLLECT COD|RAIL|. carefully ironic|
-2340|193|5|2|21|22956.99|0.06|0.02|N|O|1996-01-17|1996-03-04|1996-01-29|DELIVER IN PERSON|SHIP| asymptotes. unusual theo|
-2341|47|10|1|12|11364.48|0.08|0.03|R|F|1993-06-06|1993-07-08|1993-06-17|DELIVER IN PERSON|FOB|. quickly final deposits sl|
-2341|71|10|2|37|35929.59|0.07|0.08|A|F|1993-09-23|1993-07-25|1993-10-14|DELIVER IN PERSON|RAIL|was blithel|
-2341|195|8|3|8|8761.52|0.03|0.07|R|F|1993-06-08|1993-07-09|1993-06-10|COLLECT COD|FOB|ns affix above the iron|
-2342|42|1|1|12|11304.48|0.00|0.08|N|O|1996-07-31|1996-07-26|1996-08-14|NONE|TRUCK|print blithely even deposits. carefull|
-2342|117|1|2|24|24410.64|0.10|0.06|N|O|1996-09-30|1996-07-22|1996-10-28|TAKE BACK RETURN|AIR|nstructions c|
-2342|170|1|3|50|53508.50|0.10|0.01|N|O|1996-08-28|1996-07-18|1996-09-22|COLLECT COD|RAIL|cial asymptotes pr|
-2342|36|7|4|1|936.03|0.04|0.06|N|O|1996-08-31|1996-08-09|1996-09-07|DELIVER IN PERSON|REG AIR|ffily. unusual pinto beans wake c|
-2342|27|2|5|22|20394.44|0.08|0.01|N|O|1996-08-10|1996-08-02|1996-08-31|DELIVER IN PERSON|AIR|s. ironic |
-2343|110|1|1|27|27272.97|0.00|0.00|N|O|1995-11-10|1995-11-17|1995-12-10|TAKE BACK RETURN|SHIP|old theodolites.|
-2343|66|1|2|35|33812.10|0.03|0.06|N|O|1995-10-24|1995-11-09|1995-10-26|COLLECT COD|TRUCK|ges haggle furiously carefully regular req|
-2343|179|7|3|21|22662.57|0.00|0.03|N|O|1995-09-07|1995-10-26|1995-10-07|TAKE BACK RETURN|RAIL|osits. unusual theodolites boost furio|
-2368|152|3|1|16|16834.40|0.04|0.03|R|F|1993-10-31|1993-10-22|1993-11-06|NONE|REG AIR|telets wake carefully iro|
-2368|14|5|2|32|29248.32|0.03|0.00|R|F|1993-09-23|1993-10-07|1993-09-27|COLLECT COD|TRUCK|gular courts use blithely around the|
-2368|149|6|3|39|40916.46|0.08|0.03|R|F|1993-09-03|1993-09-20|1993-09-28|COLLECT COD|RAIL|ng the doggedly ironic requests are blithe|
-2368|156|8|4|17|17954.55|0.10|0.08|A|F|1993-10-03|1993-09-27|1993-10-05|NONE|FOB|fily. slyly final ideas alongside o|
-2369|24|7|1|30|27720.60|0.05|0.04|N|O|1997-04-23|1997-02-12|1997-05-21|COLLECT COD|REG AIR|pecial deposits sleep. blithely unusual w|
-2369|169|10|2|47|50250.52|0.10|0.02|N|O|1997-01-02|1997-02-18|1997-01-13|COLLECT COD|RAIL| to the regular dep|
-2370|46|3|1|3|2838.12|0.03|0.07|R|F|1994-03-24|1994-03-26|1994-04-15|COLLECT COD|SHIP|ly regular Tiresia|
-2370|2|5|2|24|21648.00|0.00|0.05|A|F|1994-05-15|1994-04-09|1994-06-12|NONE|REG AIR|final depen|
-2370|61|2|3|32|30753.92|0.05|0.02|A|F|1994-04-24|1994-03-03|1994-05-15|DELIVER IN PERSON|MAIL|ies since the final deposits|
-2370|6|3|4|21|19026.00|0.04|0.01|R|F|1994-02-01|1994-02-19|1994-02-09|TAKE BACK RETURN|MAIL|ecial dependencies must have to |
-2371|159|4|1|37|39188.55|0.05|0.05|N|O|1998-02-11|1998-03-24|1998-02-27|DELIVER IN PERSON|TRUCK|s boost fluffil|
-2371|35|1|2|21|19635.63|0.00|0.05|N|O|1998-04-14|1998-02-14|1998-04-18|COLLECT COD|AIR|gle furiously regu|
-2371|101|4|3|11|11012.10|0.05|0.02|N|O|1998-02-25|1998-04-06|1998-03-23|TAKE BACK RETURN|TRUCK|requests. regular pinto beans wake. car|
-2371|43|6|4|33|31120.32|0.05|0.08|N|O|1998-03-30|1998-02-06|1998-04-05|DELIVER IN PERSON|AIR|deas are. express r|
-2371|165|2|5|22|23433.52|0.02|0.05|N|O|1998-03-26|1998-03-19|1998-04-16|DELIVER IN PERSON|REG AIR|y daring accounts. regular ins|
-2371|86|7|6|39|38457.12|0.05|0.03|N|O|1998-04-01|1998-03-13|1998-04-27|NONE|REG AIR|tructions. regular, stealthy packages wak|
-2371|36|2|7|32|29952.96|0.07|0.07|N|O|1998-02-15|1998-04-03|1998-02-23|NONE|REG AIR|the ruthless accounts. |
-2372|43|4|1|42|39607.68|0.08|0.02|N|O|1998-01-04|1998-01-02|1998-02-02|COLLECT COD|REG AIR|lar packages. regular|
-2372|3|10|2|17|15351.00|0.07|0.01|N|O|1997-12-17|1998-01-17|1997-12-25|NONE|RAIL|xcuses. slyly ironic theod|
-2372|164|1|3|12|12769.92|0.04|0.04|N|O|1998-03-21|1997-12-21|1998-04-12|DELIVER IN PERSON|SHIP|lyly according to|
-2372|122|1|4|4|4088.48|0.00|0.07|N|O|1997-12-14|1997-12-28|1997-12-16|TAKE BACK RETURN|REG AIR|e carefully blithely even epitaphs. r|
-2372|20|7|5|5|4600.10|0.02|0.04|N|O|1998-02-08|1998-01-18|1998-03-02|TAKE BACK RETURN|RAIL|ets against the |
-2372|189|10|6|11|11980.98|0.02|0.06|N|O|1998-02-14|1998-01-18|1998-03-10|TAKE BACK RETURN|FOB| silent, pending de|
-2372|57|8|7|19|18183.95|0.01|0.06|N|O|1997-12-26|1998-02-19|1998-01-02|COLLECT COD|SHIP| beans haggle sometimes|
-2373|191|5|1|17|18550.23|0.02|0.01|R|F|1994-03-29|1994-05-19|1994-04-20|COLLECT COD|AIR|auternes. blithely even pinto bea|
-2373|136|2|2|3|3108.39|0.08|0.08|R|F|1994-05-15|1994-06-10|1994-06-04|COLLECT COD|TRUCK|dependencies wake ironical|
-2373|141|8|3|29|30193.06|0.05|0.02|A|F|1994-06-01|1994-05-14|1994-06-17|NONE|TRUCK|yly silent ideas affix furiousl|
-2373|91|5|4|5|4955.45|0.10|0.01|R|F|1994-06-02|1994-05-03|1994-06-21|NONE|REG AIR|uffily blithely ironic requests|
-2374|118|2|1|41|41742.51|0.07|0.00|A|F|1994-01-27|1993-12-11|1994-02-12|TAKE BACK RETURN|RAIL|heodolites. requests|
-2374|160|2|2|24|25443.84|0.07|0.08|A|F|1994-02-02|1994-01-12|1994-02-04|DELIVER IN PERSON|TRUCK|. requests are above t|
-2374|61|8|3|2|1922.12|0.06|0.02|R|F|1993-12-30|1994-01-24|1994-01-02|COLLECT COD|FOB|, unusual ideas. deposits cajole quietl|
-2374|74|5|4|28|27273.96|0.04|0.08|R|F|1994-02-19|1993-12-16|1994-03-15|COLLECT COD|MAIL|ets cajole fu|
-2374|1|2|5|25|22525.00|0.08|0.00|A|F|1993-11-26|1993-12-15|1993-12-10|COLLECT COD|RAIL|refully pending d|
-2375|168|9|1|3|3204.48|0.02|0.08|N|O|1997-02-14|1996-12-25|1997-02-22|COLLECT COD|RAIL|slyly across the furiously e|
-2375|132|8|2|9|9289.17|0.09|0.02|N|O|1997-02-17|1996-12-27|1997-02-27|DELIVER IN PERSON|MAIL|ly against the packages. bold pinto bean|
-2375|47|4|3|26|24623.04|0.02|0.06|N|O|1997-03-18|1997-02-02|1997-03-29|TAKE BACK RETURN|TRUCK|rate across the|
-2375|5|8|4|5|4525.00|0.01|0.00|N|O|1997-01-31|1997-01-25|1997-02-22|COLLECT COD|REG AIR|final packages cajole according to the furi|
-2375|88|9|5|42|41499.36|0.01|0.08|N|O|1997-01-24|1997-02-15|1997-02-07|DELIVER IN PERSON|FOB|apades. idea|
-2375|126|7|6|20|20522.40|0.09|0.08|N|O|1996-12-01|1996-12-26|1996-12-19|TAKE BACK RETURN|SHIP|ckages! blithely enticing deposi|
-2400|103|6|1|48|48148.80|0.01|0.02|N|O|1998-10-07|1998-08-30|1998-11-03|DELIVER IN PERSON|MAIL|fore the car|
-2400|90|1|2|1|990.09|0.04|0.07|N|O|1998-08-18|1998-09-12|1998-09-11|NONE|MAIL|silent deposits serve furious|
-2400|53|5|3|23|21920.15|0.02|0.08|N|O|1998-08-05|1998-08-28|1998-08-30|NONE|SHIP|tions. fluffily ironic platelets cajole c|
-2400|17|7|4|23|21091.23|0.09|0.04|N|O|1998-10-04|1998-10-04|1998-10-31|NONE|RAIL|ages lose carefully around the regula|
-2401|182|3|1|39|42205.02|0.00|0.03|N|O|1997-09-29|1997-10-21|1997-10-17|DELIVER IN PERSON|FOB|ould affix |
-2401|3|8|2|49|44247.00|0.05|0.07|N|O|1997-09-02|1997-09-11|1997-09-13|TAKE BACK RETURN|AIR|lites cajole carefully |
-2402|86|7|1|43|42401.44|0.03|0.08|N|O|1996-09-17|1996-11-20|1996-09-22|DELIVER IN PERSON|RAIL|slyly slyly blithe sheaves|
-2402|152|4|2|24|25251.60|0.02|0.05|N|O|1996-11-21|1996-10-19|1996-11-29|DELIVER IN PERSON|SHIP|as; blithely ironic requ|
-2403|83|4|1|34|33424.72|0.04|0.07|N|O|1998-05-30|1998-06-19|1998-06-05|NONE|REG AIR| slyly bold re|
-2403|152|4|2|19|19990.85|0.08|0.07|N|O|1998-04-20|1998-07-02|1998-05-13|DELIVER IN PERSON|FOB|sits. ironic in|
-2403|193|4|3|27|29516.13|0.05|0.03|N|O|1998-07-27|1998-07-08|1998-08-03|NONE|SHIP|deposits sleep slyly special theodolit|
-2403|31|2|4|30|27930.90|0.05|0.06|N|O|1998-08-08|1998-06-17|1998-08-20|NONE|TRUCK|ackages sleep furiously pendin|
-2404|147|10|1|36|37697.04|0.07|0.00|N|O|1997-03-27|1997-05-16|1997-04-06|COLLECT COD|REG AIR|s nag furi|
-2404|36|2|2|1|936.03|0.02|0.04|N|O|1997-05-22|1997-06-06|1997-05-28|DELIVER IN PERSON|MAIL|from the final orbits? even pinto beans hag|
-2404|18|5|3|41|37638.41|0.02|0.06|N|O|1997-06-12|1997-05-03|1997-07-12|NONE|AIR| dolphins are|
-2404|57|8|4|19|18183.95|0.09|0.03|N|O|1997-05-07|1997-05-24|1997-05-24|TAKE BACK RETURN|SHIP|cuses. quickly even in|
-2404|4|9|5|18|16272.00|0.00|0.04|N|O|1997-06-25|1997-05-06|1997-07-02|NONE|RAIL|packages. even requests according to |
-2405|89|10|1|18|17803.44|0.09|0.07|N|O|1997-01-23|1997-03-10|1997-02-03|COLLECT COD|REG AIR|carefully ironic accounts. slyly |
-2405|27|10|2|30|27810.60|0.10|0.08|N|O|1997-03-24|1997-03-10|1997-04-14|TAKE BACK RETURN|AIR|y final deposits are slyly caref|
-2405|17|8|3|49|44933.49|0.00|0.06|N|O|1996-12-24|1997-03-23|1997-01-01|TAKE BACK RETURN|FOB|cial requests. ironic, regu|
-2405|177|7|4|23|24774.91|0.08|0.05|N|O|1996-12-28|1997-01-29|1997-01-07|NONE|AIR|t wake blithely blithely regular idea|
-2406|170|5|1|18|19263.06|0.07|0.05|N|O|1997-02-17|1996-12-25|1997-02-19|COLLECT COD|MAIL|azzle furiously careful|
-2406|41|8|2|40|37641.60|0.02|0.07|N|O|1997-01-09|1996-12-02|1997-01-16|NONE|SHIP|gular accounts caj|
-2406|50|1|3|16|15200.80|0.07|0.03|N|O|1996-10-31|1996-11-28|1996-11-08|TAKE BACK RETURN|SHIP| special accou|
-2406|146|9|4|34|35568.76|0.07|0.06|N|O|1996-12-01|1996-12-07|1996-12-16|NONE|AIR|hinly even accounts are slyly q|
-2406|187|8|5|25|27179.50|0.08|0.02|N|O|1996-12-03|1996-12-14|1996-12-26|COLLECT COD|MAIL|al, regular in|
-2406|59|4|6|22|21099.10|0.05|0.02|N|O|1996-11-22|1997-01-17|1996-12-15|NONE|TRUCK|hely even foxes unwind furiously aga|
-2406|60|2|7|30|28801.80|0.07|0.07|N|O|1997-01-17|1997-01-12|1997-01-22|TAKE BACK RETURN|TRUCK| final pinto beans han|
-2407|64|3|1|14|13496.84|0.04|0.02|N|O|1998-10-10|1998-08-25|1998-10-27|NONE|FOB|l dependencies s|
-2407|166|7|2|9|9595.44|0.07|0.05|N|O|1998-08-06|1998-08-11|1998-08-20|TAKE BACK RETURN|TRUCK|ts. special deposits are closely.|
-2407|131|2|3|39|40214.07|0.02|0.02|N|O|1998-08-20|1998-09-12|1998-08-22|DELIVER IN PERSON|MAIL|iously final deposits solv|
-2407|91|4|4|10|9910.90|0.01|0.07|N|O|1998-08-14|1998-09-10|1998-08-29|COLLECT COD|FOB| pending instructions. theodolites x-|
-2407|198|1|5|14|15374.66|0.04|0.05|N|O|1998-09-24|1998-08-18|1998-10-06|DELIVER IN PERSON|FOB|tructions wake stealt|
-2407|71|9|6|18|17479.26|0.04|0.01|N|O|1998-10-03|1998-08-30|1998-10-19|TAKE BACK RETURN|MAIL| wake carefully. fluffily |
-2407|161|8|7|7|7428.12|0.07|0.03|N|O|1998-09-11|1998-08-15|1998-09-30|TAKE BACK RETURN|MAIL|totes are carefully accordin|
-2432|50|3|1|30|28501.50|0.03|0.02|N|O|1996-09-05|1996-10-10|1996-10-05|TAKE BACK RETURN|TRUCK| requests wake alongside of|
-2432|162|3|2|8|8497.28|0.07|0.01|N|O|1996-10-16|1996-10-01|1996-11-13|COLLECT COD|RAIL|s about the bold, close deposit|
-2432|109|2|3|13|13118.30|0.07|0.06|N|O|1996-09-03|1996-10-10|1996-10-03|NONE|RAIL|arefully about the caref|
-2432|13|4|4|14|12782.14|0.00|0.06|N|O|1996-08-18|1996-09-04|1996-08-27|TAKE BACK RETURN|RAIL|riously regular packages. p|
-2433|87|8|1|39|38496.12|0.01|0.04|R|F|1994-11-20|1994-09-23|1994-12-10|DELIVER IN PERSON|SHIP|ly final asy|
-2433|134|5|2|20|20682.60|0.05|0.06|A|F|1994-12-09|1994-10-20|1994-12-15|COLLECT COD|REG AIR|lithely blithely final ide|
-2433|157|2|3|38|40171.70|0.08|0.03|A|F|1994-10-15|1994-10-23|1994-11-06|DELIVER IN PERSON|SHIP|. slyly regular requests sle|
-2433|121|6|4|43|43908.16|0.01|0.05|A|F|1994-10-16|1994-10-23|1994-11-08|DELIVER IN PERSON|RAIL|ular requests. slyly even pa|
-2433|108|1|5|3|3024.30|0.06|0.02|A|F|1994-11-08|1994-09-24|1994-11-17|COLLECT COD|AIR|usly pending depos|
-2434|95|6|1|1|995.09|0.01|0.06|N|O|1997-08-02|1997-05-28|1997-08-19|TAKE BACK RETURN|MAIL| furiously express packages. ironic, pend|
-2434|127|10|2|39|40057.68|0.09|0.05|N|O|1997-06-10|1997-06-08|1997-07-03|COLLECT COD|RAIL|r deposits sleep furiou|
-2434|130|3|3|28|28843.64|0.02|0.05|N|O|1997-06-28|1997-06-26|1997-07-15|COLLECT COD|RAIL|ven theodolites around the slyly|
-2434|168|9|4|49|52339.84|0.00|0.05|N|O|1997-08-08|1997-07-23|1997-08-27|DELIVER IN PERSON|FOB| after the requests haggle bold, fina|
-2435|39|10|1|8|7512.24|0.08|0.03|A|F|1993-06-08|1993-04-04|1993-06-29|COLLECT COD|SHIP|e fluffily quickly final accounts. care|
-2435|49|2|2|43|40808.72|0.03|0.08|A|F|1993-03-27|1993-05-20|1993-04-18|DELIVER IN PERSON|TRUCK|alongside of the s|
-2435|12|9|3|24|21888.24|0.07|0.08|R|F|1993-03-14|1993-05-20|1993-03-26|DELIVER IN PERSON|SHIP|s. carefully regular d|
-2435|156|4|4|22|23235.30|0.02|0.05|R|F|1993-05-23|1993-04-14|1993-06-04|NONE|SHIP|e final, final deposits. carefully regular|
-2435|72|2|5|3|2916.21|0.07|0.07|R|F|1993-06-01|1993-03-25|1993-06-27|DELIVER IN PERSON|FOB| final accounts ar|
-2435|46|9|6|17|16082.68|0.02|0.02|A|F|1993-06-05|1993-05-05|1993-06-14|NONE|TRUCK|cajole aft|
-2435|121|10|7|8|8168.96|0.07|0.02|R|F|1993-05-03|1993-04-02|1993-05-17|COLLECT COD|SHIP|ng the fluffily special foxes nag |
-2436|155|6|1|48|50647.20|0.04|0.02|N|O|1995-10-22|1995-10-22|1995-11-16|DELIVER IN PERSON|FOB|he furiously |
-2436|117|7|2|18|18307.98|0.05|0.03|N|O|1995-10-14|1995-11-21|1995-11-12|TAKE BACK RETURN|TRUCK|y ironic accounts. furiously even packa|
-2436|164|3|3|6|6384.96|0.06|0.08|N|O|1995-10-25|1995-11-30|1995-11-24|DELIVER IN PERSON|RAIL|odolites. ep|
-2437|94|6|1|46|45728.14|0.07|0.04|A|F|1993-08-12|1993-06-16|1993-08-29|NONE|RAIL|e of the bold, dogged requests|
-2437|190|1|2|26|28344.94|0.00|0.04|A|F|1993-06-25|1993-05-22|1993-07-07|DELIVER IN PERSON|REG AIR|lyly regular accounts.|
-2437|2|7|3|23|20746.00|0.01|0.00|A|F|1993-08-15|1993-06-28|1993-08-23|TAKE BACK RETURN|SHIP|s deposits. pendi|
-2437|116|10|4|12|12193.32|0.03|0.08|A|F|1993-04-27|1993-07-01|1993-05-18|TAKE BACK RETURN|FOB|thely regular deposits. ironic fray|
-2437|17|7|5|29|26593.29|0.02|0.06|A|F|1993-05-12|1993-06-10|1993-05-25|NONE|FOB|ress dolphins. furiously fin|
-2437|19|3|6|10|9190.10|0.10|0.06|A|F|1993-05-20|1993-06-23|1993-05-22|TAKE BACK RETURN|MAIL|unts. even, ironic pl|
-2438|165|2|1|45|47932.20|0.01|0.00|A|F|1993-10-27|1993-09-24|1993-11-02|COLLECT COD|REG AIR|en theodolites w|
-2438|13|4|2|31|28303.31|0.08|0.01|R|F|1993-10-16|1993-08-31|1993-11-10|COLLECT COD|REG AIR|t. slyly ironic sh|
-2438|68|7|3|10|9680.60|0.10|0.00|R|F|1993-08-18|1993-08-28|1993-09-08|NONE|SHIP|engage car|
-2438|161|8|4|27|28651.32|0.01|0.02|R|F|1993-07-27|1993-10-01|1993-08-06|TAKE BACK RETURN|FOB|inal accounts. slyly final reques|
-2438|166|3|5|28|29852.48|0.07|0.06|R|F|1993-11-05|1993-08-22|1993-11-22|TAKE BACK RETURN|TRUCK|ctions. bli|
-2438|149|6|6|23|24130.22|0.09|0.02|R|F|1993-10-06|1993-08-17|1993-10-16|DELIVER IN PERSON|MAIL|ely; blithely special pinto beans breach|
-2438|183|4|7|46|49826.28|0.02|0.05|R|F|1993-10-27|1993-08-30|1993-11-14|COLLECT COD|SHIP| ironic requests cajole f|
-2439|164|1|1|2|2128.32|0.09|0.03|N|O|1997-04-14|1997-06-11|1997-05-09|COLLECT COD|MAIL|courts boos|
-2439|144|5|2|5|5220.70|0.07|0.01|N|O|1997-04-23|1997-04-26|1997-04-28|DELIVER IN PERSON|FOB|ites. furiously|
-2439|195|7|3|33|36141.27|0.08|0.05|N|O|1997-06-01|1997-05-15|1997-06-07|TAKE BACK RETURN|FOB|asymptotes wake packages-- furiously|
-2464|49|8|1|10|9490.40|0.05|0.03|N|O|1998-02-04|1997-12-29|1998-02-16|TAKE BACK RETURN|RAIL|slyly final pinto bean|
-2464|101|6|2|20|20022.00|0.01|0.07|N|O|1997-12-26|1998-01-02|1998-01-24|DELIVER IN PERSON|FOB|sts. slyly close ideas shall h|
-2465|68|5|1|27|26137.62|0.05|0.02|N|O|1995-09-05|1995-09-07|1995-09-17|DELIVER IN PERSON|FOB|posits boost carefully unusual instructio|
-2465|51|3|2|34|32335.70|0.02|0.05|N|O|1995-10-02|1995-08-04|1995-10-09|COLLECT COD|RAIL|posits wake. regular package|
-2465|32|3|3|8|7456.24|0.10|0.00|N|O|1995-10-16|1995-08-26|1995-11-07|TAKE BACK RETURN|FOB|s across the express deposits wak|
-2465|148|7|4|45|47166.30|0.03|0.01|N|O|1995-09-27|1995-08-25|1995-10-06|NONE|TRUCK|y silent foxes. final pinto beans above |
-2465|47|4|5|50|47352.00|0.01|0.04|N|O|1995-09-01|1995-09-06|1995-09-18|TAKE BACK RETURN|TRUCK|the pending th|
-2465|124|5|6|20|20482.40|0.03|0.03|N|O|1995-08-16|1995-08-13|1995-09-02|COLLECT COD|FOB|uriously? furiously ironic excu|
-2466|186|7|1|16|17378.88|0.00|0.02|R|F|1994-04-20|1994-04-20|1994-05-09|COLLECT COD|FOB|to beans sl|
-2466|105|8|2|10|10051.00|0.00|0.00|A|F|1994-05-08|1994-04-06|1994-06-05|DELIVER IN PERSON|AIR|sly regular deposits. regular, regula|
-2466|14|1|3|29|26506.29|0.10|0.07|A|F|1994-06-11|1994-04-27|1994-07-10|DELIVER IN PERSON|FOB|ckages. bold requests nag carefully.|
-2466|11|8|4|29|26419.29|0.04|0.04|A|F|1994-04-01|1994-04-20|1994-04-23|DELIVER IN PERSON|MAIL|es boost fluffily ab|
-2466|79|10|5|30|29372.10|0.02|0.01|A|F|1994-04-11|1994-05-02|1994-05-02|DELIVER IN PERSON|REG AIR|. fluffily even pinto beans are idly. f|
-2466|173|2|6|19|20390.23|0.10|0.07|R|F|1994-06-12|1994-04-18|1994-07-12|NONE|MAIL|ccounts cajole a|
-2466|155|7|7|35|36930.25|0.10|0.00|A|F|1994-06-01|1994-05-27|1994-06-21|COLLECT COD|AIR| packages detect carefully: ironically sl|
-2467|133|9|1|7|7231.91|0.00|0.00|N|O|1995-07-28|1995-10-04|1995-08-27|NONE|REG AIR|gular packages cajole |
-2468|94|7|1|46|45728.14|0.00|0.04|N|O|1997-07-16|1997-08-09|1997-08-07|COLLECT COD|SHIP|unusual theodolites su|
-2468|21|10|2|43|39603.86|0.00|0.04|N|O|1997-08-17|1997-08-21|1997-08-30|DELIVER IN PERSON|FOB|uriously eve|
-2468|195|6|3|44|48188.36|0.00|0.03|N|O|1997-10-01|1997-08-02|1997-10-09|TAKE BACK RETURN|RAIL|egular, silent sheave|
-2468|82|3|4|5|4910.40|0.08|0.00|N|O|1997-06-28|1997-08-02|1997-07-22|NONE|MAIL| sleep fluffily acc|
-2468|159|7|5|18|19064.70|0.07|0.00|N|O|1997-07-25|1997-08-26|1997-08-14|DELIVER IN PERSON|REG AIR|cies. fluffily r|
-2469|166|1|1|11|11727.76|0.00|0.04|N|O|1997-02-09|1997-01-26|1997-02-16|NONE|TRUCK|ies wake carefully b|
-2469|114|1|2|16|16225.76|0.07|0.06|N|O|1997-02-19|1997-02-04|1997-03-18|NONE|MAIL|ing asymptotes |
-2469|11|5|3|48|43728.48|0.05|0.06|N|O|1997-01-11|1997-01-03|1997-01-15|TAKE BACK RETURN|AIR|riously even theodolites u|
-2469|88|9|4|35|34582.80|0.06|0.06|N|O|1997-02-04|1997-02-02|1997-02-17|DELIVER IN PERSON|RAIL|ld packages haggle regular frets. fluffily |
-2469|121|4|5|30|30633.60|0.09|0.01|N|O|1996-12-21|1997-01-29|1997-01-02|COLLECT COD|SHIP| accounts. regular theodolites affix fu|
-2469|104|5|6|49|49200.90|0.02|0.02|N|O|1997-03-03|1996-12-26|1997-03-13|NONE|AIR| requests are car|
-2469|127|10|7|8|8216.96|0.02|0.00|N|O|1997-03-15|1997-01-20|1997-04-13|NONE|TRUCK|s. regular|
-2470|110|5|1|12|12121.32|0.06|0.06|N|O|1997-07-12|1997-05-24|1997-07-17|TAKE BACK RETURN|FOB|l accounts. deposits nag daringly. express,|
-2470|100|4|2|50|50005.00|0.03|0.03|N|O|1997-06-02|1997-06-01|1997-06-09|COLLECT COD|AIR| packages |
-2470|64|3|3|10|9640.60|0.05|0.08|N|O|1997-06-20|1997-06-19|1997-06-24|TAKE BACK RETURN|FOB| ironic requests a|
-2470|162|3|4|30|31864.80|0.04|0.08|N|O|1997-08-04|1997-07-13|1997-08-14|DELIVER IN PERSON|AIR|s across the furiously fina|
-2471|84|5|1|37|36410.96|0.05|0.01|N|O|1998-05-28|1998-04-17|1998-06-08|COLLECT COD|TRUCK|ounts mold blithely carefully express depo|
-2496|141|8|1|38|39563.32|0.02|0.07|R|F|1994-03-26|1994-04-06|1994-04-23|COLLECT COD|RAIL| bold accounts. furi|
-2496|23|4|2|39|35997.78|0.03|0.00|R|F|1994-03-23|1994-02-18|1994-04-10|TAKE BACK RETURN|FOB|arefully special dependencies abo|
-2496|189|10|3|36|39210.48|0.09|0.04|R|F|1994-03-27|1994-03-15|1994-04-17|TAKE BACK RETURN|SHIP|ully ironic f|
-2496|24|9|4|30|27720.60|0.04|0.01|A|F|1994-01-27|1994-03-11|1994-01-31|DELIVER IN PERSON|RAIL|ake. ironic foxes cajole quickly. fu|
-2497|12|2|1|34|31008.34|0.02|0.03|R|F|1992-09-02|1992-10-19|1992-09-12|COLLECT COD|AIR|ronic accounts. p|
-2497|77|7|2|15|14656.05|0.09|0.02|A|F|1992-12-23|1992-11-20|1993-01-18|DELIVER IN PERSON|SHIP|sly against the|
-2497|34|5|3|28|26152.84|0.02|0.08|A|F|1992-12-02|1992-11-21|1992-12-04|DELIVER IN PERSON|REG AIR|ouches. special, regular requests|
-2497|144|5|4|48|50118.72|0.06|0.05|A|F|1992-09-29|1992-11-13|1992-10-19|TAKE BACK RETURN|AIR| even, regular requests across |
-2497|175|5|5|28|30104.76|0.04|0.05|A|F|1992-11-10|1992-09-30|1992-11-18|DELIVER IN PERSON|MAIL|hely bold ideas. unusual instructions ac|
-2497|71|2|6|19|18450.33|0.05|0.08|A|F|1992-11-10|1992-11-20|1992-12-05|TAKE BACK RETURN|TRUCK| instructions? carefully daring accounts|
-2498|143|2|1|48|50070.72|0.10|0.01|R|F|1993-11-25|1994-01-09|1993-12-24|DELIVER IN PERSON|RAIL|onic requests wake|
-2499|150|3|1|15|15752.25|0.04|0.06|N|O|1995-12-21|1995-12-06|1996-01-19|DELIVER IN PERSON|FOB| slyly across the slyly|
-2499|46|3|2|48|45409.92|0.09|0.03|N|O|1995-10-14|1995-12-12|1995-11-11|DELIVER IN PERSON|AIR|ronic ideas cajole quickly requests. caref|
-2499|133|9|3|31|32027.03|0.09|0.05|N|O|1995-12-09|1995-10-28|1996-01-05|COLLECT COD|AIR|to beans across the carefully ironic theodo|
-2499|159|7|4|39|41306.85|0.06|0.02|N|O|1995-10-26|1995-10-27|1995-11-07|TAKE BACK RETURN|SHIP|otes sublat|
-2499|130|9|5|6|6180.78|0.02|0.01|N|O|1995-11-19|1995-12-14|1995-12-08|NONE|SHIP|cording to the|
-2499|119|3|6|12|12229.32|0.04|0.05|N|O|1995-11-18|1995-12-13|1995-11-23|COLLECT COD|REG AIR|le furiously along the r|
-2500|192|3|1|40|43687.60|0.00|0.02|A|F|1992-09-02|1992-09-30|1992-09-06|DELIVER IN PERSON|SHIP|efully unusual dolphins s|
-2500|37|8|2|34|31859.02|0.06|0.02|R|F|1992-10-03|1992-11-11|1992-10-29|DELIVER IN PERSON|TRUCK| stealthy a|
-2500|80|10|3|41|40183.28|0.02|0.00|R|F|1992-09-02|1992-11-11|1992-09-06|DELIVER IN PERSON|RAIL|s could have to integrate after the |
-2500|69|8|4|17|16474.02|0.01|0.02|A|F|1992-09-30|1992-10-16|1992-10-05|DELIVER IN PERSON|REG AIR|encies-- ironic, even packages|
-2501|84|5|1|4|3936.32|0.10|0.06|N|O|1997-07-17|1997-07-27|1997-07-22|COLLECT COD|RAIL|quests. furiously final|
-2501|106|1|2|33|33201.30|0.01|0.04|N|O|1997-07-14|1997-08-09|1997-07-26|NONE|MAIL|leep furiously packages. even sauternes |
-2501|72|2|3|20|19441.40|0.10|0.06|N|O|1997-09-23|1997-07-01|1997-10-03|DELIVER IN PERSON|RAIL|equests. furiou|
-2501|58|10|4|26|24909.30|0.09|0.01|N|O|1997-07-15|1997-08-15|1997-07-28|DELIVER IN PERSON|SHIP|c accounts. express, iron|
-2502|163|4|1|33|35084.28|0.10|0.06|R|F|1993-08-12|1993-07-22|1993-09-04|COLLECT COD|REG AIR|have to print|
-2503|123|2|1|33|33762.96|0.06|0.01|R|F|1993-07-06|1993-08-14|1993-08-02|NONE|SHIP|nal courts integrate according to the|
-2503|65|10|2|28|27021.68|0.06|0.01|R|F|1993-08-08|1993-08-31|1993-08-10|NONE|SHIP|s wake quickly slyly |
-2503|46|7|3|50|47302.00|0.09|0.01|A|F|1993-09-22|1993-08-17|1993-09-29|DELIVER IN PERSON|TRUCK|s around the slyly |
-2503|91|5|4|27|26759.43|0.09|0.00|A|F|1993-07-12|1993-07-24|1993-07-22|DELIVER IN PERSON|TRUCK|lly even p|
-2503|48|5|5|3|2844.12|0.04|0.02|A|F|1993-07-10|1993-09-17|1993-07-19|TAKE BACK RETURN|TRUCK|s cajole. slyly close courts nod f|
-2503|128|7|6|39|40096.68|0.05|0.05|R|F|1993-10-11|1993-09-09|1993-10-16|NONE|MAIL|d carefully fluffily|
-2503|19|6|7|17|15623.17|0.09|0.08|R|F|1993-09-04|1993-07-31|1993-09-23|DELIVER IN PERSON|SHIP|c accounts haggle blithel|
-2528|1|2|1|10|9010.00|0.02|0.03|R|F|1994-12-12|1994-12-29|1994-12-28|COLLECT COD|REG AIR|ely. fluffily even re|
-2528|74|3|2|13|12662.91|0.00|0.03|A|F|1994-11-27|1995-01-20|1994-12-03|TAKE BACK RETURN|REG AIR|ggle furiously. slyly final asympt|
-2528|175|6|3|35|37630.95|0.10|0.00|R|F|1994-12-19|1995-02-04|1995-01-15|NONE|MAIL|, even excuses. even,|
-2528|65|4|4|37|35707.22|0.00|0.01|A|F|1994-12-25|1995-02-02|1994-12-31|COLLECT COD|AIR|ng the pending excuses haggle after the bl|
-2529|131|7|1|4|4124.52|0.07|0.07|N|O|1996-10-19|1996-11-18|1996-10-24|DELIVER IN PERSON|SHIP|al dependencies haggle slyly alongsi|
-2530|21|2|1|9|8289.18|0.09|0.03|R|F|1994-05-10|1994-04-30|1994-05-24|TAKE BACK RETURN|REG AIR|lyly ironic|
-2530|93|7|2|42|41709.78|0.04|0.08|R|F|1994-03-27|1994-05-20|1994-03-29|NONE|RAIL|ng platelets wake s|
-2530|108|1|3|8|8064.80|0.10|0.08|A|F|1994-05-02|1994-05-08|1994-05-24|DELIVER IN PERSON|MAIL|ial asymptotes snooze slyly regular |
-2531|148|7|1|9|9433.26|0.03|0.07|N|O|1996-07-27|1996-07-03|1996-08-01|DELIVER IN PERSON|AIR|t the dogged, un|
-2531|157|2|2|3|3171.45|0.07|0.06|N|O|1996-07-20|1996-06-20|1996-08-10|NONE|MAIL|he quickly ev|
-2531|86|7|3|20|19721.60|0.06|0.04|N|O|1996-07-18|1996-06-25|1996-07-29|TAKE BACK RETURN|TRUCK|into beans. furious|
-2531|191|5|4|36|39282.84|0.08|0.01|N|O|1996-06-11|1996-07-26|1996-06-27|NONE|MAIL|y ironic, bold packages. blithely e|
-2531|56|4|5|28|26769.40|0.03|0.07|N|O|1996-07-06|1996-07-31|1996-07-19|TAKE BACK RETURN|REG AIR|its. busily|
-2531|145|4|6|46|48076.44|0.10|0.08|N|O|1996-07-03|1996-06-27|1996-07-12|TAKE BACK RETURN|REG AIR|e final, bold pains. ir|
-2532|53|4|1|3|2859.15|0.06|0.07|N|O|1995-12-14|1995-11-28|1995-12-15|COLLECT COD|FOB|unusual sentiments. even pinto|
-2532|160|2|2|33|34985.28|0.06|0.05|N|O|1995-11-23|1996-01-04|1995-12-16|DELIVER IN PERSON|TRUCK|rve carefully slyly ironic accounts! fluf|
-2532|135|1|3|1|1035.13|0.00|0.06|N|O|1996-01-27|1995-11-23|1996-01-29|DELIVER IN PERSON|REG AIR|ely final ideas cajole despite the ca|
-2532|78|8|4|50|48903.50|0.02|0.02|N|O|1995-11-13|1996-01-01|1995-11-26|NONE|TRUCK|yly after the fluffily regul|
-2532|114|1|5|9|9126.99|0.09|0.04|N|O|1995-11-30|1995-11-23|1995-12-12|DELIVER IN PERSON|TRUCK|cial ideas haggle slyly pending request|
-2532|150|1|6|20|21003.00|0.09|0.05|N|O|1995-12-02|1995-11-26|1995-12-08|TAKE BACK RETURN|AIR|er the slyly pending|
-2533|54|9|1|36|34345.80|0.06|0.04|N|O|1997-06-10|1997-04-28|1997-07-01|NONE|REG AIR|ss requests sleep neve|
-2533|198|10|2|5|5490.95|0.10|0.04|N|O|1997-05-26|1997-06-02|1997-06-24|NONE|FOB|ccounts. ironic, special accounts boo|
-2533|183|4|3|37|40077.66|0.00|0.08|N|O|1997-05-10|1997-04-26|1997-05-28|COLLECT COD|SHIP| haggle carefully |
-2533|30|5|4|17|15810.51|0.06|0.02|N|O|1997-05-23|1997-05-10|1997-06-18|NONE|FOB|ackages. blith|
-2533|126|1|5|38|38992.56|0.09|0.00|N|O|1997-05-10|1997-06-02|1997-05-28|TAKE BACK RETURN|REG AIR|of the regular accounts. even packages caj|
-2533|184|5|6|20|21683.60|0.05|0.08|N|O|1997-07-04|1997-04-30|1997-07-05|COLLECT COD|FOB|thless excuses are b|
-2533|94|7|7|14|13917.26|0.06|0.04|N|O|1997-07-06|1997-05-08|1997-08-03|COLLECT COD|FOB|ut the pending, special depos|
-2534|139|5|1|29|30134.77|0.07|0.07|N|O|1996-08-09|1996-09-29|1996-08-11|COLLECT COD|TRUCK|ugouts haggle slyly. final|
-2534|27|6|2|49|45423.98|0.08|0.08|N|O|1996-09-01|1996-08-20|1996-09-06|NONE|SHIP|sometimes regular requests. blithely unus|
-2534|1|4|3|50|45050.00|0.10|0.06|N|O|1996-09-25|1996-10-07|1996-10-09|TAKE BACK RETURN|AIR|ideas. deposits use. slyly regular pa|
-2534|75|3|4|43|41928.01|0.09|0.02|N|O|1996-10-25|1996-09-30|1996-11-05|TAKE BACK RETURN|REG AIR|ngly final depos|
-2534|165|2|5|14|14912.24|0.05|0.02|N|O|1996-08-12|1996-09-26|1996-08-28|COLLECT COD|MAIL|eposits doze quickly final|
-2534|116|10|6|12|12193.32|0.02|0.02|N|O|1996-07-29|1996-10-12|1996-08-14|TAKE BACK RETURN|AIR|sual depos|
-2534|173|3|7|17|18243.89|0.02|0.07|N|O|1996-07-22|1996-09-15|1996-08-03|NONE|SHIP|riously regular |
-2535|199|2|1|5|5495.95|0.06|0.01|A|F|1993-09-07|1993-07-25|1993-09-29|DELIVER IN PERSON|REG AIR|, unusual reque|
-2535|39|5|2|12|11268.36|0.08|0.05|A|F|1993-07-17|1993-08-17|1993-07-31|TAKE BACK RETURN|FOB|uses sleep among the packages. excuses |
-2535|54|5|3|5|4770.25|0.09|0.06|R|F|1993-07-28|1993-08-14|1993-08-11|DELIVER IN PERSON|SHIP| across the express requests. silent, eve|
-2535|160|5|4|19|20143.04|0.01|0.02|A|F|1993-06-01|1993-08-01|1993-06-19|DELIVER IN PERSON|FOB|ructions. final requests|
-2535|174|3|5|25|26854.25|0.07|0.04|A|F|1993-07-19|1993-08-07|1993-07-27|NONE|REG AIR|ions believe ab|
-2560|169|10|1|41|43835.56|0.07|0.01|R|F|1992-10-23|1992-11-11|1992-11-22|NONE|SHIP| after the accounts. regular foxes are be|
-2560|4|9|2|27|24408.00|0.00|0.01|R|F|1992-12-03|1992-11-16|1992-12-30|NONE|MAIL| against the carefully|
-2560|46|5|3|31|29327.24|0.01|0.05|A|F|1992-11-14|1992-10-14|1992-12-11|DELIVER IN PERSON|AIR|to beans. blithely regular Tiresias int|
-2560|72|1|4|36|34994.52|0.01|0.02|A|F|1992-10-18|1992-10-30|1992-11-05|TAKE BACK RETURN|MAIL|accounts alongside of the excuses are |
-2560|42|1|5|9|8478.36|0.04|0.02|A|F|1992-10-23|1992-10-29|1992-11-02|COLLECT COD|REG AIR| deposits affix quickly. unusual, eve|
-2560|108|9|6|13|13105.30|0.03|0.06|A|F|1992-09-07|1992-10-21|1992-09-24|COLLECT COD|FOB|slyly final accoun|
-2561|25|4|1|32|29600.64|0.02|0.01|N|O|1998-01-05|1997-12-28|1998-01-26|DELIVER IN PERSON|REG AIR|bold packages wake slyly. slyly|
-2561|98|1|2|5|4990.45|0.07|0.04|N|O|1997-12-27|1998-01-23|1998-01-13|TAKE BACK RETURN|AIR|p ironic, regular pinto beans.|
-2561|173|4|3|47|50438.99|0.04|0.02|N|O|1997-11-19|1998-01-21|1997-12-03|DELIVER IN PERSON|REG AIR|larly pending t|
-2561|108|9|4|39|39315.90|0.08|0.06|N|O|1998-01-20|1997-12-16|1998-02-05|TAKE BACK RETURN|MAIL|equests are furiously against the|
-2561|150|3|5|2|2100.30|0.04|0.08|N|O|1998-03-14|1998-01-21|1998-03-27|DELIVER IN PERSON|TRUCK|s are. silently silent foxes sleep about|
-2561|51|6|6|14|13314.70|0.02|0.03|N|O|1998-03-07|1998-02-04|1998-03-21|COLLECT COD|RAIL|ep unusual, ironic accounts|
-2562|53|5|1|28|26685.40|0.04|0.03|R|F|1992-10-04|1992-09-24|1992-10-09|COLLECT COD|MAIL|ans haggle special, special packages. |
-2562|148|9|2|1|1048.14|0.01|0.06|R|F|1992-10-16|1992-09-18|1992-10-17|NONE|TRUCK| slyly final ideas haggle car|
-2562|66|7|3|25|24151.50|0.05|0.03|A|F|1992-11-23|1992-10-08|1992-12-19|DELIVER IN PERSON|REG AIR| accounts-- silent, unusual ideas a|
-2562|148|1|4|37|38781.18|0.08|0.03|R|F|1992-10-29|1992-10-06|1992-11-09|COLLECT COD|FOB|. slyly regular ideas according to the fl|
-2562|160|8|5|29|30744.64|0.05|0.08|A|F|1992-11-01|1992-09-29|1992-11-13|TAKE BACK RETURN|MAIL|eep against the furiously r|
-2562|50|7|6|17|16150.85|0.01|0.06|A|F|1992-10-15|1992-10-08|1992-10-26|DELIVER IN PERSON|TRUCK|lar pinto beans. blithely ev|
-2563|65|4|1|10|9650.60|0.07|0.04|A|F|1994-01-26|1993-12-19|1994-01-28|DELIVER IN PERSON|AIR|tealthily abo|
-2563|167|4|2|28|29880.48|0.04|0.03|R|F|1994-03-17|1994-02-04|1994-04-13|TAKE BACK RETURN|RAIL|hely regular depe|
-2563|119|9|3|39|39745.29|0.07|0.00|R|F|1994-02-10|1993-12-31|1994-02-19|COLLECT COD|FOB|lent requests should integrate; carefully e|
-2563|90|1|4|50|49504.50|0.01|0.01|A|F|1994-01-26|1994-01-03|1994-02-09|DELIVER IN PERSON|SHIP|ly regular, regular excuses. bold plate|
-2563|15|6|5|42|38430.42|0.06|0.08|R|F|1994-02-21|1994-02-14|1994-03-04|DELIVER IN PERSON|AIR|ymptotes nag furiously slyly even inst|
-2563|121|2|6|5|5105.60|0.10|0.00|R|F|1993-12-27|1993-12-19|1994-01-02|DELIVER IN PERSON|REG AIR| the quickly final theodolite|
-2564|112|3|1|4|4048.44|0.02|0.00|R|F|1994-11-12|1994-10-29|1994-12-04|NONE|MAIL|y express requests sleep furi|
-2565|144|5|1|42|43853.88|0.04|0.08|N|O|1998-04-07|1998-04-02|1998-05-04|NONE|AIR|ngly silent |
-2565|189|10|2|26|28318.68|0.05|0.08|N|O|1998-05-07|1998-04-09|1998-05-15|DELIVER IN PERSON|TRUCK| pinto beans about the slyly regula|
-2565|115|5|3|34|34513.74|0.06|0.06|N|O|1998-03-19|1998-04-12|1998-04-17|DELIVER IN PERSON|SHIP|nstructions was carefu|
-2565|17|7|4|25|22925.25|0.10|0.08|N|O|1998-06-27|1998-05-20|1998-07-13|DELIVER IN PERSON|RAIL|, express accounts. final id|
-2565|76|7|5|26|25377.82|0.08|0.03|N|O|1998-03-05|1998-04-11|1998-03-11|TAKE BACK RETURN|AIR|ites wake. ironic acco|
-2565|141|4|6|48|49974.72|0.08|0.07|N|O|1998-06-18|1998-05-06|1998-07-13|DELIVER IN PERSON|TRUCK|r instructions sleep qui|
-2566|148|5|1|19|19914.66|0.06|0.07|R|F|1992-12-21|1992-11-24|1992-12-22|DELIVER IN PERSON|MAIL|ests. silent|
-2566|181|2|2|42|45409.56|0.08|0.02|R|F|1992-12-20|1992-12-22|1992-12-29|COLLECT COD|MAIL|ously ironic accounts|
-2566|23|8|3|18|16614.36|0.09|0.02|A|F|1992-11-16|1992-12-24|1992-12-16|COLLECT COD|FOB| braids according t|
-2566|42|9|4|3|2826.12|0.05|0.02|A|F|1992-11-04|1992-12-30|1992-12-04|TAKE BACK RETURN|FOB|ckages are ironic Tiresias. furious|
-2566|22|3|5|9|8298.18|0.04|0.03|R|F|1992-12-14|1992-12-28|1992-12-16|NONE|FOB|blithely bold accounts? quickl|
-2566|128|3|6|1|1028.12|0.07|0.03|A|F|1992-10-28|1992-11-20|1992-11-22|TAKE BACK RETURN|AIR|theodolites wake pending|
-2567|26|9|1|39|36114.78|0.03|0.04|N|O|1998-05-10|1998-05-10|1998-05-21|NONE|SHIP|ns. furiously final dependencies cajo|
-2567|112|3|2|50|50605.50|0.06|0.05|N|O|1998-05-05|1998-04-18|1998-05-09|DELIVER IN PERSON|TRUCK|. carefully pending foxes are furi|
-2567|52|10|3|6|5712.30|0.03|0.06|N|O|1998-04-21|1998-04-14|1998-05-11|NONE|RAIL|s cajole regular, final acco|
-2567|158|6|4|50|52907.50|0.05|0.03|N|O|1998-03-27|1998-05-25|1998-04-23|DELIVER IN PERSON|FOB|pinto beans? r|
-2567|81|2|5|46|45129.68|0.07|0.02|N|O|1998-06-02|1998-04-30|1998-06-13|COLLECT COD|AIR|efully pending epitaphs. carefully reg|
-2567|100|3|6|32|32003.20|0.01|0.07|N|O|1998-05-24|1998-04-30|1998-06-14|NONE|RAIL| the even, iro|
-2567|135|6|7|43|44510.59|0.06|0.02|N|O|1998-05-11|1998-04-15|1998-05-29|NONE|RAIL|requests. final courts cajole |
-2592|90|1|1|7|6930.63|0.10|0.04|R|F|1993-03-13|1993-04-25|1993-04-01|NONE|REG AIR| carefully special theodolites integrate |
-2592|66|1|2|2|1932.12|0.10|0.00|A|F|1993-03-24|1993-04-05|1993-04-16|DELIVER IN PERSON|RAIL|side of the b|
-2593|105|2|1|37|37188.70|0.08|0.06|R|F|1993-12-14|1993-10-08|1994-01-04|NONE|SHIP|s wake bravel|
-2593|90|1|2|28|27722.52|0.08|0.03|A|F|1993-10-30|1993-10-18|1993-11-06|DELIVER IN PERSON|SHIP|y even escapades shall|
-2593|128|3|3|6|6168.72|0.04|0.05|A|F|1993-11-28|1993-10-04|1993-12-28|TAKE BACK RETURN|REG AIR|ular packages. re|
-2593|161|10|4|44|46691.04|0.02|0.08|A|F|1993-09-05|1993-10-23|1993-09-29|NONE|RAIL|ents impress furiously; unusual theodoli|
-2593|4|5|5|3|2712.00|0.03|0.00|A|F|1993-12-16|1993-11-01|1993-12-29|COLLECT COD|SHIP|the furiously |
-2593|175|6|6|1|1075.17|0.08|0.08|A|F|1993-11-23|1993-10-25|1993-12-04|DELIVER IN PERSON|RAIL| accounts wake slyly |
-2593|192|5|7|11|12014.09|0.00|0.07|R|F|1993-11-01|1993-11-19|1993-11-28|TAKE BACK RETURN|RAIL|express packages sleep bold re|
-2594|72|3|1|7|6804.49|0.06|0.02|R|F|1993-03-26|1993-03-05|1993-04-24|DELIVER IN PERSON|FOB|arls cajole |
-2594|124|9|2|13|13313.56|0.10|0.05|R|F|1993-02-06|1993-03-01|1993-02-23|TAKE BACK RETURN|TRUCK|fully special accounts use courts|
-2594|126|1|3|24|24626.88|0.03|0.00|A|F|1993-01-31|1993-03-10|1993-02-04|COLLECT COD|REG AIR|lar accounts sleep fur|
-2594|144|7|4|46|48030.44|0.00|0.08|R|F|1993-04-17|1993-03-06|1993-04-21|TAKE BACK RETURN|SHIP|beans. instructions across t|
-2595|61|2|1|42|40364.52|0.08|0.02|N|O|1996-03-24|1996-01-28|1996-04-10|DELIVER IN PERSON|MAIL|ggle furiou|
-2595|88|9|2|30|29642.40|0.05|0.01|N|O|1996-03-05|1996-02-23|1996-03-19|NONE|AIR|ctions. regula|
-2595|24|3|3|19|17556.38|0.01|0.05|N|O|1995-12-23|1996-03-02|1996-01-17|COLLECT COD|MAIL|ns are neve|
-2595|159|1|4|29|30715.35|0.07|0.05|N|O|1996-01-01|1996-02-13|1996-01-18|TAKE BACK RETURN|RAIL|ronic accounts haggle carefully fin|
-2595|86|7|5|30|29582.40|0.09|0.07|N|O|1996-03-16|1996-01-31|1996-04-05|TAKE BACK RETURN|FOB|. final orbits cajole |
-2595|82|3|6|31|30444.48|0.06|0.04|N|O|1996-02-07|1996-02-10|1996-03-05|DELIVER IN PERSON|AIR|tipliers w|
-2596|170|5|1|6|6421.02|0.05|0.01|N|O|1996-12-15|1996-11-02|1996-12-29|TAKE BACK RETURN|TRUCK|ily special re|
-2596|139|10|2|43|44682.59|0.07|0.03|N|O|1996-09-03|1996-10-26|1996-09-15|NONE|FOB|ial packages haggl|
-2596|39|5|3|19|17841.57|0.10|0.00|N|O|1996-09-02|1996-11-03|1996-09-06|COLLECT COD|AIR|ias mold! sp|
-2596|105|6|4|10|10051.00|0.06|0.05|N|O|1996-08-25|1996-11-05|1996-09-13|DELIVER IN PERSON|REG AIR| instructions shall have|
-2597|84|5|1|24|23617.92|0.07|0.00|A|F|1993-05-15|1993-03-06|1993-05-25|TAKE BACK RETURN|FOB|pending packages. enticingly fi|
-2598|7|4|1|12|10884.00|0.00|0.01|N|O|1996-06-17|1996-04-12|1996-06-24|COLLECT COD|TRUCK|express packages nag sly|
-2598|148|7|2|40|41925.60|0.07|0.02|N|O|1996-05-11|1996-05-19|1996-06-08|TAKE BACK RETURN|AIR|the enticing|
-2598|104|9|3|4|4016.40|0.03|0.03|N|O|1996-05-23|1996-05-13|1996-05-25|COLLECT COD|AIR| across the furiously fi|
-2598|23|2|4|19|17537.38|0.02|0.00|N|O|1996-04-09|1996-05-30|1996-04-17|TAKE BACK RETURN|RAIL|nic packages. even accounts|
-2598|106|3|5|12|12073.20|0.01|0.08|N|O|1996-04-14|1996-04-24|1996-04-21|TAKE BACK RETURN|REG AIR|eposits cajol|
-2599|101|4|1|11|11012.10|0.08|0.08|N|O|1997-02-01|1996-12-14|1997-02-27|TAKE BACK RETURN|FOB| express accoun|
-2599|42|5|2|26|24493.04|0.03|0.04|N|O|1996-11-08|1996-12-21|1996-11-24|TAKE BACK RETURN|AIR|nag carefully |
-2599|99|10|3|29|28973.61|0.09|0.03|N|O|1997-01-10|1996-12-10|1997-02-02|COLLECT COD|RAIL|ly express dolphins. special, |
-2624|63|10|1|15|14445.90|0.03|0.07|N|O|1997-02-28|1997-02-19|1997-03-21|DELIVER IN PERSON|AIR|le. quickly pending requests|
-2624|189|10|2|12|13070.16|0.07|0.00|N|O|1997-02-24|1997-02-22|1997-02-27|DELIVER IN PERSON|SHIP|er the quickly unu|
-2625|20|1|1|42|38640.84|0.02|0.04|R|F|1992-10-18|1992-11-17|1992-10-23|DELIVER IN PERSON|AIR| even accounts haggle furiously|
-2626|22|5|1|45|41490.90|0.09|0.04|N|O|1995-11-22|1995-11-01|1995-11-23|NONE|AIR|deposits wake blithely according to |
-2626|175|3|2|2|2150.34|0.05|0.07|N|O|1995-10-19|1995-11-09|1995-10-24|TAKE BACK RETURN|FOB|uffy accounts haggle furiously above|
-2626|154|2|3|40|42166.00|0.05|0.07|N|O|1995-09-28|1995-12-03|1995-10-10|NONE|REG AIR|eans. ironic deposits haggle. depo|
-2627|131|7|1|28|28871.64|0.09|0.02|R|F|1992-05-14|1992-05-09|1992-05-31|COLLECT COD|SHIP|ggedly final excuses nag packages. f|
-2628|106|9|1|44|44268.40|0.07|0.03|R|F|1994-01-11|1994-01-14|1994-01-13|DELIVER IN PERSON|SHIP|lyly final, pending ide|
-2628|106|9|2|14|14085.40|0.01|0.03|A|F|1994-01-28|1993-11-30|1994-02-20|TAKE BACK RETURN|SHIP|g the furiously unusual pi|
-2628|64|9|3|42|40490.52|0.00|0.00|A|F|1993-11-20|1994-01-04|1993-12-19|DELIVER IN PERSON|TRUCK|ld notornis alongside |
-2628|95|7|4|23|22887.07|0.08|0.04|A|F|1993-10-27|1994-01-08|1993-11-12|DELIVER IN PERSON|TRUCK|usual packages sleep about the fina|
-2628|90|1|5|50|49504.50|0.07|0.01|A|F|1994-01-13|1993-12-11|1994-01-14|NONE|AIR|posits serve carefully toward |
-2629|118|9|1|6|6108.66|0.06|0.05|N|O|1998-06-10|1998-05-29|1998-06-13|DELIVER IN PERSON|SHIP|dolites hinder bli|
-2629|124|7|2|31|31747.72|0.08|0.03|N|O|1998-05-24|1998-05-26|1998-06-10|COLLECT COD|AIR|ate blithely bold, regular deposits. bold|
-2629|128|9|3|29|29815.48|0.08|0.07|N|O|1998-07-09|1998-06-17|1998-07-12|TAKE BACK RETURN|AIR|eposits serve unusual, express i|
-2629|70|5|4|33|32012.31|0.06|0.03|N|O|1998-05-29|1998-05-14|1998-05-30|NONE|TRUCK|es. slowly express accounts are along the|
-2630|29|8|1|46|42734.92|0.05|0.03|R|F|1992-11-05|1992-12-17|1992-12-05|TAKE BACK RETURN|MAIL|uests cajole. e|
-2630|57|2|2|8|7656.40|0.09|0.07|A|F|1992-11-16|1993-01-01|1992-12-07|DELIVER IN PERSON|TRUCK|indle fluffily silent, ironic pi|
-2630|173|2|3|45|48292.65|0.08|0.07|A|F|1993-01-04|1993-01-11|1993-01-09|NONE|FOB|edly express ideas. carefully final |
-2630|162|9|4|29|30802.64|0.08|0.07|A|F|1992-12-03|1993-01-04|1992-12-12|DELIVER IN PERSON|SHIP|efully unusual dependencies. even i|
-2631|122|7|1|42|42929.04|0.00|0.03|A|F|1994-01-04|1993-12-01|1994-01-16|TAKE BACK RETURN|SHIP|ect carefully at the furiously final the|
-2631|67|4|2|4|3868.24|0.07|0.06|R|F|1993-11-03|1993-12-17|1993-11-05|COLLECT COD|AIR|special theodolites. a|
-2631|118|8|3|15|15271.65|0.06|0.05|A|F|1993-09-30|1993-11-06|1993-10-13|DELIVER IN PERSON|SHIP|y. furiously even pinto be|
-2656|181|2|1|10|10811.80|0.02|0.06|R|F|1993-06-28|1993-07-04|1993-07-12|TAKE BACK RETURN|TRUCK|s nag regularly about the deposits. slyly|
-2656|137|8|2|38|39410.94|0.07|0.02|A|F|1993-06-25|1993-06-04|1993-07-24|NONE|RAIL|structions wake along the furio|
-2656|2|5|3|19|17138.00|0.03|0.02|R|F|1993-08-03|1993-07-25|1993-08-20|TAKE BACK RETURN|MAIL|ts serve deposi|
-2656|110|3|4|40|40404.40|0.05|0.04|R|F|1993-06-09|1993-07-24|1993-06-21|DELIVER IN PERSON|RAIL|refully final pearls. final ideas wake. qu|
-2657|115|9|1|22|22332.42|0.02|0.03|N|O|1995-12-08|1995-12-28|1995-12-21|TAKE BACK RETURN|MAIL|r ideas. furiously special dolphins|
-2657|165|2|2|15|15977.40|0.08|0.05|N|O|1995-12-09|1995-12-16|1995-12-18|NONE|RAIL|ole carefully above the ironic ideas. b|
-2657|79|9|3|25|24476.75|0.02|0.04|N|O|1995-10-21|1995-12-12|1995-11-09|COLLECT COD|FOB|lly pinto beans. final |
-2657|55|7|4|11|10505.55|0.04|0.08|N|O|1995-11-19|1995-12-11|1995-11-24|COLLECT COD|TRUCK|ckly enticing requests. fur|
-2657|78|9|5|42|41078.94|0.06|0.03|N|O|1996-01-23|1995-11-22|1996-01-25|COLLECT COD|RAIL|ckly slyly even accounts. platelets x-ray|
-2657|194|7|6|31|33919.89|0.01|0.03|N|O|1995-11-10|1995-11-27|1995-12-06|COLLECT COD|RAIL|re blithely |
-2658|132|3|1|41|42317.33|0.05|0.04|N|O|1995-11-07|1995-11-04|1995-12-04|NONE|MAIL|eposits. furiously final theodolite|
-2658|29|4|2|22|20438.44|0.08|0.05|N|O|1995-11-12|1995-11-18|1995-11-14|DELIVER IN PERSON|TRUCK|ts cajole. pending packages affix|
-2658|18|5|3|13|11934.13|0.07|0.06|N|O|1995-10-24|1995-12-12|1995-11-14|COLLECT COD|FOB|s kindle blithely regular accounts.|
-2658|92|5|4|22|21825.98|0.04|0.04|N|O|1995-12-02|1995-11-03|1995-12-26|DELIVER IN PERSON|SHIP| dependencies. blithely pending foxes abou|
-2658|7|8|5|45|40815.00|0.03|0.01|N|O|1995-11-02|1995-11-08|1995-11-29|DELIVER IN PERSON|MAIL|e special requests. quickly ex|
-2658|147|4|6|27|28272.78|0.05|0.07|N|O|1995-09-26|1995-12-08|1995-09-30|NONE|AIR|ecial packages use abov|
-2659|42|1|1|28|26377.12|0.08|0.05|A|F|1994-03-17|1994-01-24|1994-03-19|NONE|FOB|idle tithes|
-2659|43|2|2|21|19803.84|0.00|0.00|A|F|1993-12-23|1994-02-10|1994-01-17|DELIVER IN PERSON|RAIL|y beyond the furiously even co|
-2659|135|1|3|24|24843.12|0.04|0.03|R|F|1994-03-28|1994-02-20|1994-04-05|DELIVER IN PERSON|REG AIR| haggle carefully |
-2659|119|6|4|2|2038.22|0.00|0.08|R|F|1994-02-19|1994-03-12|1994-02-21|NONE|MAIL|sts above the fluffily express fo|
-2659|7|4|5|9|8163.00|0.08|0.03|A|F|1994-02-07|1994-03-17|1994-03-04|DELIVER IN PERSON|AIR|ly final packages sleep ac|
-2660|48|7|1|17|16116.68|0.00|0.05|N|O|1995-08-18|1995-09-13|1995-09-17|NONE|SHIP|al pinto beans wake after the furious|
-2661|178|9|1|31|33423.27|0.03|0.02|N|O|1997-04-07|1997-03-10|1997-04-23|TAKE BACK RETURN|AIR|e ironicall|
-2661|103|8|2|22|22068.20|0.08|0.02|N|O|1997-03-14|1997-03-17|1997-04-08|COLLECT COD|REG AIR| foxes affix quickly ironic request|
-2661|67|6|3|11|10637.66|0.00|0.08|N|O|1997-04-14|1997-02-11|1997-05-05|TAKE BACK RETURN|FOB|equests are a|
-2661|137|8|4|41|42522.33|0.06|0.02|N|O|1997-03-06|1997-03-27|1997-03-15|DELIVER IN PERSON|AIR|iously ironically ironic requests. |
-2662|102|5|1|43|43090.30|0.09|0.07|N|O|1996-11-24|1996-11-04|1996-12-08|NONE|RAIL|. slyly specia|
-2662|128|9|2|8|8224.96|0.02|0.07|N|O|1996-09-10|1996-10-09|1996-09-21|TAKE BACK RETURN|REG AIR|ajole carefully. sp|
-2662|2|5|3|6|5412.00|0.02|0.00|N|O|1996-11-30|1996-09-20|1996-12-03|DELIVER IN PERSON|REG AIR|olites cajole quickly along the b|
-2662|30|1|4|34|31621.02|0.06|0.07|N|O|1996-10-04|1996-11-05|1996-10-19|NONE|SHIP|ding theodolites use carefully. p|
-2663|114|4|1|35|35493.85|0.02|0.01|N|O|1995-12-11|1995-10-16|1996-01-07|TAKE BACK RETURN|REG AIR|tect. slyly fina|
-2688|18|5|1|45|41310.45|0.08|0.08|R|F|1992-05-21|1992-04-14|1992-05-28|NONE|FOB|sits run carefully|
-2688|15|6|2|46|42090.46|0.01|0.01|R|F|1992-05-24|1992-04-01|1992-05-26|COLLECT COD|TRUCK|elets. regular reque|
-2688|89|10|3|30|29672.40|0.05|0.04|A|F|1992-04-18|1992-03-18|1992-05-18|TAKE BACK RETURN|RAIL|ithely final |
-2688|25|10|4|3|2775.06|0.00|0.03|R|F|1992-02-04|1992-03-18|1992-02-24|DELIVER IN PERSON|RAIL|e fluffily |
-2688|59|10|5|22|21099.10|0.02|0.05|R|F|1992-02-09|1992-04-09|1992-02-11|DELIVER IN PERSON|RAIL|press, ironic excuses wake carefully id|
-2688|149|10|6|42|44063.88|0.01|0.01|R|F|1992-04-29|1992-04-04|1992-05-17|TAKE BACK RETURN|FOB|lly even account|
-2689|6|1|1|45|40770.00|0.02|0.04|R|F|1992-04-29|1992-06-22|1992-04-30|COLLECT COD|SHIP|e quickly. carefully silent|
-2690|140|1|1|44|45766.16|0.05|0.06|N|O|1996-05-30|1996-05-19|1996-06-26|NONE|REG AIR|ly alongside of th|
-2690|51|2|2|50|47552.50|0.03|0.03|N|O|1996-06-13|1996-05-22|1996-06-14|DELIVER IN PERSON|MAIL| doubt careful|
-2690|125|6|3|45|46130.40|0.02|0.07|N|O|1996-05-23|1996-06-02|1996-05-29|DELIVER IN PERSON|MAIL|ounts. slyly regular dependencies wa|
-2690|195|6|4|12|13142.28|0.04|0.07|N|O|1996-07-18|1996-06-03|1996-07-25|NONE|AIR|nal, regular atta|
-2690|86|7|5|30|29582.40|0.01|0.08|N|O|1996-05-20|1996-06-01|1996-06-04|TAKE BACK RETURN|SHIP|d accounts above the express req|
-2690|189|10|6|3|3267.54|0.07|0.01|N|O|1996-07-04|1996-05-28|1996-07-06|TAKE BACK RETURN|RAIL|. final reques|
-2690|79|7|7|35|34267.45|0.05|0.06|N|O|1996-07-25|1996-05-14|1996-08-03|COLLECT COD|FOB|y silent pinto be|
-2691|91|3|1|11|10901.99|0.04|0.07|R|F|1992-06-21|1992-06-08|1992-07-09|COLLECT COD|FOB|leep alongside of the accounts. slyly ironi|
-2691|48|7|2|2|1896.08|0.00|0.07|R|F|1992-05-10|1992-06-04|1992-05-11|TAKE BACK RETURN|TRUCK|s cajole at the blithely ironic warthog|
-2691|162|3|3|16|16994.56|0.09|0.03|R|F|1992-06-11|1992-07-29|1992-06-29|NONE|RAIL|bove the even foxes. unusual theodoli|
-2691|166|3|4|1|1066.16|0.08|0.00|A|F|1992-08-11|1992-06-07|1992-08-16|NONE|SHIP|egular instructions b|
-2692|17|1|1|3|2751.03|0.10|0.04|N|O|1998-02-25|1998-01-29|1998-03-27|TAKE BACK RETURN|MAIL|equests. bold, even foxes haggle slyl|
-2692|114|1|2|21|21296.31|0.03|0.05|N|O|1998-03-11|1998-02-11|1998-03-19|NONE|SHIP|posits. final, express requests nag furi|
-2693|9|10|1|26|23634.00|0.04|0.00|N|O|1996-09-14|1996-10-07|1996-10-03|COLLECT COD|MAIL|cajole alo|
-2693|102|3|2|43|43090.30|0.03|0.04|N|O|1996-10-24|1996-10-24|1996-11-03|TAKE BACK RETURN|TRUCK|as are according to th|
-2694|153|1|1|30|31594.50|0.02|0.06|N|O|1996-06-20|1996-06-01|1996-07-15|NONE|TRUCK|oxes. never iro|
-2694|157|2|2|35|37000.25|0.07|0.03|N|O|1996-05-24|1996-06-01|1996-05-25|NONE|RAIL|atelets past the furiously final deposits |
-2694|19|3|3|15|13785.15|0.08|0.02|N|O|1996-06-30|1996-05-01|1996-07-25|TAKE BACK RETURN|REG AIR|e blithely even platelets. special wa|
-2694|20|10|4|12|11040.24|0.00|0.05|N|O|1996-04-24|1996-04-22|1996-05-14|DELIVER IN PERSON|RAIL|foxes atop the hockey pla|
-2694|108|9|5|10|10081.00|0.08|0.08|N|O|1996-06-23|1996-05-28|1996-06-27|COLLECT COD|REG AIR|fluffily fluffy accounts. even packages hi|
-2695|184|5|1|21|22767.78|0.07|0.00|N|O|1996-10-04|1996-11-02|1996-10-21|NONE|MAIL|y regular pinto beans. evenly regular packa|
-2695|19|9|2|44|40436.44|0.09|0.07|N|O|1996-10-05|1996-10-10|1996-11-01|NONE|MAIL|ts. busy platelets boost|
-2695|144|7|3|21|21926.94|0.02|0.07|N|O|1996-09-13|1996-09-25|1996-10-13|NONE|TRUCK|s. furiously ironic platelets ar|
-2695|58|6|4|16|15328.80|0.08|0.08|N|O|1996-11-16|1996-10-05|1996-11-22|NONE|TRUCK|its. theodolites sleep slyly|
-2695|86|7|5|40|39443.20|0.02|0.03|N|O|1996-11-02|1996-10-26|1996-11-14|NONE|FOB|ructions. pending|
-2720|45|6|1|5|4725.20|0.10|0.06|A|F|1993-06-24|1993-08-08|1993-07-08|NONE|FOB|ously ironic foxes thrash|
-2720|17|8|2|42|38514.42|0.09|0.03|R|F|1993-07-25|1993-07-23|1993-08-23|COLLECT COD|REG AIR|fter the inst|
-2720|120|1|3|50|51006.00|0.10|0.02|A|F|1993-08-10|1993-07-29|1993-09-06|NONE|SHIP|l requests. deposits nag furiously|
-2720|109|2|4|49|49445.90|0.06|0.02|A|F|1993-07-09|1993-07-14|1993-07-13|NONE|REG AIR| accounts. fluffily bold pack|
-2720|121|6|5|27|27570.24|0.04|0.00|R|F|1993-06-29|1993-08-06|1993-07-28|NONE|TRUCK|eas. carefully regular |
-2721|183|4|1|49|53075.82|0.00|0.08|N|O|1996-02-14|1996-04-26|1996-03-02|DELIVER IN PERSON|AIR|ounts poach carefu|
-2721|3|4|2|2|1806.00|0.02|0.05|N|O|1996-02-13|1996-03-14|1996-02-28|TAKE BACK RETURN|TRUCK| slyly final requests against |
-2722|124|7|1|21|21506.52|0.09|0.01|A|F|1994-07-29|1994-06-26|1994-08-09|NONE|RAIL|e carefully around the furiously ironic pac|
-2722|146|7|2|15|15692.10|0.05|0.03|R|F|1994-07-02|1994-06-01|1994-07-13|COLLECT COD|AIR|refully final asympt|
-2722|34|10|3|16|14944.48|0.04|0.06|R|F|1994-05-25|1994-06-09|1994-05-26|NONE|MAIL|ts besides the fluffy,|
-2723|13|7|1|47|42911.47|0.09|0.07|N|O|1995-12-05|1995-11-19|1995-12-11|TAKE BACK RETURN|AIR|furiously r|
-2723|32|3|2|10|9320.30|0.06|0.08|N|O|1995-11-27|1995-11-29|1995-12-12|DELIVER IN PERSON|MAIL|al, special r|
-2723|162|1|3|2|2124.32|0.10|0.01|N|O|1995-11-09|1995-11-10|1995-11-14|TAKE BACK RETURN|FOB| courts boost quickly about th|
-2723|82|3|4|12|11784.96|0.01|0.05|N|O|1995-12-24|1995-11-15|1996-01-17|DELIVER IN PERSON|RAIL|bold foxes are bold packages. regular, fin|
-2723|129|10|5|40|41164.80|0.09|0.05|N|O|1995-11-17|1995-11-22|1995-11-18|TAKE BACK RETURN|MAIL|unwind fluffily carefully regular realms.|
-2724|92|4|1|47|46628.23|0.09|0.01|A|F|1994-11-23|1994-11-13|1994-12-03|COLLECT COD|TRUCK|unusual patterns nag. special p|
-2724|147|8|2|21|21989.94|0.09|0.02|A|F|1994-11-25|1994-10-15|1994-12-07|COLLECT COD|RAIL|as. carefully regular dependencies wak|
-2724|50|3|3|22|20901.10|0.04|0.06|A|F|1994-09-19|1994-11-18|1994-10-17|TAKE BACK RETURN|TRUCK|express fo|
-2724|35|6|4|1|935.03|0.07|0.03|A|F|1994-12-26|1994-11-27|1995-01-07|NONE|MAIL|lyly carefully blithe theodolites-- pl|
-2724|149|2|5|29|30425.06|0.05|0.06|A|F|1995-01-10|1994-11-17|1995-02-04|COLLECT COD|MAIL|l requests hagg|
-2725|118|2|1|23|23416.53|0.10|0.08|R|F|1994-08-25|1994-06-22|1994-08-28|TAKE BACK RETURN|REG AIR|y regular deposits. brave foxes |
-2725|5|8|2|41|37105.00|0.01|0.00|R|F|1994-07-05|1994-06-29|1994-08-02|DELIVER IN PERSON|TRUCK|ns sleep furiously c|
-2725|189|10|3|15|16337.70|0.07|0.03|R|F|1994-08-06|1994-08-09|1994-08-15|TAKE BACK RETURN|AIR|? furiously regular a|
-2726|1|6|1|50|45050.00|0.00|0.06|R|F|1993-03-04|1993-01-29|1993-03-28|COLLECT COD|TRUCK| furiously bold theodolites|
-2727|151|6|1|3|3153.45|0.03|0.01|N|O|1998-06-18|1998-06-06|1998-06-23|NONE|RAIL| the carefully regular foxes u|
-2752|31|2|1|41|38172.23|0.02|0.05|A|F|1994-03-02|1994-01-31|1994-03-06|DELIVER IN PERSON|AIR|tructions hag|
-2752|7|2|2|29|26303.00|0.02|0.04|R|F|1994-01-22|1994-01-08|1994-01-28|COLLECT COD|TRUCK|gly blithely re|
-2752|56|7|3|4|3824.20|0.08|0.00|A|F|1993-12-14|1994-02-13|1994-01-05|DELIVER IN PERSON|TRUCK|telets haggle. regular, final |
-2752|24|7|4|40|36960.80|0.09|0.06|A|F|1994-01-24|1994-01-18|1994-02-22|DELIVER IN PERSON|MAIL|into beans are after the sly|
-2752|126|5|5|22|22574.64|0.03|0.04|A|F|1994-03-20|1994-02-08|1994-04-01|TAKE BACK RETURN|TRUCK|equests nag. regular dependencies are furio|
-2752|170|5|6|21|22473.57|0.09|0.05|R|F|1994-01-01|1994-01-24|1994-01-24|COLLECT COD|SHIP| along the quickly |
-2752|199|10|7|38|41769.22|0.08|0.00|R|F|1994-02-23|1993-12-23|1994-03-24|DELIVER IN PERSON|SHIP|es boost. slyly silent ideas|
-2753|13|3|1|6|5478.06|0.10|0.04|A|F|1993-12-30|1994-01-28|1994-01-29|COLLECT COD|TRUCK|s accounts|
-2753|48|7|2|40|37921.60|0.03|0.05|A|F|1994-01-06|1994-02-13|1994-02-03|DELIVER IN PERSON|SHIP|latelets kindle slyly final depos|
-2753|89|10|3|30|29672.40|0.00|0.07|A|F|1994-01-26|1994-01-29|1994-02-02|NONE|RAIL|ans wake fluffily blithely iro|
-2753|31|7|4|7|6517.21|0.07|0.03|R|F|1994-02-11|1994-01-22|1994-03-10|DELIVER IN PERSON|AIR|xpress ideas detect b|
-2753|137|8|5|36|37336.68|0.04|0.08|R|F|1994-03-15|1994-01-03|1994-04-03|DELIVER IN PERSON|SHIP|gle slyly final c|
-2753|50|1|6|17|16150.85|0.01|0.08|A|F|1994-03-08|1994-01-17|1994-03-11|TAKE BACK RETURN|REG AIR| carefully bold deposits sublate s|
-2753|148|9|7|20|20962.80|0.01|0.06|R|F|1994-02-24|1994-02-04|1994-03-23|DELIVER IN PERSON|FOB| express pack|
-2754|149|6|1|4|4196.56|0.05|0.08|A|F|1994-07-13|1994-05-15|1994-08-02|NONE|REG AIR|blithely silent requests. regular depo|
-2754|177|5|2|19|20466.23|0.01|0.07|A|F|1994-06-27|1994-05-06|1994-06-28|NONE|FOB|latelets hag|
-2755|92|4|1|19|18849.71|0.10|0.00|R|F|1992-02-11|1992-03-15|1992-02-14|TAKE BACK RETURN|MAIL|furiously special deposits|
-2755|24|3|2|11|10164.22|0.03|0.08|A|F|1992-04-12|1992-05-07|1992-04-21|COLLECT COD|RAIL|egular excuses sleep carefully.|
-2755|64|3|3|21|20245.26|0.08|0.04|R|F|1992-02-13|1992-04-20|1992-03-02|NONE|AIR|furious re|
-2755|131|7|4|5|5155.65|0.01|0.00|A|F|1992-02-27|1992-04-07|1992-03-09|TAKE BACK RETURN|AIR|e the furi|
-2755|116|7|5|48|48773.28|0.05|0.06|R|F|1992-03-22|1992-03-10|1992-04-14|DELIVER IN PERSON|MAIL|yly even epitaphs for the |
-2756|118|9|1|35|35633.85|0.03|0.02|R|F|1994-06-08|1994-06-01|1994-06-21|TAKE BACK RETURN|AIR| deposits grow bold sheaves; iro|
-2756|80|9|2|47|46063.76|0.06|0.01|R|F|1994-05-10|1994-05-25|1994-05-13|NONE|AIR|e final, f|
-2756|105|8|3|31|31158.10|0.01|0.07|A|F|1994-07-27|1994-07-06|1994-08-22|TAKE BACK RETURN|TRUCK|en instructions use quickly.|
-2756|72|2|4|30|29162.10|0.00|0.04|A|F|1994-06-05|1994-06-30|1994-06-14|DELIVER IN PERSON|TRUCK|ular packages. regular deposi|
-2757|148|5|1|26|27251.64|0.07|0.00|N|O|1995-08-19|1995-10-02|1995-09-06|DELIVER IN PERSON|MAIL|around the blithely|
-2757|22|7|2|12|11064.24|0.07|0.08|N|O|1995-08-01|1995-09-04|1995-08-08|TAKE BACK RETURN|SHIP| regular, eve|
-2757|73|3|3|17|16542.19|0.10|0.04|N|O|1995-09-06|1995-09-27|1995-09-22|DELIVER IN PERSON|AIR|er the furiously silent |
-2757|140|1|4|25|26003.50|0.08|0.01|N|O|1995-11-09|1995-09-12|1995-11-23|NONE|AIR|uickly regular |
-2757|70|7|5|14|13580.98|0.04|0.05|N|O|1995-09-01|1995-08-24|1995-09-03|TAKE BACK RETURN|SHIP|special deposits u|
-2758|121|10|1|20|20422.40|0.02|0.04|N|O|1998-07-27|1998-09-10|1998-08-21|TAKE BACK RETURN|AIR|ptotes sleep furiously|
-2758|23|8|2|17|15691.34|0.10|0.06|N|O|1998-09-25|1998-10-03|1998-10-25|NONE|MAIL| accounts! qui|
-2758|26|5|3|1|926.02|0.06|0.02|N|O|1998-10-09|1998-09-15|1998-10-16|NONE|TRUCK|ake furious|
-2759|59|1|1|10|9590.50|0.10|0.03|R|F|1993-12-14|1994-01-08|1994-01-01|COLLECT COD|FOB|s. busily ironic theodo|
-2759|113|10|2|37|37485.07|0.00|0.06|R|F|1994-03-05|1994-02-22|1994-03-18|DELIVER IN PERSON|REG AIR|lar Tiresias affix ironically carefully sp|
-2759|112|9|3|11|11133.21|0.03|0.08|A|F|1994-01-24|1994-01-16|1994-02-21|DELIVER IN PERSON|TRUCK|hely regular |
-2759|23|2|4|31|28613.62|0.02|0.05|A|F|1994-01-11|1994-01-15|1994-01-23|NONE|SHIP|ithely aft|
-2784|33|4|1|45|41986.35|0.03|0.01|N|O|1998-02-15|1998-04-07|1998-02-26|COLLECT COD|AIR|yly along the asymptotes. reque|
-2784|54|5|2|23|21943.15|0.03|0.05|N|O|1998-03-28|1998-02-07|1998-04-17|DELIVER IN PERSON|AIR|uests lose after |
-2784|175|4|3|40|43006.80|0.07|0.01|N|O|1998-04-28|1998-03-19|1998-05-03|DELIVER IN PERSON|TRUCK|deas nag furiously never unusual |
-2784|29|10|4|3|2787.06|0.04|0.03|N|O|1998-01-19|1998-04-05|1998-02-05|TAKE BACK RETURN|AIR|n packages. foxes haggle quickly sile|
-2785|100|3|1|34|34003.40|0.08|0.06|N|O|1995-08-07|1995-09-09|1995-09-05|NONE|RAIL|ly final packages haggl|
-2785|110|7|2|37|37374.07|0.08|0.04|N|O|1995-07-25|1995-09-12|1995-08-06|DELIVER IN PERSON|TRUCK|tructions. furiously |
-2785|65|10|3|33|31846.98|0.08|0.06|N|O|1995-10-16|1995-08-24|1995-11-02|DELIVER IN PERSON|MAIL|fter the furiously final p|
-2785|48|1|4|34|32233.36|0.00|0.02|N|O|1995-09-16|1995-09-09|1995-10-11|COLLECT COD|SHIP|kages wake carefully silent |
-2786|136|2|1|15|15541.95|0.03|0.04|A|F|1992-05-19|1992-05-08|1992-05-28|COLLECT COD|TRUCK|low deposits are ironic|
-2786|51|3|2|42|39944.10|0.10|0.04|R|F|1992-05-15|1992-04-22|1992-05-30|DELIVER IN PERSON|AIR|unts are against the furious|
-2786|156|1|3|41|43302.15|0.04|0.05|R|F|1992-07-01|1992-06-04|1992-07-13|COLLECT COD|RAIL|ix requests. bold requests a|
-2786|23|4|4|24|22152.48|0.05|0.02|A|F|1992-04-04|1992-06-09|1992-05-02|DELIVER IN PERSON|MAIL|ans. slyly unusual platelets detect. unus|
-2786|50|3|5|43|40852.15|0.06|0.03|R|F|1992-04-22|1992-05-13|1992-04-29|NONE|RAIL|ons. theodolites after|
-2786|162|1|6|21|22305.36|0.08|0.00|A|F|1992-05-03|1992-05-01|1992-05-14|COLLECT COD|AIR|slow instructi|
-2787|33|9|1|4|3732.12|0.04|0.04|N|O|1996-01-26|1995-11-26|1996-02-20|TAKE BACK RETURN|SHIP|ts. instructions nag furiously according |
-2788|177|8|1|16|17234.72|0.06|0.06|A|F|1994-10-04|1994-11-25|1994-10-18|DELIVER IN PERSON|AIR| requests wake carefully. carefully si|
-2789|163|8|1|16|17010.56|0.03|0.02|N|O|1998-04-18|1998-05-25|1998-05-12|DELIVER IN PERSON|REG AIR|o beans use carefully|
-2789|23|4|2|41|37843.82|0.02|0.05|N|O|1998-03-20|1998-05-15|1998-03-21|COLLECT COD|MAIL|d packages-- fluffily specia|
-2789|176|5|3|33|35513.61|0.06|0.02|N|O|1998-04-21|1998-05-02|1998-04-30|COLLECT COD|TRUCK|deposits. ironic |
-2789|16|3|4|47|43052.47|0.02|0.04|N|O|1998-03-29|1998-05-05|1998-04-07|NONE|RAIL|usly busy packages wake against the unusual|
-2789|197|1|5|23|25235.37|0.02|0.07|N|O|1998-03-25|1998-05-10|1998-04-24|COLLECT COD|RAIL|cording to the careful de|
-2789|144|5|6|16|16706.24|0.07|0.03|N|O|1998-05-11|1998-05-08|1998-05-24|TAKE BACK RETURN|RAIL|d the carefully iron|
-2789|133|4|7|42|43391.46|0.01|0.00|N|O|1998-04-28|1998-05-17|1998-05-24|TAKE BACK RETURN|AIR|ending packages shoul|
-2790|185|6|1|27|29299.86|0.06|0.08|R|F|1994-09-04|1994-09-27|1994-09-16|TAKE BACK RETURN|MAIL|ilent packages cajole. quickly ironic requ|
-2790|117|1|2|50|50855.50|0.00|0.06|A|F|1994-12-08|1994-11-17|1994-12-19|NONE|RAIL|fter the regular ideas. f|
-2790|184|5|3|19|20599.42|0.06|0.00|R|F|1994-10-23|1994-10-03|1994-10-26|TAKE BACK RETURN|RAIL|uffily even excuses. furiously thin|
-2790|197|8|4|24|26332.56|0.07|0.01|A|F|1994-12-04|1994-10-10|1994-12-25|NONE|MAIL|ments. slyly f|
-2790|148|9|5|11|11529.54|0.08|0.03|A|F|1994-09-28|1994-11-14|1994-10-04|TAKE BACK RETURN|AIR|lar requests poach slyly foxes|
-2790|73|3|6|13|12649.91|0.08|0.00|R|F|1994-09-20|1994-10-10|1994-10-20|COLLECT COD|SHIP|n deposits according to the regul|
-2790|4|1|7|32|28928.00|0.08|0.02|A|F|1994-09-25|1994-10-26|1994-10-01|NONE|SHIP|ully pending|
-2791|59|10|1|49|46993.45|0.10|0.04|A|F|1995-01-11|1994-11-10|1995-02-08|COLLECT COD|MAIL| accounts sleep at the bold, regular pinto |
-2791|63|4|2|4|3852.24|0.10|0.08|A|F|1995-01-02|1994-12-28|1995-01-29|NONE|SHIP|slyly bold packages boost. slyly|
-2791|133|9|3|44|45457.72|0.08|0.06|R|F|1994-11-17|1994-11-12|1994-12-14|NONE|FOB|heodolites use furio|
-2791|156|8|4|24|25347.60|0.04|0.02|R|F|1995-01-30|1994-11-20|1995-02-08|DELIVER IN PERSON|TRUCK|ilent forges. quickly special pinto beans |
-2791|105|2|5|8|8040.80|0.02|0.04|R|F|1995-01-30|1994-11-24|1995-02-13|NONE|FOB|se. close ideas alongs|
-2791|75|3|6|9|8775.63|0.08|0.02|R|F|1994-11-19|1994-12-14|1994-12-10|TAKE BACK RETURN|AIR|pendencies. blithely bold patterns acr|
-2791|29|2|7|26|24154.52|0.06|0.03|R|F|1995-02-06|1994-12-07|1995-02-23|DELIVER IN PERSON|AIR|uriously special instructio|
-2816|59|10|1|33|31648.65|0.00|0.07|R|F|1994-10-19|1994-11-10|1994-11-09|NONE|REG AIR|s; slyly even theodo|
-2816|142|3|2|4|4168.56|0.05|0.04|R|F|1994-12-11|1994-12-07|1995-01-03|NONE|FOB|. blithely pending id|
-2816|121|6|3|4|4084.48|0.02|0.06|R|F|1994-12-12|1994-12-05|1994-12-30|NONE|RAIL| requests print above the final deposits|
-2817|60|8|1|25|24001.50|0.07|0.01|R|F|1994-04-21|1994-06-20|1994-05-07|DELIVER IN PERSON|FOB|doze blithely.|
-2817|32|8|2|5|4660.15|0.03|0.04|A|F|1994-05-07|1994-05-31|1994-05-12|TAKE BACK RETURN|AIR|furiously unusual theodolites use furiou|
-2817|172|10|3|35|37525.95|0.01|0.07|A|F|1994-05-20|1994-06-03|1994-05-22|COLLECT COD|FOB|gular foxes|
-2817|161|2|4|4|4244.64|0.00|0.05|R|F|1994-06-04|1994-06-11|1994-06-10|NONE|TRUCK|n accounts wake across the fluf|
-2818|121|4|1|12|12253.44|0.10|0.03|A|F|1995-02-01|1995-03-10|1995-02-16|NONE|AIR|lms. quickly bold asymp|
-2818|199|2|2|22|24182.18|0.06|0.07|R|F|1995-02-28|1995-03-10|1995-03-06|TAKE BACK RETURN|RAIL|egrate toward the carefully iron|
-2818|45|6|3|11|10395.44|0.01|0.06|R|F|1995-02-18|1995-02-11|1995-03-19|TAKE BACK RETURN|TRUCK|ggle across the carefully blithe|
-2818|40|6|4|32|30081.28|0.08|0.08|R|F|1995-02-04|1995-03-05|1995-02-18|COLLECT COD|REG AIR|arefully! ac|
-2818|18|8|5|42|38556.42|0.08|0.04|A|F|1995-02-12|1995-02-19|1995-03-13|COLLECT COD|MAIL|ar accounts wake carefully a|
-2818|91|5|6|7|6937.63|0.06|0.03|R|F|1995-03-24|1995-03-09|1995-04-06|TAKE BACK RETURN|TRUCK|ly according to the r|
-2819|70|1|1|17|16491.19|0.08|0.08|A|F|1994-07-16|1994-07-15|1994-07-17|TAKE BACK RETURN|RAIL|en deposits above the f|
-2819|67|2|2|12|11604.72|0.03|0.08|R|F|1994-07-18|1994-06-24|1994-07-28|NONE|MAIL| regular, regular a|
-2819|5|2|3|28|25340.00|0.03|0.08|R|F|1994-05-09|1994-07-02|1994-05-15|NONE|RAIL|ckages sublate carefully closely regular |
-2819|153|4|4|5|5265.75|0.00|0.02|R|F|1994-05-29|1994-06-12|1994-06-28|NONE|TRUCK| fluffily unusual foxes sleep caref|
-2819|200|3|5|6|6601.20|0.03|0.01|A|F|1994-07-22|1994-08-02|1994-07-29|NONE|REG AIR|eas after the carefully express pack|
-2820|174|2|1|23|24705.91|0.04|0.08|R|F|1994-07-10|1994-08-08|1994-07-21|NONE|MAIL| was furiously. deposits among the ironic|
-2820|126|9|2|33|33861.96|0.08|0.06|A|F|1994-07-07|1994-08-17|1994-08-02|DELIVER IN PERSON|AIR|carefully even pinto beans. |
-2820|141|10|3|38|39563.32|0.03|0.08|A|F|1994-09-10|1994-08-07|1994-10-07|TAKE BACK RETURN|MAIL|ests despite the carefully unusual a|
-2820|197|9|4|40|43887.60|0.06|0.06|A|F|1994-08-08|1994-07-30|1994-08-21|TAKE BACK RETURN|REG AIR|g multipliers. final c|
-2821|181|2|1|4|4324.72|0.00|0.00|A|F|1993-09-15|1993-10-02|1993-09-17|TAKE BACK RETURN|TRUCK|nding foxes.|
-2821|72|1|2|4|3888.28|0.09|0.00|A|F|1993-11-19|1993-09-20|1993-11-27|TAKE BACK RETURN|TRUCK|ual multipliers. final deposits cajol|
-2821|164|1|3|27|28732.32|0.01|0.01|A|F|1993-11-27|1993-10-11|1993-12-08|COLLECT COD|TRUCK|requests. blit|
-2822|151|9|1|39|40994.85|0.04|0.02|R|F|1993-09-11|1993-08-29|1993-09-18|NONE|MAIL|kly about the sly|
-2823|86|7|1|45|44373.60|0.03|0.04|N|O|1995-12-28|1995-11-27|1996-01-02|DELIVER IN PERSON|SHIP|furiously special idea|
-2823|160|5|2|18|19082.88|0.00|0.03|N|O|1995-11-11|1995-10-30|1995-12-08|TAKE BACK RETURN|TRUCK| final deposits. furiously regular foxes u|
-2823|186|7|3|11|11947.98|0.07|0.02|N|O|1995-12-10|1995-11-24|1995-12-21|DELIVER IN PERSON|SHIP|bold requests nag blithely s|
-2823|139|10|4|48|49878.24|0.09|0.03|N|O|1995-11-21|1995-10-30|1995-11-27|NONE|SHIP|ously busily slow excus|
-2823|99|2|5|18|17983.62|0.04|0.06|N|O|1995-11-09|1995-10-30|1995-11-19|NONE|AIR|eas. decoys cajole deposi|
-2823|123|2|6|20|20462.40|0.07|0.00|N|O|1995-11-13|1995-12-06|1995-12-07|NONE|MAIL|its sleep between the unusual, ironic pac|
-2823|86|7|7|12|11832.96|0.02|0.04|N|O|1995-12-22|1995-11-20|1996-01-13|NONE|REG AIR|the slyly ironic dolphins; fin|
-2848|65|4|1|44|42462.64|0.01|0.05|R|F|1992-04-14|1992-05-09|1992-04-19|DELIVER IN PERSON|MAIL|ions. slyly express instructions n|
-2848|165|6|2|8|8521.28|0.07|0.01|A|F|1992-03-21|1992-05-18|1992-04-07|DELIVER IN PERSON|TRUCK|. silent, final ideas sublate packages. ir|
-2848|138|4|3|8|8305.04|0.07|0.08|A|F|1992-06-20|1992-04-12|1992-07-09|NONE|SHIP|sly regular foxes. |
-2848|125|6|4|34|34854.08|0.02|0.08|A|F|1992-03-15|1992-04-24|1992-04-12|TAKE BACK RETURN|RAIL|ts along the blithely regu|
-2848|195|7|5|18|19713.42|0.07|0.03|R|F|1992-04-10|1992-06-01|1992-05-05|DELIVER IN PERSON|TRUCK|osits haggle. stealthily ironic packa|
-2849|154|2|1|16|16866.40|0.09|0.08|N|O|1996-05-20|1996-07-23|1996-06-18|NONE|TRUCK|. furiously regular requ|
-2849|187|8|2|39|42400.02|0.10|0.03|N|O|1996-05-22|1996-07-18|1996-06-05|TAKE BACK RETURN|SHIP|s sleep furiously silently regul|
-2849|60|1|3|24|23041.44|0.01|0.05|N|O|1996-06-12|1996-07-10|1996-06-27|TAKE BACK RETURN|AIR|e slyly even asymptotes. slo|
-2849|55|7|4|48|45842.40|0.05|0.02|N|O|1996-05-03|1996-06-05|1996-05-28|NONE|AIR|mong the carefully regular theodol|
-2849|28|7|5|30|27840.60|0.10|0.06|N|O|1996-08-24|1996-07-08|1996-09-03|TAKE BACK RETURN|SHIP|ly. carefully silent|
-2849|69|4|6|30|29071.80|0.06|0.07|N|O|1996-06-20|1996-07-23|1996-07-06|NONE|FOB|yly furiously even id|
-2850|97|1|1|43|42874.87|0.02|0.05|N|O|1997-01-11|1996-11-03|1997-02-01|COLLECT COD|REG AIR|unusual accounts|
-2850|110|7|2|30|30303.30|0.09|0.01|N|O|1996-12-14|1996-11-29|1997-01-03|COLLECT COD|AIR|even ideas. busy pinto beans sleep above t|
-2850|105|6|3|49|49249.90|0.09|0.04|N|O|1996-10-07|1996-12-12|1996-10-12|TAKE BACK RETURN|MAIL| slyly unusual req|
-2850|199|3|4|4|4396.76|0.04|0.04|N|O|1996-10-28|1996-12-26|1996-11-07|COLLECT COD|RAIL|al deposits cajole carefully quickly |
-2851|148|5|1|8|8385.12|0.09|0.03|N|O|1997-11-12|1997-11-22|1997-12-11|NONE|REG AIR|y special theodolites. carefully|
-2852|177|6|1|6|6463.02|0.01|0.01|R|F|1993-03-02|1993-04-11|1993-03-11|TAKE BACK RETURN|RAIL| accounts above the furiously un|
-2852|41|10|2|24|22584.96|0.05|0.07|R|F|1993-01-18|1993-03-13|1993-02-14|DELIVER IN PERSON|MAIL| the blithe|
-2852|164|9|3|29|30860.64|0.09|0.05|R|F|1993-04-21|1993-03-22|1993-05-02|COLLECT COD|SHIP|lyly ironi|
-2852|100|3|4|12|12001.20|0.08|0.02|A|F|1993-02-25|1993-03-24|1993-03-07|TAKE BACK RETURN|TRUCK|le. request|
-2852|154|2|5|28|29516.20|0.05|0.03|R|F|1993-02-08|1993-03-30|1993-02-11|NONE|MAIL|e accounts. caref|
-2853|139|5|1|14|14547.82|0.07|0.05|R|F|1994-05-16|1994-07-01|1994-05-27|NONE|TRUCK|oach slyly along t|
-2853|134|10|2|26|26887.38|0.06|0.01|R|F|1994-06-26|1994-06-05|1994-07-02|TAKE BACK RETURN|MAIL|dolphins wake slyly. blith|
-2853|173|3|3|40|42926.80|0.06|0.04|A|F|1994-08-06|1994-06-24|1994-08-29|NONE|RAIL|lyly. pearls cajole. final accounts ca|
-2853|132|8|4|20|20642.60|0.02|0.04|A|F|1994-08-30|1994-06-16|1994-09-06|TAKE BACK RETURN|TRUCK|e slyly silent foxes. express deposits sno|
-2853|36|7|5|1|936.03|0.08|0.05|R|F|1994-09-01|1994-06-27|1994-09-12|TAKE BACK RETURN|FOB|refully slyly quick packages. final c|
-2854|181|2|1|46|49734.28|0.00|0.04|A|F|1994-09-22|1994-08-02|1994-09-30|COLLECT COD|AIR|. furiously regular deposits across th|
-2854|88|9|2|29|28654.32|0.09|0.07|R|F|1994-07-06|1994-08-26|1994-07-09|COLLECT COD|SHIP|y slyly ironic accounts. foxes haggle slyl|
-2854|160|8|3|20|21203.20|0.08|0.01|R|F|1994-09-18|1994-08-03|1994-10-12|COLLECT COD|AIR|rs impress after the deposits. |
-2854|170|1|4|34|36385.78|0.06|0.03|A|F|1994-09-06|1994-08-07|1994-09-22|NONE|REG AIR|age carefully|
-2854|102|3|5|7|7014.70|0.03|0.06|A|F|1994-09-23|1994-08-14|1994-10-10|DELIVER IN PERSON|REG AIR| the pending|
-2854|18|2|6|13|11934.13|0.04|0.03|R|F|1994-09-15|1994-08-18|1994-09-19|DELIVER IN PERSON|SHIP| excuses wak|
-2855|33|4|1|50|46651.50|0.03|0.07|A|F|1993-05-20|1993-06-28|1993-06-16|TAKE BACK RETURN|TRUCK|beans. deposits |
-2880|35|6|1|40|37401.20|0.09|0.00|A|F|1992-05-26|1992-06-01|1992-05-31|COLLECT COD|TRUCK|even requests. quick|
-2880|139|5|2|26|27017.38|0.07|0.07|R|F|1992-04-12|1992-04-15|1992-04-28|NONE|RAIL|ully among the regular warthogs|
-2880|115|9|3|42|42634.62|0.01|0.01|R|F|1992-06-17|1992-05-29|1992-07-11|NONE|REG AIR|ions. carefully final accounts are unusual,|
-2880|18|2|4|46|42228.46|0.02|0.02|A|F|1992-04-21|1992-06-05|1992-05-16|COLLECT COD|RAIL|eep quickly according to t|
-2881|180|10|1|16|17282.88|0.02|0.06|A|F|1992-06-21|1992-06-27|1992-07-03|TAKE BACK RETURN|TRUCK|usly bold |
-2881|10|1|2|1|910.01|0.09|0.03|A|F|1992-05-13|1992-07-21|1992-05-18|COLLECT COD|MAIL|final theodolites. quickly|
-2881|93|6|3|21|20854.89|0.07|0.03|A|F|1992-05-28|1992-07-03|1992-06-02|TAKE BACK RETURN|SHIP|hely express Tiresias. final dependencies |
-2881|140|6|4|7|7280.98|0.06|0.01|R|F|1992-08-03|1992-07-10|1992-08-27|NONE|REG AIR|ironic packages are carefully final ac|
-2882|4|7|1|14|12656.00|0.09|0.02|N|O|1995-09-28|1995-11-11|1995-10-18|TAKE BACK RETURN|MAIL|kly. even requests w|
-2882|42|1|2|30|28261.20|0.00|0.00|N|O|1995-10-15|1995-10-13|1995-10-25|NONE|REG AIR|among the furiously even theodolites. regu|
-2882|197|9|3|29|31818.51|0.10|0.08|N|O|1995-09-10|1995-11-01|1995-10-02|NONE|TRUCK|kages. furiously ironic|
-2882|78|6|4|27|26407.89|0.06|0.02|N|O|1995-09-04|1995-11-11|1995-09-12|DELIVER IN PERSON|MAIL|rding to the regu|
-2882|134|5|5|32|33092.16|0.07|0.03|N|O|1995-10-21|1995-11-10|1995-11-01|COLLECT COD|RAIL|sts. quickly regular e|
-2882|87|8|6|47|46392.76|0.06|0.03|N|O|1995-09-13|1995-09-21|1995-09-14|NONE|REG AIR|l, special|
-2883|1|4|1|33|29733.00|0.08|0.07|R|F|1995-02-26|1995-03-04|1995-03-01|NONE|RAIL|s. final i|
-2883|125|6|2|27|27678.24|0.00|0.02|A|F|1995-03-12|1995-03-10|1995-04-04|TAKE BACK RETURN|REG AIR|s. brave pinto beans nag furiously|
-2883|189|10|3|47|51191.46|0.05|0.04|R|F|1995-01-29|1995-04-19|1995-02-05|DELIVER IN PERSON|SHIP|ep carefully ironic|
-2883|98|2|4|23|22956.07|0.00|0.02|R|F|1995-02-03|1995-03-17|1995-02-19|TAKE BACK RETURN|AIR| even requests cajole. special, regular |
-2883|195|8|5|36|39426.84|0.07|0.06|A|F|1995-05-02|1995-03-14|1995-05-30|COLLECT COD|MAIL|ests detect slyly special packages|
-2884|71|2|1|41|39813.87|0.03|0.00|N|O|1998-01-02|1997-12-17|1998-01-20|DELIVER IN PERSON|TRUCK|ep. slyly even accounts a|
-2884|146|5|2|25|26153.50|0.09|0.08|N|O|1998-01-18|1997-12-06|1998-02-16|TAKE BACK RETURN|MAIL|onic theodolites with the instructi|
-2884|26|7|3|8|7408.16|0.08|0.08|N|O|1997-11-30|1997-11-28|1997-12-14|COLLECT COD|TRUCK|pending accounts about |
-2885|4|9|1|6|5424.00|0.10|0.01|A|F|1993-01-05|1992-12-12|1993-01-19|COLLECT COD|FOB|ctions solve. slyly regular requests n|
-2885|112|3|2|4|4048.44|0.07|0.00|A|F|1992-10-09|1992-12-17|1992-11-04|TAKE BACK RETURN|SHIP| pending packages wake. |
-2885|1|6|3|45|40545.00|0.10|0.04|A|F|1992-12-24|1992-10-30|1993-01-04|NONE|SHIP|ess ideas. regular, silen|
-2885|32|3|4|15|13980.45|0.03|0.04|R|F|1992-10-31|1992-11-24|1992-11-21|DELIVER IN PERSON|MAIL|odolites. boldly pending packages han|
-2885|175|5|5|43|46232.31|0.06|0.00|R|F|1992-11-17|1992-10-30|1992-12-04|DELIVER IN PERSON|SHIP|cial deposits use bold|
-2885|190|1|6|5|5450.95|0.01|0.02|R|F|1993-01-06|1992-11-13|1993-02-05|TAKE BACK RETURN|TRUCK|s. slyly express th|
-2885|50|9|7|40|38002.00|0.05|0.03|A|F|1992-09-23|1992-11-15|1992-10-07|TAKE BACK RETURN|AIR| express depos|
-2886|60|1|1|1|960.06|0.09|0.05|A|F|1995-02-01|1994-12-18|1995-02-28|COLLECT COD|REG AIR|eposits fr|
-2886|184|5|2|38|41198.84|0.02|0.04|A|F|1995-01-21|1995-01-08|1995-01-30|NONE|SHIP|old requests along the fur|
-2886|63|8|3|2|1926.12|0.04|0.07|A|F|1994-11-18|1995-01-31|1994-12-05|COLLECT COD|REG AIR|ar theodolites. e|
-2886|130|3|4|46|47385.98|0.03|0.08|A|F|1995-02-02|1995-01-26|1995-02-15|TAKE BACK RETURN|SHIP|ously final packages sleep blithely regular|
-2887|66|3|1|11|10626.66|0.06|0.00|N|O|1997-07-08|1997-07-17|1997-07-15|COLLECT COD|SHIP|ackages. unusual, speci|
-2887|112|6|2|17|17205.87|0.00|0.08|N|O|1997-08-31|1997-07-04|1997-09-17|DELIVER IN PERSON|SHIP|fily final packages. regula|
-2912|122|1|1|8|8176.96|0.06|0.04|A|F|1992-04-09|1992-04-19|1992-04-26|NONE|RAIL|hs cajole over the slyl|
-2912|115|9|2|18|18271.98|0.00|0.08|R|F|1992-03-13|1992-04-19|1992-03-30|TAKE BACK RETURN|RAIL|unts cajole reg|
-2913|123|6|1|39|39901.68|0.06|0.04|N|O|1997-08-28|1997-09-27|1997-09-02|TAKE BACK RETURN|AIR|. final packages a|
-2913|22|5|2|22|20284.44|0.10|0.07|N|O|1997-09-18|1997-08-11|1997-10-02|COLLECT COD|MAIL|riously pending realms. blithely even pac|
-2913|166|1|3|17|18124.72|0.07|0.04|N|O|1997-10-21|1997-09-25|1997-11-20|NONE|FOB|requests doze quickly. furious|
-2913|143|4|4|5|5215.70|0.10|0.07|N|O|1997-10-07|1997-08-25|1997-10-09|TAKE BACK RETURN|RAIL|haggle. even, bold instructi|
-2913|15|9|5|13|11895.13|0.03|0.01|N|O|1997-10-02|1997-08-20|1997-10-26|COLLECT COD|MAIL|inos are carefully alongside of the bol|
-2913|168|5|6|35|37385.60|0.06|0.08|N|O|1997-08-30|1997-08-21|1997-09-03|COLLECT COD|MAIL|es. quickly even braids against|
-2914|66|7|1|22|21253.32|0.05|0.06|R|F|1993-05-11|1993-04-09|1993-05-22|DELIVER IN PERSON|FOB| carefully about the fluffily ironic gifts|
-2914|163|10|2|25|26579.00|0.03|0.04|A|F|1993-05-14|1993-04-04|1993-05-22|NONE|SHIP|cross the carefully even accounts.|
-2914|35|1|3|4|3740.12|0.00|0.05|R|F|1993-06-11|1993-04-09|1993-06-14|TAKE BACK RETURN|SHIP|s integrate. bold deposits sleep req|
-2914|121|2|4|9|9190.08|0.06|0.01|R|F|1993-06-17|1993-05-26|1993-06-19|NONE|REG AIR|s. carefully final foxes ar|
-2915|175|5|1|28|30104.76|0.10|0.02|R|F|1994-04-17|1994-06-09|1994-05-10|NONE|MAIL|yly special |
-2915|94|7|2|12|11929.08|0.00|0.03|A|F|1994-07-18|1994-06-11|1994-07-27|TAKE BACK RETURN|RAIL|accounts. slyly final|
-2915|136|2|3|15|15541.95|0.07|0.00|A|F|1994-05-01|1994-06-12|1994-05-15|DELIVER IN PERSON|TRUCK|al requests haggle furiousl|
-2915|81|2|4|43|42186.44|0.06|0.05|R|F|1994-06-02|1994-05-24|1994-06-06|DELIVER IN PERSON|SHIP|into beans dazzle alongside of|
-2916|83|4|1|21|20644.68|0.06|0.04|N|O|1996-03-11|1996-02-21|1996-03-30|NONE|REG AIR|uickly express ideas over the slyly even |
-2917|93|4|1|36|35751.24|0.10|0.01|N|O|1998-04-07|1998-02-23|1998-05-01|DELIVER IN PERSON|RAIL|usly ironic d|
-2917|21|2|2|20|18420.40|0.06|0.03|N|O|1997-12-31|1998-01-22|1998-01-12|NONE|MAIL|slyly even ideas wa|
-2917|90|1|3|4|3960.36|0.02|0.07|N|O|1998-01-10|1998-01-18|1998-02-08|TAKE BACK RETURN|REG AIR|s. unusual instruct|
-2917|167|2|4|5|5335.80|0.05|0.01|N|O|1997-12-16|1998-01-26|1998-01-07|NONE|RAIL|bove the furiously silent packages. pend|
-2917|41|10|5|37|34818.48|0.04|0.01|N|O|1997-12-12|1998-02-03|1997-12-23|COLLECT COD|RAIL|dependencies. express |
-2917|194|8|6|7|7659.33|0.05|0.01|N|O|1998-03-21|1998-03-03|1998-03-25|NONE|REG AIR|ly about the regular accounts. carefully pe|
-2918|78|7|1|24|23473.68|0.10|0.03|N|O|1996-12-20|1996-10-28|1996-12-26|DELIVER IN PERSON|FOB| quickly. express requests haggle careful|
-2919|102|5|1|2|2004.20|0.03|0.05|R|F|1993-12-28|1994-02-23|1994-01-18|COLLECT COD|TRUCK|re slyly. regular ideas detect furiousl|
-2919|121|4|2|49|50034.88|0.07|0.02|R|F|1993-12-16|1994-02-28|1993-12-19|COLLECT COD|FOB|hely final inst|
-2919|46|5|3|44|41625.76|0.07|0.07|A|F|1994-04-01|1994-01-12|1994-04-07|TAKE BACK RETURN|TRUCK|final ideas haggle carefully fluff|
-2919|102|5|4|44|44092.40|0.00|0.05|R|F|1994-02-04|1994-02-03|1994-03-02|TAKE BACK RETURN|AIR|es doze around the furiously |
-2944|120|1|1|44|44885.28|0.08|0.05|N|O|1997-12-25|1997-10-28|1998-01-21|COLLECT COD|AIR|ickly special theodolit|
-2944|42|9|2|44|41449.76|0.06|0.02|N|O|1997-10-28|1997-11-22|1997-11-10|NONE|SHIP|ickly. regular requests haggle. idea|
-2944|170|5|3|2|2140.34|0.06|0.07|N|O|1997-12-13|1997-12-01|1998-01-08|DELIVER IN PERSON|REG AIR|luffily expr|
-2944|17|7|4|23|21091.23|0.02|0.03|N|O|1998-01-12|1997-12-03|1998-01-17|TAKE BACK RETURN|MAIL| excuses? regular platelets e|
-2944|75|4|5|18|17551.26|0.10|0.01|N|O|1998-01-07|1997-10-26|1998-01-27|TAKE BACK RETURN|FOB| furiously slyl|
-2944|60|2|6|17|16321.02|0.00|0.03|N|O|1997-10-18|1997-11-27|1997-10-29|TAKE BACK RETURN|SHIP|slyly final dolphins sleep silent the|
-2944|90|1|7|7|6930.63|0.01|0.06|N|O|1997-10-30|1997-11-03|1997-11-03|DELIVER IN PERSON|FOB|fluffily blithely express pea|
-2945|59|10|1|37|35484.85|0.00|0.02|N|O|1996-02-10|1996-03-20|1996-02-12|COLLECT COD|SHIP|l instructions. regular, regular |
-2945|72|2|2|30|29162.10|0.05|0.01|N|O|1996-01-19|1996-02-11|1996-01-26|NONE|TRUCK|ular instructions|
-2945|127|8|3|28|28759.36|0.06|0.02|N|O|1996-03-17|1996-03-13|1996-04-15|COLLECT COD|FOB|le slyly along the eve|
-2945|188|9|4|34|36998.12|0.08|0.06|N|O|1996-02-03|1996-03-17|1996-02-29|COLLECT COD|REG AIR|at the unusual theodolite|
-2945|173|1|5|10|10731.70|0.09|0.05|N|O|1996-03-13|1996-03-10|1996-04-06|COLLECT COD|FOB|thely. final courts could hang qu|
-2945|97|9|6|45|44869.05|0.07|0.00|N|O|1996-03-01|1996-03-25|1996-03-08|TAKE BACK RETURN|MAIL|ainst the final packages|
-2945|52|10|7|47|44746.35|0.07|0.05|N|O|1996-01-05|1996-02-11|1996-01-12|DELIVER IN PERSON|MAIL|quests use|
-2946|10|5|1|25|22750.25|0.05|0.02|N|O|1996-05-06|1996-04-23|1996-05-16|DELIVER IN PERSON|SHIP|ic deposits. furiously|
-2946|94|5|2|48|47716.32|0.03|0.07|N|O|1996-06-02|1996-03-31|1996-06-16|COLLECT COD|TRUCK|oss the platelets. furi|
-2946|3|6|3|35|31605.00|0.03|0.00|N|O|1996-03-15|1996-04-02|1996-03-26|NONE|REG AIR| sublate along the fluffily iron|
-2947|10|1|1|37|33670.37|0.09|0.07|N|O|1995-08-09|1995-07-05|1995-08-20|DELIVER IN PERSON|RAIL|e accounts: expres|
-2947|186|7|2|10|10861.80|0.09|0.07|A|F|1995-06-07|1995-06-26|1995-06-08|NONE|MAIL|lly special |
-2948|118|9|1|48|48869.28|0.00|0.04|R|F|1994-08-29|1994-10-23|1994-09-23|NONE|TRUCK|unusual excuses use about the |
-2948|92|3|2|49|48612.41|0.04|0.07|R|F|1994-12-16|1994-11-08|1995-01-07|DELIVER IN PERSON|MAIL|ress requests. furiously blithe foxes |
-2949|21|6|1|4|3684.08|0.06|0.06|A|F|1994-06-07|1994-06-17|1994-07-04|TAKE BACK RETURN|REG AIR|gular pinto beans wake alongside of the reg|
-2949|70|5|2|50|48503.50|0.05|0.04|A|F|1994-08-04|1994-06-23|1994-08-17|TAKE BACK RETURN|FOB|gular courts cajole across t|
-2949|180|9|3|38|41046.84|0.02|0.06|R|F|1994-05-22|1994-05-25|1994-05-27|COLLECT COD|REG AIR|se slyly requests. carefull|
-2950|130|1|1|32|32964.16|0.01|0.05|N|O|1997-09-21|1997-08-25|1997-10-08|DELIVER IN PERSON|REG AIR|its wake carefully slyly final ideas.|
-2950|66|7|2|18|17389.08|0.10|0.01|N|O|1997-07-19|1997-08-29|1997-08-17|COLLECT COD|TRUCK|uests cajole furio|
-2950|53|4|3|14|13342.70|0.01|0.02|N|O|1997-07-29|1997-08-05|1997-07-31|TAKE BACK RETURN|MAIL|ccounts haggle carefully according |
-2950|187|8|4|45|48923.10|0.08|0.00|N|O|1997-09-05|1997-09-23|1997-09-11|NONE|FOB|ides the b|
-2950|61|2|5|46|44208.76|0.02|0.05|N|O|1997-07-15|1997-09-30|1997-07-25|COLLECT COD|RAIL|to the regular accounts are slyly carefu|
-2950|174|5|6|27|29002.59|0.01|0.03|N|O|1997-10-01|1997-09-13|1997-10-08|NONE|TRUCK|are alongside of the carefully silent |
-2951|3|8|1|5|4515.00|0.03|0.03|N|O|1996-03-27|1996-04-16|1996-03-30|NONE|REG AIR|to beans wake ac|
-2951|136|2|2|24|24867.12|0.07|0.03|N|O|1996-03-24|1996-04-16|1996-04-08|NONE|SHIP| ironic multipliers. express, regular|
-2951|187|8|3|40|43487.20|0.02|0.07|N|O|1996-05-03|1996-04-20|1996-05-22|COLLECT COD|REG AIR|ial deposits wake fluffily about th|
-2951|73|3|4|21|20434.47|0.06|0.08|N|O|1996-04-12|1996-04-27|1996-04-14|DELIVER IN PERSON|REG AIR|nt instructions toward the f|
-2951|51|6|5|15|14265.75|0.07|0.00|N|O|1996-03-25|1996-04-23|1996-03-27|COLLECT COD|REG AIR|inal account|
-2951|138|4|6|18|18686.34|0.06|0.00|N|O|1996-04-04|1996-04-27|1996-04-06|COLLECT COD|FOB|ep about the final, even package|
-2976|9|4|1|32|29088.00|0.06|0.00|A|F|1994-01-26|1994-02-13|1994-02-10|NONE|MAIL|nding, ironic deposits sleep f|
-2976|4|5|2|24|21696.00|0.00|0.03|A|F|1994-03-19|1994-01-26|1994-04-18|COLLECT COD|TRUCK|ronic pinto beans. slyly bol|
-2976|10|5|3|35|31850.35|0.10|0.07|R|F|1993-12-19|1994-02-14|1994-01-11|NONE|RAIL|boost slyly about the regular, regular re|
-2976|82|3|4|22|21605.76|0.00|0.04|A|F|1994-02-08|1994-03-03|1994-02-12|TAKE BACK RETURN|FOB|ncies kindle furiously. carefull|
-2976|134|5|5|13|13443.69|0.00|0.06|A|F|1994-02-06|1994-02-02|1994-02-19|NONE|FOB| furiously final courts boost |
-2976|109|2|6|30|30273.00|0.08|0.03|R|F|1994-03-27|1994-02-01|1994-04-26|TAKE BACK RETURN|RAIL|c ideas! unusual|
-2977|70|5|1|25|24251.75|0.03|0.07|N|O|1996-09-21|1996-10-06|1996-10-13|TAKE BACK RETURN|RAIL|furiously pe|
-2978|90|1|1|29|28712.61|0.00|0.08|A|F|1995-06-03|1995-07-25|1995-06-06|NONE|SHIP|ecial ideas promise slyly|
-2978|127|2|2|42|43139.04|0.01|0.06|N|O|1995-08-19|1995-07-18|1995-09-07|DELIVER IN PERSON|MAIL|ial requests nag blithely alongside of th|
-2978|43|2|3|26|24519.04|0.07|0.05|N|O|1995-07-29|1995-07-22|1995-08-20|COLLECT COD|REG AIR|as haggle against the carefully express dep|
-2978|28|1|4|7|6496.14|0.00|0.00|N|O|1995-07-18|1995-07-03|1995-07-23|NONE|FOB|. final ideas are blithe|
-2978|29|2|5|33|30657.66|0.09|0.03|R|F|1995-05-06|1995-07-23|1995-05-16|COLLECT COD|FOB|s. blithely unusual pack|
-2978|168|7|6|4|4272.64|0.08|0.04|N|O|1995-07-06|1995-07-31|1995-07-19|COLLECT COD|AIR|ffily unusual |
-2979|9|6|1|8|7272.00|0.00|0.08|N|O|1996-06-18|1996-05-21|1996-07-06|COLLECT COD|REG AIR|st blithely; blithely regular gifts dazz|
-2979|11|2|2|47|42817.47|0.05|0.00|N|O|1996-03-25|1996-05-13|1996-04-04|TAKE BACK RETURN|SHIP|iously unusual dependencies wake across|
-2979|188|9|3|35|38086.30|0.04|0.03|N|O|1996-05-25|1996-06-11|1996-06-24|DELIVER IN PERSON|MAIL|old ideas beneath the blit|
-2979|165|4|4|28|29824.48|0.05|0.08|N|O|1996-06-04|1996-04-23|1996-06-24|DELIVER IN PERSON|FOB|ing, regular pinto beans. blithel|
-2980|37|3|1|2|1874.06|0.09|0.03|N|O|1996-11-18|1996-10-22|1996-11-27|TAKE BACK RETURN|SHIP|enly across the special, pending packag|
-2980|10|7|2|48|43680.48|0.04|0.05|N|O|1996-09-25|1996-12-09|1996-10-12|NONE|REG AIR|totes. regular pinto |
-2980|133|9|3|27|27894.51|0.08|0.08|N|O|1996-12-08|1996-12-03|1996-12-14|NONE|REG AIR| theodolites cajole blithely sl|
-2980|25|10|4|49|45325.98|0.03|0.02|N|O|1996-10-04|1996-12-04|1996-10-06|NONE|RAIL|hy packages sleep quic|
-2980|187|8|5|24|26092.32|0.05|0.04|N|O|1997-01-12|1996-10-27|1997-01-14|NONE|MAIL|elets. fluffily regular in|
-2980|109|4|6|43|43391.30|0.01|0.01|N|O|1996-12-07|1996-11-10|1997-01-02|COLLECT COD|AIR|sts. slyly regu|
-2981|14|4|1|17|15538.17|0.03|0.05|N|O|1998-10-17|1998-10-02|1998-10-21|DELIVER IN PERSON|RAIL|, unusual packages x-ray. furious|
-2981|176|4|2|8|8609.36|0.06|0.03|N|O|1998-08-21|1998-09-28|1998-09-05|DELIVER IN PERSON|MAIL|ng to the f|
-2981|37|3|3|14|13118.42|0.03|0.07|N|O|1998-08-30|1998-10-04|1998-09-04|DELIVER IN PERSON|MAIL|kages detect furiously express requests.|
-2982|112|6|1|21|21254.31|0.00|0.01|A|F|1995-04-03|1995-06-08|1995-04-18|DELIVER IN PERSON|AIR|ironic deposits. furiously ex|
-2982|99|2|2|13|12988.17|0.02|0.08|R|F|1995-03-31|1995-05-07|1995-04-18|TAKE BACK RETURN|RAIL|regular deposits unwind alongside |
-2982|70|5|3|21|20371.47|0.01|0.01|R|F|1995-04-19|1995-06-03|1995-04-28|COLLECT COD|SHIP|egular ideas use furiously? bl|
-2983|163|4|1|44|46779.04|0.03|0.06|R|F|1992-02-09|1992-03-07|1992-03-09|TAKE BACK RETURN|AIR|ly regular instruct|
-2983|49|8|2|11|10439.44|0.09|0.06|A|F|1992-04-29|1992-02-27|1992-05-26|NONE|MAIL|aids integrate s|
-3008|132|3|1|8|8257.04|0.10|0.04|N|O|1995-12-06|1996-01-12|1995-12-22|TAKE BACK RETURN|FOB|yly ironic foxes. regular requests h|
-3008|200|3|2|31|34106.20|0.05|0.06|N|O|1995-12-14|1995-12-11|1995-12-31|TAKE BACK RETURN|AIR| bold packages. quic|
-3008|24|5|3|40|36960.80|0.01|0.03|N|O|1995-12-18|1996-01-06|1996-01-11|COLLECT COD|AIR|esias. theodolites detect blithely |
-3008|60|1|4|48|46082.88|0.07|0.06|N|O|1996-01-23|1996-01-07|1996-02-09|COLLECT COD|SHIP|ld theodolites. fluffily bold theodolit|
-3008|105|10|5|31|31158.10|0.03|0.02|N|O|1995-12-01|1996-01-20|1995-12-28|COLLECT COD|RAIL|nts use thinly around the carefully iro|
-3009|45|8|1|48|45361.92|0.10|0.02|N|O|1997-03-19|1997-05-13|1997-04-11|TAKE BACK RETURN|TRUCK| dependencies sleep quickly a|
-3009|185|6|2|38|41236.84|0.00|0.01|N|O|1997-05-01|1997-04-10|1997-05-17|TAKE BACK RETURN|AIR|nal packages should haggle slyly. quickl|
-3009|130|3|3|26|26783.38|0.08|0.02|N|O|1997-05-15|1997-05-10|1997-06-13|TAKE BACK RETURN|SHIP|uriously specia|
-3010|138|4|1|23|23876.99|0.04|0.00|N|O|1996-03-08|1996-02-29|1996-03-27|NONE|TRUCK|ounts. pendin|
-3010|174|4|2|22|23631.74|0.09|0.06|N|O|1996-03-06|1996-04-06|1996-03-18|COLLECT COD|REG AIR| final deposit|
-3010|58|6|3|24|22993.20|0.04|0.07|N|O|1996-05-09|1996-03-14|1996-05-15|DELIVER IN PERSON|RAIL|ar, even reques|
-3010|24|7|4|28|25872.56|0.09|0.06|N|O|1996-03-05|1996-03-28|1996-04-03|DELIVER IN PERSON|FOB|ake carefully carefully even request|
-3010|104|5|5|9|9036.90|0.02|0.02|N|O|1996-04-28|1996-03-17|1996-05-18|NONE|SHIP|inal packages. quickly even pinto|
-3010|92|3|6|38|37699.42|0.05|0.07|N|O|1996-04-15|1996-03-16|1996-04-21|DELIVER IN PERSON|RAIL|accounts ar|
-3011|198|10|1|5|5490.95|0.02|0.04|R|F|1992-04-21|1992-02-23|1992-05-15|NONE|TRUCK|nusual sentiments. carefully bold idea|
-3011|123|4|2|42|42971.04|0.05|0.00|A|F|1992-02-01|1992-03-18|1992-02-29|NONE|TRUCK|osits haggle quickly pending, |
-3012|195|7|1|49|53664.31|0.00|0.00|A|F|1993-08-07|1993-07-01|1993-08-08|NONE|MAIL| quickly furious packages. silently unusua|
-3012|161|2|2|37|39262.92|0.06|0.03|A|F|1993-08-16|1993-06-07|1993-08-24|TAKE BACK RETURN|REG AIR|uickly permanent packages sleep caref|
-3013|94|6|1|31|30816.79|0.08|0.08|N|O|1997-05-03|1997-04-05|1997-05-25|NONE|AIR|y furious depen|
-3013|139|5|2|30|31173.90|0.05|0.06|N|O|1997-05-02|1997-03-09|1997-05-12|TAKE BACK RETURN|MAIL|ronic packages. slyly even|
-3013|120|10|3|35|35704.20|0.00|0.03|N|O|1997-04-02|1997-05-04|1997-04-16|COLLECT COD|MAIL|ely accord|
-3013|181|2|4|17|18380.06|0.01|0.07|N|O|1997-02-26|1997-05-02|1997-03-27|DELIVER IN PERSON|SHIP|fully unusual account|
-3013|60|5|5|20|19201.20|0.00|0.04|N|O|1997-05-06|1997-03-18|1997-05-12|COLLECT COD|RAIL|unts boost regular ideas. slyly pe|
-3013|72|2|6|19|18469.33|0.08|0.07|N|O|1997-05-11|1997-04-18|1997-05-15|COLLECT COD|REG AIR|fluffily pending packages nag furiously al|
-3014|163|4|1|36|38273.76|0.05|0.03|A|F|1992-11-16|1993-01-20|1992-11-28|TAKE BACK RETURN|FOB|ding accounts boost fu|
-3014|106|1|2|36|36219.60|0.00|0.08|R|F|1992-12-28|1992-12-29|1993-01-24|COLLECT COD|MAIL|iously ironic r|
-3014|151|9|3|48|50455.20|0.06|0.02|A|F|1992-12-19|1993-01-08|1992-12-25|DELIVER IN PERSON|REG AIR|y pending theodolites wake. reg|
-3014|114|1|4|14|14197.54|0.10|0.02|R|F|1992-11-19|1993-01-01|1992-12-17|DELIVER IN PERSON|SHIP|. slyly brave platelets nag. careful,|
-3014|75|5|5|28|27301.96|0.02|0.08|R|F|1993-01-09|1992-12-18|1993-01-10|TAKE BACK RETURN|FOB|es are. final braids nag slyly. fluff|
-3014|38|4|6|30|28140.90|0.04|0.01|R|F|1993-02-28|1993-01-02|1993-03-20|TAKE BACK RETURN|AIR| final foxes.|
-3015|3|8|1|5|4515.00|0.09|0.00|A|F|1993-01-10|1992-12-02|1993-01-19|TAKE BACK RETURN|RAIL| the furiously pendi|
-3015|18|2|2|17|15606.17|0.03|0.01|R|F|1992-10-16|1992-11-20|1992-10-28|COLLECT COD|AIR|s above the fluffily final t|
-3015|91|4|3|23|22795.07|0.03|0.05|A|F|1992-12-03|1992-11-19|1992-12-23|DELIVER IN PERSON|FOB|s are slyly carefully special pinto bea|
-3015|156|7|4|7|7393.05|0.10|0.03|A|F|1992-12-07|1992-12-17|1992-12-30|DELIVER IN PERSON|REG AIR| after the evenly special packages ca|
-3015|165|4|5|42|44736.72|0.04|0.02|R|F|1993-01-21|1992-11-07|1993-02-11|DELIVER IN PERSON|AIR|encies haggle furious|
-3015|66|7|6|18|17389.08|0.02|0.03|R|F|1992-10-10|1992-11-19|1992-10-18|TAKE BACK RETURN|MAIL|equests wake fluffil|
-3040|16|6|1|18|16488.18|0.08|0.04|R|F|1993-06-25|1993-07-06|1993-07-19|TAKE BACK RETURN|SHIP|ly thin accou|
-3040|133|9|2|9|9298.17|0.00|0.01|A|F|1993-06-12|1993-05-16|1993-06-14|NONE|RAIL|ges. pending packages wake. requests|
-3040|126|5|3|30|30783.60|0.01|0.01|A|F|1993-08-06|1993-05-18|1993-08-19|NONE|MAIL|x furiously bold packages. expres|
-3040|83|4|4|14|13763.12|0.05|0.04|A|F|1993-05-13|1993-05-18|1993-05-19|TAKE BACK RETURN|REG AIR| haggle carefully. express hocke|
-3040|52|3|5|43|40938.15|0.04|0.04|R|F|1993-05-21|1993-05-25|1993-05-26|NONE|MAIL|sts nag slyly alongside of the depos|
-3040|18|5|6|10|9180.10|0.08|0.04|R|F|1993-05-16|1993-06-24|1993-06-11|DELIVER IN PERSON|MAIL|ely regular foxes haggle dari|
-3041|181|2|1|5|5405.90|0.07|0.04|N|O|1997-07-20|1997-07-15|1997-08-17|COLLECT COD|FOB|posits dazzle special p|
-3041|146|9|2|9|9415.26|0.03|0.03|N|O|1997-06-29|1997-08-14|1997-07-19|COLLECT COD|AIR|iously across the silent pinto beans. furi|
-3041|68|5|3|9|8712.54|0.09|0.06|N|O|1997-08-28|1997-07-23|1997-09-16|TAKE BACK RETURN|FOB|scapades after the special|
-3042|105|2|1|30|30153.00|0.08|0.06|A|F|1995-01-12|1995-02-15|1995-01-24|DELIVER IN PERSON|SHIP|the requests detect fu|
-3042|102|3|2|28|28058.80|0.05|0.03|A|F|1994-11-24|1995-01-02|1994-12-06|TAKE BACK RETURN|MAIL|ng the furiously r|
-3042|14|8|3|34|31076.34|0.04|0.00|R|F|1994-12-11|1995-02-03|1994-12-21|TAKE BACK RETURN|TRUCK|can wake after the enticingly stealthy i|
-3042|48|1|4|19|18012.76|0.02|0.01|A|F|1995-03-05|1995-01-24|1995-03-17|COLLECT COD|TRUCK|e carefully. regul|
-3043|46|9|1|23|21758.92|0.07|0.04|R|F|1992-05-08|1992-07-22|1992-05-18|COLLECT COD|TRUCK|uickly above the pending,|
-3043|6|3|2|15|13590.00|0.03|0.05|A|F|1992-05-27|1992-06-03|1992-06-09|COLLECT COD|FOB|usly furiously|
-3043|60|1|3|42|40322.52|0.10|0.07|R|F|1992-07-15|1992-06-19|1992-07-23|NONE|MAIL|ide of the un|
-3043|91|2|4|5|4955.45|0.10|0.01|A|F|1992-05-22|1992-07-02|1992-06-20|TAKE BACK RETURN|TRUCK|ake blithely re|
-3044|101|2|1|10|10011.00|0.07|0.08|N|O|1996-07-13|1996-05-06|1996-07-21|TAKE BACK RETURN|REG AIR| slyly ironic requests. s|
-3044|168|7|2|3|3204.48|0.06|0.02|N|O|1996-07-27|1996-05-26|1996-08-15|TAKE BACK RETURN|AIR|ecoys haggle furiously pending requests.|
-3044|19|3|3|47|43193.47|0.09|0.00|N|O|1996-05-24|1996-06-22|1996-05-30|NONE|REG AIR|ly around the car|
-3045|88|9|1|41|40511.28|0.05|0.01|N|O|1995-09-30|1995-11-24|1995-10-03|TAKE BACK RETURN|MAIL|ely final foxes. carefully ironic pinto b|
-3045|69|6|2|48|46514.88|0.02|0.03|N|O|1995-10-01|1995-12-16|1995-10-10|TAKE BACK RETURN|MAIL|ole quickly outside th|
-3046|74|5|1|44|42859.08|0.03|0.03|N|O|1996-03-03|1996-02-25|1996-04-01|NONE|AIR| are quickly. blithe|
-3046|54|5|2|46|43886.30|0.03|0.08|N|O|1996-03-22|1996-02-28|1996-04-07|TAKE BACK RETURN|AIR|sits sleep furious|
-3046|2|9|3|31|27962.00|0.03|0.07|N|O|1996-03-24|1996-01-30|1996-03-26|NONE|RAIL|y pending somas alongside of the slyly iro|
-3047|104|5|1|17|17069.70|0.08|0.02|N|O|1997-06-14|1997-04-20|1997-06-23|COLLECT COD|FOB|onic instruction|
-3047|14|1|2|23|21022.23|0.00|0.04|N|O|1997-05-20|1997-06-14|1997-05-28|TAKE BACK RETURN|REG AIR| slyly ironi|
-3072|57|9|1|6|5742.30|0.09|0.05|R|F|1994-02-09|1994-03-24|1994-02-28|DELIVER IN PERSON|REG AIR|gular requests abov|
-3072|108|3|2|36|36291.60|0.07|0.02|R|F|1994-04-14|1994-04-22|1994-05-06|COLLECT COD|AIR| theodolites. blithely e|
-3072|97|8|3|7|6979.63|0.04|0.07|R|F|1994-05-09|1994-03-31|1994-05-19|COLLECT COD|TRUCK|uests. ironic, ironic depos|
-3072|83|4|4|39|38340.12|0.05|0.08|A|F|1994-05-27|1994-04-20|1994-06-14|COLLECT COD|MAIL|es; slyly spe|
-3072|88|9|5|1|988.08|0.01|0.08|R|F|1994-02-26|1994-03-14|1994-03-19|NONE|AIR| slyly ironic attainments. car|
-3073|194|7|1|16|17507.04|0.07|0.01|R|F|1994-03-02|1994-03-23|1994-03-31|DELIVER IN PERSON|AIR|n requests. ironi|
-3073|22|5|2|47|43334.94|0.09|0.00|R|F|1994-03-26|1994-02-12|1994-04-21|NONE|REG AIR|eposits. fluffily|
-3073|87|8|3|10|9870.80|0.03|0.00|R|F|1994-02-11|1994-03-24|1994-02-26|COLLECT COD|FOB| furiously caref|
-3073|29|4|4|14|13006.28|0.09|0.07|R|F|1994-03-24|1994-04-01|1994-04-07|NONE|RAIL|ilently quiet epitaphs.|
-3073|41|10|5|25|23526.00|0.00|0.07|R|F|1994-04-14|1994-03-07|1994-04-22|NONE|TRUCK|nag asymptotes. pinto beans sleep |
-3073|147|8|6|39|40838.46|0.09|0.02|R|F|1994-05-01|1994-02-16|1994-05-12|DELIVER IN PERSON|AIR|lar excuses across the furiously even |
-3073|44|5|7|11|10384.44|0.08|0.07|A|F|1994-05-01|1994-03-06|1994-05-08|COLLECT COD|SHIP|instructions sleep according to the |
-3074|37|8|1|50|46851.50|0.08|0.08|A|F|1993-01-31|1992-12-15|1993-02-20|NONE|AIR|furiously pending requests haggle s|
-3074|139|5|2|39|40526.07|0.03|0.00|R|F|1992-12-08|1993-01-28|1992-12-09|DELIVER IN PERSON|TRUCK|iously throu|
-3075|9|6|1|39|35451.00|0.02|0.03|A|F|1994-06-10|1994-06-21|1994-06-20|NONE|FOB|ing deposits nag |
-3075|52|10|2|2|1904.10|0.07|0.08|R|F|1994-06-14|1994-06-10|1994-06-25|TAKE BACK RETURN|AIR|. unusual, unusual accounts haggle furious|
-3076|85|6|1|44|43343.52|0.00|0.05|A|F|1993-09-14|1993-10-04|1993-09-17|TAKE BACK RETURN|FOB| instructions h|
-3076|106|1|2|22|22134.20|0.08|0.00|A|F|1993-09-05|1993-09-10|1993-09-27|NONE|REG AIR|packages wake furiou|
-3076|5|8|3|31|28055.00|0.06|0.06|A|F|1993-08-10|1993-09-17|1993-08-17|TAKE BACK RETURN|SHIP|regular depos|
-3077|72|2|1|25|24301.75|0.06|0.01|N|O|1997-09-14|1997-10-16|1997-10-06|NONE|TRUCK|lent account|
-3077|91|3|2|40|39643.60|0.05|0.06|N|O|1997-10-22|1997-09-19|1997-11-19|DELIVER IN PERSON|AIR|to the enticing packag|
-3077|78|7|3|13|12714.91|0.03|0.07|N|O|1997-09-09|1997-10-15|1997-09-19|NONE|TRUCK|luffily close depende|
-3077|115|5|4|23|23347.53|0.03|0.02|N|O|1997-11-05|1997-09-16|1997-11-20|NONE|MAIL|lly. fluffily pending dinos across|
-3078|132|3|1|25|25803.25|0.01|0.03|A|F|1993-04-22|1993-05-01|1993-04-28|TAKE BACK RETURN|AIR|express dinos. carefully ironic|
-3078|78|8|2|21|20539.47|0.09|0.07|A|F|1993-03-20|1993-03-21|1993-04-01|COLLECT COD|AIR|e fluffily. |
-3079|70|5|1|20|19401.40|0.05|0.00|N|O|1997-10-18|1997-10-26|1997-11-14|NONE|RAIL|ets are according to the quickly dari|
-3079|117|1|2|38|38650.18|0.08|0.07|N|O|1997-11-07|1997-11-25|1997-12-06|NONE|RAIL|e carefully regular realms|
-3079|17|8|3|40|36680.40|0.02|0.08|N|O|1997-09-26|1997-12-11|1997-10-09|NONE|RAIL|ide of the pending, special deposi|
-3079|24|5|4|2|1848.04|0.00|0.08|N|O|1998-01-05|1997-11-17|1998-01-28|NONE|FOB|ly busy requests believ|
-3079|188|9|5|2|2176.36|0.10|0.00|N|O|1997-12-27|1997-10-25|1998-01-08|COLLECT COD|SHIP|y regular asymptotes doz|
-3079|166|1|6|46|49043.36|0.00|0.00|N|O|1997-11-19|1997-11-04|1997-11-25|DELIVER IN PERSON|REG AIR|es. final, regula|
-3104|51|6|1|20|19021.00|0.01|0.08|A|F|1993-12-31|1993-11-24|1994-01-12|DELIVER IN PERSON|REG AIR|s are. furiously s|
-3104|48|1|2|47|44557.88|0.02|0.05|A|F|1993-12-25|1993-11-02|1994-01-12|COLLECT COD|RAIL|ily daring acc|
-3104|63|4|3|11|10593.66|0.02|0.03|A|F|1993-10-05|1993-11-30|1993-10-27|NONE|TRUCK| special deposits u|
-3104|38|9|4|26|24388.78|0.02|0.08|R|F|1994-01-02|1993-12-05|1994-01-31|TAKE BACK RETURN|TRUCK|es boost carefully. slyly |
-3105|184|5|1|11|11925.98|0.01|0.06|N|O|1997-02-07|1997-02-09|1997-03-01|NONE|FOB|kly bold depths caj|
-3105|45|6|2|9|8505.36|0.08|0.08|N|O|1996-12-25|1997-02-04|1997-01-09|COLLECT COD|SHIP|es wake among t|
-3105|25|4|3|48|44400.96|0.02|0.05|N|O|1997-02-28|1997-01-31|1997-03-18|DELIVER IN PERSON|REG AIR|ending platelets wake carefully ironic inst|
-3105|91|5|4|23|22795.07|0.04|0.07|N|O|1997-03-08|1996-12-14|1997-03-18|COLLECT COD|REG AIR| detect slyly. blithely unusual requests ar|
-3105|90|1|5|8|7920.72|0.07|0.07|N|O|1996-12-28|1996-12-28|1997-01-25|NONE|FOB|s. blithely unusual ideas was after|
-3105|47|6|6|30|28411.20|0.08|0.05|N|O|1997-03-03|1997-02-03|1997-03-05|NONE|FOB|ess accounts boost among t|
-3106|86|7|1|22|21693.76|0.03|0.02|N|O|1997-02-28|1997-02-12|1997-03-03|DELIVER IN PERSON|FOB|structions atop the blithely|
-3106|136|2|2|49|50770.37|0.06|0.06|N|O|1997-02-27|1997-03-11|1997-03-12|NONE|TRUCK|lets. quietly regular courts |
-3106|52|7|3|42|39986.10|0.09|0.07|N|O|1997-04-05|1997-03-17|1997-04-22|COLLECT COD|REG AIR|nstructions wake. furiously |
-3106|196|10|4|6|6577.14|0.10|0.07|N|O|1997-02-02|1997-04-11|1997-02-27|COLLECT COD|REG AIR|symptotes. slyly bold platelets cajol|
-3106|65|2|5|16|15440.96|0.09|0.08|N|O|1997-02-25|1997-04-10|1997-03-16|NONE|AIR|sits wake slyl|
-3107|149|6|1|16|16786.24|0.05|0.04|N|O|1997-08-30|1997-10-20|1997-09-20|TAKE BACK RETURN|REG AIR|regular pinto beans. ironic ideas haggle|
-3107|142|3|2|35|36474.90|0.05|0.06|N|O|1997-08-27|1997-11-19|1997-09-14|COLLECT COD|TRUCK|ets doubt furiously final ideas. final|
-3107|170|9|3|23|24613.91|0.03|0.06|N|O|1997-12-10|1997-11-11|1997-12-14|TAKE BACK RETURN|SHIP|atelets must ha|
-3107|87|8|4|27|26651.16|0.00|0.08|N|O|1997-11-15|1997-10-31|1997-11-28|DELIVER IN PERSON|FOB|furiously final |
-3108|109|2|1|37|37336.70|0.06|0.04|A|F|1993-10-16|1993-10-01|1993-11-09|DELIVER IN PERSON|RAIL| final requests. |
-3108|166|1|2|26|27720.16|0.08|0.05|A|F|1993-11-12|1993-10-05|1993-12-09|COLLECT COD|TRUCK| slyly slow foxes wake furious|
-3109|18|2|1|32|29376.32|0.08|0.03|A|F|1993-09-05|1993-10-06|1993-09-18|DELIVER IN PERSON|FOB|ecial orbits are furiou|
-3109|145|4|2|49|51211.86|0.08|0.06|R|F|1993-10-24|1993-09-30|1993-11-21|TAKE BACK RETURN|AIR| even pearls. furiously pending |
-3109|176|4|3|43|46275.31|0.04|0.07|R|F|1993-09-29|1993-09-06|1993-10-13|COLLECT COD|MAIL|ding to the foxes. |
-3109|79|10|4|26|25455.82|0.01|0.05|R|F|1993-11-16|1993-10-18|1993-12-06|TAKE BACK RETURN|TRUCK| sleep slyly according to t|
-3109|143|2|5|50|52157.00|0.01|0.08|A|F|1993-09-17|1993-10-16|1993-10-11|NONE|FOB| regular packages boost blithely even, re|
-3109|15|9|6|10|9150.10|0.10|0.04|A|F|1993-10-26|1993-10-03|1993-11-09|NONE|TRUCK|sits haggle carefully. regular, unusual ac|
-3110|89|10|1|1|989.08|0.02|0.07|A|F|1995-01-15|1995-01-20|1995-01-30|DELIVER IN PERSON|REG AIR|c theodolites a|
-3110|57|2|2|31|29668.55|0.01|0.06|R|F|1995-03-31|1995-03-07|1995-04-21|TAKE BACK RETURN|REG AIR|en deposits. ironic|
-3110|3|10|3|34|30702.00|0.02|0.02|A|F|1995-02-23|1995-01-27|1995-03-09|TAKE BACK RETURN|FOB|ly pending requests ha|
-3110|40|1|4|16|15040.64|0.04|0.04|A|F|1995-01-10|1995-02-06|1995-01-26|NONE|MAIL|across the regular acco|
-3110|140|6|5|39|40565.46|0.09|0.01|A|F|1995-02-09|1995-01-21|1995-02-21|NONE|MAIL|side of the blithely unusual courts. slyly |
-3111|137|8|1|22|22816.86|0.06|0.05|N|O|1995-09-21|1995-11-09|1995-10-17|COLLECT COD|REG AIR|quests. regular dolphins against the |
-3111|58|10|2|30|28741.50|0.06|0.05|N|O|1995-10-05|1995-11-15|1995-11-01|TAKE BACK RETURN|TRUCK|eas are furiously slyly special deposits.|
-3111|52|3|3|10|9520.50|0.02|0.02|N|O|1995-11-10|1995-11-02|1995-12-04|NONE|FOB|ng the slyly ironic inst|
-3111|132|3|4|31|31996.03|0.00|0.08|N|O|1995-10-26|1995-09-26|1995-11-02|TAKE BACK RETURN|MAIL|kages detect express attainments|
-3111|54|6|5|14|13356.70|0.05|0.04|N|O|1995-10-17|1995-10-19|1995-10-19|TAKE BACK RETURN|SHIP|re. pinto |
-3111|86|7|6|5|4930.40|0.03|0.08|N|O|1995-08-30|1995-10-16|1995-09-04|DELIVER IN PERSON|TRUCK|. carefully even ideas|
-3111|148|9|7|41|42973.74|0.09|0.05|N|O|1995-11-22|1995-11-01|1995-12-01|TAKE BACK RETURN|FOB|fily slow ideas. |
-3136|142|5|1|30|31264.20|0.02|0.08|R|F|1994-08-13|1994-10-02|1994-09-02|TAKE BACK RETURN|RAIL|leep blithel|
-3136|103|4|2|7|7021.70|0.05|0.07|A|F|1994-10-08|1994-09-14|1994-10-11|TAKE BACK RETURN|SHIP|ic pinto beans are slyly. f|
-3136|158|3|3|43|45500.45|0.00|0.07|A|F|1994-09-05|1994-09-25|1994-09-11|NONE|RAIL|. special theodolites ha|
-3136|116|6|4|26|26418.86|0.04|0.05|A|F|1994-10-13|1994-11-07|1994-11-05|TAKE BACK RETURN|AIR|eep fluffily. daringly silent attainments d|
-3136|67|8|5|2|1934.12|0.08|0.07|R|F|1994-11-21|1994-11-03|1994-11-26|DELIVER IN PERSON|TRUCK|? special, silent |
-3136|80|1|6|29|28422.32|0.08|0.07|A|F|1994-11-16|1994-10-03|1994-12-14|NONE|FOB|latelets. final |
-3137|3|4|1|6|5418.00|0.02|0.02|N|O|1995-09-19|1995-10-23|1995-10-16|NONE|SHIP|ly express as|
-3137|6|3|2|4|3624.00|0.06|0.04|N|O|1995-10-01|1995-09-11|1995-10-30|COLLECT COD|RAIL|posits wake. silent excuses boost about|
-3138|93|5|1|7|6951.63|0.05|0.05|R|F|1994-03-04|1994-03-14|1994-03-20|NONE|AIR|lithely quickly even packages. packages|
-3138|44|5|2|27|25489.08|0.09|0.01|R|F|1994-03-24|1994-03-23|1994-04-18|DELIVER IN PERSON|FOB|counts cajole fluffily carefully special i|
-3138|197|8|3|32|35110.08|0.00|0.01|R|F|1994-02-24|1994-05-07|1994-02-28|TAKE BACK RETURN|MAIL|inal foxes affix slyly. fluffily regul|
-3138|172|3|4|38|40742.46|0.07|0.04|R|F|1994-02-21|1994-03-21|1994-03-13|COLLECT COD|FOB|lithely fluffily un|
-3138|10|1|5|12|10920.12|0.09|0.02|A|F|1994-03-04|1994-04-11|1994-03-21|COLLECT COD|FOB|. bold pinto beans haggl|
-3138|44|7|6|25|23601.00|0.05|0.08|A|F|1994-05-19|1994-04-07|1994-06-17|TAKE BACK RETURN|AIR|dolites around the carefully busy the|
-3139|40|6|1|46|43241.84|0.08|0.03|R|F|1992-04-28|1992-03-04|1992-05-19|TAKE BACK RETURN|FOB|of the unusual, unusual re|
-3140|7|4|1|21|19047.00|0.08|0.02|R|F|1992-04-12|1992-05-31|1992-04-21|NONE|REG AIR| furiously sly excuses according to the|
-3140|89|10|2|10|9890.80|0.07|0.01|A|F|1992-05-30|1992-05-09|1992-06-09|COLLECT COD|RAIL|accounts. expres|
-3140|133|4|3|28|28927.64|0.06|0.00|R|F|1992-06-08|1992-07-07|1992-07-08|TAKE BACK RETURN|SHIP|lar ideas. slyly ironic d|
-3141|177|6|1|32|34469.44|0.06|0.00|N|O|1995-11-21|1995-12-18|1995-11-26|DELIVER IN PERSON|FOB|oxes are quickly about t|
-3141|10|7|2|37|33670.37|0.10|0.05|N|O|1996-01-24|1995-12-16|1996-01-27|DELIVER IN PERSON|AIR|press pinto beans. bold accounts boost b|
-3141|79|7|3|9|8811.63|0.09|0.02|N|O|1995-11-11|1995-12-10|1995-12-02|DELIVER IN PERSON|MAIL|uickly ironic, pendi|
-3141|46|9|4|47|44463.88|0.03|0.01|N|O|1995-11-29|1996-01-13|1995-12-10|TAKE BACK RETURN|TRUCK| are slyly pi|
-3142|120|7|1|15|15301.80|0.03|0.08|R|F|1992-08-15|1992-08-18|1992-08-22|DELIVER IN PERSON|AIR|instructions are. ironic packages doz|
-3143|90|1|1|22|21781.98|0.02|0.00|A|F|1993-05-11|1993-03-26|1993-05-20|TAKE BACK RETURN|MAIL|l, special instructions nag |
-3143|183|4|2|40|43327.20|0.03|0.08|A|F|1993-05-07|1993-03-29|1993-05-17|COLLECT COD|FOB|sly unusual theodolites. slyly ev|
-3143|183|4|3|22|23829.96|0.05|0.03|A|F|1993-03-18|1993-05-09|1993-04-14|DELIVER IN PERSON|MAIL|beans. fluf|
-3143|66|7|4|46|44438.76|0.05|0.08|R|F|1993-04-19|1993-03-21|1993-05-05|COLLECT COD|REG AIR|low forges haggle. even packages use bli|
-3168|60|8|1|46|44162.76|0.08|0.08|R|F|1992-02-14|1992-03-02|1992-03-02|TAKE BACK RETURN|SHIP|y across the express accounts. fluff|
-3168|154|5|2|1|1054.15|0.06|0.08|A|F|1992-05-27|1992-03-12|1992-06-09|TAKE BACK RETURN|SHIP|pinto beans. slyly regular courts haggle |
-3168|128|3|3|13|13365.56|0.09|0.02|A|F|1992-03-05|1992-04-29|1992-03-15|NONE|SHIP|ironic somas haggle quick|
-3168|165|10|4|11|11716.76|0.02|0.05|R|F|1992-04-12|1992-03-17|1992-05-12|COLLECT COD|SHIP|ously furious dependenc|
-3169|192|4|1|12|13106.28|0.01|0.04|R|F|1994-01-05|1994-03-18|1994-01-21|COLLECT COD|REG AIR| regular d|
-3169|200|3|2|17|18703.40|0.05|0.04|R|F|1994-03-02|1994-01-21|1994-03-03|DELIVER IN PERSON|TRUCK|usly regular packages. ironi|
-3169|188|9|3|12|13058.16|0.08|0.07|A|F|1994-04-18|1994-03-12|1994-05-08|TAKE BACK RETURN|FOB|atelets. pac|
-3169|105|6|4|26|26132.60|0.10|0.04|R|F|1994-04-08|1994-03-21|1994-04-29|NONE|TRUCK|ter the regular ideas. slyly iro|
-3169|108|9|5|6|6048.60|0.09|0.01|A|F|1994-03-24|1994-02-22|1994-04-04|TAKE BACK RETURN|AIR|ular instructions. ca|
-3169|177|8|6|46|49549.82|0.02|0.07|A|F|1994-02-01|1994-01-22|1994-02-24|DELIVER IN PERSON|RAIL|thely bold theodolites are fl|
-3170|40|6|1|12|11280.48|0.03|0.03|N|O|1998-02-12|1998-01-17|1998-02-24|NONE|TRUCK|ing accounts along the speci|
-3170|100|2|2|21|21002.10|0.01|0.00|N|O|1997-12-09|1998-01-31|1997-12-21|DELIVER IN PERSON|MAIL|o beans. carefully final requests dou|
-3170|89|10|3|27|26705.16|0.00|0.05|N|O|1998-02-25|1998-01-29|1998-02-27|COLLECT COD|AIR|efully bold foxes. regular, ev|
-3170|41|2|4|34|31995.36|0.05|0.04|N|O|1998-02-01|1998-01-11|1998-02-20|TAKE BACK RETURN|TRUCK|s about the fluffily final de|
-3170|90|1|5|32|31682.88|0.02|0.04|N|O|1997-11-24|1997-12-12|1997-12-15|COLLECT COD|SHIP|ggle about the furiously r|
-3170|110|5|6|43|43434.73|0.08|0.05|N|O|1998-01-05|1998-01-04|1998-01-14|NONE|REG AIR|. express dolphins use sly|
-3170|84|5|7|26|25586.08|0.10|0.05|N|O|1998-02-12|1997-12-22|1998-02-28|COLLECT COD|TRUCK|s engage furiously. |
-3171|47|4|1|34|32199.36|0.04|0.00|A|F|1993-05-30|1993-05-27|1993-06-06|DELIVER IN PERSON|REG AIR|r the final, even packages. quickly|
-3171|139|10|2|50|51956.50|0.01|0.04|A|F|1993-07-19|1993-05-15|1993-07-31|TAKE BACK RETURN|REG AIR|riously final foxes about the ca|
-3172|96|9|1|4|3984.36|0.06|0.07|A|F|1992-09-26|1992-08-15|1992-10-20|DELIVER IN PERSON|TRUCK|s are slyly thin package|
-3172|148|7|2|43|45070.02|0.05|0.07|R|F|1992-08-22|1992-07-07|1992-08-26|COLLECT COD|MAIL| final packages. |
-3172|132|3|3|13|13417.69|0.03|0.01|R|F|1992-07-06|1992-08-06|1992-08-05|DELIVER IN PERSON|MAIL|inal deposits haggle along the|
-3172|135|6|4|28|28983.64|0.08|0.04|R|F|1992-07-09|1992-07-14|1992-07-16|NONE|MAIL|regular ideas. packages are furi|
-3172|64|5|5|31|29885.86|0.05|0.08|A|F|1992-09-01|1992-08-27|1992-09-23|NONE|SHIP|. slyly regular dependencies haggle quiet|
-3173|195|6|1|35|38331.65|0.01|0.08|N|O|1996-09-09|1996-10-15|1996-10-04|TAKE BACK RETURN|RAIL| across the slyly even requests.|
-3173|178|7|2|5|5390.85|0.09|0.07|N|O|1996-12-06|1996-09-17|1996-12-07|DELIVER IN PERSON|REG AIR|express depo|
-3173|46|9|3|16|15136.64|0.06|0.01|N|O|1996-08-12|1996-09-21|1996-08-22|NONE|SHIP|e special,|
-3173|94|5|4|2|1988.18|0.00|0.00|N|O|1996-10-15|1996-11-06|1996-10-18|COLLECT COD|MAIL|ular pearls|
-3173|185|6|5|2|2170.36|0.00|0.06|N|O|1996-08-18|1996-09-21|1996-09-07|DELIVER IN PERSON|MAIL|fluffily above t|
-3174|186|7|1|6|6517.08|0.04|0.08|N|O|1996-03-13|1996-02-09|1996-03-22|DELIVER IN PERSON|AIR| furiously ironic|
-3174|194|7|2|4|4376.76|0.01|0.05|N|O|1995-11-17|1996-01-08|1995-11-27|DELIVER IN PERSON|RAIL|deas sleep thi|
-3174|92|4|3|21|20833.89|0.08|0.05|N|O|1996-02-20|1995-12-28|1996-03-17|NONE|MAIL|iously. idly bold theodolites a|
-3174|192|6|4|13|14198.47|0.08|0.06|N|O|1996-01-11|1996-01-26|1996-02-01|DELIVER IN PERSON|SHIP|leep quickly? slyly special platelets|
-3174|72|2|5|39|37910.73|0.02|0.06|N|O|1995-12-02|1996-02-08|1995-12-12|TAKE BACK RETURN|TRUCK| wake slyly foxes. bold requests p|
-3174|120|7|6|8|8160.96|0.07|0.08|N|O|1995-12-07|1996-01-08|1995-12-29|DELIVER IN PERSON|TRUCK|nic deposits among t|
-3175|120|10|1|28|28563.36|0.10|0.01|R|F|1994-09-27|1994-10-05|1994-10-04|NONE|FOB|ore the even, silent foxes. b|
-3175|1|4|2|38|34238.00|0.01|0.07|R|F|1994-10-10|1994-08-25|1994-10-28|NONE|MAIL|the quickly even dolph|
-3175|129|4|3|12|12349.44|0.09|0.07|R|F|1994-10-16|1994-09-15|1994-10-18|NONE|AIR|ter the pending deposits. slyly e|
-3175|85|6|4|14|13791.12|0.02|0.05|R|F|1994-10-21|1994-09-05|1994-11-15|NONE|MAIL|nt dependencies are quietly even |
-3175|18|8|5|47|43146.47|0.08|0.03|R|F|1994-08-08|1994-09-10|1994-08-21|COLLECT COD|REG AIR| final requests x-r|
-3175|175|6|6|44|47307.48|0.01|0.00|R|F|1994-09-26|1994-08-30|1994-10-24|TAKE BACK RETURN|MAIL|are carefully furiously ironic accounts. e|
-3175|1|4|7|32|28832.00|0.01|0.02|R|F|1994-09-29|1994-09-20|1994-10-10|TAKE BACK RETURN|SHIP|lites sleep|
-3200|116|6|1|17|17273.87|0.10|0.00|N|O|1996-06-06|1996-04-21|1996-06-14|DELIVER IN PERSON|AIR|side of the furiously pendin|
-3200|166|1|2|27|28786.32|0.03|0.00|N|O|1996-05-07|1996-05-01|1996-05-09|TAKE BACK RETURN|REG AIR|as haggle furiously against the fluff|
-3200|131|2|3|36|37120.68|0.01|0.01|N|O|1996-03-22|1996-03-19|1996-03-30|DELIVER IN PERSON|FOB|f the carefu|
-3200|30|9|4|11|10230.33|0.10|0.02|N|O|1996-03-18|1996-03-21|1996-04-14|COLLECT COD|RAIL|osits sleep fur|
-3200|198|9|5|16|17571.04|0.05|0.00|N|O|1996-02-28|1996-03-13|1996-03-11|NONE|RAIL|ly against the quiet packages. blith|
-3200|175|3|6|25|26879.25|0.10|0.01|N|O|1996-02-08|1996-04-11|1996-03-06|COLLECT COD|FOB| slyly regular hockey players! pinto beans |
-3201|46|7|1|11|10406.44|0.10|0.06|A|F|1993-09-27|1993-08-29|1993-10-18|NONE|TRUCK|ing to the furiously expr|
-3201|118|5|2|27|27488.97|0.08|0.02|R|F|1993-08-31|1993-08-24|1993-09-08|TAKE BACK RETURN|FOB|deposits are slyly along|
-3201|119|6|3|50|50955.50|0.00|0.08|R|F|1993-10-27|1993-09-30|1993-11-16|COLLECT COD|TRUCK| deposits. express, ir|
-3202|183|4|1|30|32495.40|0.09|0.02|A|F|1993-03-18|1993-03-10|1993-03-23|COLLECT COD|SHIP|ven platelets. furiously final|
-3202|20|4|2|22|20240.44|0.01|0.02|R|F|1993-02-16|1993-02-16|1993-03-16|TAKE BACK RETURN|MAIL|the express packages. fu|
-3203|144|5|1|23|24015.22|0.01|0.07|N|O|1998-01-04|1998-01-12|1998-01-24|COLLECT COD|SHIP|uses. fluffily ironic pinto bea|
-3203|188|9|2|22|23939.96|0.03|0.03|N|O|1998-02-12|1998-01-01|1998-02-18|TAKE BACK RETURN|REG AIR|e the blithely regular accounts boost f|
-3204|12|2|1|10|9120.10|0.10|0.07|R|F|1993-01-27|1993-03-08|1993-01-29|COLLECT COD|SHIP|counts. bold |
-3204|7|10|2|39|35373.00|0.10|0.03|R|F|1993-02-11|1993-03-19|1993-02-28|TAKE BACK RETURN|MAIL|sits sleep theodolites. slyly bo|
-3205|68|5|1|7|6776.42|0.09|0.00|R|F|1992-07-05|1992-06-17|1992-07-07|NONE|SHIP|ly alongsi|
-3205|29|10|2|32|29728.64|0.08|0.03|A|F|1992-06-01|1992-07-10|1992-06-06|TAKE BACK RETURN|RAIL|lar accoun|
-3205|103|6|3|38|38117.80|0.10|0.08|A|F|1992-07-31|1992-06-03|1992-08-20|DELIVER IN PERSON|AIR|usly quiet accounts. slyly pending pinto |
-3205|56|7|4|10|9560.50|0.01|0.07|A|F|1992-06-18|1992-07-04|1992-07-16|COLLECT COD|RAIL| deposits cajole careful|
-3205|70|9|5|18|17461.26|0.03|0.03|A|F|1992-07-04|1992-06-14|1992-08-03|TAKE BACK RETURN|RAIL|symptotes. slyly even deposits ar|
-3205|195|8|6|19|20808.61|0.07|0.08|R|F|1992-05-28|1992-05-30|1992-06-05|COLLECT COD|AIR|yly pending packages snooz|
-3205|69|8|7|36|34886.16|0.06|0.03|A|F|1992-05-31|1992-06-19|1992-06-03|TAKE BACK RETURN|SHIP|s. ironic platelets above the s|
-3206|176|4|1|1|1076.17|0.07|0.05|N|O|1996-11-22|1996-10-16|1996-12-07|TAKE BACK RETURN|FOB|y unusual foxes cajole ab|
-3206|111|5|2|37|37411.07|0.07|0.01|N|O|1996-09-06|1996-10-31|1996-09-25|COLLECT COD|SHIP| quick theodolites hagg|
-3206|186|7|3|24|26068.32|0.00|0.08|N|O|1996-08-25|1996-10-01|1996-09-04|COLLECT COD|TRUCK|encies sleep deposits--|
-3207|113|3|1|2|2026.22|0.10|0.03|N|O|1998-06-15|1998-04-20|1998-06-21|COLLECT COD|MAIL|among the ironic, even packages |
-3207|71|9|2|42|40784.94|0.00|0.00|N|O|1998-05-02|1998-05-10|1998-06-01|NONE|SHIP|to the quickly special accounts? ironically|
-3207|152|7|3|17|17886.55|0.03|0.04|N|O|1998-03-27|1998-04-06|1998-03-28|COLLECT COD|RAIL|eep against the instructions. gifts hag|
-3207|19|6|4|32|29408.32|0.00|0.03|N|O|1998-06-17|1998-04-26|1998-07-07|TAKE BACK RETURN|SHIP|y across the slyly express foxes. bl|
-3207|83|4|5|8|7864.64|0.00|0.06|N|O|1998-06-13|1998-04-26|1998-07-11|COLLECT COD|SHIP|y. final pint|
-3207|134|5|6|32|33092.16|0.03|0.05|N|O|1998-04-19|1998-05-01|1998-05-08|COLLECT COD|FOB|l deposits wake beyond the carefully|
-3232|14|5|1|22|20108.22|0.10|0.01|A|F|1992-11-30|1992-12-09|1992-12-04|NONE|RAIL|thely. furio|
-3232|135|1|2|34|35194.42|0.07|0.04|R|F|1993-01-09|1992-11-14|1993-02-03|NONE|SHIP|old packages integrate quickly |
-3232|181|2|3|3|3243.54|0.04|0.06|R|F|1992-12-14|1992-12-11|1992-12-29|DELIVER IN PERSON|FOB|ily blithely ironic acco|
-3233|51|2|1|23|21874.15|0.04|0.05|A|F|1994-12-07|1995-01-11|1994-12-26|NONE|AIR|pending instructions use after the carefu|
-3233|154|6|2|6|6324.90|0.02|0.08|A|F|1994-12-06|1994-12-05|1994-12-07|TAKE BACK RETURN|REG AIR|requests are quickly above the slyly p|
-3233|100|4|3|2|2000.20|0.04|0.06|R|F|1995-01-03|1995-01-02|1995-01-21|TAKE BACK RETURN|AIR| across the bold packages|
-3233|9|2|4|25|22725.00|0.04|0.07|A|F|1994-11-24|1995-01-07|1994-12-11|NONE|RAIL|oss the pl|
-3234|79|10|1|45|44058.15|0.01|0.04|N|O|1996-05-15|1996-05-09|1996-06-02|DELIVER IN PERSON|TRUCK| express packages are carefully. f|
-3234|84|5|2|23|22633.84|0.03|0.00|N|O|1996-05-29|1996-05-15|1996-06-17|DELIVER IN PERSON|AIR|d-- fluffily special packag|
-3234|75|4|3|16|15601.12|0.06|0.05|N|O|1996-06-10|1996-05-30|1996-06-18|COLLECT COD|RAIL|ithely ironic accounts wake along t|
-3234|122|1|4|50|51106.00|0.09|0.05|N|O|1996-06-11|1996-05-19|1996-06-18|NONE|MAIL|ly regular ideas according to the regula|
-3234|165|2|5|14|14912.24|0.01|0.07|N|O|1996-04-06|1996-05-30|1996-04-13|NONE|REG AIR|lithely regular f|
-3235|109|2|1|9|9081.90|0.07|0.00|N|O|1995-11-17|1995-12-24|1995-11-30|COLLECT COD|AIR|l courts sleep quickly slyly |
-3235|95|6|2|43|42788.87|0.10|0.07|N|O|1995-12-25|1996-01-23|1996-01-09|COLLECT COD|MAIL|ckly final instru|
-3235|138|9|3|29|30105.77|0.06|0.06|N|O|1996-01-28|1995-12-26|1996-02-12|DELIVER IN PERSON|RAIL|e fluffy pinto bea|
-3235|178|9|4|23|24797.91|0.00|0.01|N|O|1996-02-16|1996-01-05|1996-03-07|DELIVER IN PERSON|SHIP|ldly ironic pinto beans|
-3236|117|4|1|10|10171.10|0.06|0.05|N|O|1996-11-15|1996-12-14|1996-11-29|TAKE BACK RETURN|AIR|arefully. fluffily reg|
-3236|122|7|2|21|21464.52|0.01|0.07|N|O|1996-12-23|1996-12-12|1997-01-21|NONE|AIR| final pinto |
-3236|118|2|3|7|7126.77|0.07|0.01|N|O|1996-12-27|1996-12-18|1997-01-24|DELIVER IN PERSON|SHIP|dolites. slyly unus|
-3237|11|5|1|11|10021.11|0.02|0.07|A|F|1992-08-03|1992-07-31|1992-08-13|TAKE BACK RETURN|AIR|es. permanently express platelets besid|
-3238|72|3|1|12|11664.84|0.06|0.01|R|F|1993-03-06|1993-05-08|1993-04-01|DELIVER IN PERSON|AIR|ackages affix furiously. furiously bol|
-3238|173|2|2|26|27902.42|0.01|0.06|A|F|1993-02-25|1993-04-04|1993-03-20|TAKE BACK RETURN|REG AIR|g accounts sleep furiously ironic attai|
-3238|81|2|3|1|981.08|0.00|0.04|R|F|1993-05-17|1993-04-18|1993-05-27|NONE|SHIP|wake alongs|
-3239|45|8|1|50|47252.00|0.05|0.01|N|O|1998-02-09|1998-04-02|1998-02-22|NONE|FOB|d blithely stea|
-3239|45|8|2|43|40636.72|0.01|0.06|N|O|1998-01-15|1998-03-12|1998-01-29|COLLECT COD|REG AIR|y. bold pinto beans use |
-3239|13|7|3|13|11869.13|0.01|0.05|N|O|1998-02-10|1998-02-19|1998-02-25|DELIVER IN PERSON|MAIL|r deposits solve fluf|
-3239|195|6|4|26|28474.94|0.03|0.05|N|O|1998-01-21|1998-03-21|1998-02-08|DELIVER IN PERSON|SHIP|ngly pending platelets are fluff|
-3239|12|9|5|31|28272.31|0.10|0.08|N|O|1998-04-14|1998-03-24|1998-04-17|DELIVER IN PERSON|FOB|foxes. pendin|
-3264|200|1|1|39|42907.80|0.06|0.06|N|O|1996-11-07|1996-12-12|1996-11-20|TAKE BACK RETURN|REG AIR|sleep carefully after the slyly final|
-3264|131|2|2|34|35058.42|0.00|0.01|N|O|1997-01-03|1997-01-06|1997-01-29|TAKE BACK RETURN|REG AIR|rns haggle carefully. blit|
-3264|125|8|3|11|11276.32|0.09|0.03|N|O|1996-12-11|1996-12-19|1996-12-15|DELIVER IN PERSON|SHIP|regular packages|
-3264|109|10|4|24|24218.40|0.09|0.07|N|O|1997-01-07|1996-12-13|1997-01-11|TAKE BACK RETURN|RAIL|ctions. quick|
-3264|63|4|5|6|5778.36|0.04|0.03|N|O|1996-11-10|1996-12-05|1996-11-22|TAKE BACK RETURN|SHIP|press packages. ironical|
-3264|141|2|6|43|44769.02|0.06|0.06|N|O|1997-01-17|1997-01-24|1997-02-01|TAKE BACK RETURN|TRUCK|leep at the blithely bold|
-3265|25|4|1|8|7400.16|0.06|0.02|A|F|1992-09-01|1992-09-12|1992-09-27|DELIVER IN PERSON|TRUCK|thely ironic requests sleep slyly-- i|
-3265|72|2|2|7|6804.49|0.09|0.00|R|F|1992-09-16|1992-09-04|1992-10-14|DELIVER IN PERSON|MAIL|he forges. fluffily regular asym|
-3265|191|4|3|28|30553.32|0.09|0.08|A|F|1992-10-22|1992-08-23|1992-10-25|NONE|RAIL|n requests. quickly final dinos|
-3266|64|1|1|31|29885.86|0.09|0.02|N|O|1995-06-19|1995-05-04|1995-07-06|COLLECT COD|MAIL|grate among the quickly express deposits|
-3266|38|4|2|43|40335.29|0.06|0.07|R|F|1995-05-04|1995-05-30|1995-05-11|COLLECT COD|AIR|ular asymptotes use careful|
-3267|185|6|1|33|35810.94|0.06|0.01|N|O|1997-03-30|1997-03-25|1997-04-23|TAKE BACK RETURN|AIR|es boost. |
-3268|96|7|1|1|996.09|0.06|0.08|A|F|1994-09-12|1994-08-31|1994-09-16|NONE|TRUCK|. ironic, bold requests use carefull|
-3268|42|9|2|40|37681.60|0.08|0.01|R|F|1994-06-30|1994-08-22|1994-07-25|COLLECT COD|FOB|ly. bold, eve|
-3269|161|10|1|40|42446.40|0.02|0.07|N|O|1996-06-11|1996-05-06|1996-06-15|DELIVER IN PERSON|TRUCK|es. pending d|
-3269|38|4|2|46|43149.38|0.00|0.02|N|O|1996-04-21|1996-04-12|1996-05-10|DELIVER IN PERSON|MAIL|final asymptotes nag|
-3269|44|3|3|39|36817.56|0.02|0.03|N|O|1996-03-13|1996-05-26|1996-03-19|COLLECT COD|MAIL|he express packages?|
-3269|83|4|4|37|36373.96|0.07|0.05|N|O|1996-06-14|1996-04-27|1996-07-07|NONE|MAIL|egular requests. carefully un|
-3269|93|7|5|42|41709.78|0.09|0.05|N|O|1996-03-19|1996-04-24|1996-04-18|COLLECT COD|TRUCK| the special packages. |
-3269|131|7|6|16|16498.08|0.01|0.08|N|O|1996-03-03|1996-04-06|1996-03-06|NONE|RAIL|s cajole. silent deposits are f|
-3270|35|1|1|11|10285.33|0.07|0.06|N|O|1997-07-29|1997-08-11|1997-08-05|TAKE BACK RETURN|AIR| solve at the regular deposits. |
-3270|38|4|2|44|41273.32|0.10|0.05|N|O|1997-07-20|1997-08-15|1997-08-04|DELIVER IN PERSON|SHIP| accounts. carefully even |
-3270|65|4|3|20|19301.20|0.01|0.02|N|O|1997-08-26|1997-07-31|1997-08-30|DELIVER IN PERSON|FOB|en accounts among the c|
-3270|189|10|4|29|31586.22|0.06|0.05|N|O|1997-07-01|1997-07-23|1997-07-10|TAKE BACK RETURN|MAIL|sly regular asymptotes. slyly dog|
-3270|34|10|5|32|29888.96|0.03|0.00|N|O|1997-09-23|1997-08-17|1997-09-27|NONE|REG AIR|promise carefully.|
-3270|57|5|6|29|27754.45|0.01|0.04|N|O|1997-08-22|1997-08-17|1997-09-06|COLLECT COD|RAIL|ptotes nag above the quickly bold deposits|
-3270|117|1|7|9|9153.99|0.06|0.08|N|O|1997-08-14|1997-08-11|1997-09-09|DELIVER IN PERSON|SHIP|ual packages|
-3271|57|9|1|30|28711.50|0.01|0.04|A|F|1992-01-16|1992-03-20|1992-01-17|DELIVER IN PERSON|AIR|r the unusual Tiresia|
-3271|54|5|2|18|17172.90|0.09|0.06|R|F|1992-05-01|1992-03-28|1992-05-29|DELIVER IN PERSON|FOB| packages eat around the furiously regul|
-3271|95|6|3|14|13931.26|0.05|0.01|A|F|1992-02-24|1992-02-14|1992-03-23|NONE|AIR|ending, even packa|
-3271|64|1|4|29|27957.74|0.07|0.04|A|F|1992-03-10|1992-02-05|1992-03-14|COLLECT COD|MAIL|lar instructions. carefully regular|
-3296|84|5|1|12|11808.96|0.06|0.07|R|F|1994-12-08|1994-12-14|1994-12-24|COLLECT COD|AIR|y about the slyly bold pinto bea|
-3296|149|8|2|31|32523.34|0.08|0.00|R|F|1995-01-26|1994-12-25|1995-02-16|NONE|REG AIR|ainst the furi|
-3296|185|6|3|29|31470.22|0.02|0.04|A|F|1995-01-12|1994-11-26|1995-02-06|DELIVER IN PERSON|SHIP|ss ideas are reg|
-3296|140|1|4|47|48886.58|0.06|0.00|A|F|1994-11-08|1994-12-20|1994-11-30|NONE|FOB|egular deposits. quic|
-3296|177|6|5|16|17234.72|0.06|0.02|R|F|1995-01-11|1994-12-27|1995-01-12|DELIVER IN PERSON|SHIP|kages cajole carefully |
-3296|197|1|6|40|43887.60|0.00|0.04|A|F|1994-12-28|1994-12-08|1995-01-13|COLLECT COD|REG AIR|ronic ideas across the|
-3296|36|2|7|6|5616.18|0.02|0.01|R|F|1995-01-03|1994-12-23|1995-01-27|TAKE BACK RETURN|AIR|carefully fur|
-3297|134|10|1|10|10341.30|0.10|0.04|A|F|1992-12-14|1993-01-21|1992-12-26|NONE|SHIP|ironic idea|
-3298|149|6|1|9|9442.26|0.01|0.06|N|O|1996-08-15|1996-05-24|1996-09-12|COLLECT COD|REG AIR|ly final accou|
-3298|186|7|2|27|29326.86|0.06|0.06|N|O|1996-07-10|1996-05-21|1996-07-15|DELIVER IN PERSON|FOB|lar packages. regular deposit|
-3298|29|2|3|25|23225.50|0.10|0.08|N|O|1996-06-30|1996-05-31|1996-07-23|COLLECT COD|SHIP|ly express f|
-3298|191|5|4|1|1091.19|0.10|0.03|N|O|1996-07-31|1996-05-23|1996-08-24|TAKE BACK RETURN|FOB|refully regular requ|
-3299|183|4|1|40|43327.20|0.03|0.02|A|F|1994-03-21|1994-03-23|1994-04-12|COLLECT COD|AIR|lyly even request|
-3300|129|4|1|3|3087.36|0.07|0.02|N|O|1995-11-01|1995-10-02|1995-11-20|NONE|REG AIR|g according to the dugouts. caref|
-3300|149|10|2|23|24130.22|0.02|0.02|N|O|1995-08-17|1995-09-03|1995-09-04|COLLECT COD|TRUCK|he fluffily final a|
-3301|169|8|1|45|48112.20|0.04|0.05|A|F|1994-11-19|1994-10-27|1994-11-24|TAKE BACK RETURN|FOB|nusual, final excuses after the entici|
-3302|36|2|1|45|42121.35|0.09|0.00|N|O|1996-01-24|1995-12-16|1996-02-13|COLLECT COD|FOB|counts use quickl|
-3303|184|5|1|25|27104.50|0.06|0.01|N|O|1998-03-25|1998-01-31|1998-04-12|NONE|SHIP|lly regular pi|
-3303|21|2|2|15|13815.30|0.04|0.06|N|O|1998-01-29|1998-01-22|1998-02-21|COLLECT COD|SHIP| detect sly|
-3303|99|10|3|37|36966.33|0.05|0.02|N|O|1998-02-16|1998-03-07|1998-02-18|TAKE BACK RETURN|TRUCK| carefully ironic asympt|
-3303|36|2|4|26|24336.78|0.09|0.00|N|O|1998-01-18|1998-03-11|1998-02-11|DELIVER IN PERSON|REG AIR|ickly permanent requests w|
-3328|113|7|1|6|6078.66|0.03|0.08|A|F|1993-03-07|1993-01-25|1993-03-29|COLLECT COD|TRUCK|ffily even instructions detect b|
-3328|5|2|2|23|20815.00|0.01|0.06|R|F|1993-01-12|1993-02-07|1993-01-30|TAKE BACK RETURN|MAIL|y. careful|
-3328|139|10|3|44|45721.72|0.05|0.00|R|F|1992-12-03|1992-12-19|1992-12-09|TAKE BACK RETURN|FOB|dly quickly final foxes? re|
-3328|95|9|4|42|41793.78|0.01|0.05|R|F|1992-11-24|1992-12-20|1992-12-06|DELIVER IN PERSON|AIR|ronic requests|
-3328|131|7|5|25|25778.25|0.05|0.00|R|F|1993-01-28|1993-01-04|1993-01-31|NONE|RAIL|e unusual, r|
-3329|138|4|1|36|37372.68|0.09|0.08|N|O|1995-08-06|1995-08-03|1995-08-14|DELIVER IN PERSON|TRUCK|ts at the re|
-3329|6|3|2|9|8154.00|0.00|0.02|N|O|1995-07-24|1995-08-02|1995-08-01|COLLECT COD|MAIL|lly final depo|
-3329|123|4|3|1|1023.12|0.04|0.08|N|O|1995-08-22|1995-09-28|1995-09-09|COLLECT COD|REG AIR|regular packages are carefull|
-3330|20|7|1|49|45080.98|0.05|0.01|R|F|1995-03-02|1995-03-03|1995-03-16|DELIVER IN PERSON|TRUCK|haggle carefully alongside of the bold r|
-3331|64|9|1|9|8676.54|0.08|0.07|A|F|1993-07-18|1993-07-03|1993-08-16|TAKE BACK RETURN|AIR|odolites. bold accounts|
-3331|21|2|2|38|34998.76|0.06|0.04|R|F|1993-07-24|1993-06-22|1993-08-23|NONE|AIR|ymptotes haggle across the ca|
-3331|3|10|3|26|23478.00|0.09|0.05|A|F|1993-08-05|1993-07-17|1993-08-29|DELIVER IN PERSON|MAIL|p asymptotes. carefully unusual in|
-3332|84|5|1|28|27554.24|0.10|0.02|R|F|1994-12-30|1995-01-16|1995-01-16|COLLECT COD|FOB|s against the carefully special multipl|
-3332|136|2|2|21|21758.73|0.08|0.04|R|F|1995-02-04|1995-01-08|1995-02-06|COLLECT COD|MAIL| quick packages sle|
-3332|134|5|3|27|27921.51|0.03|0.02|A|F|1994-12-10|1995-01-14|1994-12-11|TAKE BACK RETURN|FOB|ording to the slyly regula|
-3333|150|9|1|27|28354.05|0.06|0.08|A|F|1992-12-06|1992-10-26|1992-12-07|COLLECT COD|SHIP|s dazzle fluffil|
-3333|199|3|2|36|39570.84|0.08|0.07|R|F|1992-11-20|1992-11-06|1992-12-16|TAKE BACK RETURN|FOB|foxes sleep neve|
-3333|108|1|3|38|38307.80|0.05|0.05|A|F|1992-10-30|1992-11-03|1992-11-04|NONE|MAIL|ccounts promise bl|
-3333|113|4|4|49|49642.39|0.07|0.07|R|F|1992-10-02|1992-11-30|1992-10-12|DELIVER IN PERSON|MAIL|riously ironic r|
-3333|43|2|5|45|42436.80|0.07|0.08|A|F|1992-10-04|1992-11-08|1992-10-27|COLLECT COD|SHIP|dolites. quickly r|
-3334|187|8|1|20|21743.60|0.04|0.03|N|O|1996-05-21|1996-04-08|1996-05-26|TAKE BACK RETURN|AIR|uses nag furiously. instructions are ca|
-3334|190|1|2|7|7631.33|0.09|0.07|N|O|1996-04-28|1996-04-08|1996-05-25|NONE|SHIP|nts sublate slyly express pack|
-3335|105|10|1|13|13066.30|0.06|0.07|N|O|1996-01-20|1995-12-20|1996-02-09|COLLECT COD|REG AIR|out the special asymptotes|
-3335|31|2|2|44|40965.32|0.07|0.02|N|O|1996-01-05|1995-12-25|1996-01-18|DELIVER IN PERSON|SHIP|r packages cajole ac|
-3335|140|6|3|16|16642.24|0.01|0.06|N|O|1995-10-18|1995-12-08|1995-11-03|DELIVER IN PERSON|SHIP|g packages. carefully regular reque|
-3335|90|1|4|47|46534.23|0.10|0.03|N|O|1995-12-02|1995-11-19|1995-12-27|NONE|MAIL| quickly special ideas.|
-3360|174|4|1|31|33299.27|0.08|0.04|N|O|1998-04-24|1998-04-12|1998-05-23|COLLECT COD|REG AIR|quests. carefully even deposits wake acros|
-3360|91|3|2|29|28741.61|0.00|0.06|N|O|1998-04-15|1998-02-25|1998-05-13|TAKE BACK RETURN|FOB|press asymptotes. furiously final |
-3360|82|3|3|39|38301.12|0.08|0.03|N|O|1998-04-09|1998-04-20|1998-05-05|DELIVER IN PERSON|REG AIR|s. blithely express pinto bean|
-3360|117|7|4|29|29496.19|0.10|0.01|N|O|1998-05-19|1998-03-03|1998-06-09|TAKE BACK RETURN|FOB|hely gifts. spe|
-3360|58|6|5|4|3832.20|0.08|0.07|N|O|1998-02-27|1998-03-23|1998-03-28|COLLECT COD|SHIP|ly busy inst|
-3360|71|1|6|42|40784.94|0.04|0.01|N|O|1998-05-07|1998-04-18|1998-06-04|DELIVER IN PERSON|FOB|ages cajole. pending, |
-3361|144|5|1|6|6264.84|0.02|0.02|R|F|1992-10-02|1992-10-25|1992-10-05|DELIVER IN PERSON|FOB| packages sleep. furiously unus|
-3361|171|10|2|33|35348.61|0.01|0.02|R|F|1992-11-09|1992-10-15|1992-11-11|TAKE BACK RETURN|MAIL|uriously ironic accounts. ironic, ir|
-3361|191|5|3|31|33826.89|0.06|0.04|R|F|1992-08-29|1992-10-13|1992-09-08|NONE|FOB|ts. pending, regular accounts sleep fur|
-3362|22|5|1|14|12908.28|0.06|0.05|N|O|1995-08-01|1995-09-06|1995-08-22|NONE|FOB|even Tires|
-3362|195|6|2|41|44902.79|0.05|0.03|N|O|1995-10-31|1995-09-04|1995-11-17|COLLECT COD|REG AIR|ake alongside of the |
-3362|115|9|3|40|40604.40|0.05|0.06|N|O|1995-08-19|1995-10-17|1995-09-05|TAKE BACK RETURN|FOB|packages haggle furi|
-3362|2|7|4|3|2706.00|0.03|0.01|N|O|1995-08-26|1995-09-02|1995-09-17|NONE|SHIP|its cajole blithely excuses. de|
-3362|138|9|5|36|37372.68|0.06|0.00|N|O|1995-10-05|1995-08-28|1995-11-03|TAKE BACK RETURN|RAIL|es against the quickly permanent pint|
-3362|188|9|6|46|50056.28|0.09|0.05|N|O|1995-08-02|1995-10-12|1995-08-28|COLLECT COD|REG AIR|ly bold packages. regular deposits cajol|
-3363|10|3|1|42|38220.42|0.00|0.08|N|O|1995-11-09|1995-11-25|1995-11-15|TAKE BACK RETURN|RAIL| blithely final ideas nag after|
-3363|191|4|2|21|22914.99|0.08|0.08|N|O|1995-12-10|1995-10-28|1995-12-28|COLLECT COD|RAIL|he regular, brave deposits. f|
-3363|159|7|3|2|2118.30|0.01|0.07|N|O|1996-01-22|1995-12-01|1996-02-18|TAKE BACK RETURN|SHIP|uickly bold ide|
-3363|113|3|4|20|20262.20|0.07|0.06|N|O|1995-12-11|1995-11-15|1995-12-21|COLLECT COD|MAIL|carefully quiet excuses wake. sl|
-3363|200|4|5|4|4400.80|0.00|0.08|N|O|1995-10-30|1995-11-17|1995-11-22|COLLECT COD|FOB| ironic dependencie|
-3364|90|1|1|49|48514.41|0.03|0.05|N|O|1997-09-17|1997-08-23|1997-10-06|NONE|SHIP|d accounts? caref|
-3364|111|2|2|38|38422.18|0.02|0.02|N|O|1997-08-30|1997-09-12|1997-09-27|COLLECT COD|REG AIR| slyly express|
-3364|156|4|3|10|10561.50|0.00|0.01|N|O|1997-08-10|1997-08-24|1997-08-15|TAKE BACK RETURN|SHIP|g the accounts. final, busy accounts wi|
-3364|160|5|4|7|7421.12|0.10|0.05|N|O|1997-07-09|1997-08-01|1997-07-16|NONE|TRUCK|furiously regular ideas haggle furiously b|
-3364|81|2|5|3|2943.24|0.01|0.00|N|O|1997-10-19|1997-08-15|1997-10-28|TAKE BACK RETURN|TRUCK|c theodolites. blithely ir|
-3365|151|6|1|37|38892.55|0.02|0.08|R|F|1994-12-22|1995-02-07|1995-01-20|TAKE BACK RETURN|SHIP|requests. quickly pending instructions a|
-3365|167|2|2|37|39484.92|0.07|0.08|A|F|1994-11-24|1995-01-09|1994-11-27|NONE|REG AIR|oze blithely. furiously ironic theodolit|
-3365|115|6|3|13|13196.43|0.09|0.02|R|F|1995-02-25|1995-01-31|1995-03-16|NONE|RAIL|pths wake r|
-3365|176|4|4|49|52732.33|0.02|0.07|R|F|1995-01-03|1995-01-01|1995-01-18|COLLECT COD|MAIL|lyly unusual asymptotes. final|
-3365|16|3|5|2|1832.02|0.00|0.03|R|F|1995-02-04|1994-12-30|1995-03-06|TAKE BACK RETURN|FOB|es cajole fluffily pe|
-3365|126|5|6|24|24626.88|0.01|0.00|R|F|1995-02-27|1995-01-09|1995-03-27|DELIVER IN PERSON|REG AIR|into beans? carefully regula|
-3366|40|1|1|4|3760.16|0.07|0.01|N|O|1997-05-20|1997-06-25|1997-06-03|DELIVER IN PERSON|AIR| carefully about |
-3366|136|2|2|9|9325.17|0.00|0.08|N|O|1997-06-02|1997-07-05|1997-06-26|COLLECT COD|REG AIR|ackages sleep carefully across the bli|
-3367|41|10|1|27|25408.08|0.01|0.03|A|F|1993-04-13|1993-03-16|1993-04-26|NONE|RAIL|kly even instructions caj|
-3367|141|10|2|34|35398.76|0.04|0.08|A|F|1993-03-30|1993-02-23|1993-04-11|COLLECT COD|MAIL| accounts wake slyly |
-3367|120|7|3|38|38764.56|0.03|0.03|R|F|1993-03-13|1993-02-12|1993-03-31|NONE|RAIL|even packages sleep blithely slyly expr|
-3392|171|10|1|40|42846.80|0.01|0.01|N|O|1996-02-18|1995-12-16|1996-02-26|COLLECT COD|MAIL|ress instructions affix carefully. fur|
-3392|123|2|2|13|13300.56|0.09|0.02|N|O|1995-11-26|1996-01-17|1995-12-01|NONE|MAIL|across the fluffily bold deposits.|
-3392|127|10|3|34|34922.08|0.10|0.08|N|O|1996-01-20|1996-01-21|1996-01-24|DELIVER IN PERSON|MAIL|e carefully even braids. |
-3392|124|3|4|7|7168.84|0.08|0.05|N|O|1995-12-07|1996-01-09|1995-12-29|TAKE BACK RETURN|RAIL|as. express, final accounts dou|
-3393|117|7|1|16|16273.76|0.01|0.00|N|O|1995-07-17|1995-08-19|1995-08-04|COLLECT COD|TRUCK|uses. instructions after the blithely |
-3393|125|4|2|44|45105.28|0.08|0.04|N|O|1995-10-16|1995-08-05|1995-11-01|NONE|AIR|ld requests hag|
-3393|97|1|3|25|24927.25|0.07|0.02|N|O|1995-10-17|1995-08-12|1995-11-11|DELIVER IN PERSON|MAIL|ng excuses|
-3393|72|2|4|48|46659.36|0.06|0.06|N|O|1995-07-12|1995-09-15|1995-08-02|NONE|FOB| blithely final reques|
-3393|178|7|5|37|39892.29|0.07|0.02|N|O|1995-10-16|1995-08-19|1995-10-19|COLLECT COD|AIR|ss the slyly ironic pinto beans. ironic,|
-3393|62|7|6|17|16355.02|0.04|0.01|N|O|1995-08-15|1995-09-07|1995-09-10|COLLECT COD|MAIL|kly ironic deposits could|
-3394|155|6|1|33|34819.95|0.07|0.08|N|O|1996-08-07|1996-07-17|1996-09-02|TAKE BACK RETURN|SHIP|ideas alongside of th|
-3394|146|3|2|43|44984.02|0.08|0.03|N|O|1996-08-23|1996-07-20|1996-08-25|COLLECT COD|RAIL|hockey players. slyly regular requests afte|
-3394|88|9|3|26|25690.08|0.01|0.00|N|O|1996-08-08|1996-06-12|1996-09-05|TAKE BACK RETURN|RAIL|its use furiously. even, even account|
-3394|81|2|4|14|13735.12|0.08|0.00|N|O|1996-06-02|1996-07-02|1996-06-19|COLLECT COD|MAIL|e furiously final theodolites. furio|
-3394|127|8|5|30|30813.60|0.04|0.06|N|O|1996-05-12|1996-07-24|1996-05-19|COLLECT COD|REG AIR|t ideas according to the fluffily iro|
-3394|184|5|6|14|15178.52|0.05|0.05|N|O|1996-06-18|1996-06-24|1996-07-17|NONE|REG AIR|arefully regular do|
-3395|142|3|1|21|21884.94|0.03|0.06|R|F|1994-12-19|1995-01-13|1994-12-25|TAKE BACK RETURN|SHIP| careful dep|
-3395|36|2|2|38|35569.14|0.01|0.07|R|F|1995-01-13|1995-01-13|1995-01-25|COLLECT COD|SHIP| silent accounts are blithely|
-3395|43|4|3|43|40550.72|0.06|0.07|A|F|1994-12-13|1995-01-07|1994-12-14|COLLECT COD|AIR|ckages above the furiously regu|
-3395|122|1|4|39|39862.68|0.05|0.07|R|F|1994-12-03|1995-01-17|1994-12-10|NONE|AIR|riously unusual theodolites. fur|
-3396|128|7|1|34|34956.08|0.00|0.06|A|F|1994-05-30|1994-08-16|1994-06-11|NONE|AIR|. slyly unusual packages wak|
-3396|49|6|2|43|40808.72|0.03|0.08|A|F|1994-07-03|1994-08-09|1994-07-14|TAKE BACK RETURN|MAIL|cial packages cajole blithely around the |
-3396|138|4|3|9|9343.17|0.01|0.06|R|F|1994-07-01|1994-08-18|1994-07-21|DELIVER IN PERSON|AIR|usly special foxes. accounts wake careful|
-3396|75|3|4|32|31202.24|0.06|0.02|R|F|1994-08-07|1994-08-10|1994-09-05|COLLECT COD|TRUCK|osits are slyly. final, bold foxes s|
-3396|126|5|5|27|27705.24|0.02|0.01|A|F|1994-09-14|1994-07-26|1994-09-28|DELIVER IN PERSON|FOB| theodolites |
-3396|39|10|6|18|16902.54|0.10|0.00|A|F|1994-07-27|1994-06-26|1994-08-25|TAKE BACK RETURN|REG AIR|l requests haggle furiously along the fur|
-3396|198|2|7|31|34043.89|0.05|0.06|A|F|1994-06-07|1994-06-23|1994-06-19|TAKE BACK RETURN|REG AIR|l, express pinto beans. quic|
-3397|195|8|1|8|8761.52|0.07|0.01|A|F|1994-08-05|1994-08-11|1994-08-08|DELIVER IN PERSON|RAIL|y final foxes|
-3397|13|3|2|11|10043.11|0.00|0.07|A|F|1994-07-29|1994-09-18|1994-08-12|DELIVER IN PERSON|REG AIR|iously careful packages. s|
-3397|184|5|3|1|1084.18|0.07|0.05|R|F|1994-08-03|1994-07-30|1994-08-28|NONE|RAIL| regular packag|
-3397|86|7|4|33|32540.64|0.05|0.01|R|F|1994-09-04|1994-08-06|1994-09-22|COLLECT COD|RAIL|gular accounts. blithely re|
-3397|132|3|5|28|28899.64|0.05|0.05|R|F|1994-07-13|1994-08-26|1994-07-17|NONE|TRUCK|counts around the final reques|
-3398|173|4|1|1|1073.17|0.01|0.08|N|O|1996-11-22|1996-11-16|1996-12-09|COLLECT COD|MAIL| blithely final deposits.|
-3399|134|5|1|28|28955.64|0.09|0.05|N|O|1995-06-29|1995-05-19|1995-07-12|COLLECT COD|AIR|oggedly final theodolites grow. fi|
-3399|55|6|2|8|7640.40|0.01|0.05|A|F|1995-05-15|1995-04-19|1995-06-05|COLLECT COD|TRUCK|s use carefully carefully ir|
-3399|67|4|3|3|2901.18|0.03|0.00|N|F|1995-06-16|1995-04-04|1995-06-23|NONE|SHIP|hely pending dugouts |
-3399|14|5|4|21|19194.21|0.09|0.06|A|F|1995-03-12|1995-05-18|1995-03-28|TAKE BACK RETURN|MAIL|se final courts. exc|
-3424|181|2|1|39|42166.02|0.06|0.07|N|O|1996-11-03|1996-11-08|1996-11-23|DELIVER IN PERSON|MAIL|bits boost closely slyly p|
-3425|120|1|1|11|11221.32|0.03|0.08|N|O|1996-04-24|1996-05-29|1996-05-23|DELIVER IN PERSON|FOB|ckly final deposits use quickly?|
-3425|79|7|2|37|36225.59|0.06|0.03|N|O|1996-06-04|1996-05-09|1996-06-12|NONE|SHIP|as sleep carefully into the caref|
-3425|14|4|3|8|7312.08|0.06|0.08|N|O|1996-07-22|1996-06-07|1996-07-26|TAKE BACK RETURN|AIR|iously regular theodolites wake. s|
-3425|19|10|4|37|34003.37|0.04|0.01|N|O|1996-07-10|1996-05-10|1996-08-02|NONE|SHIP|ngside of the furiously thin dol|
-3425|79|9|5|48|46995.36|0.08|0.04|N|O|1996-04-14|1996-05-25|1996-04-23|TAKE BACK RETURN|AIR|uctions wake fluffily. care|
-3425|148|9|6|24|25155.36|0.05|0.04|N|O|1996-04-22|1996-06-24|1996-04-25|TAKE BACK RETURN|AIR|ajole blithely sl|
-3426|110|5|1|20|20202.20|0.05|0.04|N|O|1996-11-10|1996-12-24|1996-12-01|COLLECT COD|FOB|sits cajole blit|
-3426|14|4|2|19|17366.19|0.10|0.08|N|O|1996-11-02|1997-01-13|1996-11-15|DELIVER IN PERSON|RAIL|slyly special packages oug|
-3426|67|6|3|19|18374.14|0.08|0.05|N|O|1996-12-07|1996-12-15|1996-12-14|DELIVER IN PERSON|FOB|c accounts cajole carefu|
-3426|6|7|4|9|8154.00|0.09|0.05|N|O|1996-12-24|1997-01-14|1997-01-13|NONE|FOB|pecial theodolites haggle fluf|
-3426|49|6|5|31|29420.24|0.07|0.08|N|O|1996-11-11|1996-12-10|1996-12-10|DELIVER IN PERSON|SHIP| even sentiment|
-3427|54|5|1|41|39116.05|0.10|0.01|N|O|1997-09-11|1997-07-03|1997-10-04|COLLECT COD|RAIL|s the carefully|
-3427|189|10|2|24|26140.32|0.02|0.04|N|O|1997-07-01|1997-07-28|1997-07-30|NONE|SHIP|y bold, sly deposits. pendi|
-3427|139|5|3|40|41565.20|0.06|0.05|N|O|1997-06-12|1997-08-19|1997-06-23|COLLECT COD|MAIL|patterns cajole ca|
-3427|119|6|4|31|31592.41|0.08|0.04|N|O|1997-08-12|1997-07-26|1997-08-25|COLLECT COD|RAIL|s are carefull|
-3428|198|9|1|4|4392.76|0.00|0.03|N|O|1996-05-09|1996-06-13|1996-06-02|NONE|REG AIR|sly pending requests int|
-3428|118|9|2|35|35633.85|0.02|0.03|N|O|1996-05-01|1996-06-07|1996-05-20|COLLECT COD|TRUCK|ly regular pinto beans sleep|
-3428|136|7|3|47|48698.11|0.07|0.05|N|O|1996-04-16|1996-06-08|1996-05-05|NONE|REG AIR|y final pinto |
-3429|137|8|1|48|49782.24|0.06|0.02|N|O|1997-04-08|1997-03-09|1997-04-25|TAKE BACK RETURN|SHIP| haggle furiously ir|
-3429|59|7|2|15|14385.75|0.03|0.04|N|O|1997-02-04|1997-03-09|1997-03-01|TAKE BACK RETURN|TRUCK|beans are fu|
-3429|69|4|3|10|9690.60|0.05|0.07|N|O|1997-01-19|1997-02-22|1997-01-25|TAKE BACK RETURN|REG AIR|ackages. quickly e|
-3429|89|10|4|28|27694.24|0.10|0.07|N|O|1997-01-30|1997-03-18|1997-02-17|TAKE BACK RETURN|AIR|nstructions boost. thin|
-3429|165|6|5|45|47932.20|0.10|0.00|N|O|1997-04-21|1997-03-08|1997-05-05|COLLECT COD|REG AIR|ites poach a|
-3430|189|10|1|2|2178.36|0.07|0.06|R|F|1995-03-07|1995-01-28|1995-03-30|TAKE BACK RETURN|MAIL|sh furiously according to the evenly e|
-3430|81|2|2|32|31394.56|0.08|0.00|R|F|1995-01-17|1995-01-28|1995-02-06|NONE|TRUCK|egular instruction|
-3430|97|8|3|41|40880.69|0.06|0.04|R|F|1995-02-18|1995-02-21|1995-03-11|TAKE BACK RETURN|AIR|cuses. silent excuses h|
-3430|65|2|4|50|48253.00|0.01|0.00|R|F|1994-12-15|1995-03-03|1994-12-24|COLLECT COD|REG AIR|ironic theodolites. carefully regular pac|
-3430|95|9|5|5|4975.45|0.05|0.05|A|F|1995-04-02|1995-02-12|1995-04-08|DELIVER IN PERSON|FOB|even accounts haggle slyly bol|
-3430|171|10|6|15|16067.55|0.08|0.07|A|F|1995-02-01|1995-03-12|1995-02-04|COLLECT COD|SHIP|cajole around the accounts. qui|
-3430|52|7|7|23|21897.15|0.09|0.08|A|F|1995-03-06|1995-03-01|1995-03-10|COLLECT COD|MAIL|eas according to the|
-3431|180|8|1|41|44287.38|0.03|0.06|A|F|1993-09-26|1993-10-13|1993-10-22|NONE|AIR| sleep carefully ironically special|
-3456|111|8|1|34|34377.74|0.10|0.06|A|F|1993-08-29|1993-08-26|1993-09-07|TAKE BACK RETURN|SHIP|usy pinto beans b|
-3457|182|3|1|29|31383.22|0.03|0.02|R|F|1995-05-12|1995-07-13|1995-06-05|NONE|TRUCK|refully final excuses wake|
-3457|106|7|2|22|22134.20|0.06|0.01|N|O|1995-06-23|1995-06-16|1995-06-29|NONE|SHIP|packages nag furiously against|
-3457|109|2|3|7|7063.70|0.07|0.08|N|O|1995-08-14|1995-07-06|1995-08-18|COLLECT COD|SHIP| pending accounts along the|
-3457|1|2|4|24|21624.00|0.07|0.07|N|O|1995-08-03|1995-05-30|1995-08-14|TAKE BACK RETURN|REG AIR|tructions haggle alongsid|
-3457|109|4|5|42|42382.20|0.05|0.01|A|F|1995-06-12|1995-06-14|1995-06-14|COLLECT COD|MAIL|riously final instruc|
-3457|144|1|6|45|46986.30|0.08|0.01|N|O|1995-08-12|1995-07-18|1995-08-23|TAKE BACK RETURN|SHIP| packages. care|
-3457|167|4|7|9|9604.44|0.04|0.00|R|F|1995-05-29|1995-06-30|1995-06-12|DELIVER IN PERSON|FOB|quests. foxes sleep quickly|
-3458|133|4|1|48|49590.24|0.06|0.04|R|F|1995-03-17|1995-01-25|1995-03-28|TAKE BACK RETURN|AIR|iously pending dep|
-3458|50|3|2|46|43702.30|0.06|0.06|R|F|1995-03-08|1995-01-21|1995-03-10|TAKE BACK RETURN|SHIP|nod across the boldly even instruct|
-3458|143|4|3|36|37553.04|0.01|0.06|R|F|1995-04-20|1995-02-14|1995-05-09|TAKE BACK RETURN|REG AIR|s lose. blithely ironic requests boost|
-3458|16|10|4|16|14656.16|0.09|0.03|R|F|1995-03-01|1995-02-25|1995-03-06|TAKE BACK RETURN|AIR|s grow carefully. express, final grouc|
-3458|157|5|5|2|2114.30|0.09|0.03|A|F|1995-02-05|1995-02-01|1995-03-07|COLLECT COD|FOB|ironic packages haggle past the furiously |
-3458|142|1|6|6|6252.84|0.09|0.04|A|F|1995-03-10|1995-02-02|1995-03-23|TAKE BACK RETURN|AIR|dolites; regular theodolites cajole |
-3459|179|7|1|31|33454.27|0.06|0.01|A|F|1994-09-05|1994-10-20|1994-10-03|NONE|REG AIR|y regular pain|
-3459|130|9|2|30|30903.90|0.04|0.08|R|F|1994-11-22|1994-09-12|1994-12-11|NONE|REG AIR|nic theodolites; evenly i|
-3459|41|8|3|45|42346.80|0.04|0.05|A|F|1994-07-31|1994-09-09|1994-08-02|TAKE BACK RETURN|REG AIR|ntly speci|
-3459|69|10|4|10|9690.60|0.05|0.06|A|F|1994-10-06|1994-09-16|1994-11-03|TAKE BACK RETURN|REG AIR| furiously silent dolphi|
-3459|189|10|5|10|10891.80|0.02|0.02|R|F|1994-08-01|1994-10-17|1994-08-11|TAKE BACK RETURN|FOB|. blithely ironic pinto beans above|
-3460|11|1|1|40|36440.40|0.10|0.06|N|O|1995-12-28|1995-12-14|1996-01-02|NONE|REG AIR|odolites are slyly bold deposits|
-3460|74|4|2|3|2922.21|0.06|0.00|N|O|1996-01-19|1995-12-28|1996-01-31|COLLECT COD|AIR|er quickly |
-3460|35|1|3|40|37401.20|0.08|0.07|N|O|1995-10-29|1995-11-10|1995-11-24|TAKE BACK RETURN|REG AIR|o the even deposits|
-3460|95|8|4|50|49754.50|0.02|0.07|N|O|1996-01-30|1995-12-10|1996-02-06|DELIVER IN PERSON|SHIP|e slyly about the sly|
-3460|130|1|5|47|48416.11|0.08|0.05|N|O|1995-12-09|1995-11-12|1995-12-22|TAKE BACK RETURN|SHIP|es haggle slyly regular accounts. fi|
-3460|63|10|6|46|44300.76|0.03|0.07|N|O|1996-01-27|1996-01-01|1996-02-01|NONE|TRUCK|uses run among the carefully even deposits|
-3460|45|2|7|28|26461.12|0.00|0.01|N|O|1995-10-28|1995-11-13|1995-11-17|COLLECT COD|SHIP|inal, ironic instructions. carefully|
-3461|100|4|1|49|49004.90|0.06|0.06|A|F|1993-03-09|1993-04-16|1993-03-13|DELIVER IN PERSON|RAIL|ual request|
-3461|63|4|2|27|26002.62|0.06|0.06|A|F|1993-02-10|1993-03-02|1993-03-04|COLLECT COD|SHIP|ely unusual deposits. quickly ir|
-3461|39|5|3|44|41317.32|0.09|0.06|A|F|1993-05-20|1993-04-03|1993-05-27|COLLECT COD|RAIL| haggle quickly even ideas. fin|
-3461|95|7|4|41|40798.69|0.09|0.02|R|F|1993-02-19|1993-04-20|1993-02-21|NONE|TRUCK|heodolites. blithely ironi|
-3461|90|1|5|16|15841.44|0.08|0.06|A|F|1993-05-09|1993-04-29|1993-05-26|TAKE BACK RETURN|TRUCK| pending deposi|
-3461|167|2|6|24|25611.84|0.10|0.00|A|F|1993-06-01|1993-03-12|1993-06-20|TAKE BACK RETURN|MAIL|thely. carefully re|
-3462|151|3|1|4|4204.60|0.09|0.04|N|O|1997-06-12|1997-07-31|1997-06-16|COLLECT COD|RAIL|ackages. fu|
-3462|40|1|2|43|40421.72|0.08|0.03|N|O|1997-08-01|1997-07-18|1997-08-29|NONE|RAIL| carefully. final, final ideas sleep slyly|
-3462|129|4|3|6|6174.72|0.05|0.04|N|O|1997-06-02|1997-08-09|1997-06-30|NONE|RAIL|iously regular fo|
-3462|99|3|4|2|1998.18|0.09|0.07|N|O|1997-09-10|1997-08-08|1997-09-19|NONE|AIR|nic packages. even accounts alongside |
-3462|38|4|5|14|13132.42|0.01|0.02|N|O|1997-05-31|1997-07-05|1997-06-24|COLLECT COD|MAIL|yly. blithely bold theodolites wa|
-3463|61|10|1|45|43247.70|0.02|0.02|A|F|1993-10-30|1993-11-04|1993-11-08|DELIVER IN PERSON|FOB|nts are slyly |
-3463|98|1|2|43|42917.87|0.04|0.02|A|F|1993-10-28|1993-09-24|1993-11-03|DELIVER IN PERSON|FOB| across the |
-3488|160|5|1|1|1060.16|0.04|0.01|A|F|1995-03-06|1995-02-16|1995-03-23|DELIVER IN PERSON|FOB| final excuses. carefully even waters hagg|
-3488|104|9|2|48|48196.80|0.00|0.03|A|F|1995-03-29|1995-03-26|1995-04-28|COLLECT COD|SHIP|sly? final requests |
-3488|160|1|3|11|11661.76|0.03|0.08|R|F|1995-03-25|1995-02-08|1995-04-16|COLLECT COD|TRUCK|unusual re|
-3488|42|9|4|12|11304.48|0.05|0.07|R|F|1995-04-27|1995-02-16|1995-05-09|DELIVER IN PERSON|RAIL|e slyly; furiously final packages wak|
-3488|156|1|5|18|19010.70|0.09|0.06|A|F|1995-03-18|1995-03-19|1995-03-29|DELIVER IN PERSON|FOB|s the carefully r|
-3489|186|7|1|19|20637.42|0.09|0.05|A|F|1993-07-31|1993-10-26|1993-08-15|NONE|SHIP|c deposits alongside of the pending, fu|
-3489|29|4|2|46|42734.92|0.00|0.00|A|F|1993-08-02|1993-10-09|1993-08-10|TAKE BACK RETURN|TRUCK|xcuses? quickly stealthy dependenci|
-3490|92|6|1|43|42659.87|0.05|0.05|N|O|1997-08-04|1997-08-06|1997-08-14|TAKE BACK RETURN|SHIP|. even requests cajol|
-3490|86|7|2|50|49304.00|0.05|0.07|N|O|1997-06-27|1997-08-15|1997-06-28|NONE|RAIL| haggle carefu|
-3490|93|7|3|8|7944.72|0.10|0.04|N|O|1997-08-11|1997-07-25|1997-08-28|COLLECT COD|MAIL|inal deposits use furiousl|
-3491|154|2|1|28|29516.20|0.04|0.03|N|O|1998-09-29|1998-09-08|1998-10-23|COLLECT COD|FOB|ccounts. sly|
-3491|122|3|2|22|22486.64|0.08|0.02|N|O|1998-08-19|1998-08-22|1998-09-03|TAKE BACK RETURN|REG AIR| grow against the boldly pending pinto bea|
-3492|156|7|1|3|3168.45|0.02|0.08|R|F|1994-11-26|1994-12-28|1994-12-19|COLLECT COD|REG AIR|the deposits. carefully |
-3492|126|9|2|7|7182.84|0.04|0.00|R|F|1995-03-10|1995-01-03|1995-03-16|COLLECT COD|FOB|thely regular dolphi|
-3492|109|10|3|34|34309.40|0.05|0.06|A|F|1994-12-07|1994-12-29|1994-12-24|COLLECT COD|AIR| unusual requests. ir|
-3492|147|6|4|30|31414.20|0.02|0.06|A|F|1995-01-29|1995-01-02|1995-02-13|DELIVER IN PERSON|MAIL| detect furiously permanent, unusual accou|
-3492|122|1|5|47|48039.64|0.09|0.07|R|F|1995-03-24|1994-12-28|1995-03-29|NONE|REG AIR|deposits. quickly express |
-3492|22|7|6|47|43334.94|0.04|0.07|R|F|1994-12-12|1995-01-18|1994-12-26|COLLECT COD|RAIL|ronic instructions u|
-3493|93|6|1|31|30785.79|0.06|0.07|R|F|1993-10-22|1993-10-12|1993-11-07|DELIVER IN PERSON|REG AIR|ructions. slyly regular accounts across the|
-3493|132|3|2|10|10321.30|0.02|0.06|R|F|1993-08-27|1993-10-07|1993-09-23|COLLECT COD|TRUCK|hall have to integ|
-3494|117|1|1|40|40684.40|0.05|0.04|R|F|1993-07-10|1993-06-01|1993-07-25|TAKE BACK RETURN|TRUCK|lites haggle furiously about the fin|
-3494|75|6|2|23|22426.61|0.10|0.01|A|F|1993-06-19|1993-06-04|1993-07-14|NONE|FOB|osits nag |
-3494|198|2|3|40|43927.60|0.02|0.08|A|F|1993-05-30|1993-07-02|1993-06-20|TAKE BACK RETURN|MAIL|uests cajole blithely|
-3494|77|8|4|30|29312.10|0.04|0.03|R|F|1993-07-01|1993-06-08|1993-07-15|TAKE BACK RETURN|TRUCK|ns are quickly regular, |
-3495|28|3|1|20|18560.40|0.10|0.03|N|O|1996-04-24|1996-05-18|1996-05-01|TAKE BACK RETURN|RAIL|posits are carefully; forges cajole qui|
-3495|173|1|2|24|25756.08|0.05|0.02|N|O|1996-03-22|1996-04-10|1996-04-07|DELIVER IN PERSON|RAIL|ic, final pains along the even request|
-3495|199|10|3|16|17587.04|0.08|0.02|N|O|1996-03-30|1996-04-02|1996-04-12|TAKE BACK RETURN|AIR|y bold dependencies; blithely idle sautern|
-3520|28|1|1|30|27840.60|0.04|0.02|N|O|1997-11-11|1997-10-02|1997-12-06|COLLECT COD|SHIP|deas should solve blithely among the ironi|
-3520|167|4|2|38|40552.08|0.00|0.04|N|O|1997-08-14|1997-10-26|1997-09-09|NONE|RAIL|yly final packages according to the quickl|
-3520|106|9|3|5|5030.50|0.01|0.02|N|O|1997-11-13|1997-09-22|1997-12-09|NONE|MAIL|ly even ideas haggle |
-3520|64|5|4|41|39526.46|0.01|0.01|N|O|1997-08-06|1997-09-20|1997-08-20|TAKE BACK RETURN|AIR| carefully pendi|
-3520|163|10|5|35|37210.60|0.02|0.02|N|O|1997-09-16|1997-09-03|1997-09-24|DELIVER IN PERSON|FOB|s nag carefully. sometimes unusual account|
-3521|59|4|1|48|46034.40|0.09|0.03|A|F|1993-01-03|1992-12-31|1993-01-22|NONE|AIR|ses use. furiously express ideas wake f|
-3521|131|2|2|2|2062.26|0.05|0.06|R|F|1993-01-29|1992-12-20|1993-02-23|NONE|MAIL|refully duri|
-3521|178|8|3|38|40970.46|0.00|0.08|A|F|1993-02-15|1992-12-10|1993-03-10|COLLECT COD|FOB|ges hang q|
-3521|144|7|4|26|27147.64|0.02|0.08|R|F|1993-01-04|1993-01-20|1993-01-17|DELIVER IN PERSON|AIR|onic dependencies haggle. fur|
-3521|36|7|5|28|26208.84|0.10|0.01|A|F|1993-01-06|1993-01-22|1993-02-02|TAKE BACK RETURN|FOB|e slyly above the slyly final|
-3522|4|9|1|6|5424.00|0.08|0.03|A|F|1995-01-21|1994-12-09|1995-01-23|NONE|SHIP|tes snooze |
-3522|87|8|2|48|47379.84|0.00|0.03|R|F|1994-12-05|1994-10-30|1994-12-26|TAKE BACK RETURN|SHIP|ve the quickly special packages|
-3522|157|2|3|46|48628.90|0.09|0.02|A|F|1994-11-12|1994-11-30|1994-11-20|NONE|AIR|d the express, silent foxes. blit|
-3522|130|9|4|7|7210.91|0.10|0.02|A|F|1994-10-31|1994-11-19|1994-11-28|NONE|TRUCK|e stealthil|
-3522|50|9|5|27|25651.35|0.02|0.05|R|F|1994-11-29|1994-12-15|1994-12-08|COLLECT COD|REG AIR|ic tithes. car|
-3522|158|10|6|18|19046.70|0.01|0.03|A|F|1994-11-16|1994-10-29|1994-11-29|COLLECT COD|RAIL|sits wake carefully pen|
-3523|25|6|1|15|13875.30|0.06|0.02|N|O|1998-06-26|1998-05-22|1998-07-24|COLLECT COD|REG AIR|se slyly pending, sp|
-3523|133|9|2|4|4132.52|0.03|0.06|N|O|1998-05-08|1998-05-18|1998-05-25|TAKE BACK RETURN|MAIL|ts. final accounts detect furiously along |
-3523|50|7|3|24|22801.20|0.07|0.04|N|O|1998-08-02|1998-06-22|1998-08-27|COLLECT COD|FOB|ke according to the doggedly re|
-3523|192|4|4|36|39318.84|0.06|0.08|N|O|1998-05-26|1998-06-04|1998-06-25|DELIVER IN PERSON|SHIP|accounts. fluffily regu|
-3523|134|5|5|48|49638.24|0.00|0.01|N|O|1998-07-22|1998-06-25|1998-08-19|DELIVER IN PERSON|AIR| regular requests|
-3524|137|8|1|5|5185.65|0.01|0.04|R|F|1992-05-23|1992-07-25|1992-06-19|DELIVER IN PERSON|RAIL|ts whithout the bold depende|
-3524|143|6|2|17|17733.38|0.09|0.08|A|F|1992-09-01|1992-07-17|1992-09-05|DELIVER IN PERSON|FOB|g, final epitaphs about the pinto |
-3525|46|7|1|12|11352.48|0.01|0.03|N|O|1996-03-08|1996-03-18|1996-03-16|NONE|TRUCK|lar excuses wake carefull|
-3525|138|9|2|27|28029.51|0.03|0.03|N|O|1995-12-30|1996-01-23|1996-01-02|DELIVER IN PERSON|SHIP|y slyly special asymptotes|
-3525|75|5|3|31|30227.17|0.00|0.03|N|O|1996-03-08|1996-02-27|1996-03-13|COLLECT COD|TRUCK|he careful|
-3525|184|5|4|28|30357.04|0.03|0.02|N|O|1996-01-22|1996-02-08|1996-01-27|COLLECT COD|FOB| nag according |
-3526|98|9|1|11|10978.99|0.02|0.03|R|F|1995-05-23|1995-05-28|1995-05-24|NONE|TRUCK|ges. furiously regular d|
-3526|117|7|2|23|23393.53|0.03|0.04|A|F|1995-05-01|1995-05-31|1995-05-25|DELIVER IN PERSON|FOB|special, regular packages cajole. |
-3526|33|9|3|20|18660.60|0.05|0.08|N|F|1995-06-16|1995-04-26|1995-06-22|DELIVER IN PERSON|REG AIR|kages. bold, special requests detect sl|
-3527|102|7|1|47|47098.70|0.07|0.02|N|O|1997-07-14|1997-07-29|1997-07-21|DELIVER IN PERSON|RAIL|unts. express re|
-3527|26|9|2|33|30558.66|0.01|0.02|N|O|1997-09-25|1997-09-17|1997-10-12|NONE|FOB|kly alongside of |
-3527|162|7|3|50|53108.00|0.09|0.07|N|O|1997-07-17|1997-08-03|1997-07-29|DELIVER IN PERSON|SHIP|e even accounts was about th|
-3527|128|3|4|17|17478.04|0.02|0.05|N|O|1997-07-30|1997-09-01|1997-08-17|COLLECT COD|MAIL|ular instruction|
-3552|197|8|1|18|19749.42|0.01|0.07|N|O|1997-08-11|1997-07-14|1997-08-15|DELIVER IN PERSON|TRUCK|s deposits against the blithely unusual pin|
-3552|90|1|2|44|43563.96|0.01|0.00|N|O|1997-08-08|1997-06-15|1997-08-29|COLLECT COD|FOB|ns after the blithely reg|
-3552|161|6|3|36|38201.76|0.04|0.08|N|O|1997-06-29|1997-06-24|1997-07-21|COLLECT COD|TRUCK|ly regular theodolites. fin|
-3553|143|10|1|4|4172.56|0.05|0.01|R|F|1994-06-13|1994-07-10|1994-07-03|COLLECT COD|RAIL|olites boost bli|
-3553|65|4|2|26|25091.56|0.05|0.08|A|F|1994-08-06|1994-07-30|1994-08-23|DELIVER IN PERSON|MAIL|fily special p|
-3553|22|5|3|18|16596.36|0.04|0.03|A|F|1994-07-03|1994-06-30|1994-07-07|COLLECT COD|RAIL|. quickly ironic|
-3553|32|8|4|40|37281.20|0.06|0.00|A|F|1994-09-14|1994-06-26|1994-09-25|NONE|RAIL| slyly pending asymptotes against the furi|
-3553|157|2|5|36|38057.40|0.06|0.08|R|F|1994-08-12|1994-06-25|1994-09-06|DELIVER IN PERSON|TRUCK| realms. pending, bold theodolites |
-3554|175|5|1|32|34405.44|0.01|0.05|N|O|1995-09-28|1995-09-01|1995-10-07|NONE|RAIL|. blithely ironic t|
-3554|145|6|2|18|18812.52|0.03|0.00|N|O|1995-09-11|1995-08-12|1995-10-04|DELIVER IN PERSON|REG AIR| haggle. furiously fluffy requests ac|
-3554|192|3|3|41|44779.79|0.02|0.01|N|O|1995-07-13|1995-08-28|1995-07-27|DELIVER IN PERSON|MAIL|ent dependencies. sly|
-3555|166|3|1|11|11727.76|0.05|0.02|N|O|1996-09-25|1996-10-01|1996-10-03|NONE|FOB|oost caref|
-3555|79|10|2|15|14686.05|0.03|0.08|N|O|1996-07-13|1996-09-01|1996-08-02|TAKE BACK RETURN|RAIL|y across the pending a|
-3555|43|2|3|25|23576.00|0.09|0.07|N|O|1996-10-01|1996-08-23|1996-10-24|TAKE BACK RETURN|MAIL|sual packages. quickly |
-3555|5|6|4|19|17195.00|0.00|0.05|N|O|1996-09-08|1996-09-14|1996-10-01|COLLECT COD|REG AIR|leep special theodolit|
-3555|33|4|5|29|27057.87|0.07|0.04|N|O|1996-08-02|1996-09-04|1996-08-08|DELIVER IN PERSON|TRUCK|deas. carefully s|
-3555|28|3|6|33|30624.66|0.04|0.08|N|O|1996-09-20|1996-09-23|1996-10-05|TAKE BACK RETURN|AIR|fluffily regular a|
-3555|126|5|7|9|9235.08|0.07|0.02|N|O|1996-10-13|1996-10-02|1996-10-22|NONE|SHIP|are. slyly final foxes acro|
-3556|142|9|1|45|46896.30|0.05|0.06|A|F|1992-10-14|1992-12-21|1992-10-16|NONE|TRUCK|ckages boost quickl|
-3556|31|2|2|43|40034.29|0.02|0.06|R|F|1993-01-18|1992-11-09|1993-02-04|NONE|FOB|wake carefull|
-3556|87|8|3|28|27638.24|0.10|0.04|A|F|1993-01-06|1992-11-27|1993-01-16|NONE|MAIL|refully final instructions? ironic packa|
-3557|175|3|1|41|44081.97|0.01|0.07|R|F|1993-01-30|1992-12-31|1993-02-18|COLLECT COD|FOB|ideas breach c|
-3557|129|10|2|37|38077.44|0.03|0.05|R|F|1993-02-16|1993-01-05|1993-03-15|DELIVER IN PERSON|RAIL|gside of the ca|
-3558|87|8|1|8|7896.64|0.01|0.03|N|O|1996-05-31|1996-05-26|1996-06-25|COLLECT COD|AIR|? even requests sle|
-3558|10|7|2|28|25480.28|0.02|0.08|N|O|1996-06-02|1996-04-18|1996-06-24|COLLECT COD|TRUCK|l deposits |
-3558|187|8|3|3|3261.54|0.03|0.06|N|O|1996-05-19|1996-04-28|1996-05-26|DELIVER IN PERSON|RAIL|l, final deposits haggle. fina|
-3558|91|5|4|22|21803.98|0.06|0.03|N|O|1996-04-27|1996-04-19|1996-04-30|DELIVER IN PERSON|SHIP|refully ironic theodolites are fu|
-3558|29|8|5|38|35302.76|0.03|0.08|N|O|1996-05-29|1996-05-02|1996-06-09|COLLECT COD|RAIL|refully permanently iron|
-3558|72|1|6|17|16525.19|0.07|0.07|N|O|1996-03-14|1996-05-04|1996-04-05|NONE|RAIL|ithely unusual packa|
-3559|90|1|1|29|28712.61|0.00|0.07|R|F|1992-12-10|1992-12-03|1992-12-20|COLLECT COD|REG AIR|l, regular accounts wake flu|
-3584|11|8|1|4|3644.04|0.04|0.08|N|O|1997-08-16|1997-10-31|1997-08-28|DELIVER IN PERSON|TRUCK|nal packag|
-3584|160|8|2|23|24383.68|0.00|0.03|N|O|1997-09-10|1997-10-15|1997-09-30|COLLECT COD|TRUCK|l platelets until the asymptotes |
-3584|24|5|3|6|5544.12|0.03|0.06|N|O|1997-10-28|1997-11-09|1997-11-24|TAKE BACK RETURN|MAIL|deposits across the|
-3584|146|5|4|11|11507.54|0.06|0.02|N|O|1997-11-27|1997-10-15|1997-12-08|NONE|REG AIR|lithely slyly |
-3584|18|5|5|39|35802.39|0.09|0.07|N|O|1997-09-20|1997-10-31|1997-10-06|COLLECT COD|AIR|eposits. carefu|
-3585|122|1|1|21|21464.52|0.05|0.04|A|F|1994-12-04|1994-12-25|1995-01-01|TAKE BACK RETURN|TRUCK|ounts use. express, final platelets us|
-3585|19|10|2|40|36760.40|0.03|0.00|R|F|1995-01-22|1995-01-17|1995-02-07|TAKE BACK RETURN|RAIL|elets affix. even asymptotes play care|
-3585|112|2|3|11|11133.21|0.01|0.04|R|F|1995-01-04|1995-02-14|1995-01-15|NONE|MAIL|even packages|
-3585|48|1|4|33|31285.32|0.08|0.08|A|F|1994-12-14|1995-01-19|1994-12-22|NONE|RAIL|ironic dependencies serve furi|
-3585|25|8|5|13|12025.26|0.06|0.07|R|F|1995-03-15|1995-01-22|1995-03-17|DELIVER IN PERSON|AIR|ccording to the foxes. slyly iro|
-3585|94|7|6|7|6958.63|0.10|0.02|A|F|1994-12-13|1995-01-20|1995-01-05|TAKE BACK RETURN|TRUCK|dependencies sleep un|
-3585|42|1|7|45|42391.80|0.03|0.00|A|F|1995-01-20|1995-02-19|1995-02-11|DELIVER IN PERSON|MAIL|are blithely c|
-3586|194|7|1|2|2188.38|0.03|0.08|R|F|1994-02-10|1994-01-07|1994-03-03|DELIVER IN PERSON|RAIL|he even, unusual decoy|
-3586|84|5|2|29|28538.32|0.04|0.07|R|F|1994-03-06|1994-03-02|1994-03-13|DELIVER IN PERSON|RAIL| slyly unusual i|
-3586|58|3|3|2|1916.10|0.03|0.06|R|F|1994-03-22|1994-02-20|1994-04-08|NONE|REG AIR|unts. slyly final ideas agai|
-3586|84|5|4|33|32474.64|0.06|0.01|R|F|1994-01-24|1994-02-09|1994-02-07|NONE|TRUCK|refully across the fur|
-3586|108|1|5|8|8064.80|0.06|0.02|A|F|1994-03-29|1994-02-26|1994-04-02|NONE|FOB|theodolites hagg|
-3586|99|1|6|8|7992.72|0.09|0.01|A|F|1994-03-18|1994-01-17|1994-04-06|DELIVER IN PERSON|RAIL| ironic pinto beans cajole carefully theo|
-3586|123|4|7|33|33762.96|0.05|0.04|A|F|1994-02-11|1994-01-15|1994-03-03|NONE|REG AIR|iously regular pinto beans integrate|
-3587|197|10|1|5|5485.95|0.09|0.07|N|O|1996-09-03|1996-07-05|1996-09-11|DELIVER IN PERSON|SHIP|ithely regular decoys above the |
-3587|132|8|2|48|49542.24|0.00|0.03|N|O|1996-08-02|1996-07-02|1996-08-05|TAKE BACK RETURN|MAIL|beans. blithely final depe|
-3587|151|3|3|36|37841.40|0.05|0.05|N|O|1996-07-26|1996-06-16|1996-08-23|TAKE BACK RETURN|MAIL|ully regular excuse|
-3587|124|9|4|31|31747.72|0.03|0.01|N|O|1996-07-21|1996-07-01|1996-07-23|COLLECT COD|SHIP|press fluffily regul|
-3587|70|7|5|12|11640.84|0.06|0.03|N|O|1996-08-30|1996-07-04|1996-09-22|DELIVER IN PERSON|RAIL|g the even pinto beans. special,|
-3587|107|2|6|16|16113.60|0.01|0.03|N|O|1996-05-11|1996-06-19|1996-06-04|COLLECT COD|FOB|y ruthless dolphins to |
-3587|74|2|7|23|22403.61|0.07|0.05|N|O|1996-08-30|1996-07-01|1996-09-10|COLLECT COD|FOB|l multipliers sleep theodolites-- slyly |
-3588|91|5|1|28|27750.52|0.04|0.08|R|F|1995-05-03|1995-05-03|1995-05-14|DELIVER IN PERSON|TRUCK|special pinto beans cajole slyly. slyly |
-3588|88|9|2|6|5928.48|0.06|0.08|A|F|1995-04-09|1995-05-30|1995-04-10|TAKE BACK RETURN|MAIL|s. fluffily fluf|
-3588|159|10|3|45|47661.75|0.04|0.02|R|F|1995-05-07|1995-05-04|1995-05-28|TAKE BACK RETURN|TRUCK|ecial pains integrate blithely. reques|
-3588|127|10|4|22|22596.64|0.05|0.00|A|F|1995-04-08|1995-05-06|1995-04-27|NONE|RAIL|inal accounts. pending, bo|
-3588|55|3|5|28|26741.40|0.03|0.03|A|F|1995-04-23|1995-05-25|1995-04-28|DELIVER IN PERSON|TRUCK| express sheaves. unusual theodo|
-3588|110|3|6|37|37374.07|0.08|0.04|N|F|1995-06-17|1995-05-25|1995-06-24|TAKE BACK RETURN|RAIL|xcuses sleep quickly along th|
-3588|39|5|7|46|43195.38|0.08|0.07|A|F|1995-06-06|1995-05-08|1995-06-08|NONE|AIR| slyly ironic deposits sublate ab|
-3589|37|3|1|42|39355.26|0.08|0.08|R|F|1994-08-11|1994-07-17|1994-08-23|DELIVER IN PERSON|AIR|he blithely unusual pac|
-3590|176|6|1|10|10761.70|0.08|0.00|N|O|1995-07-17|1995-06-26|1995-08-12|TAKE BACK RETURN|SHIP|t the quickly ironic|
-3590|95|6|2|19|18906.71|0.03|0.03|N|O|1995-08-02|1995-06-20|1995-08-08|NONE|SHIP|special pinto beans. blithely reg|
-3590|96|9|3|43|42831.87|0.07|0.06|N|O|1995-07-12|1995-07-25|1995-07-16|DELIVER IN PERSON|SHIP|s could have to use|
-3590|56|8|4|26|24857.30|0.01|0.03|N|O|1995-07-08|1995-06-17|1995-08-02|DELIVER IN PERSON|SHIP|arefully along th|
-3590|191|2|5|37|40374.03|0.00|0.08|N|O|1995-09-01|1995-06-29|1995-09-10|NONE|SHIP|ccounts above the silent waters thrash f|
-3590|119|10|6|31|31592.41|0.03|0.01|N|O|1995-06-24|1995-07-12|1995-06-25|DELIVER IN PERSON|REG AIR|ve furiously final instructions. slyly regu|
-3590|194|7|7|44|48144.36|0.05|0.04|N|F|1995-06-07|1995-06-15|1995-06-27|NONE|MAIL|s sleep after the regular platelets. blit|
-3591|29|8|1|21|19509.42|0.03|0.03|A|F|1994-02-25|1994-02-02|1994-03-05|DELIVER IN PERSON|TRUCK|structions against |
-3591|69|6|2|24|23257.44|0.04|0.04|R|F|1993-12-26|1994-01-07|1994-01-25|COLLECT COD|FOB|ages. slyly regular dependencies cajo|
-3591|164|9|3|4|4256.64|0.01|0.03|A|F|1994-04-04|1994-02-19|1994-05-02|DELIVER IN PERSON|RAIL|he final packages. deposits serve quick|
-3591|153|4|4|49|51604.35|0.01|0.00|A|F|1994-03-21|1994-01-26|1994-03-28|COLLECT COD|AIR| mold slyly. bl|
-3616|197|9|1|30|32915.70|0.01|0.00|A|F|1994-05-05|1994-04-24|1994-05-12|TAKE BACK RETURN|FOB|ly ironic accounts unwind b|
-3616|138|9|2|28|29067.64|0.08|0.06|R|F|1994-02-20|1994-04-18|1994-03-05|DELIVER IN PERSON|REG AIR|ironic packages. furiously ev|
-3617|117|8|1|46|46787.06|0.03|0.02|N|O|1996-05-19|1996-05-14|1996-06-11|NONE|RAIL|ar theodolites. regu|
-3617|98|9|2|16|15969.44|0.05|0.02|N|O|1996-05-08|1996-06-03|1996-05-19|COLLECT COD|RAIL| slyly on th|
-3617|98|2|3|32|31938.88|0.00|0.06|N|O|1996-04-20|1996-06-07|1996-05-19|DELIVER IN PERSON|MAIL|uriously against the express accounts. ex|
-3617|41|10|4|22|20702.88|0.10|0.05|N|O|1996-07-11|1996-05-02|1996-07-25|NONE|REG AIR|uffily even accounts. packages sleep blithe|
-3617|137|8|5|11|11408.43|0.08|0.05|N|O|1996-07-16|1996-04-23|1996-07-28|COLLECT COD|MAIL|ly quickly even requests. final|
-3618|140|1|1|38|39525.32|0.08|0.00|N|O|1997-12-22|1998-02-23|1998-01-03|TAKE BACK RETURN|TRUCK|nts haggle fluffily above the regular |
-3618|144|5|2|48|50118.72|0.04|0.00|N|O|1998-03-12|1998-02-13|1998-03-29|DELIVER IN PERSON|TRUCK|tructions atop the ironi|
-3618|63|2|3|24|23113.44|0.01|0.04|N|O|1998-01-26|1998-01-15|1998-02-17|TAKE BACK RETURN|AIR|xpress acc|
-3618|161|2|4|26|27590.16|0.01|0.05|N|O|1998-03-23|1998-01-24|1998-04-15|DELIVER IN PERSON|AIR|iously regular deposits cajole ruthless|
-3619|96|7|1|49|48808.41|0.01|0.08|N|O|1997-01-22|1996-12-21|1997-02-17|TAKE BACK RETURN|MAIL| waters. furiously even deposits |
-3619|116|10|2|27|27434.97|0.08|0.04|N|O|1996-12-12|1997-01-18|1996-12-18|TAKE BACK RETURN|SHIP|pecial accounts haggle care|
-3619|48|7|3|46|43609.84|0.08|0.03|N|O|1997-01-31|1997-01-27|1997-02-11|NONE|SHIP|press, expres|
-3619|93|6|4|18|17875.62|0.04|0.02|N|O|1997-03-18|1996-12-24|1997-03-21|COLLECT COD|AIR|eodolites |
-3619|120|10|5|38|38764.56|0.05|0.08|N|O|1996-12-08|1997-02-03|1997-01-07|NONE|RAIL|theodolites detect abo|
-3619|152|3|6|43|45242.45|0.01|0.01|N|O|1997-01-25|1997-01-06|1997-02-07|COLLECT COD|RAIL| bold, even|
-3620|59|7|1|41|39321.05|0.03|0.08|N|O|1997-03-21|1997-04-20|1997-03-30|COLLECT COD|FOB|t attainments cajole qui|
-3620|167|4|2|16|17074.56|0.00|0.06|N|O|1997-05-17|1997-05-08|1997-06-03|COLLECT COD|SHIP|s. even, pending in|
-3621|17|8|1|29|26593.29|0.02|0.06|A|F|1993-08-03|1993-07-08|1993-08-10|DELIVER IN PERSON|FOB|al requests. fl|
-3621|93|5|2|13|12910.17|0.09|0.04|R|F|1993-08-30|1993-06-30|1993-09-01|NONE|REG AIR|r the unusual packages. brave theodoli|
-3621|164|9|3|45|47887.20|0.07|0.07|R|F|1993-08-09|1993-06-18|1993-09-05|DELIVER IN PERSON|AIR| doubt about the bold deposits. carefully|
-3621|44|3|4|20|18880.80|0.05|0.04|R|F|1993-05-27|1993-07-04|1993-06-22|TAKE BACK RETURN|SHIP|gular accounts use carefully with|
-3622|175|6|1|47|50532.99|0.09|0.00|N|O|1996-02-24|1996-02-22|1996-03-12|TAKE BACK RETURN|TRUCK|are careful|
-3622|89|10|2|4|3956.32|0.04|0.04|N|O|1996-02-03|1996-02-19|1996-02-16|TAKE BACK RETURN|TRUCK|lithely brave foxes. furi|
-3622|190|1|3|46|50148.74|0.07|0.07|N|O|1995-12-18|1996-01-23|1996-01-12|TAKE BACK RETURN|AIR|sits wake. blithe|
-3622|177|8|4|9|9694.53|0.08|0.05|N|O|1995-12-12|1996-02-09|1995-12-13|TAKE BACK RETURN|SHIP|arefully. furiously regular ideas n|
-3623|80|10|1|32|31362.56|0.05|0.00|N|O|1997-04-18|1997-03-15|1997-05-09|COLLECT COD|SHIP| courts. furiously regular ideas b|
-3623|117|4|2|33|33564.63|0.08|0.01|N|O|1997-03-17|1997-02-13|1997-04-02|TAKE BACK RETURN|TRUCK|odolites. blithely spe|
-3623|24|7|3|21|19404.42|0.02|0.02|N|O|1997-01-19|1997-03-18|1997-01-24|NONE|FOB|ress ideas are furio|
-3623|165|2|4|42|44736.72|0.05|0.06|N|O|1997-01-11|1997-03-24|1997-01-21|COLLECT COD|RAIL|g to the slyly regular packa|
-3623|88|9|5|30|29642.40|0.10|0.04|N|O|1997-04-04|1997-03-03|1997-05-01|NONE|RAIL| ironic somas sleep fluffily|
-3623|186|7|6|7|7603.26|0.01|0.02|N|O|1997-01-05|1997-03-26|1997-01-26|NONE|TRUCK|aves. slyly special packages cajole. fu|
-3623|140|6|7|13|13521.82|0.03|0.08|N|O|1997-01-02|1997-02-26|1997-01-26|DELIVER IN PERSON|SHIP|deas. furiously expres|
-3648|144|5|1|16|16706.24|0.02|0.06|A|F|1993-08-14|1993-08-14|1993-08-15|COLLECT COD|FOB|s nag packages.|
-3648|105|2|2|30|30153.00|0.00|0.01|R|F|1993-08-31|1993-09-06|1993-09-06|DELIVER IN PERSON|FOB| above the somas boost furious|
-3648|46|7|3|34|32165.36|0.10|0.00|A|F|1993-08-21|1993-07-25|1993-09-15|DELIVER IN PERSON|FOB| deposits are furiously. careful, |
-3648|13|10|4|16|14608.16|0.06|0.03|R|F|1993-07-27|1993-08-26|1993-08-24|DELIVER IN PERSON|FOB|uriously stealthy deposits haggle furi|
-3648|117|7|5|25|25427.75|0.06|0.03|R|F|1993-08-15|1993-08-25|1993-09-09|TAKE BACK RETURN|TRUCK|s requests. silent asymp|
-3648|169|10|6|14|14968.24|0.08|0.06|R|F|1993-10-02|1993-08-26|1993-10-09|COLLECT COD|AIR|sly pending excuses. carefully i|
-3648|195|6|7|49|53664.31|0.09|0.03|R|F|1993-06-27|1993-07-27|1993-07-24|TAKE BACK RETURN|FOB|egular instructions. slyly regular pinto|
-3649|5|6|1|25|22625.00|0.10|0.04|A|F|1994-10-27|1994-08-23|1994-11-05|TAKE BACK RETURN|TRUCK|special re|
-3649|89|10|2|23|22748.84|0.08|0.00|R|F|1994-09-26|1994-10-01|1994-09-28|NONE|REG AIR|rs promise blithe|
-3649|70|7|3|14|13580.98|0.02|0.04|A|F|1994-09-19|1994-08-17|1994-10-12|DELIVER IN PERSON|TRUCK|ithely bold accounts wake |
-3649|76|4|4|40|39042.80|0.00|0.08|R|F|1994-07-20|1994-08-30|1994-08-14|TAKE BACK RETURN|RAIL|luffy somas sleep quickly-- ironic de|
-3649|100|1|5|24|24002.40|0.05|0.03|A|F|1994-07-07|1994-08-20|1994-07-27|TAKE BACK RETURN|FOB|c accounts. quickly final theodo|
-3649|122|3|6|3|3066.36|0.10|0.04|A|F|1994-07-17|1994-08-10|1994-08-03|NONE|FOB|lly bold requests nag; |
-3650|136|2|1|30|31083.90|0.10|0.00|A|F|1992-08-26|1992-07-05|1992-09-01|DELIVER IN PERSON|SHIP|ckly special platelets. furiously sil|
-3650|128|9|2|43|44209.16|0.05|0.05|A|F|1992-09-07|1992-08-12|1992-09-10|COLLECT COD|TRUCK|gside of the quick|
-3650|2|9|3|1|902.00|0.04|0.06|A|F|1992-06-23|1992-07-18|1992-07-08|NONE|REG AIR|re about the pinto |
-3650|63|2|4|31|29854.86|0.10|0.08|R|F|1992-06-15|1992-07-01|1992-07-15|DELIVER IN PERSON|RAIL| against the ironic accounts cajol|
-3650|187|8|5|19|20656.42|0.05|0.04|R|F|1992-08-29|1992-08-09|1992-09-21|DELIVER IN PERSON|AIR|y even forges. fluffily furious accounts|
-3650|94|8|6|27|26840.43|0.07|0.08|A|F|1992-07-03|1992-07-23|1992-07-13|COLLECT COD|MAIL|ular requests snooze fluffily regular pi|
-3650|70|7|7|43|41713.01|0.10|0.07|A|F|1992-06-25|1992-07-09|1992-07-22|DELIVER IN PERSON|RAIL|structions use caref|
-3651|19|9|1|20|18380.20|0.01|0.04|N|O|1998-06-10|1998-06-06|1998-06-23|NONE|SHIP|tect quickly among the r|
-3651|155|7|2|24|25323.60|0.09|0.04|N|O|1998-06-22|1998-07-17|1998-07-10|DELIVER IN PERSON|RAIL|excuses haggle according to th|
-3651|113|10|3|41|41537.51|0.00|0.05|N|O|1998-05-10|1998-07-09|1998-05-13|NONE|RAIL|blithely. furiously |
-3651|110|5|4|27|27272.97|0.05|0.03|N|O|1998-05-03|1998-06-30|1998-05-05|DELIVER IN PERSON|RAIL| sleep blithely furiously do|
-3652|180|8|1|24|25924.32|0.05|0.03|N|O|1997-06-07|1997-04-07|1997-06-12|COLLECT COD|MAIL|the final p|
-3652|137|8|2|37|38373.81|0.02|0.05|N|O|1997-05-11|1997-04-06|1997-06-05|COLLECT COD|MAIL|osits haggle carefu|
-3652|163|8|3|39|41463.24|0.01|0.02|N|O|1997-03-10|1997-04-03|1997-03-21|NONE|REG AIR|y express instructions. un|
-3652|80|9|4|1|980.08|0.01|0.04|N|O|1997-04-20|1997-05-03|1997-05-18|DELIVER IN PERSON|SHIP| bold dependencies sublate. r|
-3653|145|4|1|38|39715.32|0.08|0.05|A|F|1994-06-26|1994-05-13|1994-07-13|NONE|REG AIR|ainst the |
-3653|64|1|2|29|27957.74|0.07|0.01|A|F|1994-04-11|1994-06-11|1994-04-29|COLLECT COD|RAIL|ording to the special, final|
-3653|181|2|3|17|18380.06|0.09|0.03|R|F|1994-06-24|1994-06-02|1994-07-17|DELIVER IN PERSON|RAIL|gle slyly regular|
-3653|186|7|4|9|9775.62|0.10|0.07|R|F|1994-04-03|1994-05-19|1994-04-10|COLLECT COD|FOB|slyly silent account|
-3653|188|9|5|41|44615.38|0.08|0.01|A|F|1994-06-18|1994-05-18|1994-06-20|COLLECT COD|RAIL|onic packages affix sly|
-3653|43|4|6|9|8487.36|0.05|0.03|A|F|1994-07-21|1994-05-31|1994-08-17|NONE|MAIL|tes: blithely bo|
-3653|49|6|7|2|1898.08|0.06|0.03|R|F|1994-06-02|1994-05-31|1994-06-29|NONE|FOB|n accounts. fina|
-3654|165|2|1|46|48997.36|0.08|0.05|A|F|1992-06-05|1992-08-19|1992-06-06|DELIVER IN PERSON|FOB|usly regular foxes. furio|
-3654|93|4|2|29|28799.61|0.07|0.06|A|F|1992-09-11|1992-07-20|1992-10-04|DELIVER IN PERSON|FOB|odolites detect. quickly r|
-3654|2|7|3|37|33374.00|0.07|0.05|A|F|1992-09-22|1992-07-20|1992-10-19|TAKE BACK RETURN|RAIL|unts doze bravely ab|
-3654|168|9|4|11|11749.76|0.08|0.00|A|F|1992-07-20|1992-07-30|1992-07-23|TAKE BACK RETURN|SHIP|quickly along the express, ironic req|
-3654|94|5|5|34|33799.06|0.04|0.00|R|F|1992-07-26|1992-08-26|1992-08-12|TAKE BACK RETURN|REG AIR| the quick|
-3654|107|4|6|20|20142.00|0.03|0.02|A|F|1992-07-30|1992-07-05|1992-08-05|COLLECT COD|SHIP|s sleep about the slyly |
-3654|173|1|7|45|48292.65|0.01|0.07|A|F|1992-09-15|1992-07-04|1992-09-20|DELIVER IN PERSON|FOB|sly ironic notornis nag slyly|
-3655|184|5|1|5|5420.90|0.03|0.04|R|F|1993-01-17|1992-12-31|1993-01-23|DELIVER IN PERSON|TRUCK|riously bold pinto be|
-3655|97|10|2|1|997.09|0.10|0.06|R|F|1992-10-24|1992-12-18|1992-11-07|DELIVER IN PERSON|AIR|arefully slow pinto beans are|
-3655|30|5|3|35|32551.05|0.01|0.04|R|F|1992-12-20|1992-11-16|1993-01-15|TAKE BACK RETURN|MAIL|blithely even accounts! furiously regular|
-3655|72|3|4|35|34022.45|0.04|0.07|R|F|1992-10-17|1992-12-23|1992-10-28|COLLECT COD|MAIL|ng foxes cajole fluffily slyly final fo|
-3680|177|6|1|48|51704.16|0.00|0.06|R|F|1993-01-16|1993-01-23|1993-01-19|COLLECT COD|FOB|packages. quickly fluff|
-3680|5|8|2|41|37105.00|0.00|0.04|A|F|1993-01-06|1993-03-02|1993-01-08|NONE|FOB|iously ironic platelets in|
-3680|56|4|3|33|31549.65|0.09|0.08|R|F|1993-03-16|1993-02-19|1993-04-05|NONE|FOB|ts. ironic, fina|
-3681|106|9|1|35|35213.50|0.03|0.08|R|F|1992-07-31|1992-05-18|1992-08-07|COLLECT COD|FOB|lyly special pinto |
-3682|61|10|1|6|5766.36|0.07|0.02|N|O|1997-05-06|1997-04-04|1997-05-11|NONE|AIR|ronic deposits wake slyly. ca|
-3682|116|7|2|18|18289.98|0.06|0.06|N|O|1997-04-30|1997-03-21|1997-05-10|NONE|FOB|regular dependencies|
-3682|47|10|3|17|16099.68|0.03|0.05|N|O|1997-02-12|1997-04-04|1997-02-22|COLLECT COD|FOB|, ironic packages wake a|
-3682|57|5|4|30|28711.50|0.09|0.05|N|O|1997-04-16|1997-04-16|1997-04-29|NONE|MAIL|he requests cajole quickly pending package|
-3683|101|4|1|35|35038.50|0.05|0.03|A|F|1993-05-31|1993-04-17|1993-06-14|NONE|SHIP| the furiously expr|
-3683|49|8|2|41|38910.64|0.01|0.06|A|F|1993-03-26|1993-05-06|1993-04-09|NONE|TRUCK|ress instructions. slyly express a|
-3683|100|3|3|23|23002.30|0.00|0.08|R|F|1993-07-02|1993-05-16|1993-07-30|NONE|TRUCK|xpress accounts sleep slyly re|
-3684|126|7|1|48|49253.76|0.04|0.06|A|F|1993-08-20|1993-09-02|1993-09-10|DELIVER IN PERSON|REG AIR|its boost alongside|
-3684|46|7|2|6|5676.24|0.06|0.08|R|F|1993-08-09|1993-10-05|1993-09-06|DELIVER IN PERSON|FOB|he silent requests. packages sleep fu|
-3684|163|8|3|19|20200.04|0.04|0.02|A|F|1993-10-19|1993-08-25|1993-11-02|COLLECT COD|FOB|e slyly carefully pending foxes. d|
-3684|135|1|4|13|13456.69|0.02|0.05|A|F|1993-07-23|1993-09-16|1993-08-06|NONE|TRUCK|ing, unusual pinto beans! thinly p|
-3685|47|4|1|37|35040.48|0.02|0.03|R|F|1992-03-11|1992-04-09|1992-04-05|DELIVER IN PERSON|TRUCK|ress attai|
-3685|58|6|2|7|6706.35|0.05|0.00|R|F|1992-05-16|1992-02-23|1992-05-17|DELIVER IN PERSON|FOB|sits. special asymptotes about the r|
-3685|134|5|3|38|39296.94|0.08|0.03|A|F|1992-05-17|1992-03-16|1992-06-06|TAKE BACK RETURN|TRUCK|thely unusual pack|
-3685|192|5|4|39|42595.41|0.10|0.05|R|F|1992-02-19|1992-04-06|1992-03-02|COLLECT COD|FOB|ic courts nag carefully after the |
-3685|56|7|5|37|35373.85|0.00|0.01|A|F|1992-03-02|1992-04-10|1992-03-04|NONE|FOB|. carefully sly requests are regular, regu|
-3686|122|5|1|7|7154.84|0.02|0.04|N|O|1998-07-15|1998-08-22|1998-07-30|DELIVER IN PERSON|TRUCK| furiously unusual accou|
-3686|200|2|2|38|41807.60|0.06|0.03|N|O|1998-09-04|1998-08-11|1998-09-19|DELIVER IN PERSON|AIR|y silent foxes! carefully ruthless cour|
-3686|45|6|3|31|29296.24|0.10|0.06|N|O|1998-09-09|1998-08-28|1998-10-09|COLLECT COD|MAIL|gle across the courts. furiously regu|
-3686|117|1|4|7|7119.77|0.10|0.01|N|O|1998-07-16|1998-09-02|1998-07-22|NONE|FOB|ake carefully carefully q|
-3687|145|4|1|32|33444.48|0.03|0.06|R|F|1993-05-07|1993-04-05|1993-05-25|DELIVER IN PERSON|AIR|deas cajole fo|
-3687|81|2|2|2|1962.16|0.00|0.08|R|F|1993-02-23|1993-03-25|1993-03-11|NONE|TRUCK| express requests. slyly regular depend|
-3687|174|4|3|10|10741.70|0.01|0.02|A|F|1993-02-11|1993-03-22|1993-03-09|NONE|FOB|ing pinto beans|
-3687|162|9|4|19|20181.04|0.02|0.05|A|F|1993-05-14|1993-04-24|1993-06-01|DELIVER IN PERSON|MAIL|ly final asymptotes according to t|
-3687|119|9|5|31|31592.41|0.07|0.08|A|F|1993-05-28|1993-03-20|1993-06-05|DELIVER IN PERSON|FOB|foxes cajole quickly about the furiously f|
-3712|141|4|1|27|28110.78|0.01|0.05|R|F|1992-02-01|1992-02-26|1992-03-02|TAKE BACK RETURN|SHIP|ctions. even accounts haggle alongside |
-3712|185|6|2|13|14107.34|0.03|0.03|R|F|1992-04-30|1992-02-11|1992-05-30|DELIVER IN PERSON|FOB|s around the furiously ironic account|
-3712|64|1|3|44|42418.64|0.01|0.01|A|F|1992-03-26|1992-02-19|1992-04-18|TAKE BACK RETURN|FOB|ously permanently regular req|
-3712|148|7|4|38|39829.32|0.01|0.06|A|F|1992-01-15|1992-03-24|1992-01-27|COLLECT COD|RAIL|s nag carefully-- even, reg|
-3713|112|6|1|41|41496.51|0.07|0.08|N|O|1998-05-11|1998-07-17|1998-05-22|COLLECT COD|RAIL|eposits wake blithely fina|
-3713|177|7|2|19|20466.23|0.04|0.04|N|O|1998-06-25|1998-07-24|1998-07-08|DELIVER IN PERSON|AIR|tructions serve blithely around the furi|
-3713|180|1|3|19|20523.42|0.03|0.02|N|O|1998-05-19|1998-07-06|1998-06-09|DELIVER IN PERSON|REG AIR|quests cajole careful|
-3713|169|10|4|45|48112.20|0.06|0.04|N|O|1998-06-15|1998-07-30|1998-07-14|DELIVER IN PERSON|MAIL|al pinto beans affix after the slyly |
-3713|90|1|5|46|45544.14|0.10|0.04|N|O|1998-08-22|1998-06-27|1998-08-31|NONE|MAIL|totes. carefully special theodolites s|
-3713|182|3|6|29|31383.22|0.09|0.03|N|O|1998-08-04|1998-06-13|1998-08-21|NONE|RAIL|the regular dugouts wake furiously sil|
-3713|130|1|7|14|14421.82|0.04|0.00|N|O|1998-07-19|1998-07-02|1998-07-28|DELIVER IN PERSON|SHIP|eposits impress according|
-3714|69|6|1|13|12597.78|0.07|0.03|N|O|1998-06-26|1998-06-17|1998-07-07|TAKE BACK RETURN|REG AIR| the furiously final|
-3714|146|3|2|14|14645.96|0.02|0.05|N|O|1998-05-30|1998-06-30|1998-05-31|DELIVER IN PERSON|RAIL|ending ideas. thinly unusual theodo|
-3714|159|10|3|16|16946.40|0.00|0.02|N|O|1998-05-25|1998-07-07|1998-06-17|TAKE BACK RETURN|AIR|ccounts cajole fu|
-3714|30|9|4|44|40921.32|0.04|0.02|N|O|1998-07-18|1998-07-10|1998-07-22|DELIVER IN PERSON|AIR|s. quickly ironic dugouts sublat|
-3715|97|1|1|13|12962.17|0.00|0.03|N|O|1996-05-11|1996-04-25|1996-06-09|TAKE BACK RETURN|SHIP|e quickly ironic|
-3715|169|6|2|16|17106.56|0.01|0.06|N|O|1996-06-28|1996-04-22|1996-06-30|TAKE BACK RETURN|AIR|usly regular pearls haggle final packages|
-3715|12|3|3|37|33744.37|0.05|0.02|N|O|1996-05-03|1996-04-30|1996-05-17|NONE|SHIP|ut the carefully expr|
-3716|32|8|1|10|9320.30|0.09|0.04|N|O|1997-12-02|1997-11-09|1997-12-14|TAKE BACK RETURN|SHIP|ts. quickly sly ideas slee|
-3716|194|5|2|39|42673.41|0.02|0.08|N|O|1997-11-27|1997-10-23|1997-12-24|COLLECT COD|REG AIR|even deposits.|
-3716|107|8|3|42|42298.20|0.02|0.08|N|O|1997-12-03|1997-10-12|1997-12-15|NONE|TRUCK| of the pend|
-3716|165|10|4|19|20238.04|0.05|0.08|N|O|1997-09-25|1997-10-18|1997-10-12|NONE|TRUCK|arefully unusual accounts. flu|
-3716|182|3|5|25|27054.50|0.06|0.05|N|O|1997-11-23|1997-10-24|1997-11-24|COLLECT COD|REG AIR|fully unusual accounts. carefu|
-3717|153|8|1|45|47391.75|0.07|0.04|N|O|1998-08-09|1998-08-18|1998-08-14|TAKE BACK RETURN|TRUCK|ests wake whithout the blithely final pl|
-3717|53|5|2|3|2859.15|0.01|0.07|N|O|1998-06-09|1998-07-31|1998-06-14|NONE|REG AIR|nside the regular packages sleep|
-3717|196|7|3|45|49328.55|0.05|0.08|N|O|1998-09-19|1998-07-22|1998-09-28|DELIVER IN PERSON|MAIL|s the blithely unu|
-3717|69|6|4|5|4845.30|0.06|0.03|N|O|1998-09-02|1998-08-20|1998-09-26|TAKE BACK RETURN|AIR|quickly among |
-3717|16|7|5|7|6412.07|0.09|0.02|N|O|1998-09-08|1998-07-18|1998-09-10|DELIVER IN PERSON|RAIL| after the packa|
-3717|64|1|6|38|36634.28|0.01|0.07|N|O|1998-07-10|1998-07-08|1998-07-29|COLLECT COD|RAIL|ly about the car|
-3717|106|7|7|28|28170.80|0.03|0.01|N|O|1998-07-25|1998-08-12|1998-08-16|COLLECT COD|RAIL|ts sleep q|
-3718|21|10|1|40|36840.80|0.01|0.04|N|O|1996-11-20|1996-12-17|1996-12-03|DELIVER IN PERSON|MAIL|out the express deposits|
-3718|163|8|2|16|17010.56|0.02|0.06|N|O|1996-11-11|1996-12-25|1996-11-12|COLLECT COD|TRUCK|slyly even accounts. blithely special acco|
-3718|70|5|3|8|7760.56|0.05|0.03|N|O|1996-12-06|1996-12-06|1996-12-15|TAKE BACK RETURN|AIR| the even deposits sleep carefully b|
-3719|22|5|1|35|32270.70|0.06|0.08|N|O|1997-06-11|1997-04-03|1997-06-15|TAKE BACK RETURN|TRUCK|ly foxes. pending braids haggle furio|
-3719|174|4|2|2|2148.34|0.02|0.08|N|O|1997-02-17|1997-04-25|1997-03-03|NONE|REG AIR|ccounts boost carefu|
-3719|182|3|3|12|12986.16|0.05|0.06|N|O|1997-06-10|1997-05-04|1997-07-09|TAKE BACK RETURN|REG AIR|grate according to the |
-3719|90|1|4|13|12871.17|0.02|0.00|N|O|1997-05-03|1997-04-16|1997-05-27|TAKE BACK RETURN|SHIP|iously. regular dep|
-3719|78|8|5|19|18583.33|0.06|0.08|N|O|1997-05-22|1997-03-20|1997-06-12|COLLECT COD|TRUCK|he regular ideas integrate acros|
-3719|142|5|6|43|44812.02|0.03|0.08|N|O|1997-05-08|1997-04-15|1997-06-06|COLLECT COD|RAIL|the furiously special pinto bean|
-3719|19|10|7|16|14704.16|0.10|0.01|N|O|1997-03-02|1997-03-18|1997-03-28|TAKE BACK RETURN|RAIL| express asymptotes. ir|
-3744|195|8|1|30|32855.70|0.05|0.06|A|F|1992-05-07|1992-02-12|1992-05-17|TAKE BACK RETURN|FOB|nts among |
-3745|137|8|1|18|18668.34|0.01|0.05|A|F|1993-10-17|1993-11-16|1993-11-13|DELIVER IN PERSON|SHIP| slyly bold pinto beans according to |
-3746|165|6|1|37|39410.92|0.07|0.00|A|F|1994-12-29|1994-10-25|1995-01-03|COLLECT COD|FOB|e of the careful|
-3746|144|7|2|28|29235.92|0.06|0.08|R|F|1994-09-20|1994-10-21|1994-09-27|DELIVER IN PERSON|FOB|s after the even, special requests|
-3746|188|9|3|3|3264.54|0.10|0.01|R|F|1994-11-03|1994-12-10|1994-11-12|NONE|MAIL| the silent ideas cajole carefully |
-3746|28|7|4|11|10208.22|0.00|0.05|R|F|1994-10-02|1994-11-19|1994-10-10|COLLECT COD|SHIP| ironic theodolites are among th|
-3747|141|10|1|42|43727.88|0.05|0.05|N|O|1996-11-10|1996-10-19|1996-11-19|TAKE BACK RETURN|REG AIR|y. blithely fina|
-3747|170|1|2|33|35315.61|0.01|0.03|N|O|1996-10-14|1996-11-12|1996-11-11|NONE|REG AIR| regular p|
-3747|139|10|3|30|31173.90|0.00|0.07|N|O|1996-12-16|1996-11-15|1996-12-17|NONE|RAIL|! furiously f|
-3747|33|9|4|21|19593.63|0.00|0.06|N|O|1996-11-18|1996-09-23|1996-11-26|TAKE BACK RETURN|AIR|ithely bold orbits mold furiously blit|
-3747|126|5|5|32|32835.84|0.08|0.05|N|O|1996-09-10|1996-11-04|1996-10-10|DELIVER IN PERSON|MAIL|quests shall h|
-3747|154|5|6|14|14758.10|0.08|0.07|N|O|1996-11-03|1996-10-29|1996-11-06|TAKE BACK RETURN|AIR|packages cajole carefu|
-3747|118|2|7|23|23416.53|0.00|0.04|N|O|1996-11-08|1996-11-10|1996-12-03|NONE|REG AIR|kages are ironic|
-3748|104|7|1|12|12049.20|0.06|0.01|N|O|1998-04-17|1998-04-15|1998-05-12|NONE|AIR|old reques|
-3748|165|4|2|24|25563.84|0.08|0.04|N|O|1998-06-07|1998-05-02|1998-06-21|DELIVER IN PERSON|TRUCK|al deposits. blithely|
-3748|197|1|3|19|20846.61|0.05|0.01|N|O|1998-04-23|1998-05-17|1998-05-23|COLLECT COD|RAIL|pinto beans run carefully quic|
-3748|187|8|4|5|5435.90|0.00|0.07|N|O|1998-06-29|1998-05-06|1998-07-12|DELIVER IN PERSON|MAIL| regular accounts sleep quickly-- furious|
-3748|147|4|5|21|21989.94|0.07|0.08|N|O|1998-03-30|1998-04-07|1998-04-05|TAKE BACK RETURN|MAIL|fix carefully furiously express ideas. furi|
-3749|173|3|1|11|11804.87|0.07|0.05|N|O|1995-06-25|1995-05-23|1995-07-10|TAKE BACK RETURN|RAIL|egular requests along the |
-3749|129|8|2|9|9262.08|0.08|0.05|A|F|1995-04-23|1995-04-18|1995-04-26|NONE|REG AIR|uses cajole blithely pla|
-3749|199|2|3|31|34074.89|0.00|0.05|N|F|1995-06-11|1995-05-20|1995-06-27|COLLECT COD|REG AIR|s. foxes sleep slyly unusual grouc|
-3749|131|2|4|7|7217.91|0.07|0.06|A|F|1995-03-31|1995-04-05|1995-04-11|NONE|TRUCK|he slyly ironic packages|
-3749|183|4|5|14|15164.52|0.02|0.00|N|F|1995-06-11|1995-05-19|1995-07-11|DELIVER IN PERSON|SHIP|press instruc|
-3749|54|6|6|10|9540.50|0.10|0.03|N|O|1995-06-24|1995-05-24|1995-07-18|COLLECT COD|SHIP|essly. regular pi|
-3750|134|10|1|37|38262.81|0.04|0.03|N|O|1995-07-08|1995-07-28|1995-07-28|DELIVER IN PERSON|REG AIR|usly busy account|
-3750|152|3|2|33|34720.95|0.05|0.03|N|O|1995-06-27|1995-06-20|1995-07-03|TAKE BACK RETURN|REG AIR|theodolites haggle. slyly pendin|
-3750|80|10|3|20|19601.60|0.09|0.05|N|F|1995-06-17|1995-06-06|1995-06-28|TAKE BACK RETURN|REG AIR|ss, ironic requests! fur|
-3750|166|1|4|33|35183.28|0.04|0.03|N|F|1995-06-15|1995-06-04|1995-06-29|COLLECT COD|RAIL|ep blithely according to the flu|
-3750|83|4|5|1|983.08|0.05|0.01|N|O|1995-07-24|1995-06-25|1995-08-21|DELIVER IN PERSON|REG AIR|l dolphins against the slyly|
-3750|113|7|6|47|47616.17|0.01|0.08|R|F|1995-05-11|1995-06-13|1995-06-02|TAKE BACK RETURN|FOB|slowly regular accounts. blithely ev|
-3751|172|2|1|37|39670.29|0.00|0.04|R|F|1994-04-30|1994-05-30|1994-05-30|NONE|REG AIR|ly express courts |
-3751|141|8|2|32|33316.48|0.03|0.05|R|F|1994-05-05|1994-07-02|1994-06-02|COLLECT COD|MAIL|rthogs could have to slee|
-3751|65|2|3|45|43427.70|0.08|0.06|R|F|1994-05-27|1994-06-19|1994-06-14|NONE|RAIL|according to |
-3751|14|4|4|39|35646.39|0.07|0.01|A|F|1994-08-16|1994-07-11|1994-09-12|COLLECT COD|TRUCK|refully according to the iro|
-3751|58|3|5|12|11496.60|0.02|0.03|A|F|1994-08-09|1994-06-30|1994-08-12|TAKE BACK RETURN|TRUCK|accounts wake furious|
-3751|76|5|6|39|38066.73|0.02|0.08|R|F|1994-08-01|1994-06-01|1994-08-26|COLLECT COD|SHIP|to beans. pending, express packages c|
-3776|3|10|1|39|35217.00|0.05|0.01|R|F|1993-01-03|1993-02-05|1993-01-08|COLLECT COD|FOB|yly blithely pending packages|
-3776|159|4|2|14|14828.10|0.06|0.08|R|F|1992-12-30|1993-02-12|1993-01-27|DELIVER IN PERSON|RAIL|y special ideas. express packages pr|
-3776|141|8|3|49|51015.86|0.01|0.08|R|F|1992-12-03|1993-02-16|1992-12-28|TAKE BACK RETURN|RAIL|equests. final, thin grouches |
-3776|92|6|4|49|48612.41|0.08|0.05|A|F|1993-02-11|1993-01-06|1993-02-27|COLLECT COD|MAIL|es: careful warthogs haggle fluffi|
-3777|100|4|1|11|11001.10|0.02|0.03|A|F|1994-04-09|1994-06-05|1994-04-14|NONE|FOB|ld ideas. even theodolites|
-3777|8|5|2|10|9080.00|0.03|0.01|R|F|1994-05-22|1994-05-29|1994-06-13|COLLECT COD|RAIL|le. ironic depths a|
-3777|166|7|3|18|19190.88|0.10|0.06|R|F|1994-05-04|1994-05-23|1994-05-22|COLLECT COD|REG AIR|eful packages use slyly: even deposits |
-3777|18|9|4|35|32130.35|0.10|0.04|A|F|1994-05-25|1994-05-26|1994-06-13|COLLECT COD|AIR|s. carefully express asymptotes accordi|
-3777|98|10|5|14|13973.26|0.04|0.05|R|F|1994-05-06|1994-06-24|1994-05-31|NONE|TRUCK|ording to the iro|
-3778|57|2|1|21|20098.05|0.01|0.06|R|F|1993-05-27|1993-07-10|1993-06-03|COLLECT COD|REG AIR|ts. blithely special theodoli|
-3778|29|10|2|32|29728.64|0.09|0.00|A|F|1993-06-22|1993-08-18|1993-07-03|TAKE BACK RETURN|MAIL|tes affix carefully above the |
-3778|94|6|3|41|40757.69|0.05|0.00|R|F|1993-06-21|1993-07-27|1993-07-15|COLLECT COD|FOB|e the furiously ironi|
-3778|169|4|4|28|29936.48|0.03|0.05|R|F|1993-08-18|1993-07-10|1993-09-06|TAKE BACK RETURN|REG AIR|y silent orbits print carefully against |
-3778|98|2|5|28|27946.52|0.01|0.06|R|F|1993-09-02|1993-08-08|1993-10-02|DELIVER IN PERSON|FOB|r deposits. theodol|
-3778|20|7|6|26|23920.52|0.00|0.01|A|F|1993-09-24|1993-07-06|1993-10-22|NONE|TRUCK| against the fluffily|
-3778|105|6|7|49|49249.90|0.02|0.04|A|F|1993-06-13|1993-08-08|1993-07-04|DELIVER IN PERSON|MAIL|ans. furiously |
-3779|46|5|1|28|26489.12|0.04|0.05|N|O|1997-05-06|1997-04-01|1997-05-18|TAKE BACK RETURN|AIR|s. close requests sleep|
-3779|110|3|2|5|5050.55|0.07|0.03|N|O|1997-01-07|1997-03-26|1997-02-05|DELIVER IN PERSON|AIR|heodolites. slyly regular a|
-3780|127|8|1|25|25678.00|0.08|0.04|N|O|1996-06-27|1996-07-02|1996-07-22|NONE|AIR|l, unusual |
-3780|190|1|2|40|43607.60|0.10|0.04|N|O|1996-06-06|1996-05-29|1996-07-01|COLLECT COD|SHIP|gular deposits-- furiously regular |
-3781|14|5|1|48|43872.48|0.02|0.06|N|O|1996-08-22|1996-08-13|1996-09-15|NONE|REG AIR|equests may cajole careful|
-3781|188|9|2|39|42439.02|0.10|0.00|N|O|1996-08-20|1996-08-16|1996-09-01|DELIVER IN PERSON|REG AIR|unts are carefully. ir|
-3781|30|1|3|17|15810.51|0.01|0.03|N|O|1996-06-23|1996-09-04|1996-07-19|TAKE BACK RETURN|REG AIR|. theodolite|
-3781|31|2|4|15|13965.45|0.05|0.00|N|O|1996-08-23|1996-08-08|1996-09-06|TAKE BACK RETURN|AIR| carefully blithe|
-3781|16|6|5|23|21068.23|0.09|0.08|N|O|1996-09-05|1996-08-18|1996-09-27|DELIVER IN PERSON|SHIP|pendencies are b|
-3782|27|10|1|29|26883.58|0.01|0.07|N|O|1996-09-17|1996-10-03|1996-10-07|DELIVER IN PERSON|REG AIR|quickly unusual pinto beans. carefully fina|
-3782|153|1|2|10|10531.50|0.03|0.05|N|O|1996-09-07|1996-11-19|1996-10-04|COLLECT COD|FOB|ven pinto b|
-3782|136|7|3|30|31083.90|0.06|0.06|N|O|1996-12-19|1996-10-31|1997-01-14|TAKE BACK RETURN|MAIL|slyly even pinto beans hag|
-3782|117|7|4|34|34581.74|0.02|0.06|N|O|1996-11-07|1996-10-22|1996-11-19|DELIVER IN PERSON|MAIL|gage after the even|
-3782|130|3|5|40|41205.20|0.09|0.04|N|O|1996-12-16|1996-11-22|1997-01-01|COLLECT COD|AIR|s instructions. regular accou|
-3783|167|4|1|36|38417.76|0.04|0.08|R|F|1993-12-17|1994-02-26|1994-01-03|DELIVER IN PERSON|SHIP|ites haggle among the carefully unusu|
-3783|73|3|2|36|35030.52|0.02|0.02|R|F|1994-03-02|1994-02-09|1994-03-15|COLLECT COD|TRUCK|egular accounts|
-3783|85|6|3|50|49254.00|0.04|0.01|R|F|1994-03-14|1994-01-09|1994-04-10|DELIVER IN PERSON|FOB|he furiously regular deposits. |
-3783|27|6|4|37|34299.74|0.10|0.05|R|F|1993-12-09|1994-02-17|1993-12-30|COLLECT COD|REG AIR|ing to the ideas. regular accounts de|
-3808|43|10|1|28|26405.12|0.02|0.01|R|F|1994-05-27|1994-06-18|1994-06-22|TAKE BACK RETURN|FOB|lly final accounts alo|
-3808|127|6|2|47|48274.64|0.04|0.08|R|F|1994-06-12|1994-06-03|1994-07-02|COLLECT COD|TRUCK|fully for the quickly final deposits: flu|
-3808|31|2|3|45|41896.35|0.00|0.03|R|F|1994-07-03|1994-05-29|1994-07-14|TAKE BACK RETURN|REG AIR| carefully special|
-3808|100|1|4|34|34003.40|0.07|0.04|R|F|1994-08-13|1994-07-22|1994-08-31|DELIVER IN PERSON|FOB| pearls will have to |
-3808|155|7|5|29|30599.35|0.08|0.03|A|F|1994-06-22|1994-05-26|1994-07-06|TAKE BACK RETURN|TRUCK| deposits across the pac|
-3808|168|5|6|44|46999.04|0.06|0.06|A|F|1994-06-07|1994-06-04|1994-06-25|NONE|REG AIR|the blithely regular foxes. even, final |
-3809|191|3|1|17|18550.23|0.10|0.04|N|O|1996-08-14|1996-07-05|1996-09-04|DELIVER IN PERSON|FOB|es detect furiously sil|
-3809|133|4|2|32|33060.16|0.01|0.02|N|O|1996-07-03|1996-06-01|1996-07-25|COLLECT COD|SHIP|xcuses would boost against the fluffily eve|
-3809|105|6|3|46|46234.60|0.10|0.06|N|O|1996-08-20|1996-06-01|1996-08-24|TAKE BACK RETURN|TRUCK|l asymptotes. special |
-3809|178|9|4|43|46361.31|0.00|0.04|N|O|1996-05-06|1996-06-22|1996-06-05|TAKE BACK RETURN|TRUCK|yly ironic decoys; regular, iron|
-3810|184|5|1|49|53124.82|0.05|0.01|R|F|1992-11-27|1992-10-30|1992-12-16|COLLECT COD|AIR|cajole. fur|
-3810|169|8|2|18|19244.88|0.01|0.04|A|F|1992-11-28|1992-11-15|1992-12-27|DELIVER IN PERSON|SHIP|s. furiously careful deposi|
-3810|137|3|3|41|42522.33|0.08|0.08|A|F|1992-10-26|1992-10-27|1992-11-05|COLLECT COD|SHIP|l requests boost slyly along the slyl|
-3810|182|3|4|11|11903.98|0.06|0.04|A|F|1992-12-18|1992-12-11|1993-01-15|DELIVER IN PERSON|MAIL| the pending pinto beans. expr|
-3811|164|3|1|24|25539.84|0.04|0.02|N|O|1998-07-13|1998-05-16|1998-08-12|TAKE BACK RETURN|TRUCK|deposits. slyly regular accounts cajo|
-3811|166|5|2|2|2132.32|0.01|0.08|N|O|1998-06-16|1998-06-16|1998-06-23|NONE|MAIL|slyly fluff|
-3811|43|6|3|19|17917.76|0.02|0.06|N|O|1998-07-20|1998-06-14|1998-07-29|NONE|MAIL|s boost blithely furiou|
-3811|171|1|4|50|53558.50|0.08|0.03|N|O|1998-07-28|1998-07-06|1998-08-16|COLLECT COD|FOB|ts are slyly fluffy ideas. furiou|
-3811|182|3|5|23|24890.14|0.00|0.04|N|O|1998-08-13|1998-07-09|1998-08-29|COLLECT COD|AIR|nstructions sleep quickly. slyly final |
-3811|2|7|6|35|31570.00|0.04|0.07|N|O|1998-04-17|1998-06-30|1998-04-25|NONE|REG AIR|yly final dolphins? quickly ironic frets|
-3812|145|4|1|33|34489.62|0.00|0.05|N|O|1996-10-10|1996-10-05|1996-10-15|TAKE BACK RETURN|MAIL|posits engage. ironic, regular p|
-3812|173|2|2|33|35414.61|0.06|0.03|N|O|1996-10-05|1996-10-13|1996-10-22|TAKE BACK RETURN|MAIL|inal excuses d|
-3813|176|7|1|37|39818.29|0.05|0.04|N|O|1998-10-13|1998-09-19|1998-10-28|NONE|REG AIR|ravely special packages haggle p|
-3813|123|2|2|39|39901.68|0.05|0.00|N|O|1998-08-30|1998-08-12|1998-09-29|COLLECT COD|FOB|y ideas. final ideas about the sp|
-3814|131|7|1|7|7217.91|0.02|0.02|R|F|1995-05-01|1995-05-09|1995-05-28|DELIVER IN PERSON|REG AIR|es sleep furiou|
-3814|173|3|2|14|15024.38|0.01|0.00|R|F|1995-03-17|1995-05-10|1995-04-16|DELIVER IN PERSON|AIR|sits along the final, ironic deposit|
-3814|168|7|3|36|38453.76|0.06|0.02|N|O|1995-06-19|1995-04-18|1995-06-28|COLLECT COD|SHIP|beans cajole quickly sl|
-3814|66|7|4|20|19321.20|0.04|0.07|R|F|1995-02-23|1995-03-26|1995-03-04|DELIVER IN PERSON|SHIP|. doggedly ironic deposits will have to wa|
-3814|107|2|5|15|15106.50|0.03|0.04|N|O|1995-06-23|1995-03-25|1995-07-09|COLLECT COD|SHIP| carefully final deposits haggle slyly|
-3814|83|4|6|47|46204.76|0.09|0.05|A|F|1995-04-16|1995-04-03|1995-05-14|DELIVER IN PERSON|AIR|nusual requests. bli|
-3814|132|8|7|12|12385.56|0.10|0.01|R|F|1995-03-18|1995-04-16|1995-03-20|TAKE BACK RETURN|REG AIR|ages cajole. packages haggle. final|
-3815|77|7|1|3|2931.21|0.07|0.00|N|O|1997-11-16|1997-11-15|1997-11-30|NONE|FOB|egular, express ideas. ironic, final dep|
-3815|130|5|2|11|11331.43|0.02|0.04|N|O|1997-11-01|1997-11-05|1997-11-27|COLLECT COD|TRUCK|sleep blithe|
-3840|187|8|1|45|48923.10|0.02|0.08|N|O|1998-10-31|1998-09-19|1998-11-30|DELIVER IN PERSON|TRUCK|o beans are. carefully final courts x|
-3840|46|9|2|12|11352.48|0.04|0.07|N|O|1998-10-02|1998-08-19|1998-10-20|TAKE BACK RETURN|RAIL|xpress pinto beans. accounts a|
-3840|73|4|3|45|43788.15|0.02|0.05|N|O|1998-10-12|1998-10-12|1998-10-28|TAKE BACK RETURN|FOB|onic, even packages are. pe|
-3840|148|9|4|41|42973.74|0.07|0.02|N|O|1998-07-21|1998-10-08|1998-08-01|TAKE BACK RETURN|MAIL| nag slyly? slyly pending accounts |
-3840|173|3|5|7|7512.19|0.09|0.08|N|O|1998-09-17|1998-09-20|1998-10-14|DELIVER IN PERSON|MAIL|. furiously final gifts sleep carefully pin|
-3840|107|8|6|33|33234.30|0.10|0.02|N|O|1998-07-29|1998-10-06|1998-08-04|DELIVER IN PERSON|SHIP|hely silent deposits w|
-3841|157|5|1|1|1057.15|0.06|0.03|A|F|1994-10-10|1994-11-12|1994-10-21|DELIVER IN PERSON|AIR| boost even re|
-3841|21|10|2|31|28551.62|0.09|0.03|A|F|1995-01-24|1994-11-25|1995-02-20|TAKE BACK RETURN|SHIP|n theodolites shall promise carefully. qui|
-3841|152|10|3|40|42086.00|0.06|0.02|A|F|1995-02-02|1994-11-30|1995-02-14|TAKE BACK RETURN|MAIL|its. quickly regular ideas nag carefully|
-3841|50|1|4|9|8550.45|0.10|0.07|A|F|1994-11-21|1994-12-26|1994-11-26|NONE|FOB|s according to the courts shall nag s|
-3841|176|7|5|3|3228.51|0.04|0.02|R|F|1994-10-24|1994-12-07|1994-11-09|COLLECT COD|FOB|foxes integrate |
-3841|163|8|6|48|51031.68|0.03|0.00|R|F|1994-11-23|1994-11-22|1994-12-01|DELIVER IN PERSON|FOB| according to the regular, |
-3842|162|7|1|28|29740.48|0.05|0.07|A|F|1992-06-17|1992-06-03|1992-06-24|DELIVER IN PERSON|TRUCK|s excuses thrash carefully.|
-3842|122|1|2|21|21464.52|0.07|0.05|R|F|1992-07-15|1992-06-02|1992-07-21|NONE|RAIL|r pinto be|
-3842|194|7|3|28|30637.32|0.00|0.00|A|F|1992-06-20|1992-05-22|1992-07-13|DELIVER IN PERSON|MAIL|lly alongside of the|
-3842|88|9|4|15|14821.20|0.07|0.01|A|F|1992-06-26|1992-06-23|1992-07-09|COLLECT COD|MAIL|ave packages are slyl|
-3842|68|3|5|13|12584.78|0.09|0.02|R|F|1992-04-13|1992-06-22|1992-05-11|COLLECT COD|RAIL|t blithely. busily regular accounts alon|
-3842|107|4|6|24|24170.40|0.08|0.08|R|F|1992-08-05|1992-06-29|1992-08-16|TAKE BACK RETURN|MAIL|phins are quickly|
-3843|15|6|1|7|6405.07|0.10|0.03|N|O|1997-02-13|1997-02-21|1997-02-20|TAKE BACK RETURN|SHIP|slyly even instructions. furiously eve|
-3843|1|4|2|30|27030.00|0.01|0.05|N|O|1997-02-14|1997-03-25|1997-03-13|DELIVER IN PERSON|AIR| wake. slyly even packages boost |
-3844|135|1|1|2|2070.26|0.03|0.07|R|F|1995-02-24|1995-02-03|1995-03-18|TAKE BACK RETURN|AIR|es haggle final acco|
-3844|102|7|2|5|5010.50|0.10|0.03|R|F|1995-04-29|1995-02-24|1995-05-05|TAKE BACK RETURN|RAIL| unwind quickly about the pending, i|
-3845|34|5|1|44|41097.32|0.01|0.08|A|F|1992-07-20|1992-07-15|1992-07-24|DELIVER IN PERSON|REG AIR|s haggle among the fluffily regula|
-3845|24|7|2|16|14784.32|0.09|0.05|A|F|1992-08-08|1992-06-08|1992-08-26|DELIVER IN PERSON|SHIP|ely bold ideas use. ex|
-3845|59|1|3|17|16303.85|0.08|0.01|A|F|1992-06-12|1992-07-05|1992-06-26|TAKE BACK RETURN|RAIL|counts haggle. reg|
-3845|46|9|4|1|946.04|0.04|0.05|R|F|1992-05-21|1992-06-07|1992-06-17|COLLECT COD|REG AIR| blithely ironic t|
-3845|196|7|5|27|29597.13|0.00|0.05|R|F|1992-08-20|1992-07-17|1992-09-02|COLLECT COD|REG AIR|kages. care|
-3845|105|8|6|30|30153.00|0.09|0.06|R|F|1992-08-21|1992-07-07|1992-08-25|COLLECT COD|FOB|counts do wake blithely. ironic requests |
-3846|61|10|1|15|14415.90|0.06|0.03|N|O|1998-02-17|1998-04-27|1998-02-21|NONE|REG AIR|uternes. carefully even|
-3846|171|2|2|30|32135.10|0.08|0.07|N|O|1998-05-01|1998-03-12|1998-05-20|TAKE BACK RETURN|FOB|deposits according to the fur|
-3846|15|5|3|49|44835.49|0.08|0.07|N|O|1998-02-14|1998-03-22|1998-02-17|DELIVER IN PERSON|RAIL|efully even packages against the blithe|
-3846|165|10|4|33|35150.28|0.05|0.00|N|O|1998-05-12|1998-03-14|1998-05-14|DELIVER IN PERSON|TRUCK|s instructions are. fu|
-3847|189|10|1|7|7624.26|0.08|0.00|A|F|1993-05-06|1993-06-06|1993-05-22|COLLECT COD|MAIL| about the blithely daring Tiresias. fl|
-3872|181|2|1|28|30273.04|0.10|0.04|N|O|1996-11-05|1996-11-10|1996-11-24|DELIVER IN PERSON|REG AIR|t after the carefully ironic excuses. f|
-3872|17|4|2|38|34846.38|0.04|0.05|N|O|1996-10-18|1996-12-03|1996-11-15|TAKE BACK RETURN|AIR|iously against the ironic, unusual a|
-3872|169|4|3|18|19244.88|0.07|0.07|N|O|1996-12-25|1996-10-24|1997-01-08|TAKE BACK RETURN|SHIP|s. regular, brave accounts sleep blith|
-3872|11|2|4|41|37351.41|0.07|0.03|N|O|1996-11-23|1996-11-12|1996-12-03|COLLECT COD|REG AIR|ly regular epitaphs boost|
-3872|70|7|5|42|40742.94|0.03|0.00|N|O|1997-01-03|1996-10-12|1997-01-16|COLLECT COD|MAIL|s the furio|
-3872|140|6|6|40|41605.60|0.07|0.05|N|O|1997-01-02|1996-10-29|1997-01-14|NONE|REG AIR|nts? regularly ironic ex|
-3873|68|3|1|19|18393.14|0.04|0.04|N|O|1998-05-15|1998-05-10|1998-05-17|NONE|FOB|y final ac|
-3873|145|8|2|44|45986.16|0.05|0.05|N|O|1998-07-23|1998-05-22|1998-08-14|COLLECT COD|AIR|yly even platelets wake. |
-3873|140|6|3|29|30164.06|0.01|0.04|N|O|1998-06-22|1998-05-20|1998-07-05|COLLECT COD|REG AIR|olphins af|
-3874|170|7|1|21|22473.57|0.09|0.08|R|F|1993-06-19|1993-07-20|1993-07-08|DELIVER IN PERSON|SHIP| requests cajole fluff|
-3874|19|6|2|48|44112.48|0.06|0.07|R|F|1993-06-13|1993-07-20|1993-06-20|NONE|RAIL| ideas throughout |
-3875|81|2|1|24|23545.92|0.02|0.08|N|O|1997-10-15|1997-11-27|1997-11-09|COLLECT COD|AIR|ecial packages. |
-3875|113|7|2|49|49642.39|0.04|0.04|N|O|1997-10-18|1997-10-13|1997-10-19|NONE|MAIL|sleep furiously about the deposits. quickl|
-3876|141|8|1|12|12493.68|0.06|0.07|N|O|1996-09-16|1996-10-23|1996-10-05|TAKE BACK RETURN|REG AIR|y above the pending tithes. blithely ironi|
-3876|140|6|2|37|38485.18|0.00|0.03|N|O|1996-11-30|1996-10-18|1996-12-18|DELIVER IN PERSON|AIR|t dependencies. blithely final packages u|
-3876|127|8|3|41|42111.92|0.02|0.04|N|O|1996-10-15|1996-10-17|1996-10-19|NONE|AIR| quickly blit|
-3877|50|7|1|12|11400.60|0.06|0.01|R|F|1993-05-30|1993-08-09|1993-06-24|TAKE BACK RETURN|FOB|nal requests. even requests are. pac|
-3877|145|4|2|47|49121.58|0.05|0.00|A|F|1993-08-01|1993-08-16|1993-08-04|NONE|FOB|furiously quick requests nag along the theo|
-3877|80|8|3|44|43123.52|0.09|0.00|A|F|1993-06-07|1993-07-15|1993-07-06|DELIVER IN PERSON|REG AIR|elets. quickly regular accounts caj|
-3877|148|9|4|36|37733.04|0.06|0.01|A|F|1993-07-27|1993-07-13|1993-08-11|DELIVER IN PERSON|AIR|lithely about the dogged ideas. ac|
-3877|5|6|5|41|37105.00|0.03|0.07|A|F|1993-06-30|1993-07-20|1993-07-01|DELIVER IN PERSON|FOB|integrate against the expres|
-3877|123|4|6|7|7161.84|0.04|0.08|R|F|1993-06-14|1993-07-09|1993-06-28|NONE|TRUCK|lar dolphins cajole silently |
-3878|200|1|1|6|6601.20|0.07|0.04|N|O|1997-06-21|1997-05-22|1997-07-01|COLLECT COD|FOB|s. regular instru|
-3878|88|9|2|13|12845.04|0.01|0.06|N|O|1997-06-08|1997-06-03|1997-06-25|TAKE BACK RETURN|TRUCK|leep ruthlessly about the carefu|
-3878|41|8|3|20|18820.80|0.08|0.03|N|O|1997-06-20|1997-05-24|1997-07-20|TAKE BACK RETURN|MAIL|the furiously careful ideas cajole slyly sl|
-3878|152|3|4|20|21043.00|0.01|0.07|N|O|1997-07-13|1997-05-22|1997-07-20|NONE|FOB|about the carefully ironic pa|
-3879|126|5|1|45|46175.40|0.10|0.08|N|O|1996-03-18|1996-01-03|1996-04-03|COLLECT COD|RAIL|ly according to the expr|
-3879|45|4|2|35|33076.40|0.00|0.07|N|O|1995-12-08|1996-01-23|1995-12-28|TAKE BACK RETURN|MAIL|o beans. accounts cajole furiously. re|
-3904|38|4|1|22|20636.66|0.04|0.03|N|O|1998-02-02|1998-02-09|1998-02-10|TAKE BACK RETURN|REG AIR|structions cajole carefully. carefully f|
-3904|184|5|2|19|20599.42|0.09|0.01|N|O|1998-02-10|1998-02-13|1998-02-20|TAKE BACK RETURN|AIR| excuses sleep slyly according to th|
-3905|101|8|1|43|43047.30|0.07|0.08|A|F|1994-03-30|1994-02-18|1994-04-09|DELIVER IN PERSON|REG AIR|uses are care|
-3905|116|10|2|7|7112.77|0.03|0.00|R|F|1994-03-01|1994-02-19|1994-03-11|DELIVER IN PERSON|AIR|ully furiously furious packag|
-3905|170|7|3|6|6421.02|0.07|0.02|R|F|1994-04-07|1994-03-07|1994-04-21|DELIVER IN PERSON|RAIL|ow furiously. deposits wake ironic |
-3906|153|1|1|42|44232.30|0.00|0.04|R|F|1992-09-03|1992-07-22|1992-09-04|COLLECT COD|RAIL|jole blithely after the furiously regular |
-3906|40|1|2|50|47002.00|0.01|0.07|R|F|1992-09-24|1992-08-24|1992-09-29|NONE|MAIL|ke slyly. stealt|
-3906|180|9|3|15|16202.70|0.06|0.02|R|F|1992-07-30|1992-08-26|1992-08-02|TAKE BACK RETURN|FOB|dependencies at the |
-3906|59|10|4|36|34525.80|0.08|0.08|A|F|1992-08-07|1992-08-08|1992-08-24|NONE|SHIP|y. ironic deposits haggle sl|
-3907|112|6|1|41|41496.51|0.06|0.02|A|F|1992-09-13|1992-10-23|1992-09-29|COLLECT COD|MAIL|ackages wake along the carefully regul|
-3907|145|4|2|41|42850.74|0.03|0.00|A|F|1992-10-25|1992-10-17|1992-11-01|TAKE BACK RETURN|RAIL|s above the unusual ideas sleep furiousl|
-3907|52|4|3|45|42842.25|0.02|0.07|R|F|1992-09-21|1992-09-19|1992-10-18|COLLECT COD|REG AIR| about the regular pac|
-3907|176|5|4|48|51656.16|0.05|0.07|A|F|1992-09-24|1992-10-16|1992-10-06|DELIVER IN PERSON|TRUCK|nt asymptotes lose across th|
-3907|62|3|5|22|21165.32|0.09|0.01|R|F|1992-09-20|1992-10-30|1992-09-29|TAKE BACK RETURN|TRUCK|ly. furiously unusual deposits use afte|
-3907|126|9|6|34|34888.08|0.02|0.02|R|F|1992-09-06|1992-10-08|1992-09-12|COLLECT COD|FOB| requests according to the slyly pending |
-3907|110|5|7|8|8080.88|0.10|0.01|A|F|1992-09-18|1992-10-29|1992-09-27|NONE|REG AIR|furiously final packages.|
-3908|92|4|1|50|49604.50|0.05|0.04|R|F|1993-06-19|1993-04-27|1993-07-05|DELIVER IN PERSON|MAIL| even accounts wake |
-3908|148|9|2|8|8385.12|0.06|0.03|A|F|1993-03-12|1993-04-13|1993-03-22|DELIVER IN PERSON|SHIP|r instructions was requests. ironically |
-3909|178|6|1|30|32345.10|0.03|0.07|N|O|1998-10-17|1998-10-14|1998-10-28|COLLECT COD|TRUCK|ly even deposits across the ironic notorni|
-3909|191|4|2|46|50194.74|0.03|0.01|N|O|1998-10-08|1998-10-15|1998-10-24|NONE|FOB|the blithely unusual ideas|
-3910|139|10|1|10|10391.30|0.00|0.08|N|O|1996-10-18|1996-10-31|1996-11-14|DELIVER IN PERSON|FOB|tions boost furiously unusual e|
-3910|71|10|2|31|30103.17|0.05|0.03|N|O|1996-12-22|1996-11-14|1997-01-01|TAKE BACK RETURN|SHIP|ess instructions. |
-3910|20|7|3|6|5520.12|0.04|0.04|N|O|1996-12-08|1996-10-30|1996-12-31|DELIVER IN PERSON|MAIL|ly sly platelets are fluffily slyly si|
-3910|153|1|4|1|1053.15|0.03|0.06|N|O|1996-09-12|1996-10-21|1996-09-19|DELIVER IN PERSON|FOB|s sleep neve|
-3911|113|7|1|10|10131.10|0.07|0.06|N|O|1995-06-22|1995-05-30|1995-06-28|COLLECT COD|FOB|ss theodolites are blithely along t|
-3911|119|9|2|14|14267.54|0.08|0.05|R|F|1995-04-28|1995-05-03|1995-05-22|NONE|RAIL|e blithely brave depo|
-3911|92|5|3|12|11905.08|0.10|0.05|R|F|1995-04-04|1995-04-16|1995-04-10|COLLECT COD|FOB|uctions. blithely regula|
-3936|137|8|1|25|25928.25|0.06|0.03|N|O|1996-12-03|1996-12-27|1997-01-01|DELIVER IN PERSON|RAIL|gular requests nag quic|
-3936|188|9|2|24|26116.32|0.10|0.07|N|O|1996-11-22|1997-01-01|1996-12-08|NONE|AIR|ns. accounts mold fl|
-3936|83|4|3|42|41289.36|0.00|0.07|N|O|1997-01-03|1997-01-29|1997-01-14|COLLECT COD|AIR|elets wake amo|
-3936|62|7|4|12|11544.72|0.06|0.05|N|O|1996-11-25|1997-01-09|1996-12-06|DELIVER IN PERSON|SHIP|ithely across the carefully brave req|
-3936|84|5|5|35|34442.80|0.02|0.08|N|O|1996-12-04|1997-01-06|1996-12-22|NONE|SHIP|lly ironic requ|
-3936|103|6|6|26|26080.60|0.01|0.02|N|O|1997-02-27|1997-01-16|1997-03-22|NONE|RAIL|quickly pen|
-3937|70|7|1|48|46563.36|0.10|0.02|N|O|1998-03-15|1998-02-22|1998-03-30|DELIVER IN PERSON|FOB|gainst the thinl|
-3937|48|1|2|30|28441.20|0.01|0.07|N|O|1998-01-17|1998-01-03|1998-02-08|COLLECT COD|TRUCK|al packages slee|
-3937|115|5|3|27|27407.97|0.03|0.00|N|O|1998-02-06|1998-01-12|1998-02-20|NONE|MAIL|ven ideas. slyly expr|
-3937|154|2|4|50|52707.50|0.01|0.02|N|O|1998-01-15|1998-01-09|1998-02-04|DELIVER IN PERSON|AIR|ong the carefully exp|
-3937|3|10|5|29|26187.00|0.03|0.07|N|O|1998-03-06|1998-02-22|1998-03-14|NONE|TRUCK|nt pinto beans above the pending instr|
-3937|193|6|6|6|6559.14|0.00|0.00|N|O|1998-01-24|1998-02-13|1998-01-27|DELIVER IN PERSON|FOB|into beans. slyly silent orbits alongside o|
-3937|164|9|7|1|1064.16|0.02|0.05|N|O|1998-03-29|1998-01-08|1998-04-27|TAKE BACK RETURN|TRUCK|refully agains|
-3938|159|4|1|46|48720.90|0.10|0.07|R|F|1993-05-20|1993-05-04|1993-06-12|DELIVER IN PERSON|FOB|ly even foxes are slyly fu|
-3939|160|8|1|8|8481.28|0.03|0.06|N|O|1996-01-29|1996-04-05|1996-02-26|COLLECT COD|REG AIR|e packages. express, pen|
-3940|178|7|1|33|35579.61|0.10|0.07|N|O|1996-05-19|1996-04-19|1996-05-23|TAKE BACK RETURN|RAIL|ly ironic packages about the pending accou|
-3940|69|4|2|40|38762.40|0.08|0.02|N|O|1996-02-29|1996-03-22|1996-03-04|NONE|MAIL|ts. regular fox|
-3940|89|10|3|8|7912.64|0.07|0.08|N|O|1996-04-04|1996-04-12|1996-04-18|DELIVER IN PERSON|RAIL|ions cajole furiously regular pinto beans. |
-3940|137|3|4|11|11408.43|0.09|0.05|N|O|1996-03-09|1996-05-13|1996-03-17|COLLECT COD|REG AIR|e of the special packages. furiously|
-3940|1|6|5|41|36941.00|0.00|0.07|N|O|1996-05-08|1996-05-03|1996-06-03|COLLECT COD|MAIL|thily. deposits cajole.|
-3941|41|2|1|47|44228.88|0.05|0.07|N|O|1996-11-24|1996-10-09|1996-12-22|DELIVER IN PERSON|RAIL| carefully pending|
-3941|123|6|2|19|19439.28|0.05|0.00|N|O|1996-11-10|1996-10-26|1996-12-05|COLLECT COD|RAIL|eposits haggle furiously even|
-3941|10|3|3|2|1820.02|0.01|0.03|N|O|1996-12-04|1996-10-01|1996-12-25|NONE|REG AIR|es wake after the|
-3941|110|7|4|29|29293.19|0.00|0.03|N|O|1996-09-14|1996-10-04|1996-09-19|NONE|MAIL|g the blithely|
-3942|183|4|1|6|6499.08|0.05|0.05|A|F|1993-07-01|1993-09-14|1993-07-23|DELIVER IN PERSON|SHIP|ep ruthlessly carefully final accounts: s|
-3942|194|7|2|5|5470.95|0.06|0.02|R|F|1993-09-27|1993-09-24|1993-10-07|DELIVER IN PERSON|MAIL|. fluffily pending deposits above the flu|
-3942|156|4|3|25|26403.75|0.04|0.06|R|F|1993-09-13|1993-08-01|1993-09-29|COLLECT COD|RAIL|d the quick packages|
-3943|198|2|1|15|16472.85|0.03|0.01|N|O|1997-01-13|1996-12-17|1997-02-02|COLLECT COD|REG AIR| grow fluffily according to the |
-3943|96|7|2|9|8964.81|0.00|0.06|N|O|1996-11-27|1997-01-03|1996-12-17|COLLECT COD|RAIL|refully ironic |
-3943|17|4|3|32|29344.32|0.00|0.02|N|O|1996-10-22|1996-12-17|1996-11-04|TAKE BACK RETURN|TRUCK| unusual ideas into the furiously even pack|
-3943|50|1|4|5|4750.25|0.04|0.04|N|O|1997-01-09|1996-11-10|1997-02-06|COLLECT COD|RAIL|arefully regular deposits accord|
-3968|54|2|1|27|25759.35|0.04|0.05|N|O|1997-04-25|1997-04-17|1997-05-11|TAKE BACK RETURN|MAIL|t silently.|
-3968|26|9|2|45|41670.90|0.00|0.07|N|O|1997-06-18|1997-04-24|1997-06-25|DELIVER IN PERSON|FOB|ully slyly fi|
-3968|156|7|3|43|45414.45|0.07|0.06|N|O|1997-04-30|1997-05-14|1997-05-18|TAKE BACK RETURN|SHIP|ly regular accounts|
-3968|61|8|4|7|6727.42|0.07|0.02|N|O|1997-03-30|1997-05-01|1997-04-12|DELIVER IN PERSON|SHIP|efully bold instructions. express|
-3969|52|4|1|39|37129.95|0.04|0.04|N|O|1997-06-12|1997-06-13|1997-07-05|NONE|MAIL|ly bold ideas s|
-3969|197|1|2|26|28526.94|0.05|0.03|N|O|1997-07-08|1997-07-30|1997-07-10|TAKE BACK RETURN|AIR|fluffily; braids detect.|
-3969|79|8|3|46|45037.22|0.04|0.02|N|O|1997-05-29|1997-06-15|1997-06-10|TAKE BACK RETURN|SHIP|fully final requests sleep stealthily. care|
-3969|151|9|4|21|22074.15|0.07|0.04|N|O|1997-08-31|1997-07-16|1997-09-02|TAKE BACK RETURN|MAIL|unts doze quickly final reque|
-3969|72|3|5|40|38882.80|0.09|0.00|N|O|1997-05-19|1997-08-02|1997-06-05|COLLECT COD|TRUCK|lar requests cajole furiously blithely regu|
-3969|105|8|6|4|4020.40|0.02|0.01|N|O|1997-06-04|1997-07-31|1997-06-13|COLLECT COD|REG AIR|dencies wake blithely? quickly even theodo|
-3970|88|9|1|2|1976.16|0.01|0.07|R|F|1992-04-24|1992-06-03|1992-05-16|TAKE BACK RETURN|RAIL|carefully pending foxes wake blithely |
-3970|109|6|2|18|18163.80|0.03|0.08|A|F|1992-06-06|1992-06-18|1992-07-05|DELIVER IN PERSON|TRUCK| maintain slyly. ir|
-3970|154|6|3|10|10541.50|0.10|0.04|A|F|1992-07-01|1992-05-31|1992-07-02|NONE|AIR| special packages wake after the final br|
-3970|22|5|4|34|31348.68|0.05|0.00|A|F|1992-06-25|1992-05-23|1992-07-12|COLLECT COD|SHIP|y final gifts are. carefully pe|
-3970|30|3|5|23|21390.69|0.05|0.04|A|F|1992-06-04|1992-06-14|1992-06-13|COLLECT COD|TRUCK| above the final braids. regular|
-3970|9|6|6|46|41814.00|0.07|0.04|R|F|1992-04-29|1992-05-14|1992-05-24|NONE|FOB|yly ironic|
-3970|5|8|7|46|41630.00|0.08|0.08|R|F|1992-05-02|1992-05-12|1992-05-10|COLLECT COD|MAIL|ix slyly. quickly silen|
-3971|96|8|1|47|46816.23|0.06|0.04|N|O|1996-07-07|1996-08-08|1996-08-01|TAKE BACK RETURN|RAIL|e slyly final dependencies x-ray |
-3971|191|5|2|2|2182.38|0.04|0.03|N|O|1996-07-15|1996-08-12|1996-07-26|NONE|SHIP|haggle abou|
-3972|51|3|1|2|1902.10|0.05|0.03|A|F|1994-07-24|1994-06-30|1994-08-13|TAKE BACK RETURN|SHIP|y final theodolite|
-3973|30|9|1|21|19530.63|0.02|0.06|R|F|1992-06-18|1992-06-03|1992-07-02|COLLECT COD|REG AIR|equests. furiously|
-3973|115|2|2|37|37559.07|0.07|0.00|A|F|1992-05-29|1992-05-04|1992-06-23|TAKE BACK RETURN|SHIP|inos wake fluffily. pending requests nag |
-3973|40|6|3|40|37601.60|0.08|0.05|R|F|1992-05-03|1992-06-09|1992-05-21|COLLECT COD|RAIL|g the carefully blithe f|
-3974|22|1|1|47|43334.94|0.10|0.03|N|O|1996-06-03|1996-05-08|1996-06-28|NONE|TRUCK|dencies above the re|
-3974|61|8|2|17|16338.02|0.05|0.07|N|O|1996-04-05|1996-05-21|1996-04-28|COLLECT COD|TRUCK|ions eat slyly after the blithely |
-3975|57|9|1|38|36367.90|0.01|0.05|N|O|1995-08-02|1995-06-18|1995-08-19|COLLECT COD|TRUCK|es are furiously: furi|
-4000|196|7|1|41|44943.79|0.06|0.01|A|F|1992-03-02|1992-03-14|1992-03-27|COLLECT COD|FOB|ve the even, fi|
-4000|75|5|2|44|42903.08|0.09|0.06|A|F|1992-03-27|1992-02-18|1992-03-31|COLLECT COD|AIR|equests use blithely blithely bold d|
-4001|106|1|1|26|26158.60|0.00|0.01|N|O|1997-07-26|1997-06-18|1997-08-08|DELIVER IN PERSON|RAIL|tegrate blithely|
-4001|41|10|2|19|17879.76|0.03|0.02|N|O|1997-08-23|1997-06-15|1997-09-18|COLLECT COD|SHIP|ackages. carefully ironi|
-4001|94|5|3|18|17893.62|0.07|0.00|N|O|1997-06-04|1997-06-22|1997-06-13|DELIVER IN PERSON|MAIL|lithely ironic d|
-4001|2|9|4|39|35178.00|0.00|0.00|N|O|1997-06-13|1997-06-17|1997-06-25|NONE|SHIP| dogged excuses. blithe|
-4002|111|5|1|35|35388.85|0.01|0.08|N|O|1997-05-16|1997-06-15|1997-06-02|DELIVER IN PERSON|TRUCK|eep. quickly|
-4002|198|9|2|20|21963.80|0.00|0.03|N|O|1997-06-15|1997-05-20|1997-07-11|NONE|MAIL|lly even ins|
-4002|40|1|3|6|5640.24|0.08|0.07|N|O|1997-05-02|1997-07-07|1997-05-16|TAKE BACK RETURN|RAIL| furiously furiously special theodoli|
-4002|199|3|4|6|6595.14|0.06|0.06|N|O|1997-07-01|1997-05-15|1997-07-31|NONE|MAIL|he slyly iro|
-4002|99|1|5|4|3996.36|0.08|0.07|N|O|1997-05-06|1997-06-15|1997-05-24|NONE|REG AIR|ccording to the careful|
-4003|52|4|1|18|17136.90|0.04|0.07|R|F|1993-02-02|1993-04-15|1993-02-28|TAKE BACK RETURN|AIR|ar grouches s|
-4004|121|2|1|23|23485.76|0.07|0.02|A|F|1993-08-12|1993-07-13|1993-08-16|TAKE BACK RETURN|TRUCK| bold theodolites? special packages accordi|
-4004|64|5|2|47|45310.82|0.07|0.04|R|F|1993-06-25|1993-08-03|1993-07-12|NONE|SHIP|thely instead of the even, unu|
-4004|114|5|3|39|39550.29|0.10|0.05|R|F|1993-07-12|1993-07-27|1993-07-18|NONE|MAIL|ccounts sleep furious|
-4004|74|4|4|46|44807.22|0.10|0.04|R|F|1993-09-04|1993-07-13|1993-09-28|COLLECT COD|FOB|ncies. slyly pending dolphins sleep furio|
-4004|155|3|5|9|9496.35|0.04|0.06|A|F|1993-08-25|1993-06-10|1993-09-24|COLLECT COD|MAIL|ly ironic requests. quickly pending ide|
-4004|161|10|6|44|46691.04|0.07|0.05|R|F|1993-07-25|1993-07-23|1993-08-16|TAKE BACK RETURN|REG AIR|ut the sauternes. bold, ironi|
-4004|126|9|7|20|20522.40|0.07|0.05|A|F|1993-06-19|1993-06-14|1993-07-04|COLLECT COD|REG AIR|. ironic deposits cajole blithely?|
-4005|4|1|1|26|23504.00|0.09|0.05|N|O|1996-12-01|1997-02-03|1996-12-15|NONE|REG AIR| to the quic|
-4005|17|8|2|28|25676.28|0.02|0.06|N|O|1996-12-11|1997-01-24|1996-12-17|DELIVER IN PERSON|REG AIR|ly carefully ironic deposits. slyly|
-4005|72|10|3|28|27217.96|0.03|0.01|N|O|1996-12-08|1997-01-14|1996-12-30|TAKE BACK RETURN|MAIL|y pending dependenc|
-4005|15|9|4|49|44835.49|0.09|0.00|N|O|1997-01-31|1996-12-24|1997-03-02|NONE|RAIL|tions sleep across the silent d|
-4005|6|7|5|14|12684.00|0.09|0.08|N|O|1996-11-27|1997-01-09|1996-12-25|NONE|TRUCK|ld requests. slyly final instructi|
-4006|55|7|1|11|10505.55|0.05|0.08|A|F|1995-04-29|1995-02-21|1995-05-20|TAKE BACK RETURN|RAIL|ress foxes cajole quick|
-4006|159|4|2|18|19064.70|0.05|0.03|A|F|1995-01-29|1995-03-08|1995-02-02|TAKE BACK RETURN|MAIL|gouts! slyly iron|
-4006|24|5|3|15|13860.30|0.01|0.02|R|F|1995-02-23|1995-04-02|1995-02-25|TAKE BACK RETURN|RAIL|n deposits cajole slyl|
-4006|114|5|4|25|25352.75|0.00|0.07|A|F|1995-02-23|1995-02-09|1995-02-24|DELIVER IN PERSON|SHIP| requests use depos|
-4007|57|2|1|32|30625.60|0.00|0.03|R|F|1993-09-30|1993-08-16|1993-10-03|DELIVER IN PERSON|RAIL|nal accounts across t|
-4007|116|10|2|41|41660.51|0.04|0.06|A|F|1993-10-11|1993-08-30|1993-11-04|DELIVER IN PERSON|TRUCK|eposits. regular epitaphs boost blithely.|
-4007|102|9|3|5|5010.50|0.09|0.06|A|F|1993-09-17|1993-08-29|1993-10-12|TAKE BACK RETURN|FOB|y unusual packa|
-4007|138|4|4|15|15571.95|0.05|0.02|A|F|1993-09-01|1993-07-19|1993-09-03|DELIVER IN PERSON|FOB|le furiously quickly |
-4007|26|7|5|23|21298.46|0.02|0.07|A|F|1993-10-08|1993-09-09|1993-10-23|COLLECT COD|MAIL|ter the accounts. expr|
-4032|102|3|1|8|8016.80|0.06|0.00|N|O|1998-06-04|1998-05-17|1998-07-03|TAKE BACK RETURN|RAIL|ometimes even cou|
-4032|2|9|2|27|24354.00|0.09|0.00|N|O|1998-05-31|1998-04-19|1998-06-24|COLLECT COD|REG AIR|le furiously according to|
-4032|154|2|3|23|24245.45|0.09|0.06|N|O|1998-06-12|1998-05-11|1998-06-24|COLLECT COD|MAIL|ording to the |
-4032|85|6|4|10|9850.80|0.09|0.05|N|O|1998-03-31|1998-04-22|1998-04-07|NONE|REG AIR| carefully bol|
-4033|110|1|1|27|27272.97|0.01|0.04|R|F|1993-08-08|1993-08-14|1993-08-09|NONE|AIR|pinto beans|
-4033|38|4|2|34|31893.02|0.07|0.00|R|F|1993-07-19|1993-08-05|1993-07-26|NONE|RAIL|t the blithely dogg|
-4034|190|1|1|48|52329.12|0.03|0.03|A|F|1994-03-01|1994-01-16|1994-03-16|NONE|RAIL| blithely regular requests play carefull|
-4034|57|5|2|47|44981.35|0.07|0.05|A|F|1994-01-27|1993-12-26|1994-02-04|NONE|TRUCK|eodolites was slyly ironic ideas. de|
-4034|54|5|3|43|41024.15|0.10|0.03|A|F|1993-11-29|1994-01-08|1993-12-10|DELIVER IN PERSON|FOB|posits wake carefully af|
-4034|28|9|4|46|42688.92|0.06|0.00|A|F|1994-02-22|1994-01-09|1994-03-04|DELIVER IN PERSON|AIR|uests. furiously unusual instructions wake|
-4034|196|10|5|7|7673.33|0.07|0.06|R|F|1994-03-04|1994-01-22|1994-04-01|NONE|AIR|y even theodolites. slyly regular instru|
-4034|50|9|6|5|4750.25|0.01|0.06|A|F|1994-02-12|1994-01-24|1994-02-13|COLLECT COD|AIR|fully around the furiously ironic re|
-4035|97|8|1|4|3988.36|0.08|0.03|R|F|1992-04-21|1992-04-23|1992-04-25|COLLECT COD|AIR|ilent, even pear|
-4035|136|7|2|4|4144.52|0.07|0.00|A|F|1992-05-21|1992-04-24|1992-05-24|DELIVER IN PERSON|FOB|en instructions sleep blith|
-4035|118|8|3|1|1018.11|0.03|0.01|R|F|1992-06-18|1992-05-19|1992-07-02|COLLECT COD|FOB| requests. quickly |
-4035|182|3|4|13|14068.34|0.00|0.01|R|F|1992-06-10|1992-05-16|1992-07-10|NONE|SHIP|s. furiously even courts wake slyly|
-4036|6|1|1|46|41676.00|0.09|0.00|N|O|1997-06-21|1997-05-29|1997-07-18|NONE|REG AIR|usly across the even th|
-4036|53|1|2|21|20014.05|0.09|0.07|N|O|1997-08-08|1997-06-28|1997-08-09|COLLECT COD|MAIL|e carefully. qui|
-4036|142|3|3|6|6252.84|0.07|0.01|N|O|1997-06-19|1997-06-16|1997-07-01|DELIVER IN PERSON|SHIP|equests wake about the bold id|
-4036|127|10|4|20|20542.40|0.08|0.02|N|O|1997-08-11|1997-07-11|1997-09-03|NONE|TRUCK|slyly bold deposits cajole pending, blithe|
-4037|64|9|1|32|30849.92|0.00|0.06|A|F|1993-05-06|1993-06-08|1993-05-31|DELIVER IN PERSON|AIR|e of the pending, iron|
-4037|47|8|2|4|3788.16|0.09|0.07|A|F|1993-07-05|1993-06-12|1993-08-03|DELIVER IN PERSON|RAIL|s around the blithely ironic ac|
-4038|196|10|1|40|43847.60|0.05|0.01|N|O|1996-01-15|1996-03-13|1996-01-25|COLLECT COD|TRUCK|t. slyly silent pinto beans amo|
-4038|12|9|2|37|33744.37|0.04|0.03|N|O|1996-03-17|1996-03-19|1996-04-07|DELIVER IN PERSON|REG AIR| packages |
-4038|32|3|3|24|22368.72|0.10|0.04|N|O|1996-04-06|1996-02-15|1996-04-18|TAKE BACK RETURN|RAIL|the furiously regu|
-4038|150|1|4|29|30454.35|0.07|0.06|N|O|1996-01-07|1996-03-08|1996-01-13|NONE|FOB|ffix. quietly ironic packages a|
-4038|79|7|5|24|23497.68|0.07|0.06|N|O|1996-04-01|1996-04-05|1996-04-28|DELIVER IN PERSON|TRUCK|ake quickly after the final, ironic ac|
-4038|36|2|6|6|5616.18|0.07|0.05|N|O|1996-02-09|1996-03-05|1996-03-10|COLLECT COD|SHIP| special instructions. packa|
-4039|94|5|1|38|37775.42|0.03|0.06|N|O|1998-03-09|1997-12-31|1998-03-21|DELIVER IN PERSON|REG AIR|sual asymptotes. ironic deposits nag aft|
-4039|122|5|2|17|17376.04|0.10|0.04|N|O|1998-01-15|1998-01-20|1998-01-28|TAKE BACK RETURN|MAIL| regular foxes haggle carefully bo|
-4039|64|1|3|9|8676.54|0.10|0.01|N|O|1998-03-08|1998-02-05|1998-04-05|TAKE BACK RETURN|FOB|t? pinto beans cajole across the thinly r|
-4039|28|3|4|43|39904.86|0.01|0.02|N|O|1998-01-02|1997-12-22|1998-01-15|NONE|FOB|beans believe bene|
-4039|134|5|5|43|44467.59|0.09|0.00|N|O|1998-01-20|1998-01-11|1998-02-05|COLLECT COD|SHIP|sts along the regular in|
-4064|199|1|1|3|3297.57|0.10|0.04|N|O|1997-01-04|1997-01-01|1997-01-23|NONE|SHIP|its! quickly sp|
-4064|40|6|2|15|14100.60|0.02|0.02|N|O|1996-11-09|1996-12-04|1996-11-18|DELIVER IN PERSON|MAIL|braids affix across the regular sheave|
-4064|197|10|3|32|35110.08|0.04|0.07|N|O|1997-01-14|1997-01-01|1997-01-21|COLLECT COD|REG AIR|es boost. careful|
-4064|163|8|4|24|25515.84|0.02|0.02|N|O|1997-01-01|1996-12-31|1997-01-23|DELIVER IN PERSON|SHIP|ly regular ideas.|
-4064|21|2|5|12|11052.24|0.08|0.08|N|O|1997-02-08|1996-12-18|1997-03-06|TAKE BACK RETURN|RAIL|ding to the requests|
-4064|184|5|6|46|49872.28|0.03|0.00|N|O|1996-10-13|1997-01-05|1996-11-06|DELIVER IN PERSON|REG AIR|alongside of the f|
-4064|200|2|7|9|9901.80|0.01|0.06|N|O|1996-12-17|1996-12-13|1997-01-12|NONE|AIR|furiously f|
-4065|138|9|1|14|14533.82|0.04|0.02|A|F|1994-08-22|1994-07-29|1994-09-19|DELIVER IN PERSON|TRUCK|e furiously outside |
-4065|15|6|2|46|42090.46|0.03|0.05|A|F|1994-06-29|1994-08-01|1994-07-03|TAKE BACK RETURN|SHIP|, regular requests may mold above the |
-4065|97|10|3|33|32903.97|0.00|0.03|A|F|1994-09-03|1994-08-16|1994-09-13|DELIVER IN PERSON|AIR|ain blithely |
-4065|107|2|4|8|8056.80|0.00|0.01|R|F|1994-10-04|1994-08-05|1994-10-25|TAKE BACK RETURN|SHIP|ages haggle carefully|
-4065|123|4|5|29|29670.48|0.02|0.07|A|F|1994-06-29|1994-08-19|1994-07-17|NONE|RAIL|equests. packages sleep slyl|
-4065|110|5|6|16|16161.76|0.05|0.00|R|F|1994-08-25|1994-08-06|1994-09-09|COLLECT COD|TRUCK|ncies use furiously. quickly un|
-4065|144|7|7|11|11485.54|0.10|0.04|A|F|1994-07-25|1994-08-02|1994-07-30|NONE|RAIL|hang silently about |
-4066|139|5|1|9|9352.17|0.01|0.05|N|O|1997-05-06|1997-03-25|1997-05-27|COLLECT COD|FOB|nal, ironic accounts. blithel|
-4066|93|5|2|19|18868.71|0.05|0.00|N|O|1997-05-13|1997-04-17|1997-06-08|NONE|TRUCK|quests. slyly regu|
-4066|76|5|3|8|7808.56|0.03|0.03|N|O|1997-04-24|1997-03-11|1997-05-20|NONE|REG AIR|accounts. special pinto beans|
-4066|179|9|4|49|52879.33|0.01|0.01|N|O|1997-02-17|1997-03-24|1997-02-19|NONE|TRUCK|ial braids. furiously final deposits sl|
-4066|171|2|5|43|46060.31|0.05|0.02|N|O|1997-02-16|1997-04-14|1997-02-18|DELIVER IN PERSON|MAIL|r instructions. slyly special |
-4066|109|2|6|44|44400.40|0.01|0.00|N|O|1997-03-01|1997-04-27|1997-03-29|DELIVER IN PERSON|MAIL|express accounts nag bli|
-4067|180|1|1|18|19443.24|0.03|0.08|A|F|1993-01-24|1992-12-23|1993-02-20|TAKE BACK RETURN|FOB|e the slyly final packages d|
-4067|96|10|2|14|13945.26|0.00|0.00|R|F|1993-02-03|1992-12-02|1993-02-07|TAKE BACK RETURN|TRUCK|ructions. quickly ironic accounts detect |
-4067|141|10|3|17|17699.38|0.03|0.05|A|F|1993-01-26|1992-11-23|1993-01-27|NONE|REG AIR|ts haggle slyly unusual, final|
-4067|90|1|4|40|39603.60|0.07|0.08|R|F|1993-01-09|1992-11-21|1993-01-16|DELIVER IN PERSON|TRUCK|lar theodolites nag blithely above the|
-4067|85|6|5|17|16746.36|0.08|0.03|A|F|1993-01-20|1992-12-29|1993-02-03|DELIVER IN PERSON|REG AIR|r accounts. slyly special pa|
-4067|96|8|6|12|11953.08|0.04|0.03|A|F|1992-12-12|1992-11-28|1992-12-15|DELIVER IN PERSON|AIR|lly slyly even theodol|
-4067|83|4|7|17|16712.36|0.01|0.01|R|F|1992-12-12|1992-12-23|1992-12-30|NONE|AIR|ts affix. regular, regular requests s|
-4068|110|1|1|43|43434.73|0.05|0.06|N|O|1996-11-28|1996-11-16|1996-12-22|NONE|AIR|ructions. regular, special packag|
-4068|57|5|2|31|29668.55|0.08|0.03|N|O|1996-12-11|1996-12-07|1996-12-30|NONE|SHIP|ds wake carefully amon|
-4069|129|2|1|39|40135.68|0.09|0.02|R|F|1992-09-06|1992-07-22|1992-09-25|COLLECT COD|SHIP|ven theodolites nag quickly. fluffi|
-4069|43|4|2|32|30177.28|0.10|0.08|A|F|1992-06-18|1992-07-20|1992-07-07|TAKE BACK RETURN|TRUCK|unts. deposit|
-4069|186|7|3|3|3258.54|0.06|0.01|R|F|1992-07-26|1992-07-07|1992-08-04|COLLECT COD|FOB|l packages. even, |
-4069|79|8|4|22|21539.54|0.10|0.05|A|F|1992-08-05|1992-08-04|1992-08-25|COLLECT COD|SHIP|ts. slyly special instruction|
-4069|157|5|5|50|52857.50|0.09|0.06|A|F|1992-07-26|1992-06-30|1992-08-01|TAKE BACK RETURN|REG AIR|even foxes among the express wate|
-4069|125|8|6|3|3075.36|0.02|0.01|A|F|1992-05-24|1992-06-18|1992-06-12|COLLECT COD|MAIL|y final deposits wake furiously! slyl|
-4069|184|5|7|50|54209.00|0.00|0.01|R|F|1992-09-03|1992-06-14|1992-10-01|NONE|REG AIR|ages. carefully regular |
-4070|183|4|1|2|2166.36|0.09|0.08|N|O|1995-08-03|1995-09-10|1995-08-17|TAKE BACK RETURN|REG AIR|ptotes affix|
-4070|155|3|2|40|42206.00|0.07|0.07|N|O|1995-07-13|1995-07-23|1995-08-06|COLLECT COD|MAIL|about the sentiments. quick|
-4070|62|3|3|11|10582.66|0.00|0.08|N|O|1995-08-23|1995-08-15|1995-08-31|TAKE BACK RETURN|MAIL| carefully final pack|
-4070|29|4|4|46|42734.92|0.02|0.02|N|O|1995-06-22|1995-07-14|1995-07-11|DELIVER IN PERSON|REG AIR|nticing ideas. boldly|
-4071|112|2|1|22|22266.42|0.02|0.07|N|O|1996-10-31|1996-12-14|1996-11-05|NONE|REG AIR|sits cajole carefully final instructio|
-4071|18|8|2|47|43146.47|0.00|0.03|N|O|1996-11-04|1996-12-09|1996-11-16|NONE|TRUCK|ts cajole furiously along the|
-4096|27|10|1|31|28737.62|0.10|0.02|A|F|1992-07-14|1992-09-03|1992-07-31|COLLECT COD|TRUCK|y final, even platelets. boldly|
-4096|57|9|2|17|16269.85|0.07|0.03|R|F|1992-09-30|1992-08-11|1992-10-11|TAKE BACK RETURN|REG AIR|platelets alongside of the |
-4096|9|10|3|21|19089.00|0.08|0.00|A|F|1992-08-24|1992-09-04|1992-09-11|DELIVER IN PERSON|MAIL|tes mold flu|
-4096|128|3|4|20|20562.40|0.02|0.07|R|F|1992-08-24|1992-09-13|1992-08-28|DELIVER IN PERSON|TRUCK|sual requests. furiously bold packages wake|
-4097|74|5|1|50|48703.50|0.04|0.04|N|O|1996-08-31|1996-08-14|1996-09-27|DELIVER IN PERSON|MAIL|egular deposits. blithely pending|
-4097|74|4|2|46|44807.22|0.10|0.01|N|O|1996-07-29|1996-08-19|1996-08-25|COLLECT COD|AIR| even depend|
-4097|174|2|3|42|45115.14|0.06|0.06|N|O|1996-08-11|1996-07-30|1996-08-15|NONE|FOB|carefully silent foxes are against the |
-4098|200|1|1|46|50609.20|0.07|0.03|N|O|1997-01-26|1997-01-27|1997-02-13|TAKE BACK RETURN|SHIP|e slyly blithely silent deposits. fluff|
-4099|4|7|1|29|26216.00|0.09|0.07|R|F|1992-11-21|1992-11-04|1992-11-30|NONE|FOB| slowly final warthogs sleep blithely. q|
-4099|137|3|2|3|3111.39|0.04|0.06|A|F|1992-09-12|1992-10-18|1992-10-01|NONE|RAIL|. special packages sleep|
-4099|51|3|3|36|34237.80|0.06|0.06|R|F|1992-11-06|1992-09-28|1992-12-02|NONE|FOB|beans cajole slyly quickly ironic |
-4099|139|5|4|7|7273.91|0.05|0.02|A|F|1992-09-12|1992-11-13|1992-09-14|TAKE BACK RETURN|AIR|onic foxes. quickly final fox|
-4099|163|10|5|48|51031.68|0.00|0.02|R|F|1992-10-18|1992-10-14|1992-11-01|NONE|REG AIR|ts haggle according to the slyly f|
-4099|59|10|6|39|37402.95|0.07|0.02|R|F|1992-12-13|1992-11-13|1992-12-26|DELIVER IN PERSON|REG AIR|fluffy accounts impress pending, iro|
-4099|180|8|7|46|49688.28|0.06|0.07|R|F|1992-10-29|1992-11-03|1992-11-10|DELIVER IN PERSON|REG AIR|ages nag requests.|
-4100|74|5|1|4|3896.28|0.03|0.03|N|O|1996-06-20|1996-04-29|1996-06-21|TAKE BACK RETURN|FOB|lyly regular, bold requ|
-4101|115|2|1|22|22332.42|0.05|0.02|R|F|1994-02-02|1994-02-19|1994-02-12|COLLECT COD|AIR|ly express instructions. careful|
-4102|10|3|1|17|15470.17|0.02|0.02|N|O|1996-06-03|1996-05-06|1996-07-02|COLLECT COD|AIR|ly silent theodolites sleep unusual exc|
-4102|69|8|2|5|4845.30|0.08|0.02|N|O|1996-05-11|1996-05-11|1996-05-16|COLLECT COD|AIR| the furiously even|
-4102|67|4|3|39|37715.34|0.08|0.01|N|O|1996-04-14|1996-05-18|1996-04-20|DELIVER IN PERSON|AIR|ffix blithely slyly special |
-4102|140|6|4|39|40565.46|0.02|0.00|N|O|1996-06-15|1996-06-06|1996-06-30|DELIVER IN PERSON|SHIP|y among the furiously special|
-4102|1|6|5|32|28832.00|0.08|0.01|N|O|1996-05-14|1996-04-29|1996-05-29|NONE|RAIL| the even requests; regular pinto|
-4102|137|8|6|7|7259.91|0.02|0.01|N|O|1996-06-19|1996-05-21|1996-07-15|NONE|REG AIR|bove the carefully pending the|
-4103|75|4|1|40|39002.80|0.05|0.03|R|F|1992-09-19|1992-08-14|1992-09-21|COLLECT COD|RAIL|usly across the slyly busy accounts! fin|
-4128|196|8|1|5|5480.95|0.04|0.04|N|O|1995-10-18|1995-11-28|1995-10-28|TAKE BACK RETURN|FOB|ake permanently |
-4129|56|8|1|32|30593.60|0.03|0.04|A|F|1993-09-16|1993-08-25|1993-09-25|TAKE BACK RETURN|MAIL|ckages haggl|
-4129|27|6|2|39|36153.78|0.06|0.07|R|F|1993-10-21|1993-08-04|1993-10-29|COLLECT COD|MAIL|y regular foxes. slyly ironic deposits |
-4130|178|6|1|44|47439.48|0.07|0.04|N|O|1996-05-14|1996-04-15|1996-05-15|COLLECT COD|TRUCK|eaves haggle qui|
-4130|63|10|2|2|1926.12|0.05|0.06|N|O|1996-05-19|1996-04-24|1996-06-17|TAKE BACK RETURN|RAIL|uriously regular instructions around th|
-4131|50|7|1|6|5700.30|0.05|0.01|N|O|1998-04-27|1998-04-18|1998-04-29|TAKE BACK RETURN|MAIL|ns cajole slyly. even, iro|
-4131|178|8|2|32|34501.44|0.08|0.01|N|O|1998-03-02|1998-03-21|1998-03-07|TAKE BACK RETURN|TRUCK| furiously regular asymptotes nod sly|
-4131|26|9|3|25|23150.50|0.02|0.07|N|O|1998-02-24|1998-03-01|1998-02-27|TAKE BACK RETURN|FOB|uickly exp|
-4131|36|7|4|8|7488.24|0.04|0.01|N|O|1998-03-03|1998-03-15|1998-03-26|COLLECT COD|FOB| after the furiously ironic d|
-4131|125|6|5|30|30753.60|0.01|0.01|N|O|1998-04-01|1998-04-13|1998-04-08|TAKE BACK RETURN|FOB|he fluffily express depen|
-4131|102|7|6|47|47098.70|0.02|0.00|N|O|1998-03-09|1998-04-05|1998-03-13|TAKE BACK RETURN|RAIL|ges. ironic pinto be|
-4132|138|4|1|28|29067.64|0.07|0.03|N|O|1995-08-16|1995-08-01|1995-08-29|TAKE BACK RETURN|SHIP|pths wake against the stealthily special pi|
-4132|15|5|2|23|21045.23|0.07|0.07|N|O|1995-06-27|1995-07-27|1995-07-13|TAKE BACK RETURN|FOB|d deposits. fluffily even requests haggle b|
-4132|87|8|3|18|17767.44|0.09|0.04|A|F|1995-06-01|1995-08-01|1995-06-02|TAKE BACK RETURN|RAIL|y final de|
-4133|24|5|1|35|32340.70|0.02|0.00|A|F|1992-11-25|1992-09-15|1992-12-25|NONE|AIR|g above the quickly bold packages. ev|
-4134|121|4|1|34|34718.08|0.02|0.05|R|F|1995-04-29|1995-03-13|1995-05-11|DELIVER IN PERSON|FOB|e furiously regular sheaves sleep|
-4134|96|10|2|34|33867.06|0.01|0.03|A|F|1995-05-06|1995-03-28|1995-05-13|DELIVER IN PERSON|SHIP|ual asymptotes wake carefully alo|
-4134|171|9|3|12|12854.04|0.05|0.04|A|F|1995-03-19|1995-03-27|1995-04-14|COLLECT COD|TRUCK|kly above the quickly regular |
-4134|100|4|4|45|45004.50|0.08|0.02|A|F|1995-04-11|1995-03-27|1995-04-17|TAKE BACK RETURN|MAIL|ironic pin|
-4135|2|3|1|23|20746.00|0.06|0.01|N|O|1997-04-09|1997-05-12|1997-04-16|TAKE BACK RETURN|FOB|posits cajole furiously carefully|
-4135|120|1|2|32|32643.84|0.07|0.00|N|O|1997-03-14|1997-04-23|1997-04-12|TAKE BACK RETURN|TRUCK| ideas. requests use. furiously|
-4135|160|5|3|33|34985.28|0.05|0.05|N|O|1997-05-01|1997-05-23|1997-05-23|DELIVER IN PERSON|AIR|he fluffil|
-4135|195|6|4|13|14237.47|0.04|0.07|N|O|1997-03-16|1997-05-19|1997-04-03|COLLECT COD|RAIL|efully special account|
-4160|113|10|1|25|25327.75|0.10|0.04|N|O|1996-09-22|1996-10-17|1996-09-24|NONE|SHIP|ar accounts sleep blithe|
-4160|122|7|2|12|12265.44|0.00|0.03|N|O|1996-11-22|1996-09-25|1996-12-10|DELIVER IN PERSON|REG AIR|y bold package|
-4160|63|4|3|48|46226.88|0.04|0.04|N|O|1996-09-19|1996-11-02|1996-09-24|COLLECT COD|FOB| unusual dolphins |
-4161|122|7|1|12|12265.44|0.08|0.02|R|F|1993-08-25|1993-10-04|1993-09-22|COLLECT COD|RAIL|onic dolphins. in|
-4161|28|3|2|47|43616.94|0.05|0.00|A|F|1993-12-20|1993-10-29|1994-01-19|TAKE BACK RETURN|RAIL|r requests about the final, even foxes hag|
-4161|138|4|3|42|43601.46|0.03|0.04|R|F|1993-11-12|1993-10-04|1993-11-27|COLLECT COD|MAIL|thely across the even attainments. express|
-4161|10|5|4|45|40950.45|0.02|0.06|A|F|1993-10-22|1993-10-17|1993-10-30|COLLECT COD|REG AIR|about the ironic packages cajole blithe|
-4161|29|10|5|46|42734.92|0.05|0.01|A|F|1993-11-09|1993-11-17|1993-11-17|TAKE BACK RETURN|TRUCK|he stealthily ironic foxes. ideas haggl|
-4161|148|9|6|19|19914.66|0.07|0.00|R|F|1993-08-22|1993-11-11|1993-09-01|TAKE BACK RETURN|REG AIR|beans breach s|
-4162|74|3|1|45|43833.15|0.10|0.07|A|F|1992-03-21|1992-05-02|1992-03-29|DELIVER IN PERSON|AIR|elets. slyly regular i|
-4162|90|1|2|29|28712.61|0.00|0.05|R|F|1992-02-25|1992-04-25|1992-03-17|NONE|REG AIR|nding pinto beans haggle blithe|
-4163|33|4|1|13|12129.39|0.08|0.03|A|F|1993-02-17|1993-03-13|1993-03-15|DELIVER IN PERSON|REG AIR|phins wake. pending requests inte|
-4164|120|7|1|9|9181.08|0.07|0.02|N|O|1998-08-25|1998-08-13|1998-09-19|DELIVER IN PERSON|SHIP|re fluffily slyly bold requests. |
-4165|41|2|1|12|11292.48|0.00|0.01|N|O|1997-09-20|1997-10-20|1997-10-12|TAKE BACK RETURN|REG AIR|nwind slow theodolites. carefully pending |
-4166|141|10|1|8|8329.12|0.00|0.08|A|F|1993-06-05|1993-04-10|1993-07-05|COLLECT COD|MAIL|uickly. blithely pending de|
-4166|93|5|2|8|7944.72|0.06|0.04|A|F|1993-06-07|1993-04-17|1993-06-16|DELIVER IN PERSON|REG AIR|es along the furiously regular acc|
-4166|7|10|3|17|15419.00|0.02|0.06|R|F|1993-06-29|1993-05-15|1993-07-24|DELIVER IN PERSON|SHIP|ackages. re|
-4166|86|7|4|36|35498.88|0.06|0.05|R|F|1993-03-01|1993-05-25|1993-03-05|COLLECT COD|MAIL|unts. furiously express accounts w|
-4166|77|6|5|5|4885.35|0.08|0.01|A|F|1993-06-19|1993-04-24|1993-06-27|NONE|REG AIR|hely unusual packages are above the f|
-4166|102|5|6|6|6012.60|0.04|0.08|R|F|1993-04-30|1993-04-17|1993-05-08|DELIVER IN PERSON|MAIL|ily ironic deposits print furiously. iron|
-4166|24|5|7|26|24024.52|0.09|0.01|R|F|1993-03-17|1993-05-09|1993-03-25|NONE|MAIL|lar dependencies. s|
-4167|61|8|1|47|45169.82|0.04|0.02|N|O|1998-08-02|1998-08-24|1998-08-28|DELIVER IN PERSON|REG AIR| carefully final asymptotes. slyly bo|
-4167|87|8|2|17|16780.36|0.06|0.07|N|O|1998-09-18|1998-09-06|1998-10-07|COLLECT COD|REG AIR|ly around the even instr|
-4167|73|3|3|1|973.07|0.03|0.06|N|O|1998-10-11|1998-08-14|1998-10-13|COLLECT COD|TRUCK|xpress platelets. blithely |
-4192|11|1|1|36|32796.36|0.06|0.08|N|O|1998-04-25|1998-05-26|1998-05-03|COLLECT COD|TRUCK|eodolites sleep|
-4192|121|6|2|15|15316.80|0.04|0.08|N|O|1998-06-26|1998-05-26|1998-07-16|COLLECT COD|AIR|e slyly special grouches. express pinto b|
-4192|135|6|3|7|7245.91|0.06|0.03|N|O|1998-05-19|1998-07-08|1998-05-31|COLLECT COD|FOB|y; excuses use. ironic, close instru|
-4192|24|3|4|32|29568.64|0.09|0.04|N|O|1998-06-23|1998-06-25|1998-07-17|NONE|FOB|ounts are fluffily slyly bold req|
-4192|48|7|5|48|45505.92|0.08|0.01|N|O|1998-08-17|1998-07-11|1998-09-03|NONE|AIR|ests. quickly bol|
-4192|150|7|6|44|46206.60|0.10|0.02|N|O|1998-08-06|1998-07-09|1998-08-20|NONE|FOB|structions mai|
-4192|170|5|7|27|28894.59|0.02|0.00|N|O|1998-07-03|1998-06-26|1998-07-13|TAKE BACK RETURN|AIR| carefully even escapades. care|
-4193|131|7|1|37|38151.81|0.09|0.06|A|F|1994-04-25|1994-02-24|1994-05-08|NONE|AIR|er the quickly regular dependencies wake|
-4193|117|7|2|3|3051.33|0.09|0.05|R|F|1994-04-29|1994-03-20|1994-05-29|TAKE BACK RETURN|REG AIR|osits above the depo|
-4193|179|10|3|10|10791.70|0.06|0.03|A|F|1994-02-10|1994-03-22|1994-03-09|COLLECT COD|RAIL|uffily spe|
-4193|51|9|4|29|27580.45|0.09|0.05|A|F|1994-02-11|1994-03-11|1994-03-13|TAKE BACK RETURN|RAIL|ly. final packages use blit|
-4193|20|7|5|50|46001.00|0.01|0.01|R|F|1994-04-28|1994-03-23|1994-05-09|NONE|FOB| beans. regular accounts cajole. de|
-4193|66|1|6|21|20287.26|0.02|0.04|R|F|1994-04-26|1994-03-22|1994-05-23|DELIVER IN PERSON|TRUCK|accounts cajole b|
-4194|197|1|1|43|47179.17|0.08|0.06|A|F|1994-11-06|1994-12-09|1994-11-16|NONE|TRUCK|olites are after the exp|
-4194|47|10|2|18|17046.72|0.07|0.07|A|F|1995-02-14|1994-12-04|1995-03-11|TAKE BACK RETURN|TRUCK|ld packages. quickly eve|
-4195|6|9|1|14|12684.00|0.09|0.04|R|F|1993-09-06|1993-07-21|1993-09-18|DELIVER IN PERSON|REG AIR|ironic packages. carefully express|
-4195|66|1|2|22|21253.32|0.10|0.08|R|F|1993-07-01|1993-07-23|1993-07-28|COLLECT COD|RAIL|lly express pinto bea|
-4195|194|8|3|19|20789.61|0.01|0.06|R|F|1993-09-06|1993-08-13|1993-09-15|TAKE BACK RETURN|REG AIR|telets sleep even requests. final, even i|
-4196|156|4|1|30|31684.50|0.02|0.06|N|O|1998-08-09|1998-06-30|1998-09-05|COLLECT COD|SHIP|egular foxes us|
-4196|9|6|2|31|28179.00|0.09|0.08|N|O|1998-06-12|1998-07-28|1998-07-11|NONE|MAIL|ut the blithely ironic inst|
-4196|178|9|3|46|49595.82|0.05|0.00|N|O|1998-09-05|1998-06-28|1998-09-10|TAKE BACK RETURN|MAIL|according to t|
-4196|114|8|4|42|42592.62|0.04|0.06|N|O|1998-08-13|1998-07-18|1998-09-07|TAKE BACK RETURN|AIR| instructions. courts cajole slyly ev|
-4196|72|2|5|3|2916.21|0.01|0.03|N|O|1998-05-17|1998-07-21|1998-05-18|DELIVER IN PERSON|TRUCK| accounts. fu|
-4196|87|8|6|43|42444.44|0.01|0.06|N|O|1998-08-12|1998-07-12|1998-08-22|DELIVER IN PERSON|FOB|es. slyly even |
-4196|4|1|7|3|2712.00|0.00|0.06|N|O|1998-08-05|1998-07-28|1998-08-15|DELIVER IN PERSON|REG AIR|y regular packages haggle furiously alongs|
-4197|129|8|1|50|51456.00|0.06|0.03|N|O|1996-11-15|1996-11-01|1996-11-20|NONE|FOB|. carefully bold asymptotes nag blithe|
-4197|70|9|2|39|37832.73|0.02|0.08|N|O|1996-10-07|1996-10-11|1996-10-18|DELIVER IN PERSON|RAIL|ronic requests. quickly bold packages in|
-4197|32|8|3|28|26096.84|0.06|0.02|N|O|1996-10-05|1996-10-24|1996-10-22|TAKE BACK RETURN|AIR|regular pin|
-4197|96|7|4|23|22910.07|0.00|0.03|N|O|1996-09-10|1996-10-10|1996-09-25|NONE|AIR|l instructions print slyly past the reg|
-4197|121|6|5|37|37781.44|0.03|0.04|N|O|1996-10-20|1996-10-10|1996-11-10|COLLECT COD|TRUCK|carefully enticing decoys boo|
-4197|31|7|6|48|44689.44|0.08|0.00|N|O|1996-10-07|1996-10-25|1996-10-23|COLLECT COD|REG AIR| final instructions. blithe, spe|
-4198|146|9|1|48|50214.72|0.09|0.05|N|O|1997-09-03|1997-07-18|1997-09-11|NONE|REG AIR|cajole carefully final, ironic ide|
-4198|143|6|2|46|47984.44|0.09|0.01|N|O|1997-08-17|1997-09-08|1997-09-11|COLLECT COD|TRUCK|posits among th|
-4198|145|4|3|13|13586.82|0.03|0.04|N|O|1997-07-18|1997-07-24|1997-08-10|NONE|REG AIR| furious excuses. bli|
-4199|70|5|1|16|15521.12|0.10|0.00|A|F|1992-06-11|1992-04-10|1992-07-10|COLLECT COD|TRUCK|ncies. furiously special accounts|
-4199|9|10|2|18|16362.00|0.00|0.01|A|F|1992-06-01|1992-03-30|1992-06-28|DELIVER IN PERSON|RAIL|pending, regular accounts. carefully|
-4224|199|10|1|27|29678.13|0.05|0.03|N|O|1997-09-05|1997-08-19|1997-09-30|NONE|SHIP|ly special deposits sleep qui|
-4224|37|3|2|20|18740.60|0.07|0.05|N|O|1997-11-09|1997-08-23|1997-11-14|NONE|FOB|unts promise across the requests. blith|
-4224|24|7|3|4|3696.08|0.08|0.05|N|O|1997-09-07|1997-09-05|1997-09-25|TAKE BACK RETURN|FOB| even dinos. carefull|
-4224|160|2|4|50|53008.00|0.10|0.06|N|O|1997-07-30|1997-09-10|1997-08-19|COLLECT COD|RAIL|side of the carefully silent dep|
-4224|85|6|5|48|47283.84|0.00|0.04|N|O|1997-10-03|1997-08-31|1997-10-10|NONE|RAIL| final, regular asymptotes use alway|
-4225|49|8|1|25|23726.00|0.08|0.04|N|O|1997-07-10|1997-08-08|1997-07-31|TAKE BACK RETURN|TRUCK|se fluffily. busily ironic requests are;|
-4225|96|8|2|23|22910.07|0.02|0.04|N|O|1997-09-18|1997-08-31|1997-10-11|TAKE BACK RETURN|RAIL|. quickly b|
-4225|98|10|3|28|27946.52|0.08|0.03|N|O|1997-07-11|1997-09-01|1997-08-03|DELIVER IN PERSON|FOB|ts are requests. even, bold depos|
-4226|188|9|1|27|29380.86|0.06|0.08|A|F|1993-05-03|1993-04-12|1993-05-16|COLLECT COD|AIR|sly alongside of the slyly ironic pac|
-4227|158|6|1|19|20104.85|0.01|0.08|A|F|1995-05-05|1995-05-03|1995-05-22|COLLECT COD|REG AIR|ns sleep along the blithely even theodolit|
-4227|33|4|2|8|7464.24|0.09|0.00|N|F|1995-06-11|1995-04-30|1995-06-28|COLLECT COD|REG AIR| packages since the bold, u|
-4227|75|6|3|11|10725.77|0.10|0.04|A|F|1995-03-30|1995-05-02|1995-04-26|DELIVER IN PERSON|SHIP|l requests-- bold requests cajole dogg|
-4227|200|4|4|2|2200.40|0.02|0.05|R|F|1995-04-24|1995-05-09|1995-05-21|DELIVER IN PERSON|AIR|ep. specia|
-4227|147|6|5|49|51309.86|0.05|0.06|R|F|1995-05-19|1995-04-12|1995-06-12|TAKE BACK RETURN|REG AIR|ts sleep blithely carefully unusual ideas.|
-4228|141|10|1|20|20822.80|0.00|0.06|N|O|1997-04-24|1997-05-29|1997-05-17|NONE|RAIL|f the slyly fluffy pinto beans are|
-4229|96|9|1|44|43827.96|0.02|0.05|N|O|1998-05-29|1998-05-12|1998-06-16|DELIVER IN PERSON|AIR|s. carefully e|
-4229|5|8|2|34|30770.00|0.07|0.05|N|O|1998-05-26|1998-04-13|1998-06-08|DELIVER IN PERSON|MAIL|thely final accounts use even packa|
-4230|46|5|1|38|35949.52|0.10|0.03|A|F|1992-04-28|1992-04-21|1992-05-28|TAKE BACK RETURN|FOB|ly regular packages. regular ideas boost|
-4230|199|3|2|43|47265.17|0.02|0.08|R|F|1992-03-14|1992-05-13|1992-03-28|NONE|FOB|ses lose blithely slyly final e|
-4230|196|9|3|10|10961.90|0.06|0.02|A|F|1992-06-11|1992-04-11|1992-07-02|TAKE BACK RETURN|MAIL|ar packages are |
-4230|75|6|4|28|27301.96|0.01|0.03|R|F|1992-05-12|1992-05-10|1992-06-01|TAKE BACK RETURN|MAIL|nt instruct|
-4230|125|10|5|50|51256.00|0.00|0.01|A|F|1992-03-29|1992-05-19|1992-04-20|TAKE BACK RETURN|SHIP|ts. final instructions in|
-4230|35|6|6|30|28050.90|0.05|0.07|A|F|1992-03-11|1992-04-29|1992-03-30|NONE|AIR|s. final excuses across the|
-4230|152|3|7|18|18938.70|0.10|0.04|R|F|1992-06-23|1992-05-10|1992-07-04|COLLECT COD|SHIP| the final acco|
-4231|142|3|1|47|48980.58|0.09|0.03|N|O|1997-11-27|1998-01-26|1997-12-17|NONE|REG AIR|hely along the silent at|
-4231|166|3|2|4|4264.64|0.06|0.02|N|O|1997-11-28|1998-01-26|1997-12-12|TAKE BACK RETURN|MAIL|lithely even packages. |
-4231|121|2|3|31|31654.72|0.07|0.08|N|O|1998-02-14|1997-12-27|1998-03-01|DELIVER IN PERSON|FOB|ublate. theodoli|
-4231|40|1|4|35|32901.40|0.10|0.00|N|O|1998-02-21|1998-01-24|1998-03-18|DELIVER IN PERSON|FOB|le quickly regular, unus|
-4256|151|9|1|22|23125.30|0.05|0.05|R|F|1992-07-30|1992-05-14|1992-08-14|NONE|TRUCK|, final platelets are slyly final pint|
-4257|65|10|1|3|2895.18|0.10|0.03|N|O|1995-06-18|1995-05-01|1995-07-12|DELIVER IN PERSON|MAIL|thin the theodolites use after the bl|
-4257|35|6|2|5|4675.15|0.01|0.04|R|F|1995-04-29|1995-06-05|1995-05-13|TAKE BACK RETURN|TRUCK|n deposits. furiously e|
-4257|128|9|3|33|33927.96|0.03|0.04|A|F|1995-05-23|1995-05-03|1995-05-31|COLLECT COD|AIR|uffily regular accounts ar|
-4258|166|7|1|36|38381.76|0.02|0.06|N|O|1997-02-23|1997-01-25|1997-02-27|TAKE BACK RETURN|SHIP|ns use alongs|
-4258|162|1|2|19|20181.04|0.03|0.02|N|O|1997-01-14|1996-12-12|1997-01-20|TAKE BACK RETURN|AIR|ly busily ironic foxes. f|
-4258|31|7|3|46|42827.38|0.04|0.07|N|O|1997-01-02|1996-12-26|1997-01-12|DELIVER IN PERSON|AIR| furiously pend|
-4258|35|6|4|22|20570.66|0.04|0.04|N|O|1996-12-12|1996-12-06|1996-12-20|TAKE BACK RETURN|AIR|e regular, even asym|
-4258|163|10|5|9|9568.44|0.04|0.03|N|O|1996-12-04|1996-12-08|1996-12-20|DELIVER IN PERSON|TRUCK|counts wake permanently after the bravely|
-4259|43|6|1|14|13202.56|0.05|0.03|N|O|1998-01-09|1997-11-21|1998-01-29|TAKE BACK RETURN|RAIL| furiously pending excuses. ideas hagg|
-4260|24|7|1|21|19404.42|0.08|0.04|R|F|1992-08-06|1992-06-18|1992-08-22|NONE|AIR|al, pending accounts must|
-4261|110|1|1|12|12121.32|0.05|0.01|A|F|1992-11-01|1993-01-01|1992-11-12|NONE|FOB|into beans |
-4261|82|3|2|4|3928.32|0.02|0.07|R|F|1992-12-11|1992-12-18|1992-12-24|DELIVER IN PERSON|FOB|ackages unwind furiously fluff|
-4261|175|5|3|3|3225.51|0.07|0.02|R|F|1992-11-10|1992-12-14|1992-11-17|COLLECT COD|RAIL|ly even deposits eat blithely alo|
-4261|174|3|4|36|38670.12|0.04|0.06|R|F|1992-12-02|1992-12-18|1992-12-25|NONE|REG AIR| slyly pendi|
-4261|24|7|5|28|25872.56|0.07|0.06|A|F|1992-10-08|1992-12-23|1992-10-11|TAKE BACK RETURN|MAIL|packages. fluffily i|
-4262|76|7|1|30|29282.10|0.01|0.03|N|O|1996-08-11|1996-10-11|1996-09-09|TAKE BACK RETURN|RAIL|tes after the carefully|
-4262|96|7|2|5|4980.45|0.02|0.05|N|O|1996-09-27|1996-09-05|1996-10-25|COLLECT COD|SHIP|blithely final asymptotes integrate|
-4262|162|1|3|5|5310.80|0.08|0.00|N|O|1996-10-02|1996-10-16|1996-10-05|NONE|REG AIR|ironic accounts are unusu|
-4262|74|2|4|45|43833.15|0.02|0.01|N|O|1996-11-09|1996-09-09|1996-11-12|DELIVER IN PERSON|SHIP|ackages boost. pending, even instruction|
-4262|100|3|5|28|28002.80|0.06|0.02|N|O|1996-10-22|1996-09-06|1996-11-13|DELIVER IN PERSON|FOB|ironic, regular depend|
-4262|17|7|6|26|23842.26|0.03|0.02|N|O|1996-08-29|1996-09-25|1996-08-31|NONE|RAIL|s boost slyly along the bold, iro|
-4262|160|5|7|41|43466.56|0.03|0.01|N|O|1996-08-28|1996-09-14|1996-09-20|COLLECT COD|RAIL|cuses unwind ac|
-4263|18|9|1|9|8262.09|0.08|0.07|N|O|1998-04-04|1998-04-29|1998-05-04|COLLECT COD|AIR|structions cajole quic|
-4263|196|10|2|28|30693.32|0.05|0.03|N|O|1998-06-24|1998-06-08|1998-07-14|NONE|MAIL|ideas for the carefully re|
-4263|11|1|3|38|34618.38|0.01|0.01|N|O|1998-07-10|1998-05-08|1998-07-17|NONE|TRUCK|rding to the dep|
-4263|19|3|4|20|18380.20|0.02|0.07|N|O|1998-04-09|1998-04-30|1998-05-04|NONE|RAIL|uietly regular deposits. sly deposits w|
-4263|198|2|5|14|15374.66|0.09|0.06|N|O|1998-05-06|1998-04-17|1998-05-11|DELIVER IN PERSON|TRUCK|d accounts. daringly regular accounts hagg|
-4263|113|10|6|47|47616.17|0.08|0.06|N|O|1998-06-28|1998-05-09|1998-07-02|DELIVER IN PERSON|TRUCK|y. theodolites wake idly ironic do|
-4263|29|4|7|6|5574.12|0.04|0.04|N|O|1998-05-01|1998-06-02|1998-05-14|TAKE BACK RETURN|REG AIR|g the final, regular instructions: |
-4288|74|5|1|32|31170.24|0.10|0.07|R|F|1993-03-19|1993-01-26|1993-04-18|TAKE BACK RETURN|AIR|e blithely even instructions. speci|
-4288|105|6|2|39|39198.90|0.05|0.02|R|F|1993-03-25|1993-02-06|1993-03-28|DELIVER IN PERSON|AIR|uffy theodolites run|
-4288|125|8|3|7|7175.84|0.03|0.01|A|F|1993-01-15|1993-02-05|1993-01-26|NONE|TRUCK|ngside of the special platelet|
-4289|196|7|1|19|20827.61|0.06|0.06|R|F|1993-12-31|1993-11-06|1994-01-23|DELIVER IN PERSON|TRUCK|e carefully regular ideas. sl|
-4290|137|3|1|23|23853.99|0.06|0.04|R|F|1995-04-04|1995-02-16|1995-04-07|TAKE BACK RETURN|REG AIR|uests cajole carefully.|
-4290|99|2|2|3|2997.27|0.09|0.03|A|F|1995-03-25|1995-03-07|1995-04-11|NONE|RAIL|lar platelets cajole|
-4291|192|6|1|3|3276.57|0.08|0.08|A|F|1994-03-17|1994-02-21|1994-03-27|COLLECT COD|SHIP|tes sleep slyly above the quickly sl|
-4291|125|8|2|43|44080.16|0.01|0.06|A|F|1994-02-01|1994-02-27|1994-02-06|DELIVER IN PERSON|REG AIR|s. quietly regular |
-4291|8|1|3|25|22700.00|0.09|0.08|R|F|1994-02-14|1994-02-08|1994-03-15|COLLECT COD|AIR|uctions. furiously regular ins|
-4292|44|3|1|22|20768.88|0.08|0.03|R|F|1992-02-14|1992-02-16|1992-03-01|NONE|FOB|refully expres|
-4292|40|6|2|1|940.04|0.03|0.01|A|F|1992-02-07|1992-03-16|1992-02-10|DELIVER IN PERSON|FOB| the furiously ev|
-4292|120|10|3|35|35704.20|0.03|0.06|A|F|1992-03-23|1992-04-04|1992-04-02|COLLECT COD|TRUCK|dugouts use. furiously bold packag|
-4292|163|10|4|40|42526.40|0.05|0.04|A|F|1992-04-27|1992-03-07|1992-05-04|COLLECT COD|REG AIR|ounts according to the furiously |
-4292|131|7|5|6|6186.78|0.07|0.08|R|F|1992-03-03|1992-02-24|1992-03-25|COLLECT COD|FOB|bove the silently regula|
-4292|4|1|6|47|42488.00|0.05|0.00|R|F|1992-05-02|1992-03-21|1992-05-27|TAKE BACK RETURN|FOB|y packages; even ideas boost|
-4293|1|6|1|34|30634.00|0.03|0.08|N|O|1996-11-05|1996-10-12|1996-12-04|NONE|FOB|ions sleep blithely on|
-4293|77|5|2|50|48853.50|0.01|0.05|N|O|1996-11-27|1996-10-30|1996-12-22|COLLECT COD|MAIL| special deposits. furiousl|
-4293|199|1|3|47|51661.93|0.08|0.02|N|O|1996-09-07|1996-10-24|1996-09-15|NONE|RAIL|ithely pending deposits af|
-4293|88|9|4|25|24702.00|0.04|0.04|N|O|1996-09-11|1996-11-14|1996-09-22|DELIVER IN PERSON|FOB|inal asympt|
-4293|181|2|5|1|1081.18|0.06|0.05|N|O|1996-11-15|1996-10-09|1996-11-26|COLLECT COD|AIR|eposits should boost along the |
-4293|79|7|6|45|44058.15|0.10|0.04|N|O|1996-11-04|1996-11-06|1996-11-23|NONE|MAIL|lar ideas use carefully|
-4294|105|8|1|19|19096.90|0.03|0.04|A|F|1992-10-16|1992-11-13|1992-10-26|DELIVER IN PERSON|AIR|nt dependencies. furiously regular ideas d|
-4294|27|2|2|16|14832.32|0.01|0.02|R|F|1992-08-17|1992-09-24|1992-09-04|TAKE BACK RETURN|REG AIR|lithely pint|
-4294|198|1|3|30|32945.70|0.01|0.00|A|F|1992-09-12|1992-11-06|1992-09-25|NONE|MAIL|olites. bold foxes affix ironic theodolite|
-4294|105|2|4|34|34173.40|0.02|0.01|R|F|1992-09-09|1992-11-06|1992-10-04|TAKE BACK RETURN|REG AIR|pendencies!|
-4294|119|3|5|37|37707.07|0.05|0.01|R|F|1992-09-07|1992-10-13|1992-09-08|NONE|REG AIR|cial packages nag f|
-4294|87|8|6|42|41457.36|0.02|0.03|A|F|1992-09-30|1992-11-13|1992-10-15|DELIVER IN PERSON|FOB| carefully; furiously ex|
-4294|175|3|7|47|50532.99|0.02|0.08|R|F|1992-11-09|1992-11-03|1992-12-05|TAKE BACK RETURN|SHIP|es. blithely r|
-4295|29|2|1|49|45521.98|0.09|0.01|N|O|1996-05-25|1996-03-17|1996-06-19|TAKE BACK RETURN|REG AIR|refully silent requests. f|
-4295|71|9|2|4|3884.28|0.09|0.07|N|O|1996-06-05|1996-04-26|1996-06-13|DELIVER IN PERSON|TRUCK|arefully according to the pending ac|
-4295|193|4|3|3|3279.57|0.04|0.00|N|O|1996-06-04|1996-04-24|1996-06-24|DELIVER IN PERSON|AIR|telets cajole bravely|
-4295|80|9|4|30|29402.40|0.07|0.06|N|O|1996-03-22|1996-04-23|1996-04-20|NONE|SHIP|yly ironic frets. pending foxes after |
-4320|46|5|1|28|26489.12|0.02|0.06|N|O|1997-01-28|1997-02-07|1997-02-07|COLLECT COD|FOB|nts. even, ironic excuses hagg|
-4320|140|6|2|6|6240.84|0.08|0.08|N|O|1997-01-11|1997-01-26|1997-01-22|DELIVER IN PERSON|SHIP|against the carefully careful asym|
-4320|188|9|3|33|35909.94|0.09|0.02|N|O|1996-12-11|1997-02-27|1997-01-08|TAKE BACK RETURN|SHIP|ess asymptotes so|
-4321|147|6|1|33|34555.62|0.09|0.02|A|F|1994-09-01|1994-08-17|1994-09-05|DELIVER IN PERSON|TRUCK|yly special excuses. fluffily |
-4321|54|2|2|45|42932.25|0.00|0.08|R|F|1994-11-13|1994-09-15|1994-11-18|DELIVER IN PERSON|SHIP| haggle ironically bold theodolites. quick|
-4321|186|7|3|23|24982.14|0.01|0.05|A|F|1994-11-03|1994-10-08|1994-11-06|DELIVER IN PERSON|SHIP|ly even orbits slee|
-4321|91|2|4|4|3964.36|0.02|0.00|R|F|1994-09-10|1994-10-06|1994-09-11|NONE|FOB|ironic deposi|
-4321|172|2|5|10|10721.70|0.04|0.03|A|F|1994-09-07|1994-08-23|1994-09-17|TAKE BACK RETURN|SHIP|wake carefully alongside of |
-4322|69|4|1|39|37793.34|0.04|0.02|N|O|1998-04-27|1998-06-03|1998-05-04|TAKE BACK RETURN|MAIL|its integrate fluffily |
-4322|140|1|2|9|9361.26|0.05|0.08|N|O|1998-05-18|1998-04-27|1998-05-28|COLLECT COD|AIR|ual instructio|
-4322|8|9|3|12|10896.00|0.09|0.05|N|O|1998-03-29|1998-06-05|1998-04-16|DELIVER IN PERSON|TRUCK|e blithely against the slyly unusu|
-4322|46|7|4|17|16082.68|0.09|0.08|N|O|1998-05-31|1998-05-31|1998-06-10|TAKE BACK RETURN|FOB|ructions boost |
-4322|102|7|5|10|10021.00|0.00|0.05|N|O|1998-05-31|1998-04-27|1998-06-25|TAKE BACK RETURN|REG AIR| regular ideas engage carefully quick|
-4322|60|8|6|39|37442.34|0.09|0.08|N|O|1998-03-16|1998-05-21|1998-04-11|COLLECT COD|AIR|ccounts. dogged pin|
-4322|14|4|7|34|31076.34|0.05|0.00|N|O|1998-05-27|1998-04-12|1998-06-16|NONE|REG AIR|ounts haggle fluffily ideas. pend|
-4323|1|2|1|33|29733.00|0.09|0.02|A|F|1994-05-04|1994-03-06|1994-05-23|COLLECT COD|TRUCK|the slyly bold deposits slee|
-4324|51|2|1|44|41846.20|0.05|0.04|N|O|1995-10-15|1995-09-07|1995-11-07|DELIVER IN PERSON|AIR|ainst the u|
-4324|48|7|2|12|11376.48|0.04|0.02|N|O|1995-10-05|1995-09-07|1995-10-18|NONE|REG AIR|c packages. furiously express sauternes|
-4324|82|3|3|14|13749.12|0.07|0.06|N|O|1995-11-12|1995-08-26|1995-11-21|COLLECT COD|AIR| packages nag express excuses. qui|
-4324|50|7|4|14|13300.70|0.02|0.04|N|O|1995-09-20|1995-10-08|1995-10-06|COLLECT COD|RAIL| express ideas. blithely blit|
-4324|84|5|5|22|21649.76|0.07|0.03|N|O|1995-09-13|1995-10-04|1995-09-23|DELIVER IN PERSON|SHIP|ke express, special ideas.|
-4324|43|2|6|31|29234.24|0.08|0.04|N|O|1995-10-23|1995-09-14|1995-11-09|COLLECT COD|RAIL|efully flu|
-4324|154|6|7|46|48490.90|0.00|0.03|N|O|1995-11-03|1995-09-28|1995-11-22|NONE|SHIP|ular, final theodo|
-4325|160|2|1|18|19082.88|0.01|0.07|N|O|1996-10-07|1996-09-28|1996-10-31|DELIVER IN PERSON|RAIL|. blithely|
-4326|163|4|1|11|11694.76|0.01|0.01|N|O|1997-02-02|1996-12-10|1997-02-20|DELIVER IN PERSON|TRUCK|press reque|
-4326|167|6|2|27|28813.32|0.06|0.01|N|O|1996-11-29|1997-01-20|1996-12-23|COLLECT COD|AIR|inal packages. final asymptotes about t|
-4327|95|8|1|18|17911.62|0.08|0.00|N|F|1995-06-16|1995-04-20|1995-07-12|COLLECT COD|RAIL|y final excuses. ironic, special requests a|
-4327|106|9|2|40|40244.00|0.07|0.01|N|F|1995-05-26|1995-04-17|1995-06-18|NONE|AIR|quests. packages are after th|
-4327|145|2|3|11|11496.54|0.10|0.07|R|F|1995-04-24|1995-05-27|1995-05-24|TAKE BACK RETURN|FOB| ironic dolphins|
-4327|21|10|4|8|7368.16|0.04|0.08|N|F|1995-05-26|1995-05-28|1995-06-19|DELIVER IN PERSON|AIR|eodolites cajole; unusual Tiresias|
-4327|190|1|5|39|42517.41|0.01|0.00|N|O|1995-06-23|1995-04-18|1995-07-13|TAKE BACK RETURN|FOB|kages against the blit|
-4327|152|4|6|10|10521.50|0.00|0.06|A|F|1995-04-28|1995-06-11|1995-05-07|TAKE BACK RETURN|TRUCK|arefully sile|
-4352|106|9|1|18|18109.80|0.00|0.03|N|O|1998-02-27|1998-02-02|1998-03-01|DELIVER IN PERSON|RAIL|ding to th|
-4353|94|8|1|22|21869.98|0.05|0.05|N|O|1998-01-19|1998-01-23|1998-02-10|COLLECT COD|FOB|ent packages. accounts are slyly. |
-4354|15|9|1|30|27450.30|0.08|0.07|R|F|1995-01-27|1994-11-24|1995-02-25|TAKE BACK RETURN|REG AIR|around the ir|
-4354|153|8|2|23|24222.45|0.01|0.08|R|F|1994-11-20|1994-12-23|1994-11-27|TAKE BACK RETURN|AIR|kly along the ironic, ent|
-4354|51|6|3|2|1902.10|0.10|0.04|A|F|1995-01-09|1994-12-15|1995-01-24|TAKE BACK RETURN|REG AIR|s nag quickly |
-4354|86|7|4|36|35498.88|0.05|0.05|A|F|1994-11-20|1994-12-06|1994-12-06|DELIVER IN PERSON|AIR| wake slyly eve|
-4354|65|10|5|37|35707.22|0.06|0.02|R|F|1995-01-13|1994-12-29|1995-01-31|DELIVER IN PERSON|FOB|deas use blithely! special foxes print af|
-4354|108|3|6|36|36291.60|0.03|0.04|R|F|1994-12-03|1994-12-05|1995-01-02|TAKE BACK RETURN|TRUCK|efully special packages use fluffily|
-4354|139|5|7|18|18704.34|0.03|0.04|A|F|1994-12-07|1994-12-11|1994-12-11|TAKE BACK RETURN|SHIP|ross the furiously |
-4355|195|7|1|32|35046.08|0.10|0.02|N|O|1996-12-29|1997-02-08|1997-01-24|DELIVER IN PERSON|REG AIR|y silent deposits. b|
-4355|17|1|2|4|3668.04|0.05|0.02|N|O|1997-02-25|1997-01-29|1997-03-17|TAKE BACK RETURN|TRUCK|slyly blithely regular packag|
-4355|1|2|3|13|11713.00|0.07|0.05|N|O|1997-01-21|1996-12-22|1997-02-14|COLLECT COD|TRUCK| ought to mold. blithely pending ideas |
-4355|194|6|4|14|15318.66|0.04|0.02|N|O|1997-03-08|1997-01-22|1997-03-26|NONE|RAIL|he furiously ironic accounts. quickly iro|
-4355|31|7|5|50|46551.50|0.10|0.00|N|O|1996-11-25|1997-01-01|1996-12-06|DELIVER IN PERSON|REG AIR| regular accounts boost along the |
-4355|122|7|6|35|35774.20|0.00|0.08|N|O|1997-01-28|1997-01-28|1997-02-20|NONE|FOB|ess accounts affix ironic|
-4355|101|4|7|47|47051.70|0.09|0.02|N|O|1996-12-28|1996-12-29|1997-01-09|NONE|RAIL|e. realms integrate |
-4356|194|5|1|35|38296.65|0.00|0.04|R|F|1994-05-30|1994-06-14|1994-06-08|COLLECT COD|MAIL|arefully ironic |
-4357|84|5|1|50|49204.00|0.04|0.07|N|O|1997-11-25|1997-12-03|1997-12-17|DELIVER IN PERSON|RAIL|s. final, e|
-4357|108|9|2|17|17137.70|0.10|0.07|N|O|1998-02-01|1997-12-08|1998-02-09|DELIVER IN PERSON|MAIL|e carefully furiou|
-4358|126|5|1|47|48227.64|0.04|0.00|N|O|1997-10-15|1997-10-14|1997-11-04|DELIVER IN PERSON|SHIP|refully busy dep|
-4359|174|3|1|41|44040.97|0.03|0.07|A|F|1993-04-06|1993-05-06|1993-04-14|COLLECT COD|RAIL|s affix sly|
-4359|153|8|2|8|8425.20|0.03|0.08|R|F|1993-06-27|1993-05-16|1993-07-04|DELIVER IN PERSON|MAIL|packages affix. fluffily regular f|
-4359|193|6|3|32|34982.08|0.10|0.03|R|F|1993-06-18|1993-04-04|1993-07-18|COLLECT COD|MAIL|olites nag quietly caref|
-4359|78|8|4|1|978.07|0.05|0.03|R|F|1993-04-27|1993-05-09|1993-05-08|NONE|MAIL| fluffily ironic, bold pac|
-4359|33|4|5|22|20526.66|0.04|0.01|A|F|1993-03-28|1993-06-01|1993-04-13|NONE|REG AIR|accounts wake ironic deposits. ironic|
-4384|136|7|1|5|5180.65|0.09|0.01|A|F|1992-08-22|1992-08-24|1992-09-20|DELIVER IN PERSON|MAIL|instructions sleep. blithely express pa|
-4384|89|10|2|38|37585.04|0.07|0.06|A|F|1992-10-18|1992-09-24|1992-11-04|NONE|FOB|ly final requests. regu|
-4384|89|10|3|11|10879.88|0.05|0.04|R|F|1992-08-31|1992-10-04|1992-09-28|TAKE BACK RETURN|FOB|deposits promise carefully even, regular e|
-4385|111|8|1|38|38422.18|0.00|0.02|N|O|1996-11-22|1996-10-30|1996-12-21|DELIVER IN PERSON|TRUCK|inal frays. final, bold exc|
-4386|130|3|1|10|10301.30|0.05|0.07|N|O|1998-06-03|1998-04-16|1998-06-28|TAKE BACK RETURN|MAIL|gainst the quickly expre|
-4386|118|2|2|28|28507.08|0.03|0.06|N|O|1998-03-19|1998-05-01|1998-03-27|NONE|FOB|. quick packages play slyly |
-4386|140|1|3|4|4160.56|0.07|0.05|N|O|1998-04-07|1998-03-25|1998-04-19|COLLECT COD|FOB|ns wake carefully carefully iron|
-4386|121|2|4|21|21443.52|0.09|0.00|N|O|1998-05-05|1998-03-19|1998-05-13|NONE|RAIL|e pending, sp|
-4386|130|3|5|39|40175.07|0.09|0.06|N|O|1998-03-05|1998-03-15|1998-03-16|NONE|RAIL|structions cajole quickly express|
-4386|90|1|6|18|17821.62|0.02|0.05|N|O|1998-04-12|1998-04-09|1998-05-12|TAKE BACK RETURN|SHIP| deposits use according to the pending, |
-4386|20|4|7|16|14720.32|0.07|0.02|N|O|1998-05-05|1998-03-17|1998-06-03|COLLECT COD|AIR|e furiously final pint|
-4387|122|5|1|3|3066.36|0.02|0.01|N|O|1996-01-17|1996-01-14|1996-01-28|COLLECT COD|AIR| boost slyly ironic instructions. furiou|
-4387|177|5|2|48|51704.16|0.06|0.05|N|O|1995-10-29|1995-12-11|1995-11-01|NONE|REG AIR|sleep slyly. blithely sl|
-4387|2|5|3|15|13530.00|0.00|0.03|N|O|1996-01-11|1996-01-14|1996-01-30|TAKE BACK RETURN|REG AIR|s hinder quietly across the pla|
-4387|47|8|4|9|8523.36|0.00|0.03|N|O|1996-01-04|1995-12-26|1996-01-12|DELIVER IN PERSON|REG AIR|c ideas. slyly regular packages sol|
-4387|82|3|5|3|2946.24|0.05|0.08|N|O|1995-11-17|1995-12-28|1995-11-25|COLLECT COD|SHIP| pinto beans |
-4387|6|3|6|40|36240.00|0.02|0.04|N|O|1995-11-29|1995-12-10|1995-12-20|NONE|REG AIR|deas according to the blithely regular fox|
-4388|65|10|1|30|28951.80|0.02|0.07|N|O|1996-06-07|1996-05-07|1996-06-22|DELIVER IN PERSON|FOB|s cajole fluffil|
-4388|84|5|2|28|27554.24|0.05|0.04|N|O|1996-05-08|1996-06-20|1996-05-12|TAKE BACK RETURN|RAIL|ove the ide|
-4388|52|4|3|13|12376.65|0.07|0.05|N|O|1996-06-28|1996-05-23|1996-07-04|DELIVER IN PERSON|REG AIR|ly even, expre|
-4389|157|2|1|20|21143.00|0.08|0.00|A|F|1994-06-06|1994-06-17|1994-06-17|DELIVER IN PERSON|SHIP|ng the carefully express d|
-4389|153|5|2|13|13690.95|0.00|0.00|A|F|1994-08-18|1994-06-06|1994-08-20|NONE|RAIL|nal, regula|
-4389|79|9|3|39|38183.73|0.04|0.07|A|F|1994-06-08|1994-06-04|1994-06-10|TAKE BACK RETURN|TRUCK| unusual, final excuses cajole carefully |
-4389|160|2|4|5|5300.80|0.09|0.00|A|F|1994-09-03|1994-06-23|1994-09-16|NONE|FOB| ironic request|
-4389|11|5|5|22|20042.22|0.08|0.00|R|F|1994-07-05|1994-06-12|1994-07-12|NONE|TRUCK|lly silent de|
-4389|2|3|6|22|19844.00|0.01|0.04|R|F|1994-06-07|1994-06-29|1994-06-19|COLLECT COD|TRUCK|at the final excuses hinder carefully a|
-4389|185|6|7|4|4340.72|0.09|0.08|R|F|1994-06-14|1994-06-30|1994-07-06|NONE|REG AIR| blithely even d|
-4390|152|10|1|35|36825.25|0.07|0.04|R|F|1995-05-30|1995-07-02|1995-06-15|DELIVER IN PERSON|TRUCK|ongside of the slyly regular ideas|
-4390|196|8|2|28|30693.32|0.03|0.00|N|O|1995-09-07|1995-06-22|1995-10-05|COLLECT COD|SHIP|ld braids haggle atop the for|
-4390|101|8|3|42|42046.20|0.05|0.08|A|F|1995-06-12|1995-07-16|1995-06-17|NONE|AIR|arefully even accoun|
-4390|98|2|4|32|31938.88|0.07|0.08|N|O|1995-09-15|1995-08-12|1995-10-05|TAKE BACK RETURN|TRUCK|ctions across|
-4391|161|10|1|1|1061.16|0.09|0.00|R|F|1992-06-18|1992-04-27|1992-06-20|COLLECT COD|TRUCK|ong the silent deposits|
-4391|187|8|2|45|48923.10|0.07|0.04|R|F|1992-04-01|1992-05-01|1992-04-13|TAKE BACK RETURN|TRUCK|ep quickly after |
-4416|94|7|1|37|36781.33|0.08|0.03|A|F|1992-10-23|1992-08-23|1992-11-16|COLLECT COD|RAIL|fluffily ironic |
-4416|89|10|2|3|2967.24|0.06|0.03|R|F|1992-10-22|1992-08-06|1992-11-13|DELIVER IN PERSON|SHIP| requests sleep along the |
-4416|9|6|3|45|40905.00|0.09|0.03|A|F|1992-10-16|1992-09-09|1992-10-28|COLLECT COD|AIR|the final pinto beans. special frets |
-4417|75|5|1|28|27301.96|0.08|0.02|N|O|1998-09-04|1998-10-04|1998-09-19|TAKE BACK RETURN|REG AIR|ies across the furious|
-4417|181|2|2|1|1081.18|0.06|0.08|N|O|1998-10-23|1998-08-22|1998-10-24|NONE|REG AIR|press deposits promise stealthily amo|
-4417|98|2|3|35|34933.15|0.06|0.04|N|O|1998-08-08|1998-09-23|1998-09-02|DELIVER IN PERSON|FOB|slyly regular, silent courts. even packag|
-4418|35|1|1|32|29920.96|0.02|0.06|A|F|1993-05-28|1993-06-02|1993-05-30|TAKE BACK RETURN|RAIL|ly. bold pinto b|
-4418|22|5|2|14|12908.28|0.03|0.04|A|F|1993-05-20|1993-06-18|1993-06-05|TAKE BACK RETURN|SHIP| blithely regular requests. blith|
-4418|79|7|3|3|2937.21|0.00|0.02|R|F|1993-04-08|1993-06-04|1993-05-02|NONE|SHIP|luffily across the unusual ideas. reque|
-4419|108|9|1|45|45364.50|0.01|0.05|N|O|1996-07-20|1996-09-07|1996-08-18|DELIVER IN PERSON|TRUCK|s doze sometimes fluffily regular a|
-4419|32|8|2|42|39145.26|0.00|0.03|N|O|1996-09-18|1996-07-25|1996-09-21|COLLECT COD|RAIL|sts. furious|
-4419|132|3|3|6|6192.78|0.02|0.08|N|O|1996-06-25|1996-09-04|1996-07-20|DELIVER IN PERSON|AIR|ts wake slyly final dugou|
-4420|8|5|1|7|6356.00|0.07|0.03|R|F|1994-08-30|1994-09-03|1994-09-25|NONE|FOB| regular instructions sleep around|
-4421|98|2|1|37|36929.33|0.09|0.08|N|O|1997-07-22|1997-06-27|1997-07-25|DELIVER IN PERSON|SHIP|l accounts. ironic request|
-4421|56|1|2|46|43978.30|0.04|0.04|N|O|1997-04-21|1997-05-13|1997-05-15|DELIVER IN PERSON|FOB|reful packages. bold, |
-4421|167|6|3|46|49089.36|0.00|0.06|N|O|1997-05-25|1997-05-21|1997-06-23|COLLECT COD|TRUCK|g dependenci|
-4421|191|4|4|32|34918.08|0.06|0.04|N|O|1997-07-09|1997-06-03|1997-07-25|NONE|SHIP|ar ideas eat among the furiousl|
-4421|190|1|5|32|34886.08|0.06|0.04|N|O|1997-07-28|1997-06-14|1997-08-13|NONE|REG AIR|uickly final pinto beans impress. bold |
-4421|47|6|6|44|41669.76|0.09|0.06|N|O|1997-06-17|1997-06-20|1997-06-29|NONE|TRUCK|le carefully. bl|
-4421|116|3|7|18|18289.98|0.01|0.00|N|O|1997-06-07|1997-05-13|1997-06-10|DELIVER IN PERSON|FOB|. regular, s|
-4422|135|1|1|5|5175.65|0.09|0.07|N|O|1995-07-17|1995-08-13|1995-07-25|NONE|SHIP|e furiously about t|
-4422|48|5|2|41|38869.64|0.08|0.05|N|F|1995-06-12|1995-07-09|1995-06-20|COLLECT COD|TRUCK| theodolites shal|
-4422|103|10|3|39|39120.90|0.00|0.05|N|O|1995-09-02|1995-06-24|1995-09-14|NONE|TRUCK|en hockey players engage|
-4422|153|4|4|4|4212.60|0.02|0.05|N|O|1995-09-18|1995-08-12|1995-10-18|COLLECT COD|FOB|cies along the bo|
-4422|80|9|5|20|19601.60|0.07|0.05|N|O|1995-08-17|1995-07-16|1995-09-13|DELIVER IN PERSON|RAIL|ructions wake slyly al|
-4423|150|9|1|3|3150.45|0.03|0.00|A|F|1995-03-22|1995-04-06|1995-04-19|NONE|TRUCK| final theodolites nag after the bli|
-4423|60|5|2|2|1920.12|0.07|0.04|A|F|1995-03-04|1995-04-04|1995-03-08|TAKE BACK RETURN|REG AIR|old sheaves sleep|
-4448|52|7|1|24|22849.20|0.10|0.07|N|O|1998-09-09|1998-07-06|1998-09-27|DELIVER IN PERSON|SHIP|nal packages along the ironic instructi|
-4448|189|10|2|13|14159.34|0.00|0.01|N|O|1998-07-26|1998-07-03|1998-08-14|COLLECT COD|MAIL|fluffily express accounts integrate furiou|
-4448|41|4|3|35|32936.40|0.10|0.06|N|O|1998-09-18|1998-07-27|1998-10-08|NONE|REG AIR|aggle carefully alongside of the q|
-4448|141|2|4|3|3123.42|0.01|0.01|N|O|1998-07-20|1998-07-10|1998-08-07|DELIVER IN PERSON|TRUCK|ronic theod|
-4448|91|2|5|41|40634.69|0.00|0.08|N|O|1998-07-30|1998-08-09|1998-08-03|NONE|AIR|pon the permanently even excuses nag |
-4448|172|3|6|12|12866.04|0.06|0.03|N|O|1998-08-21|1998-06-30|1998-09-09|COLLECT COD|RAIL|sits about the ironic, bu|
-4449|32|3|1|42|39145.26|0.10|0.07|N|O|1998-03-22|1998-05-09|1998-04-03|NONE|FOB| packages. blithely final |
-4449|141|8|2|10|10411.40|0.02|0.03|N|O|1998-05-09|1998-05-04|1998-05-15|NONE|SHIP|ccounts alongside of the platelets integr|
-4450|174|5|1|44|47263.48|0.10|0.00|N|O|1997-10-12|1997-10-13|1997-10-29|DELIVER IN PERSON|RAIL| the slyly eve|
-4450|15|6|2|9|8235.09|0.03|0.03|N|O|1997-08-13|1997-08-16|1997-08-15|NONE|FOB|gular requests cajole carefully. regular c|
-4450|96|8|3|45|44824.05|0.08|0.01|N|O|1997-09-01|1997-10-06|1997-09-19|NONE|TRUCK|express ideas are furiously regular|
-4450|62|9|4|13|12506.78|0.00|0.00|N|O|1997-08-26|1997-09-18|1997-09-20|COLLECT COD|MAIL| brave foxes. slyly unusual|
-4450|56|7|5|6|5736.30|0.09|0.01|N|O|1997-09-02|1997-09-30|1997-09-09|NONE|FOB|eposits. foxes cajole unusual fox|
-4451|164|5|1|40|42566.40|0.03|0.03|A|F|1994-11-18|1994-12-25|1994-11-26|DELIVER IN PERSON|RAIL|y. slyly special deposits are sly|
-4451|63|4|2|34|32744.04|0.10|0.02|A|F|1994-11-30|1994-12-04|1994-12-13|COLLECT COD|SHIP| regular ideas.|
-4451|159|10|3|19|20123.85|0.05|0.06|R|F|1994-10-09|1994-11-26|1994-10-23|COLLECT COD|FOB|ly after the fluffi|
-4452|114|8|1|21|21296.31|0.07|0.03|R|F|1994-10-06|1994-08-23|1994-10-15|COLLECT COD|TRUCK|multipliers x-ray carefully in place of |
-4452|1|8|2|47|42347.00|0.01|0.06|A|F|1994-10-08|1994-08-09|1994-10-09|TAKE BACK RETURN|TRUCK|ts. slyly regular cour|
-4453|147|10|1|41|42932.74|0.00|0.08|N|O|1997-07-17|1997-05-15|1997-07-31|NONE|REG AIR|anent theodolites are slyly except t|
-4453|133|4|2|16|16530.08|0.03|0.00|N|O|1997-07-22|1997-05-05|1997-08-03|COLLECT COD|FOB|ar excuses nag quickly even accounts. b|
-4453|62|7|3|48|46178.88|0.02|0.07|N|O|1997-05-29|1997-06-24|1997-06-03|NONE|SHIP|eep. fluffily express accounts at the furi|
-4453|102|5|4|26|26054.60|0.06|0.07|N|O|1997-05-07|1997-06-07|1997-05-22|NONE|TRUCK|express packages are|
-4454|151|9|1|20|21023.00|0.10|0.08|R|F|1994-05-06|1994-03-17|1994-05-20|COLLECT COD|SHIP|lar theodolites. even instructio|
-4454|152|10|2|22|23147.30|0.06|0.02|A|F|1994-02-06|1994-04-11|1994-03-06|DELIVER IN PERSON|RAIL|ully. carefully final accounts accordi|
-4454|192|3|3|45|49148.55|0.07|0.04|A|F|1994-03-29|1994-03-26|1994-04-04|TAKE BACK RETURN|RAIL|ests promise. packages print fur|
-4454|2|3|4|1|902.00|0.09|0.05|A|F|1994-02-05|1994-04-19|1994-02-12|COLLECT COD|RAIL|equests run.|
-4454|52|4|5|48|45698.40|0.00|0.07|R|F|1994-04-23|1994-04-03|1994-04-26|COLLECT COD|FOB|to beans wake across th|
-4454|160|8|6|20|21203.20|0.10|0.03|A|F|1994-04-08|1994-03-06|1994-04-26|DELIVER IN PERSON|TRUCK|quickly regular requests. furiously|
-4455|70|5|1|20|19401.40|0.01|0.05|A|F|1994-01-31|1993-11-21|1994-03-02|DELIVER IN PERSON|MAIL| express packages. packages boost quickly|
-4455|153|4|2|47|49498.05|0.09|0.01|R|F|1994-01-01|1993-12-25|1994-01-05|COLLECT COD|FOB| requests. even, even accou|
-4455|123|2|3|34|34786.08|0.00|0.06|A|F|1993-10-24|1993-11-27|1993-11-04|TAKE BACK RETURN|AIR| slyly ironic requests. quickly even d|
-4480|108|5|1|30|30243.00|0.08|0.03|R|F|1994-07-29|1994-06-22|1994-08-01|NONE|FOB|ven braids us|
-4481|24|9|1|50|46201.00|0.02|0.06|N|O|1996-07-22|1996-05-13|1996-08-14|DELIVER IN PERSON|RAIL|ar packages. regula|
-4481|190|1|2|27|29435.13|0.02|0.03|N|O|1996-04-06|1996-05-17|1996-04-12|TAKE BACK RETURN|AIR|ackages haggle even, |
-4482|71|2|1|32|31074.24|0.06|0.03|A|F|1995-05-16|1995-07-22|1995-06-07|NONE|RAIL| quickly pendin|
-4482|96|9|2|32|31874.88|0.01|0.06|N|O|1995-08-16|1995-06-26|1995-09-10|DELIVER IN PERSON|AIR|eans wake according |
-4483|6|7|1|32|28992.00|0.07|0.07|R|F|1992-04-05|1992-05-25|1992-04-08|DELIVER IN PERSON|MAIL|ests haggle. slyl|
-4483|62|1|2|50|48103.00|0.01|0.06|A|F|1992-06-19|1992-05-12|1992-07-08|DELIVER IN PERSON|TRUCK|ag blithely even|
-4483|9|4|3|50|45450.00|0.00|0.04|R|F|1992-06-10|1992-04-18|1992-06-17|DELIVER IN PERSON|MAIL|ackages. furiously ironi|
-4484|95|9|1|4|3980.36|0.06|0.03|N|O|1997-04-09|1997-02-11|1997-04-12|TAKE BACK RETURN|TRUCK|packages de|
-4484|137|8|2|39|40448.07|0.05|0.02|N|O|1997-04-01|1997-01-26|1997-04-21|NONE|RAIL|onic accounts wake blithel|
-4484|190|1|3|38|41427.22|0.06|0.07|N|O|1997-03-07|1997-01-31|1997-04-01|COLLECT COD|REG AIR|. even requests un|
-4484|122|5|4|41|41906.92|0.06|0.03|N|O|1997-01-25|1997-02-15|1997-01-29|TAKE BACK RETURN|REG AIR|ress accounts. ironic deposits unwind fur|
-4484|3|4|5|42|37926.00|0.03|0.07|N|O|1997-03-25|1997-02-21|1997-04-05|DELIVER IN PERSON|REG AIR|ding, pending requests wake. fluffily |
-4484|36|7|6|29|27144.87|0.09|0.06|N|O|1996-12-27|1997-03-10|1997-01-13|NONE|FOB| wake blithely ironic|
-4484|103|8|7|50|50155.00|0.07|0.01|N|O|1997-03-17|1997-03-16|1997-03-21|COLLECT COD|FOB|the ironic, final theodo|
-4485|191|5|1|1|1091.19|0.03|0.05|R|F|1994-12-04|1995-02-07|1994-12-09|NONE|AIR|play according to the ironic, ironic|
-4485|141|10|2|46|47892.44|0.04|0.06|R|F|1995-03-09|1994-12-14|1995-03-23|DELIVER IN PERSON|AIR|. ironic foxes haggle. regular war|
-4485|175|6|3|43|46232.31|0.01|0.05|R|F|1995-01-17|1995-02-11|1995-02-07|DELIVER IN PERSON|TRUCK|al accounts according to the slyly r|
-4485|144|5|4|43|44898.02|0.08|0.06|R|F|1995-01-28|1995-01-26|1995-02-07|DELIVER IN PERSON|AIR|. blithely|
-4485|6|7|5|47|42582.00|0.08|0.04|R|F|1995-03-11|1995-01-11|1995-03-21|TAKE BACK RETURN|RAIL|luffily pending acc|
-4486|135|1|1|46|47615.98|0.08|0.00|N|O|1998-05-02|1998-04-05|1998-05-08|COLLECT COD|MAIL|ackages. specia|
-4486|49|2|2|19|18031.76|0.10|0.01|N|O|1998-06-07|1998-05-28|1998-07-02|NONE|MAIL|pending foxes after|
-4486|96|7|3|47|46816.23|0.02|0.07|N|O|1998-04-09|1998-05-24|1998-05-07|DELIVER IN PERSON|MAIL|ts around the quiet packages ar|
-4486|91|4|4|28|27750.52|0.07|0.02|N|O|1998-04-21|1998-04-19|1998-04-26|TAKE BACK RETURN|AIR|to the furious, regular foxes play abov|
-4487|138|4|1|37|38410.81|0.03|0.07|R|F|1993-02-28|1993-04-18|1993-03-17|TAKE BACK RETURN|MAIL|bove the fu|
-4487|113|10|2|49|49642.39|0.10|0.00|R|F|1993-06-13|1993-05-08|1993-07-10|COLLECT COD|FOB|sual packages should ha|
-4487|190|1|3|1|1090.19|0.02|0.07|A|F|1993-05-11|1993-05-23|1993-05-17|TAKE BACK RETURN|FOB|ithely final asym|
-4487|93|4|4|25|24827.25|0.07|0.03|A|F|1993-03-09|1993-04-27|1993-03-30|COLLECT COD|RAIL|g the final instructions. slyly c|
-4512|162|1|1|30|31864.80|0.07|0.07|N|O|1996-01-28|1995-12-22|1996-02-22|TAKE BACK RETURN|TRUCK|ly unusual package|
-4512|41|4|2|24|22584.96|0.04|0.06|N|O|1995-12-16|1996-01-16|1995-12-25|NONE|SHIP|ly regular pinto beans. carefully bold depo|
-4512|145|8|3|21|21947.94|0.00|0.00|N|O|1995-10-31|1995-12-30|1995-11-15|NONE|REG AIR|lly unusual pinto b|
-4512|141|2|4|32|33316.48|0.10|0.01|N|O|1995-11-25|1995-12-28|1995-12-06|NONE|FOB|counts are against the quickly regular |
-4512|133|4|5|43|44424.59|0.06|0.00|N|O|1995-12-20|1995-11-28|1996-01-14|NONE|AIR|are carefully. theodolites wake|
-4513|170|1|1|29|31034.93|0.03|0.01|N|O|1996-05-18|1996-05-23|1996-06-08|NONE|REG AIR|cajole. regular packages boost. s|
-4513|70|9|2|39|37832.73|0.01|0.04|N|O|1996-06-25|1996-05-14|1996-07-24|NONE|MAIL|slyly furiously unusual deposits. blit|
-4513|138|4|3|34|35296.42|0.00|0.03|N|O|1996-03-27|1996-06-12|1996-04-06|DELIVER IN PERSON|SHIP|sits. quickly even instructions |
-4513|192|6|4|13|14198.47|0.08|0.08|N|O|1996-04-12|1996-05-19|1996-04-25|DELIVER IN PERSON|AIR|l, final excuses detect furi|
-4514|164|9|1|27|28732.32|0.06|0.06|R|F|1994-07-01|1994-07-13|1994-07-26|COLLECT COD|AIR| even, silent foxes be|
-4514|46|3|2|15|14190.60|0.10|0.04|R|F|1994-08-24|1994-07-11|1994-09-14|DELIVER IN PERSON|RAIL|! unusual, special deposits afte|
-4514|78|8|3|10|9780.70|0.09|0.05|A|F|1994-06-19|1994-06-25|1994-07-01|COLLECT COD|SHIP|ake furiously. carefully regular requests|
-4514|81|2|4|9|8829.72|0.10|0.03|A|F|1994-08-04|1994-07-01|1994-09-01|DELIVER IN PERSON|REG AIR|wly. quick|
-4514|149|8|5|12|12589.68|0.02|0.03|R|F|1994-08-20|1994-06-09|1994-09-15|TAKE BACK RETURN|FOB| carefully ironic foxes nag caref|
-4514|189|10|6|38|41388.84|0.03|0.05|A|F|1994-07-28|1994-07-06|1994-08-25|NONE|AIR|ending excuses. sl|
-4514|177|8|7|27|29083.59|0.04|0.06|A|F|1994-06-24|1994-07-14|1994-06-30|TAKE BACK RETURN|TRUCK|. slyly sile|
-4515|39|10|1|15|14085.45|0.06|0.01|R|F|1992-05-26|1992-05-25|1992-06-03|NONE|SHIP|posits wake|
-4515|103|10|2|50|50155.00|0.06|0.03|A|F|1992-03-28|1992-05-16|1992-04-20|NONE|AIR|ding instructions again|
-4515|154|6|3|27|28462.05|0.09|0.01|A|F|1992-06-06|1992-06-08|1992-06-07|DELIVER IN PERSON|REG AIR| against the even re|
-4515|54|5|4|32|30529.60|0.06|0.03|R|F|1992-04-07|1992-05-11|1992-04-09|COLLECT COD|MAIL|carefully express depo|
-4515|45|8|5|22|20790.88|0.09|0.07|A|F|1992-07-16|1992-05-07|1992-07-23|NONE|SHIP|le quickly above the even, bold ideas.|
-4515|180|8|6|23|24844.14|0.04|0.00|R|F|1992-05-23|1992-06-15|1992-06-20|TAKE BACK RETURN|FOB|ns. bold r|
-4516|170|9|1|34|36385.78|0.05|0.04|A|F|1994-05-16|1994-06-23|1994-06-12|NONE|SHIP|even pinto beans wake qui|
-4517|43|4|1|50|47152.00|0.01|0.02|N|O|1998-06-08|1998-04-18|1998-06-20|DELIVER IN PERSON|MAIL|refully pending acco|
-4518|144|7|1|9|9397.26|0.09|0.04|N|O|1997-06-26|1997-07-07|1997-07-10|NONE|RAIL| pending deposits. slyly re|
-4518|45|6|2|19|17955.76|0.10|0.05|N|O|1997-08-09|1997-06-06|1997-08-27|COLLECT COD|RAIL|ter the slyly bo|
-4519|55|3|1|30|28651.50|0.09|0.07|R|F|1993-04-11|1993-06-05|1993-04-22|DELIVER IN PERSON|REG AIR|totes. slyly bold somas after the |
-4519|191|3|2|37|40374.03|0.06|0.08|R|F|1993-07-22|1993-06-16|1993-08-19|COLLECT COD|AIR|ly slyly furious depth|
-4544|131|7|1|40|41245.20|0.07|0.01|N|O|1997-08-15|1997-10-16|1997-08-20|DELIVER IN PERSON|RAIL| detect slyly. evenly pending instru|
-4544|172|2|2|19|20371.23|0.08|0.01|N|O|1997-08-14|1997-09-08|1997-08-25|NONE|SHIP|regular ideas are furiously about|
-4544|71|9|3|20|19421.40|0.02|0.07|N|O|1997-10-12|1997-10-11|1997-10-13|COLLECT COD|REG AIR| waters about the|
-4544|51|6|4|39|37090.95|0.07|0.05|N|O|1997-08-20|1997-09-07|1997-08-27|COLLECT COD|REG AIR|ular packages. s|
-4544|133|4|5|31|32027.03|0.09|0.03|N|O|1997-08-09|1997-09-29|1997-08-17|COLLECT COD|TRUCK|dolites detect quickly reg|
-4544|27|8|6|8|7416.16|0.10|0.03|N|O|1997-10-13|1997-10-06|1997-10-25|COLLECT COD|AIR|olites. fi|
-4545|173|1|1|38|40780.46|0.06|0.06|R|F|1993-01-27|1993-03-01|1993-02-04|NONE|TRUCK|nts serve according to th|
-4545|63|4|2|27|26002.62|0.01|0.06|R|F|1993-02-07|1993-02-18|1993-02-18|NONE|FOB|ously bold asymptotes! blithely pen|
-4545|87|8|3|9|8883.72|0.10|0.06|R|F|1993-03-20|1993-02-23|1993-04-11|TAKE BACK RETURN|AIR|xpress accounts|
-4545|64|9|4|2|1928.12|0.10|0.00|R|F|1993-04-16|1993-04-17|1993-05-03|NONE|REG AIR|ages use. slyly even i|
-4545|117|1|5|27|27461.97|0.08|0.05|A|F|1993-03-18|1993-02-22|1993-03-23|NONE|RAIL|ccounts haggle carefully. deposits |
-4545|109|2|6|8|8072.80|0.03|0.02|A|F|1993-05-01|1993-03-12|1993-05-15|NONE|FOB| boost slyly. slyly|
-4545|9|2|7|36|32724.00|0.10|0.04|R|F|1993-01-28|1993-03-30|1993-02-04|DELIVER IN PERSON|SHIP|sublate slyly. furiously ironic accounts b|
-4546|133|4|1|10|10331.30|0.09|0.02|N|O|1995-09-23|1995-10-10|1995-10-23|COLLECT COD|TRUCK|osits alongside of the|
-4546|171|10|2|15|16067.55|0.04|0.07|N|O|1995-07-31|1995-10-17|1995-08-06|NONE|REG AIR|ught to cajole furiously. qu|
-4546|77|8|3|4|3908.28|0.06|0.08|N|O|1995-08-14|1995-10-07|1995-08-16|COLLECT COD|MAIL|kly pending dependencies along the furio|
-4546|149|6|4|10|10491.40|0.08|0.02|N|O|1995-09-02|1995-09-16|1995-09-10|DELIVER IN PERSON|FOB|above the enticingly ironic dependencies|
-4547|188|9|1|15|16322.70|0.10|0.04|A|F|1993-12-08|1993-11-15|1993-12-22|NONE|REG AIR|ets haggle. regular dinos affix fu|
-4547|116|10|2|7|7112.77|0.10|0.02|A|F|1993-09-04|1993-09-29|1993-09-20|COLLECT COD|RAIL|slyly express a|
-4547|45|2|3|15|14175.60|0.00|0.00|R|F|1993-11-18|1993-10-06|1993-12-13|NONE|TRUCK|e carefully across the unus|
-4547|148|7|4|15|15722.10|0.05|0.08|R|F|1993-11-29|1993-10-12|1993-12-29|COLLECT COD|REG AIR|ironic gifts integrate |
-4548|14|8|1|21|19194.21|0.10|0.05|N|O|1996-07-11|1996-09-04|1996-07-30|COLLECT COD|REG AIR|pecial theodoli|
-4548|47|10|2|17|16099.68|0.00|0.08|N|O|1996-07-23|1996-09-21|1996-07-26|DELIVER IN PERSON|REG AIR|y ironic requests above the fluffily d|
-4548|123|2|3|47|48086.64|0.05|0.04|N|O|1996-07-24|1996-09-12|1996-08-08|NONE|MAIL|ts. excuses use slyly spec|
-4548|177|6|4|22|23697.74|0.07|0.01|N|O|1996-07-06|1996-08-23|1996-07-15|DELIVER IN PERSON|RAIL|s. furiously ironic theodolites c|
-4548|45|4|5|36|34021.44|0.04|0.06|N|O|1996-08-19|1996-09-12|1996-09-08|COLLECT COD|FOB|tions integrat|
-4549|159|1|1|44|46602.60|0.08|0.00|N|O|1998-03-13|1998-04-15|1998-03-27|TAKE BACK RETURN|TRUCK|ding to the regular, silent requests|
-4549|89|10|2|1|989.08|0.05|0.08|N|O|1998-05-04|1998-04-11|1998-05-14|TAKE BACK RETURN|AIR| requests wake. furiously even |
-4550|150|7|1|9|9451.35|0.05|0.06|R|F|1995-04-19|1995-02-07|1995-04-24|COLLECT COD|SHIP|l dependencies boost slyly after th|
-4550|66|5|2|19|18355.14|0.06|0.04|A|F|1995-01-01|1995-02-13|1995-01-20|NONE|AIR|quests. express |
-4551|11|1|1|6|5466.06|0.08|0.08|N|O|1996-05-18|1996-04-23|1996-06-13|DELIVER IN PERSON|TRUCK|fily silent fo|
-4551|179|8|2|26|28058.42|0.02|0.04|N|O|1996-04-14|1996-04-26|1996-04-17|TAKE BACK RETURN|RAIL|le. carefully dogged accounts use furiousl|
-4551|22|1|3|22|20284.44|0.08|0.01|N|O|1996-05-12|1996-03-17|1996-05-29|TAKE BACK RETURN|REG AIR|ly ironic reques|
-4551|198|10|4|27|29651.13|0.00|0.01|N|O|1996-04-28|1996-03-22|1996-05-22|TAKE BACK RETURN|RAIL|y along the slyly even |
-4576|90|1|1|5|4950.45|0.09|0.03|N|O|1996-08-23|1996-11-08|1996-09-20|TAKE BACK RETURN|AIR|ly express, special asymptote|
-4576|58|9|2|43|41196.15|0.08|0.06|N|O|1996-10-24|1996-09-23|1996-11-10|NONE|SHIP|ly final deposits. never|
-4576|42|1|3|14|13188.56|0.09|0.01|N|O|1996-09-12|1996-09-30|1996-09-24|COLLECT COD|MAIL|detect slyly.|
-4577|185|6|1|43|46662.74|0.01|0.03|N|O|1998-06-16|1998-07-09|1998-06-17|TAKE BACK RETURN|AIR|packages. |
-4577|177|6|2|43|46318.31|0.05|0.03|N|O|1998-08-24|1998-06-02|1998-09-14|TAKE BACK RETURN|RAIL|ly accounts. carefully |
-4577|69|6|3|12|11628.72|0.07|0.05|N|O|1998-07-29|1998-06-17|1998-08-04|DELIVER IN PERSON|TRUCK|equests alongsi|
-4578|74|2|1|10|9740.70|0.09|0.06|R|F|1993-01-01|1992-11-19|1993-01-28|TAKE BACK RETURN|REG AIR|uests. blithely unus|
-4578|169|10|2|42|44904.72|0.06|0.00|R|F|1993-01-05|1992-11-06|1993-01-13|DELIVER IN PERSON|FOB|s are caref|
-4578|179|8|3|15|16187.55|0.01|0.01|R|F|1992-10-23|1992-11-22|1992-11-09|DELIVER IN PERSON|REG AIR|gular theodo|
-4578|139|10|4|7|7273.91|0.09|0.08|A|F|1992-12-07|1992-11-27|1993-01-05|TAKE BACK RETURN|SHIP|odolites. carefully unusual ideas accor|
-4578|163|2|5|20|21263.20|0.04|0.02|A|F|1993-01-11|1992-11-09|1993-01-23|TAKE BACK RETURN|RAIL|iously pending theodolites--|
-4579|175|4|1|14|15052.38|0.02|0.02|N|O|1996-02-01|1996-01-08|1996-02-08|TAKE BACK RETURN|MAIL|nding theodolites. fluffil|
-4579|42|3|2|28|26377.12|0.02|0.05|N|O|1996-01-22|1996-02-13|1996-02-03|DELIVER IN PERSON|RAIL|slyly across the |
-4579|178|9|3|34|36657.78|0.05|0.02|N|O|1996-02-26|1996-02-22|1996-03-16|COLLECT COD|MAIL|hely. carefully blithe dependen|
-4579|120|1|4|8|8160.96|0.05|0.06|N|O|1995-12-16|1996-01-15|1995-12-18|TAKE BACK RETURN|AIR|posits. carefully perman|
-4580|92|5|1|22|21825.98|0.01|0.05|A|F|1994-01-16|1994-01-26|1994-02-05|COLLECT COD|AIR|nticingly final packag|
-4580|32|3|2|10|9320.30|0.05|0.04|R|F|1993-12-20|1993-12-30|1994-01-17|COLLECT COD|RAIL|gular, pending deposits. fina|
-4580|1|8|3|41|36941.00|0.00|0.07|R|F|1993-12-13|1994-01-31|1994-01-06|NONE|SHIP|requests. quickly silent asymptotes sle|
-4580|178|8|4|5|5390.85|0.07|0.00|A|F|1994-01-28|1993-12-17|1994-02-22|NONE|TRUCK|o beans. f|
-4580|189|10|5|39|42478.02|0.03|0.02|R|F|1993-12-28|1993-12-26|1994-01-23|NONE|RAIL|. fluffily final dolphins use furiously al|
-4581|165|4|1|37|39410.92|0.01|0.04|A|F|1992-10-17|1992-11-05|1992-11-04|DELIVER IN PERSON|MAIL|e the blithely bold pearls ha|
-4581|50|3|2|7|6650.35|0.01|0.02|A|F|1992-10-09|1992-10-20|1992-10-21|TAKE BACK RETURN|MAIL|express accounts d|
-4581|21|10|3|46|42366.92|0.04|0.04|A|F|1992-09-09|1992-11-27|1992-09-26|NONE|REG AIR|nag toward the carefully final accounts. |
-4582|192|5|1|17|18567.23|0.09|0.08|N|O|1996-08-17|1996-08-26|1996-08-20|COLLECT COD|REG AIR|ng packages. depo|
-4583|141|2|1|17|17699.38|0.01|0.05|A|F|1994-11-08|1994-11-03|1994-11-29|COLLECT COD|MAIL|romise. reques|
-4583|187|8|2|43|46748.74|0.04|0.04|A|F|1994-10-30|1994-12-17|1994-11-16|COLLECT COD|RAIL|fully after the speci|
-4583|196|10|3|28|30693.32|0.00|0.07|A|F|1994-10-29|1994-11-21|1994-11-28|NONE|SHIP|to beans haggle sly|
-4583|173|4|4|27|28975.59|0.08|0.03|R|F|1995-01-11|1994-12-24|1995-02-10|DELIVER IN PERSON|TRUCK| detect silent requests. furiously speci|
-4583|184|5|5|36|39030.48|0.09|0.06|A|F|1995-01-06|1994-11-25|1995-01-29|DELIVER IN PERSON|RAIL|ar requests haggle after the furiously |
-4583|122|7|6|14|14309.68|0.09|0.01|R|F|1994-11-17|1994-11-08|1994-11-21|DELIVER IN PERSON|AIR|detect. doggedly regular pi|
-4583|87|8|7|32|31586.56|0.04|0.00|A|F|1995-01-13|1994-10-29|1995-02-08|TAKE BACK RETURN|RAIL|across the pinto beans-- quickly|
-4608|173|1|1|30|32195.10|0.08|0.05|R|F|1994-10-08|1994-07-18|1994-10-25|DELIVER IN PERSON|SHIP|s cajole. slyly |
-4608|47|8|2|50|47352.00|0.06|0.01|A|F|1994-07-25|1994-09-01|1994-08-10|NONE|FOB| theodolites|
-4608|79|9|3|50|48953.50|0.03|0.01|A|F|1994-08-04|1994-09-10|1994-08-13|COLLECT COD|TRUCK| wake closely. even decoys haggle above|
-4608|31|2|4|36|33517.08|0.05|0.06|R|F|1994-10-04|1994-08-02|1994-10-21|COLLECT COD|FOB|ages wake quickly slyly iron|
-4609|47|6|1|28|26517.12|0.10|0.05|N|O|1997-02-02|1997-02-17|1997-03-02|DELIVER IN PERSON|REG AIR|ously. quickly final requests cajole fl|
-4609|185|6|2|3|3255.54|0.09|0.03|N|O|1996-12-28|1997-02-06|1997-01-20|NONE|FOB|nstructions. furious instructions |
-4609|23|4|3|46|42458.92|0.05|0.05|N|O|1997-02-11|1997-01-16|1997-03-07|NONE|FOB|r foxes. fluffily ironic ideas ha|
-4610|87|8|1|21|20728.68|0.07|0.07|R|F|1993-08-10|1993-08-05|1993-08-27|NONE|REG AIR|ly special theodolites. even,|
-4610|175|5|2|14|15052.38|0.00|0.07|R|F|1993-07-28|1993-07-25|1993-07-31|TAKE BACK RETURN|SHIP| ironic frays. dependencies detect blithel|
-4610|159|1|3|44|46602.60|0.05|0.03|A|F|1993-08-05|1993-07-20|1993-08-19|COLLECT COD|TRUCK| final theodolites |
-4610|75|3|4|26|25351.82|0.06|0.03|R|F|1993-07-01|1993-07-19|1993-07-19|NONE|MAIL| to the fluffily ironic requests h|
-4610|147|8|5|29|30367.06|0.08|0.04|R|F|1993-08-09|1993-07-27|1993-08-16|DELIVER IN PERSON|AIR| foxes. special, express package|
-4611|52|7|1|47|44746.35|0.09|0.06|A|F|1993-03-05|1993-03-01|1993-03-17|COLLECT COD|TRUCK|iously. furiously regular|
-4611|35|6|2|31|28985.93|0.04|0.02|A|F|1993-01-28|1993-02-14|1993-01-29|TAKE BACK RETURN|AIR| final pinto beans. permanent, sp|
-4611|82|3|3|50|49104.00|0.08|0.01|R|F|1993-01-22|1993-03-30|1993-02-16|TAKE BACK RETURN|AIR|l platelets. |
-4611|71|9|4|48|46611.36|0.02|0.08|R|F|1993-02-28|1993-02-12|1993-03-01|COLLECT COD|AIR|ular accounts |
-4612|6|9|1|20|18120.00|0.02|0.03|R|F|1993-09-24|1993-12-18|1993-10-22|NONE|AIR|beans sleep blithely iro|
-4612|50|7|2|17|16150.85|0.10|0.06|A|F|1994-01-09|1993-11-08|1994-02-06|TAKE BACK RETURN|REG AIR|equests haggle carefully silent excus|
-4612|137|8|3|40|41485.20|0.08|0.01|R|F|1993-10-08|1993-11-23|1993-10-24|DELIVER IN PERSON|RAIL|special platelets.|
-4612|185|6|4|10|10851.80|0.10|0.06|A|F|1993-11-11|1993-11-19|1993-11-13|TAKE BACK RETURN|SHIP|unusual theodol|
-4613|38|9|1|17|15946.51|0.09|0.07|N|O|1998-06-07|1998-05-11|1998-06-29|DELIVER IN PERSON|SHIP|liers cajole a|
-4613|108|1|2|25|25202.50|0.05|0.04|N|O|1998-05-22|1998-04-11|1998-05-27|TAKE BACK RETURN|SHIP|y pending platelets x-ray ironically! pend|
-4613|174|3|3|15|16112.55|0.10|0.02|N|O|1998-05-31|1998-04-16|1998-06-25|DELIVER IN PERSON|MAIL|against the quickly r|
-4613|8|1|4|36|32688.00|0.04|0.01|N|O|1998-04-22|1998-05-05|1998-05-04|DELIVER IN PERSON|AIR|gainst the furiously ironic|
-4613|111|8|5|35|35388.85|0.04|0.06|N|O|1998-06-04|1998-04-17|1998-06-20|COLLECT COD|MAIL|e blithely against the even, bold pi|
-4613|196|8|6|47|51520.93|0.04|0.04|N|O|1998-07-03|1998-05-26|1998-07-09|NONE|FOB|uriously special requests wak|
-4613|119|3|7|39|39745.29|0.09|0.05|N|O|1998-06-12|1998-06-01|1998-07-06|DELIVER IN PERSON|REG AIR|ously express|
-4614|7|2|1|19|17233.00|0.09|0.08|N|O|1996-05-17|1996-06-21|1996-06-08|TAKE BACK RETURN|AIR|ix. carefully regular |
-4614|65|6|2|3|2895.18|0.08|0.01|N|O|1996-07-22|1996-07-21|1996-08-07|NONE|MAIL|ions engage final, ironic |
-4614|8|1|3|36|32688.00|0.10|0.04|N|O|1996-07-05|1996-06-26|1996-07-07|NONE|REG AIR|onic foxes affix furi|
-4614|126|9|4|6|6156.72|0.09|0.01|N|O|1996-06-11|1996-05-30|1996-07-03|COLLECT COD|REG AIR|ake quickly quickly regular epitap|
-4614|73|3|5|24|23353.68|0.07|0.06|N|O|1996-07-01|1996-06-24|1996-07-08|COLLECT COD|REG AIR|regular, even|
-4614|34|5|6|32|29888.96|0.10|0.05|N|O|1996-08-21|1996-05-28|1996-09-16|NONE|REG AIR|ickly furio|
-4614|128|1|7|41|42152.92|0.01|0.07|N|O|1996-07-31|1996-07-12|1996-08-16|COLLECT COD|REG AIR|ackages haggle carefully about the even, b|
-4615|92|4|1|10|9920.90|0.02|0.08|A|F|1993-11-20|1993-10-05|1993-12-08|DELIVER IN PERSON|AIR|sits. slyly express deposits are|
-4640|88|9|1|5|4940.40|0.03|0.08|N|O|1996-02-05|1996-02-14|1996-02-15|TAKE BACK RETURN|RAIL| warthogs against the regular|
-4640|88|9|2|9|8892.72|0.03|0.05|N|O|1996-02-12|1996-02-14|1996-02-29|DELIVER IN PERSON|AIR| accounts. unu|
-4640|27|10|3|18|16686.36|0.02|0.07|N|O|1996-02-28|1996-03-06|1996-03-28|DELIVER IN PERSON|RAIL|boost furiously accord|
-4640|23|2|4|36|33228.72|0.06|0.08|N|O|1996-01-03|1996-03-09|1996-01-11|DELIVER IN PERSON|RAIL|iously furious accounts boost. carefully|
-4640|156|1|5|15|15842.25|0.03|0.02|N|O|1996-03-19|1996-02-09|1996-04-11|TAKE BACK RETURN|FOB|y regular instructions doze furiously. reg|
-4641|190|1|1|45|49058.55|0.07|0.03|R|F|1993-05-11|1993-04-19|1993-05-21|DELIVER IN PERSON|MAIL| about the close |
-4641|95|7|2|39|38808.51|0.06|0.00|R|F|1993-02-10|1993-03-06|1993-02-15|TAKE BACK RETURN|REG AIR| the bold reque|
-4641|36|7|3|15|14040.45|0.01|0.08|R|F|1993-01-25|1993-04-09|1993-02-05|TAKE BACK RETURN|AIR|s. carefully even exc|
-4642|194|7|1|11|12036.09|0.04|0.07|A|F|1995-05-23|1995-04-26|1995-06-04|COLLECT COD|TRUCK|lithely express asympt|
-4642|180|10|2|34|36726.12|0.04|0.07|R|F|1995-04-01|1995-05-11|1995-04-23|COLLECT COD|SHIP|theodolites detect among the ironically sp|
-4642|21|2|3|10|9210.20|0.04|0.02|R|F|1995-04-16|1995-04-28|1995-04-24|COLLECT COD|RAIL|urts. even deposits nag beneath |
-4642|94|7|4|18|17893.62|0.00|0.04|N|F|1995-06-16|1995-04-16|1995-06-21|NONE|TRUCK|ily pending accounts hag|
-4642|179|10|5|41|44245.97|0.10|0.00|R|F|1995-04-08|1995-04-13|1995-05-01|DELIVER IN PERSON|MAIL|s are blithely. requests wake above the fur|
-4643|185|6|1|50|54259.00|0.08|0.05|N|O|1995-09-11|1995-08-13|1995-09-30|DELIVER IN PERSON|SHIP|. ironic deposits cajo|
-4644|177|7|1|4|4308.68|0.06|0.03|N|O|1998-05-06|1998-03-19|1998-05-28|NONE|MAIL|gular requests? pendi|
-4644|97|8|2|16|15953.44|0.03|0.04|N|O|1998-03-13|1998-02-21|1998-04-03|COLLECT COD|SHIP|lar excuses across the |
-4644|115|9|3|10|10151.10|0.02|0.02|N|O|1998-02-21|1998-02-28|1998-03-19|COLLECT COD|REG AIR|osits according to the|
-4644|154|2|4|45|47436.75|0.10|0.07|N|O|1998-02-02|1998-04-08|1998-02-15|COLLECT COD|SHIP| carefully a|
-4644|87|8|5|10|9870.80|0.08|0.08|N|O|1998-03-12|1998-03-11|1998-03-19|TAKE BACK RETURN|REG AIR| the slow, final fo|
-4645|50|7|1|45|42752.25|0.09|0.05|A|F|1994-12-27|1994-11-02|1994-12-31|DELIVER IN PERSON|AIR|ular ideas. slyly|
-4645|66|7|2|32|30913.92|0.10|0.08|A|F|1994-11-17|1994-10-30|1994-11-18|COLLECT COD|REG AIR| final accounts alongside|
-4645|54|5|3|25|23851.25|0.03|0.00|R|F|1994-10-25|1994-12-11|1994-11-14|NONE|REG AIR|braids. ironic dependencies main|
-4645|37|8|4|42|39355.26|0.10|0.02|R|F|1994-12-02|1994-12-18|1994-12-16|COLLECT COD|TRUCK|regular pinto beans amon|
-4645|161|10|5|35|37140.60|0.03|0.07|A|F|1994-12-08|1994-11-25|1994-12-09|TAKE BACK RETURN|FOB|sias believe bl|
-4645|42|9|6|27|25435.08|0.09|0.08|R|F|1994-11-26|1994-10-25|1994-12-04|NONE|SHIP|ously express pinto beans. ironic depos|
-4645|31|2|7|42|39103.26|0.10|0.06|A|F|1994-12-31|1994-10-22|1995-01-28|DELIVER IN PERSON|AIR|e slyly regular pinto beans. thin|
-4646|191|3|1|24|26188.56|0.02|0.05|N|O|1996-09-18|1996-08-09|1996-09-21|TAKE BACK RETURN|RAIL|ic platelets lose carefully. blithely unu|
-4646|178|6|2|26|28032.42|0.07|0.00|N|O|1996-10-02|1996-08-25|1996-10-27|DELIVER IN PERSON|MAIL|ix according to the slyly spe|
-4646|34|10|3|18|16812.54|0.01|0.00|N|O|1996-06-30|1996-08-10|1996-07-12|TAKE BACK RETURN|TRUCK|beans sleep car|
-4646|40|1|4|38|35721.52|0.08|0.01|N|O|1996-09-01|1996-08-23|1996-09-27|COLLECT COD|SHIP|al platelets cajole. slyly final dol|
-4646|26|1|5|22|20372.44|0.01|0.08|N|O|1996-07-14|1996-08-06|1996-07-29|DELIVER IN PERSON|MAIL|cies are blithely after the slyly reg|
-4647|93|6|1|16|15889.44|0.09|0.07|R|F|1994-09-07|1994-07-15|1994-10-06|COLLECT COD|RAIL|o beans about the fluffily special the|
-4647|129|2|2|34|34990.08|0.01|0.02|R|F|1994-05-20|1994-06-20|1994-05-29|COLLECT COD|TRUCK|ly sly accounts|
-4647|147|8|3|27|28272.78|0.03|0.08|R|F|1994-05-20|1994-06-26|1994-05-30|NONE|FOB|ully even ti|
-4647|139|10|4|2|2078.26|0.04|0.07|R|F|1994-07-03|1994-07-22|1994-07-22|TAKE BACK RETURN|RAIL|dolites wake furiously special pinto be|
-4647|187|8|5|2|2174.36|0.07|0.06|A|F|1994-05-27|1994-08-05|1994-06-10|TAKE BACK RETURN|FOB| pinto beans believe furiously slyly silent|
-4647|29|4|6|28|26012.56|0.02|0.03|A|F|1994-08-25|1994-08-06|1994-09-18|DELIVER IN PERSON|FOB| are above the fluffily fin|
-4672|59|7|1|22|21099.10|0.01|0.07|N|O|1995-12-03|1995-12-08|1995-12-17|COLLECT COD|AIR|l instructions. blithely ironic packages |
-4672|61|10|2|41|39403.46|0.00|0.00|N|O|1995-12-01|1995-12-15|1995-12-12|COLLECT COD|RAIL| slyly quie|
-4672|163|10|3|24|25515.84|0.04|0.03|N|O|1995-11-11|1995-12-28|1995-12-04|NONE|REG AIR|y fluffily stealt|
-4672|57|2|4|13|12441.65|0.10|0.03|N|O|1996-02-02|1995-12-13|1996-03-02|DELIVER IN PERSON|RAIL|ar requests? pending accounts against|
-4672|55|10|5|45|42977.25|0.08|0.07|N|O|1996-02-07|1996-01-16|1996-02-14|DELIVER IN PERSON|MAIL| platelets use amon|
-4672|141|8|6|20|20822.80|0.02|0.07|N|O|1995-12-08|1996-01-25|1995-12-19|COLLECT COD|REG AIR|s boost at the ca|
-4672|72|10|7|38|36938.66|0.01|0.01|N|O|1995-11-28|1995-12-08|1995-12-13|COLLECT COD|SHIP|ests. idle, regular ex|
-4673|17|8|1|8|7336.08|0.08|0.01|N|O|1996-10-12|1996-10-05|1996-11-04|TAKE BACK RETURN|FOB|lithely final re|
-4673|101|2|2|44|44048.40|0.06|0.01|N|O|1996-12-11|1996-10-31|1997-01-08|DELIVER IN PERSON|RAIL| gifts cajole dari|
-4673|123|2|3|9|9208.08|0.04|0.07|N|O|1996-10-15|1996-09-30|1996-10-30|DELIVER IN PERSON|MAIL|ages nag across |
-4674|150|7|1|50|52507.50|0.07|0.08|A|F|1994-05-13|1994-06-15|1994-06-05|COLLECT COD|RAIL|haggle about the blithel|
-4674|189|10|2|35|38121.30|0.02|0.05|A|F|1994-08-02|1994-06-04|1994-08-21|COLLECT COD|FOB|le quickly after the express sent|
-4674|111|5|3|3|3033.33|0.01|0.05|A|F|1994-07-19|1994-05-28|1994-07-23|TAKE BACK RETURN|RAIL| regular requests na|
-4674|13|7|4|21|19173.21|0.02|0.08|R|F|1994-05-08|1994-07-02|1994-06-04|COLLECT COD|RAIL|ent accounts sublate deposits. instruc|
-4675|171|2|1|6|6427.02|0.00|0.05|R|F|1994-01-22|1994-01-06|1994-02-12|TAKE BACK RETURN|TRUCK| unusual ideas thrash bl|
-4675|144|7|2|12|12529.68|0.00|0.04|A|F|1993-12-22|1994-01-12|1993-12-23|TAKE BACK RETURN|AIR|posits affix carefully|
-4675|181|2|3|5|5405.90|0.05|0.05|A|F|1994-01-16|1994-01-05|1994-01-18|DELIVER IN PERSON|RAIL|lent pinto beans|
-4675|34|10|4|26|24284.78|0.03|0.01|A|F|1993-12-16|1993-12-29|1993-12-23|DELIVER IN PERSON|SHIP|nts. express requests are quickly |
-4675|81|2|5|18|17659.44|0.01|0.08|R|F|1994-02-23|1994-01-18|1994-03-05|TAKE BACK RETURN|FOB|cajole unusual dep|
-4675|119|10|6|1|1019.11|0.10|0.06|R|F|1994-03-18|1994-02-14|1994-04-17|NONE|SHIP|unts. caref|
-4676|165|2|1|47|50062.52|0.03|0.06|N|O|1995-12-20|1995-10-04|1996-01-09|NONE|AIR|lithely about the carefully special requ|
-4676|6|1|2|33|29898.00|0.08|0.05|N|O|1995-12-29|1995-10-01|1996-01-18|TAKE BACK RETURN|FOB|yly express |
-4676|146|3|3|4|4184.56|0.10|0.06|N|O|1995-12-12|1995-10-22|1995-12-13|TAKE BACK RETURN|TRUCK|detect above the ironic platelets. fluffily|
-4676|111|2|4|50|50555.50|0.07|0.01|N|O|1995-09-20|1995-11-20|1995-10-18|TAKE BACK RETURN|AIR|r deposits boost boldly quickly quick asymp|
-4676|122|7|5|29|29641.48|0.01|0.02|N|O|1995-12-29|1995-11-12|1996-01-06|TAKE BACK RETURN|RAIL|ly regular theodolites sleep.|
-4676|46|7|6|8|7568.32|0.08|0.08|N|O|1995-12-05|1995-10-18|1996-01-02|COLLECT COD|AIR|cuses boost above|
-4676|64|1|7|13|12532.78|0.05|0.07|N|O|1995-11-18|1995-11-07|1995-12-10|TAKE BACK RETURN|TRUCK| at the slyly bold attainments. silently e|
-4677|128|3|1|25|25703.00|0.04|0.04|N|O|1998-04-11|1998-05-11|1998-04-18|TAKE BACK RETURN|REG AIR|unts doubt furiousl|
-4678|58|6|1|35|33531.75|0.04|0.08|N|O|1998-11-27|1998-10-02|1998-12-17|TAKE BACK RETURN|AIR|he accounts. fluffily bold sheaves b|
-4678|117|1|2|18|18307.98|0.03|0.06|N|O|1998-10-30|1998-09-22|1998-11-25|TAKE BACK RETURN|SHIP|usly ironic |
-4678|96|9|3|13|12949.17|0.10|0.07|N|O|1998-11-03|1998-10-17|1998-11-06|TAKE BACK RETURN|SHIP|its. carefully final fr|
-4678|22|1|4|23|21206.46|0.06|0.05|N|O|1998-09-03|1998-09-20|1998-09-04|DELIVER IN PERSON|SHIP|ily sly deposi|
-4678|178|9|5|40|43126.80|0.03|0.07|N|O|1998-11-11|1998-10-27|1998-11-24|TAKE BACK RETURN|AIR|. final, unusual requests sleep thinl|
-4679|190|1|1|7|7631.33|0.10|0.05|R|F|1993-05-11|1993-04-11|1993-05-16|NONE|TRUCK|kages. bold, regular packa|
-4704|78|6|1|14|13692.98|0.04|0.04|N|O|1996-10-27|1996-11-02|1996-11-07|DELIVER IN PERSON|TRUCK| above the slyly final requests. quickly |
-4704|28|3|2|7|6496.14|0.03|0.04|N|O|1996-12-04|1996-10-30|1996-12-23|DELIVER IN PERSON|SHIP|ers wake car|
-4704|64|5|3|44|42418.64|0.02|0.05|N|O|1996-09-02|1996-10-07|1996-09-17|DELIVER IN PERSON|REG AIR|out the care|
-4705|111|8|1|22|22244.42|0.04|0.04|R|F|1992-07-05|1992-05-11|1992-07-29|DELIVER IN PERSON|SHIP| fluffily pending accounts ca|
-4705|31|7|2|14|13034.42|0.00|0.08|R|F|1992-07-14|1992-05-23|1992-07-25|DELIVER IN PERSON|TRUCK|ain carefully amon|
-4705|56|1|3|16|15296.80|0.07|0.08|R|F|1992-07-02|1992-06-06|1992-07-06|DELIVER IN PERSON|RAIL|special ideas nag sl|
-4705|130|3|4|31|31934.03|0.03|0.03|R|F|1992-04-03|1992-05-30|1992-04-05|COLLECT COD|TRUCK|furiously final accou|
-4705|163|10|5|28|29768.48|0.10|0.01|A|F|1992-06-03|1992-06-07|1992-06-22|DELIVER IN PERSON|MAIL|tes wake according to the unusual plate|
-4705|184|5|6|23|24936.14|0.06|0.03|R|F|1992-06-22|1992-06-11|1992-07-18|DELIVER IN PERSON|MAIL| above the furiously ev|
-4705|89|10|7|40|39563.20|0.08|0.06|A|F|1992-04-19|1992-04-28|1992-05-07|COLLECT COD|TRUCK|blithely. sly|
-4706|182|3|1|37|40040.66|0.02|0.06|A|F|1993-02-20|1993-03-05|1993-03-03|DELIVER IN PERSON|TRUCK|kly final deposits c|
-4706|122|3|2|23|23508.76|0.03|0.01|A|F|1993-04-01|1993-03-13|1993-05-01|COLLECT COD|FOB|deas across t|
-4706|68|5|3|6|5808.36|0.01|0.04|R|F|1993-01-20|1993-03-18|1993-01-26|NONE|MAIL|efully eve|
-4706|116|10|4|5|5080.55|0.06|0.06|R|F|1993-02-14|1993-01-31|1993-02-26|NONE|REG AIR|ptotes haggle ca|
-4706|50|7|5|27|25651.35|0.06|0.08|A|F|1993-04-04|1993-03-11|1993-04-09|COLLECT COD|REG AIR|into beans. finally special instruct|
-4707|34|5|1|7|6538.21|0.02|0.05|R|F|1995-05-14|1995-04-06|1995-06-06|COLLECT COD|SHIP|ecial sheaves boost blithely accor|
-4707|136|7|2|49|50770.37|0.00|0.07|N|F|1995-06-17|1995-05-16|1995-06-25|COLLECT COD|FOB| alongside of the slyly ironic instructio|
-4708|191|4|1|18|19641.42|0.02|0.04|A|F|1994-11-11|1994-11-15|1994-11-26|NONE|REG AIR|special, eve|
-4708|75|3|2|5|4875.35|0.05|0.05|A|F|1994-10-15|1994-12-02|1994-11-12|COLLECT COD|MAIL|ely. carefully sp|
-4708|77|7|3|32|31266.24|0.04|0.07|A|F|1994-11-12|1994-11-14|1994-11-23|TAKE BACK RETURN|MAIL|the accounts. e|
-4709|25|6|1|25|23125.50|0.03|0.05|N|O|1996-02-21|1996-02-11|1996-03-17|DELIVER IN PERSON|AIR|deposits grow. fluffily unusual accounts |
-4709|177|5|2|25|26929.25|0.05|0.03|N|O|1996-01-22|1996-03-03|1996-02-21|DELIVER IN PERSON|REG AIR|inst the ironic, regul|
-4710|183|4|1|40|43327.20|0.10|0.08|A|F|1995-03-09|1995-02-25|1995-03-29|TAKE BACK RETURN|AIR|cross the blithely bold packages. silen|
-4710|128|3|2|47|48321.64|0.04|0.01|R|F|1995-02-22|1995-01-12|1995-02-28|NONE|RAIL|blithely express packages. even, ironic re|
-4711|133|4|1|7|7231.91|0.03|0.01|N|O|1998-05-12|1998-06-24|1998-05-24|COLLECT COD|MAIL|ly. bold accounts use fluff|
-4711|145|6|2|15|15677.10|0.08|0.07|N|O|1998-06-09|1998-07-30|1998-06-18|COLLECT COD|SHIP| beans wake. deposits could bo|
-4711|150|1|3|22|23103.30|0.02|0.03|N|O|1998-06-21|1998-06-18|1998-07-19|TAKE BACK RETURN|REG AIR|along the quickly careful packages. bli|
-4711|65|10|4|8|7720.48|0.07|0.00|N|O|1998-06-17|1998-06-13|1998-06-27|TAKE BACK RETURN|SHIP|g to the carefully ironic deposits. specia|
-4711|49|2|5|15|14235.60|0.05|0.01|N|O|1998-09-03|1998-07-15|1998-09-13|TAKE BACK RETURN|SHIP|ld requests: furiously final inst|
-4711|116|7|6|45|45724.95|0.05|0.06|N|O|1998-05-19|1998-07-14|1998-05-21|COLLECT COD|SHIP| ironic theodolites |
-4711|46|5|7|18|17028.72|0.05|0.04|N|O|1998-07-03|1998-07-31|1998-07-23|DELIVER IN PERSON|RAIL| blithely. bold asymptote|
-4736|196|10|1|26|28500.94|0.03|0.03|N|O|1996-02-02|1996-01-18|1996-02-09|DELIVER IN PERSON|AIR|efully speci|
-4736|4|1|2|43|38872.00|0.06|0.07|N|O|1996-02-05|1995-12-21|1996-02-06|COLLECT COD|MAIL|quests. carefully |
-4737|191|5|1|37|40374.03|0.03|0.04|R|F|1993-05-17|1993-04-10|1993-05-30|DELIVER IN PERSON|TRUCK|s. fluffily regular |
-4737|69|8|2|22|21319.32|0.04|0.04|A|F|1993-03-29|1993-05-22|1993-04-16|TAKE BACK RETURN|RAIL| hang fluffily around t|
-4738|187|8|1|9|9784.62|0.04|0.04|A|F|1992-06-01|1992-06-26|1992-06-02|COLLECT COD|TRUCK|posits serve slyly. unusual pint|
-4738|173|3|2|16|17170.72|0.07|0.08|A|F|1992-06-17|1992-06-20|1992-06-21|NONE|MAIL|nic deposits are slyly! carefu|
-4738|100|2|3|50|50005.00|0.04|0.02|A|F|1992-06-18|1992-07-04|1992-07-07|TAKE BACK RETURN|TRUCK|the blithely ironic braids sleep slyly|
-4738|29|4|4|22|20438.44|0.02|0.08|A|F|1992-05-25|1992-05-19|1992-06-12|COLLECT COD|SHIP|ld, even packages. furio|
-4738|187|8|5|13|14133.34|0.04|0.05|R|F|1992-05-30|1992-06-11|1992-06-26|COLLECT COD|AIR| wake. unusual platelets for the|
-4738|159|1|6|10|10591.50|0.10|0.01|R|F|1992-07-10|1992-06-16|1992-07-25|TAKE BACK RETURN|SHIP|hins above the|
-4738|83|4|7|28|27526.24|0.05|0.07|A|F|1992-06-09|1992-07-05|1992-06-25|NONE|AIR|e furiously ironic excuses. care|
-4739|168|9|1|8|8545.28|0.07|0.07|R|F|1993-06-22|1993-05-10|1993-07-11|TAKE BACK RETURN|SHIP|cording to the |
-4739|185|6|2|31|33640.58|0.09|0.06|R|F|1993-06-20|1993-05-18|1993-06-26|COLLECT COD|SHIP|blithely special pin|
-4739|100|4|3|30|30003.00|0.09|0.00|A|F|1993-05-29|1993-04-12|1993-06-18|NONE|TRUCK|ly even packages use across th|
-4740|3|4|1|22|19866.00|0.06|0.01|N|O|1996-10-04|1996-08-17|1996-10-05|TAKE BACK RETURN|RAIL|final dependencies nag |
-4740|153|5|2|24|25275.60|0.08|0.02|N|O|1996-09-10|1996-09-27|1996-10-07|TAKE BACK RETURN|TRUCK|hely regular deposits|
-4741|73|2|1|24|23353.68|0.00|0.01|A|F|1992-09-16|1992-09-19|1992-09-20|DELIVER IN PERSON|RAIL|deas boost furiously slyly regular id|
-4741|113|4|2|16|16209.76|0.01|0.07|R|F|1992-08-25|1992-08-10|1992-08-29|TAKE BACK RETURN|FOB|final foxes haggle r|
-4741|156|8|3|24|25347.60|0.05|0.08|A|F|1992-11-04|1992-08-14|1992-11-06|TAKE BACK RETURN|MAIL|even requests.|
-4741|51|3|4|39|37090.95|0.09|0.06|R|F|1992-10-28|1992-10-03|1992-11-11|COLLECT COD|SHIP|t, regular requests|
-4741|179|10|5|40|43166.80|0.09|0.03|R|F|1992-09-20|1992-09-23|1992-10-09|TAKE BACK RETURN|REG AIR| fluffily slow deposits. fluffily regu|
-4741|157|5|6|34|35943.10|0.02|0.07|R|F|1992-08-25|1992-08-18|1992-09-20|DELIVER IN PERSON|RAIL|sly special packages after the furiously|
-4742|156|4|1|32|33796.80|0.10|0.08|R|F|1995-04-04|1995-06-12|1995-04-19|COLLECT COD|RAIL|eposits boost blithely. carefully regular a|
-4742|155|7|2|29|30599.35|0.02|0.03|N|F|1995-06-15|1995-05-05|1995-06-24|COLLECT COD|REG AIR|integrate closely among t|
-4742|72|10|3|15|14581.05|0.06|0.04|N|O|1995-07-20|1995-05-26|1995-08-11|NONE|SHIP|terns are sl|
-4742|188|9|4|31|33733.58|0.05|0.08|N|F|1995-06-13|1995-05-08|1995-06-24|COLLECT COD|REG AIR|ke slyly among the furiousl|
-4742|100|1|5|45|45004.50|0.05|0.00|R|F|1995-05-12|1995-05-14|1995-06-07|TAKE BACK RETURN|RAIL|ke carefully. do|
-4743|60|5|1|19|18241.14|0.04|0.07|A|F|1993-06-23|1993-05-03|1993-07-20|COLLECT COD|AIR|hely even accounts|
-4743|159|4|2|3|3177.45|0.01|0.03|R|F|1993-04-14|1993-06-08|1993-05-09|NONE|TRUCK|al requests. express idea|
-4743|73|2|3|21|20434.47|0.08|0.03|A|F|1993-07-02|1993-06-15|1993-07-26|DELIVER IN PERSON|RAIL|ake blithely against the packages. reg|
-4743|34|5|4|27|25218.81|0.08|0.05|R|F|1993-07-26|1993-05-27|1993-08-24|DELIVER IN PERSON|AIR|aids use. express deposits|
-4768|36|7|1|5|4680.15|0.00|0.03|R|F|1993-12-27|1994-02-09|1994-01-11|NONE|MAIL|egular accounts. bravely final fra|
-4769|35|1|1|16|14960.48|0.08|0.05|N|O|1995-07-16|1995-07-05|1995-07-22|TAKE BACK RETURN|FOB| deposits. slyly even asymptote|
-4769|63|8|2|34|32744.04|0.06|0.07|N|O|1995-07-26|1995-05-18|1995-08-03|COLLECT COD|REG AIR|ven instructions. ca|
-4769|47|10|3|36|34093.44|0.10|0.03|N|O|1995-07-22|1995-06-16|1995-08-11|NONE|RAIL|. slyly even deposit|
-4769|69|10|4|45|43607.70|0.08|0.06|R|F|1995-06-01|1995-07-13|1995-06-04|TAKE BACK RETURN|RAIL|accounts are. even accounts sleep|
-4769|112|6|5|15|15181.65|0.07|0.08|N|F|1995-06-12|1995-07-07|1995-07-04|NONE|SHIP|egular platelets can cajole across the |
-4770|32|8|1|41|38213.23|0.00|0.08|N|O|1995-09-04|1995-08-08|1995-09-10|COLLECT COD|FOB|ithely even packages sleep caref|
-4770|157|5|2|30|31714.50|0.09|0.07|N|O|1995-08-25|1995-08-27|1995-09-07|COLLECT COD|SHIP|ffily carefully ironic ideas. ironic d|
-4771|49|10|1|9|8541.36|0.01|0.00|R|F|1993-02-28|1993-02-19|1993-03-25|NONE|FOB|riously after the packages. fina|
-4771|16|7|2|21|19236.21|0.09|0.01|R|F|1993-01-19|1993-02-10|1993-02-01|NONE|FOB|fluffily pendi|
-4771|12|3|3|5|4560.05|0.06|0.08|R|F|1993-01-07|1993-01-19|1993-01-26|NONE|RAIL|ar, quiet accounts nag furiously express id|
-4771|9|4|4|21|19089.00|0.05|0.04|A|F|1992-12-20|1993-01-22|1992-12-26|TAKE BACK RETURN|SHIP| carefully re|
-4772|87|8|1|1|987.08|0.10|0.00|R|F|1994-11-13|1994-10-25|1994-11-15|DELIVER IN PERSON|AIR|ans. slyly even acc|
-4772|146|9|2|16|16738.24|0.07|0.06|R|F|1994-10-27|1994-12-07|1994-10-29|TAKE BACK RETURN|MAIL|egular accounts wake s|
-4772|95|6|3|31|30847.79|0.02|0.04|A|F|1994-10-02|1994-10-21|1994-10-13|TAKE BACK RETURN|FOB|ests are thinly. furiously unusua|
-4772|71|10|4|15|14566.05|0.02|0.07|R|F|1994-09-19|1994-10-22|1994-09-26|COLLECT COD|TRUCK| requests. express, regular th|
-4773|144|5|1|23|24015.22|0.00|0.08|N|O|1996-01-01|1996-03-19|1996-01-04|NONE|FOB|ly express grouches wak|
-4773|197|9|2|36|39498.84|0.09|0.04|N|O|1996-04-08|1996-03-03|1996-05-01|COLLECT COD|REG AIR| dependencies. quickly|
-4773|167|8|3|49|52290.84|0.05|0.02|N|O|1996-01-26|1996-02-29|1996-01-27|TAKE BACK RETURN|FOB|y final reque|
-4773|20|10|4|49|45080.98|0.09|0.04|N|O|1996-01-12|1996-02-17|1996-02-05|TAKE BACK RETURN|TRUCK|ly pending theodolites cajole caref|
-4773|150|3|5|20|21003.00|0.02|0.07|N|O|1995-12-28|1996-02-17|1996-01-15|COLLECT COD|TRUCK| blithely final deposits nag after t|
-4773|190|1|6|11|11992.09|0.10|0.06|N|O|1996-01-02|1996-01-29|1996-01-24|DELIVER IN PERSON|REG AIR|en accounts. slyly b|
-4773|158|3|7|6|6348.90|0.07|0.01|N|O|1996-03-09|1996-03-18|1996-03-27|NONE|AIR|latelets haggle s|
-4774|84|5|1|45|44283.60|0.10|0.00|R|F|1993-07-07|1993-06-08|1993-07-31|COLLECT COD|TRUCK| haggle busily afte|
-4774|39|5|2|4|3756.12|0.02|0.03|A|F|1993-08-03|1993-05-30|1993-08-19|COLLECT COD|FOB|xes according to the foxes wake above the f|
-4774|173|4|3|47|50438.99|0.10|0.08|R|F|1993-06-13|1993-07-04|1993-07-09|TAKE BACK RETURN|FOB|regular dolphins above the furi|
-4774|130|3|4|30|30903.90|0.05|0.08|A|F|1993-08-18|1993-06-08|1993-08-21|DELIVER IN PERSON|REG AIR|tions against the blithely final theodolit|
-4775|74|4|1|1|974.07|0.10|0.02|N|O|1995-09-06|1995-09-28|1995-09-29|DELIVER IN PERSON|MAIL|furiously ironic theodolite|
-4775|153|1|2|37|38966.55|0.02|0.01|N|O|1995-09-06|1995-09-28|1995-09-28|COLLECT COD|TRUCK|ts. pinto beans use according to th|
-4775|153|5|3|34|35807.10|0.09|0.06|N|O|1995-09-14|1995-10-15|1995-09-21|DELIVER IN PERSON|MAIL|onic epitaphs. f|
-4775|119|9|4|39|39745.29|0.07|0.04|N|O|1995-08-30|1995-10-12|1995-09-20|NONE|AIR|eep never with the slyly regular acc|
-4800|97|10|1|11|10967.99|0.03|0.03|R|F|1992-01-27|1992-03-16|1992-02-19|TAKE BACK RETURN|RAIL|ic dependenc|
-4800|26|5|2|1|926.02|0.06|0.06|A|F|1992-02-23|1992-03-16|1992-03-20|TAKE BACK RETURN|MAIL|nal accounts are blithely deposits. bol|
-4800|11|8|3|21|19131.21|0.09|0.05|A|F|1992-02-14|1992-03-15|1992-02-26|NONE|SHIP|ithely according to |
-4800|176|7|4|38|40894.46|0.10|0.08|R|F|1992-02-01|1992-02-28|1992-02-21|NONE|TRUCK|s sleep fluffily. furiou|
-4800|53|4|5|24|22873.20|0.08|0.04|R|F|1992-01-14|1992-02-23|1992-01-25|NONE|TRUCK|ully carefully r|
-4801|184|5|1|37|40114.66|0.10|0.02|N|O|1996-03-09|1996-02-29|1996-03-25|TAKE BACK RETURN|FOB|uests hinder blithely against the instr|
-4801|26|1|2|34|31484.68|0.03|0.02|N|O|1996-02-05|1996-04-16|1996-02-23|NONE|SHIP|y final requests |
-4801|110|1|3|4|4040.44|0.04|0.04|N|O|1996-03-23|1996-04-04|1996-03-25|COLLECT COD|RAIL|pitaphs. regular, reg|
-4801|92|3|4|39|38691.51|0.07|0.01|N|O|1996-03-19|1996-03-21|1996-04-17|TAKE BACK RETURN|REG AIR|warhorses wake never for the care|
-4802|40|1|1|6|5640.24|0.00|0.06|N|O|1997-04-16|1997-03-25|1997-04-21|TAKE BACK RETURN|SHIP|unusual accounts wake blithely. b|
-4803|132|3|1|2|2064.26|0.08|0.03|N|O|1996-04-16|1996-03-20|1996-05-15|NONE|REG AIR|gular reque|
-4803|176|4|2|47|50579.99|0.10|0.00|N|O|1996-03-14|1996-03-30|1996-03-15|DELIVER IN PERSON|FOB|ly final excuses. slyly express requ|
-4803|196|8|3|42|46039.98|0.04|0.08|N|O|1996-04-27|1996-05-05|1996-05-17|NONE|TRUCK| accounts affix quickly ar|
-4803|22|1|4|24|22128.48|0.10|0.04|N|O|1996-02-24|1996-04-02|1996-02-28|NONE|MAIL|t blithely slyly special decoys. |
-4803|189|10|5|21|22872.78|0.03|0.06|N|O|1996-05-25|1996-03-15|1996-06-09|COLLECT COD|FOB| silent packages use. b|
-4803|194|5|6|19|20789.61|0.07|0.00|N|O|1996-04-20|1996-03-25|1996-04-27|TAKE BACK RETURN|RAIL|sts. enticing, even|
-4804|128|1|1|44|45237.28|0.06|0.08|A|F|1992-05-02|1992-03-24|1992-05-28|TAKE BACK RETURN|AIR|aggle quickly among the slyly fi|
-4804|35|6|2|41|38336.23|0.10|0.02|R|F|1992-04-06|1992-04-12|1992-05-03|COLLECT COD|MAIL|. deposits haggle express tithes?|
-4804|65|2|3|33|31846.98|0.09|0.05|A|F|1992-03-02|1992-04-14|1992-03-13|DELIVER IN PERSON|AIR|, thin excuses. |
-4805|150|1|1|7|7351.05|0.09|0.03|A|F|1992-05-01|1992-07-09|1992-05-09|NONE|FOB| requests. regular deposit|
-4805|189|10|2|45|49013.10|0.02|0.03|R|F|1992-06-16|1992-06-08|1992-07-03|NONE|TRUCK|the furiously sly t|
-4805|154|6|3|44|46382.60|0.01|0.02|R|F|1992-05-14|1992-06-23|1992-05-25|DELIVER IN PERSON|SHIP|eposits sleep furiously qui|
-4805|65|2|4|13|12545.78|0.04|0.04|R|F|1992-07-16|1992-06-07|1992-08-10|COLLECT COD|AIR|its serve about the accounts. slyly regu|
-4805|9|10|5|42|38178.00|0.03|0.03|R|F|1992-08-17|1992-07-03|1992-09-14|NONE|REG AIR|the regular, fina|
-4805|136|7|6|18|18650.34|0.06|0.04|A|F|1992-06-07|1992-07-10|1992-06-12|COLLECT COD|TRUCK|o use pending, unusu|
-4806|16|7|1|26|23816.26|0.10|0.05|R|F|1993-05-28|1993-06-07|1993-05-29|DELIVER IN PERSON|SHIP| bold pearls sublate blithely. quickly pe|
-4806|72|10|2|6|5832.42|0.01|0.06|A|F|1993-05-17|1993-07-19|1993-05-29|TAKE BACK RETURN|SHIP|even theodolites. packages sl|
-4806|29|4|3|8|7432.16|0.09|0.00|A|F|1993-05-08|1993-07-16|1993-05-28|NONE|TRUCK|requests boost blithely. qui|
-4807|122|1|1|9|9199.08|0.04|0.08|N|O|1997-04-23|1997-03-01|1997-05-15|TAKE BACK RETURN|TRUCK|may are blithely. carefully even pinto b|
-4807|10|1|2|41|37310.41|0.07|0.08|N|O|1997-05-02|1997-03-31|1997-05-15|TAKE BACK RETURN|AIR| fluffily re|
-4807|145|6|3|34|35534.76|0.06|0.02|N|O|1997-01-31|1997-03-13|1997-02-01|NONE|SHIP|ecial ideas. deposits according to the fin|
-4807|190|1|4|32|34886.08|0.05|0.00|N|O|1997-04-04|1997-03-21|1997-04-16|NONE|RAIL|efully even dolphins slee|
-4807|159|1|5|2|2118.30|0.02|0.05|N|O|1997-05-09|1997-04-03|1997-06-05|TAKE BACK RETURN|RAIL|deas wake bli|
-4807|160|1|6|22|23323.52|0.09|0.06|N|O|1997-03-13|1997-02-23|1997-04-01|NONE|FOB|es use final excuses. furiously final|
-4832|15|6|1|23|21045.23|0.03|0.01|N|O|1997-12-05|1998-01-05|1997-12-10|NONE|RAIL|y express depo|
-4832|152|4|2|10|10521.50|0.00|0.06|N|O|1998-01-08|1998-02-01|1998-01-11|DELIVER IN PERSON|MAIL|ly. blithely bold pinto beans should have|
-4832|149|6|3|4|4196.56|0.04|0.01|N|O|1998-01-16|1998-02-12|1998-02-08|TAKE BACK RETURN|AIR|ages. slyly express deposits cajole car|
-4832|64|5|4|6|5784.36|0.02|0.01|N|O|1997-12-08|1998-02-03|1997-12-10|COLLECT COD|TRUCK|ages cajole after the bold requests. furi|
-4832|138|4|5|43|44639.59|0.10|0.08|N|O|1997-12-31|1998-02-20|1998-01-26|COLLECT COD|RAIL|oze according to the accou|
-4833|107|10|1|31|31220.10|0.08|0.04|N|O|1996-06-24|1996-07-15|1996-07-02|NONE|SHIP|ven instructions cajole against the caref|
-4833|117|7|2|11|11188.21|0.03|0.01|N|O|1996-08-24|1996-07-26|1996-09-19|NONE|REG AIR|s nag above the busily sile|
-4833|18|9|3|26|23868.26|0.08|0.04|N|O|1996-05-13|1996-07-12|1996-05-31|NONE|SHIP|s packages. even gif|
-4833|36|7|4|19|17784.57|0.07|0.07|N|O|1996-08-21|1996-07-09|1996-09-10|TAKE BACK RETURN|AIR|y quick theodolit|
-4833|35|1|5|4|3740.12|0.10|0.02|N|O|1996-08-16|1996-06-29|1996-08-22|NONE|AIR|y pending packages sleep blithely regular r|
-4834|183|4|1|27|29245.86|0.06|0.02|N|O|1997-01-09|1996-10-27|1997-01-27|DELIVER IN PERSON|RAIL|es nag blithe|
-4834|71|1|2|26|25247.82|0.01|0.00|N|O|1996-10-04|1996-10-21|1996-10-10|DELIVER IN PERSON|TRUCK|ages dazzle carefully. slyly daring foxes|
-4834|23|2|3|34|31382.68|0.03|0.01|N|O|1996-12-09|1996-11-26|1996-12-10|NONE|MAIL|ounts haggle bo|
-4834|143|10|4|38|39639.32|0.03|0.06|N|O|1997-01-10|1996-12-06|1997-01-22|COLLECT COD|FOB|alongside of the carefully even plate|
-4835|179|10|1|18|19425.06|0.00|0.03|R|F|1995-02-17|1994-12-14|1995-03-17|DELIVER IN PERSON|MAIL|eat furiously against the slyly |
-4835|91|3|2|3|2973.27|0.09|0.06|R|F|1995-01-24|1995-01-12|1995-02-16|COLLECT COD|AIR|etimes final pac|
-4835|86|7|3|27|26624.16|0.05|0.00|A|F|1994-12-10|1994-12-13|1995-01-02|DELIVER IN PERSON|REG AIR| accounts after the car|
-4835|102|7|4|23|23048.30|0.08|0.07|A|F|1995-02-05|1995-01-04|1995-02-28|NONE|SHIP|e carefully regular foxes. deposits are sly|
-4836|162|1|1|22|23367.52|0.01|0.03|N|O|1997-03-03|1997-02-23|1997-03-04|NONE|SHIP|al pinto beans. care|
-4836|48|5|2|16|15168.64|0.07|0.08|N|O|1997-01-14|1997-03-05|1997-01-30|COLLECT COD|MAIL|gular packages against the express reque|
-4836|76|4|3|14|13664.98|0.03|0.08|N|O|1997-02-21|1997-02-06|1997-03-08|COLLECT COD|MAIL|lites. unusual, bold dolphins ar|
-4836|106|1|4|15|15091.50|0.10|0.00|N|O|1997-03-08|1997-03-14|1997-03-30|TAKE BACK RETURN|TRUCK|eep slyly. even requests cajole|
-4836|51|6|5|12|11412.60|0.01|0.04|N|O|1997-02-02|1997-02-10|1997-02-03|COLLECT COD|TRUCK|sly ironic accoun|
-4837|42|1|1|16|15072.64|0.09|0.04|N|O|1998-08-12|1998-06-06|1998-08-26|COLLECT COD|FOB|ing requests are blithely regular instructi|
-4837|193|5|2|16|17491.04|0.01|0.02|N|O|1998-08-19|1998-06-18|1998-08-26|NONE|RAIL|counts cajole slyly furiou|
-4837|68|5|3|42|40658.52|0.10|0.00|N|O|1998-06-19|1998-07-06|1998-06-23|COLLECT COD|MAIL|o the furiously final theodolites boost|
-4838|122|3|1|35|35774.20|0.01|0.00|R|F|1992-10-30|1992-10-23|1992-11-21|TAKE BACK RETURN|RAIL|ly blithely unusual foxes. even package|
-4838|148|5|2|2|2096.28|0.03|0.08|R|F|1992-08-11|1992-09-16|1992-08-26|COLLECT COD|MAIL|hely final notornis are furiously blithe|
-4838|52|3|3|26|24753.30|0.06|0.04|R|F|1992-09-03|1992-10-25|1992-09-11|TAKE BACK RETURN|FOB|ular requests boost about the packages. r|
-4839|60|2|1|5|4800.30|0.10|0.07|A|F|1994-09-07|1994-07-15|1994-10-05|DELIVER IN PERSON|FOB|ses integrate. regular deposits are about |
-4839|10|1|2|25|22750.25|0.02|0.02|R|F|1994-05-20|1994-07-08|1994-05-30|NONE|REG AIR|regular packages ab|
-4839|60|1|3|18|17281.08|0.06|0.01|R|F|1994-05-18|1994-06-13|1994-06-09|TAKE BACK RETURN|FOB|blithely ironic theodolites use along|
-4839|100|1|4|19|19001.90|0.07|0.08|R|F|1994-05-20|1994-07-14|1994-05-30|NONE|REG AIR| deposits sublate furiously ir|
-4839|71|10|5|9|8739.63|0.05|0.01|R|F|1994-06-17|1994-06-18|1994-07-10|NONE|SHIP|ounts haggle carefully above|
-4864|150|9|1|28|29404.20|0.06|0.08|A|F|1993-02-06|1992-12-15|1993-02-10|COLLECT COD|REG AIR|thely around the bli|
-4864|38|4|2|38|35645.14|0.10|0.02|R|F|1992-12-20|1993-01-07|1993-01-06|TAKE BACK RETURN|SHIP|ording to the ironic, ir|
-4864|133|4|3|45|46490.85|0.02|0.01|A|F|1992-11-17|1993-01-02|1992-11-26|COLLECT COD|SHIP|round the furiously careful pa|
-4864|31|2|4|46|42827.38|0.07|0.03|A|F|1993-02-24|1993-01-02|1993-03-17|TAKE BACK RETURN|RAIL|sts use carefully across the carefull|
-4865|162|7|1|16|16994.56|0.07|0.05|N|O|1997-10-02|1997-08-20|1997-10-04|COLLECT COD|TRUCK|osits haggle. fur|
-4865|137|8|2|4|4148.52|0.07|0.01|N|O|1997-07-24|1997-07-25|1997-08-07|TAKE BACK RETURN|FOB|sts. blithely special instruction|
-4865|68|3|3|44|42594.64|0.10|0.08|N|O|1997-07-25|1997-08-20|1997-08-22|COLLECT COD|FOB|even deposits sleep against the quickly r|
-4865|50|3|4|21|19951.05|0.04|0.02|N|O|1997-07-17|1997-08-10|1997-07-21|NONE|RAIL|eposits detect sly|
-4865|54|9|5|33|31483.65|0.00|0.05|N|O|1997-07-17|1997-08-16|1997-07-30|TAKE BACK RETURN|FOB|y pending notornis ab|
-4865|65|2|6|47|45357.82|0.00|0.05|N|O|1997-08-26|1997-08-07|1997-08-31|NONE|RAIL|y unusual packages. packages|
-4866|11|8|1|9|8199.09|0.01|0.05|N|O|1997-08-30|1997-09-18|1997-09-24|TAKE BACK RETURN|MAIL|ven dependencies x-ray. quic|
-4866|102|3|2|1|1002.10|0.06|0.00|N|O|1997-10-15|1997-10-01|1997-11-14|TAKE BACK RETURN|AIR|latelets nag. q|
-4866|131|7|3|17|17529.21|0.07|0.00|N|O|1997-11-26|1997-10-11|1997-12-12|COLLECT COD|TRUCK|ess packages doubt. even somas wake f|
-4867|82|3|1|7|6874.56|0.09|0.03|A|F|1992-07-17|1992-08-17|1992-07-22|COLLECT COD|FOB|e carefully even packages. slyly ironic i|
-4867|160|8|2|3|3180.48|0.04|0.08|R|F|1992-07-04|1992-07-15|1992-07-21|NONE|AIR|yly silent deposits|
-4868|73|3|1|47|45734.29|0.03|0.03|N|O|1997-04-29|1997-04-27|1997-05-11|DELIVER IN PERSON|SHIP|gle unusual, fluffy packages. foxes cajol|
-4868|180|1|2|8|8641.44|0.10|0.08|N|O|1997-03-26|1997-05-09|1997-04-16|NONE|RAIL|ly special th|
-4868|191|2|3|49|53468.31|0.09|0.03|N|O|1997-04-23|1997-05-07|1997-04-26|NONE|SHIP|ys engage. th|
-4868|80|1|4|34|33322.72|0.04|0.02|N|O|1997-05-19|1997-04-27|1997-06-15|NONE|RAIL|en instructions about th|
-4868|122|3|5|22|22486.64|0.07|0.06|N|O|1997-04-26|1997-05-16|1997-05-01|DELIVER IN PERSON|FOB|osits. final foxes boost regular,|
-4869|41|8|1|31|29172.24|0.10|0.01|A|F|1995-01-17|1994-11-30|1995-02-02|NONE|SHIP|ins. always unusual ideas across the ir|
-4869|58|3|2|24|22993.20|0.09|0.06|A|F|1994-11-17|1994-11-07|1994-11-27|COLLECT COD|MAIL|olites cajole after the ideas. special t|
-4869|157|8|3|25|26428.75|0.00|0.05|R|F|1994-11-25|1994-11-14|1994-12-19|DELIVER IN PERSON|AIR|e according t|
-4869|103|8|4|24|24074.40|0.10|0.07|R|F|1994-11-23|1994-11-18|1994-12-11|DELIVER IN PERSON|MAIL|se deposits above the sly, q|
-4869|173|2|5|42|45073.14|0.07|0.04|R|F|1994-10-16|1994-12-10|1994-11-07|TAKE BACK RETURN|REG AIR| slyly even instructions. |
-4869|122|5|6|30|30663.60|0.00|0.05|A|F|1995-01-09|1994-11-20|1995-02-02|COLLECT COD|RAIL|gedly even requests. s|
-4870|48|5|1|49|46453.96|0.05|0.05|R|F|1994-11-14|1994-10-24|1994-12-12|TAKE BACK RETURN|SHIP| regular packages |
-4870|127|10|2|6|6162.72|0.06|0.08|A|F|1994-09-09|1994-10-16|1994-09-21|DELIVER IN PERSON|TRUCK|ress requests. bold, silent pinto bea|
-4870|31|2|3|5|4655.15|0.05|0.00|R|F|1994-10-11|1994-10-07|1994-10-24|NONE|AIR|s haggle furiously. slyly ironic dinos|
-4870|6|9|4|4|3624.00|0.03|0.08|A|F|1994-10-23|1994-09-16|1994-11-04|COLLECT COD|RAIL|its wake quickly. slyly quick|
-4870|71|1|5|36|34958.52|0.09|0.06|A|F|1994-09-06|1994-09-17|1994-10-01|COLLECT COD|REG AIR| instructions. carefully pending pac|
-4871|177|5|1|14|15080.38|0.07|0.03|N|O|1995-09-30|1995-07-29|1995-10-18|TAKE BACK RETURN|REG AIR|inst the never ironic |
-4871|161|6|2|17|18039.72|0.07|0.03|N|O|1995-09-09|1995-09-01|1995-10-02|DELIVER IN PERSON|AIR|es. carefully ev|
-4871|63|4|3|3|2889.18|0.03|0.06|N|O|1995-10-03|1995-08-10|1995-10-06|DELIVER IN PERSON|TRUCK|y special packages wak|
-4871|149|8|4|35|36719.90|0.08|0.07|N|O|1995-08-11|1995-07-18|1995-08-29|DELIVER IN PERSON|TRUCK|ackages sle|
-4871|152|3|5|10|10521.50|0.09|0.02|N|O|1995-09-12|1995-09-02|1995-10-05|TAKE BACK RETURN|AIR|s integrate after the a|
-4871|136|2|6|36|37300.68|0.02|0.08|N|O|1995-09-18|1995-08-29|1995-10-05|TAKE BACK RETURN|AIR|ely according|
-4871|140|6|7|10|10401.40|0.10|0.02|N|O|1995-07-13|1995-08-19|1995-07-29|NONE|REG AIR|p ironic theodolites. slyly even platel|
-4896|41|2|1|19|17879.76|0.09|0.05|A|F|1992-12-13|1992-11-13|1993-01-09|NONE|AIR|nusual requ|
-4896|140|1|2|44|45766.16|0.04|0.03|A|F|1992-11-24|1992-11-15|1992-12-18|COLLECT COD|MAIL|e after the slowly f|
-4896|58|10|3|6|5748.30|0.04|0.04|A|F|1992-10-30|1992-11-12|1992-11-28|DELIVER IN PERSON|TRUCK|usly regular deposits|
-4896|23|4|4|5|4615.10|0.08|0.02|R|F|1992-12-02|1992-11-11|1992-12-19|COLLECT COD|SHIP|eposits hang carefully. sly|
-4896|86|7|5|21|20707.68|0.07|0.08|R|F|1992-11-18|1992-11-18|1992-11-29|DELIVER IN PERSON|TRUCK|ly express deposits. carefully pending depo|
-4897|55|6|1|26|24831.30|0.01|0.01|R|F|1992-12-22|1992-10-25|1992-12-27|DELIVER IN PERSON|TRUCK|. carefully ironic dep|
-4897|143|6|2|34|35466.76|0.02|0.00|R|F|1992-12-31|1992-11-11|1993-01-30|COLLECT COD|AIR|ts. special dependencies use fluffily |
-4897|55|7|3|42|40112.10|0.09|0.03|A|F|1992-09-23|1992-10-28|1992-10-02|DELIVER IN PERSON|FOB|sts. blithely regular deposits will have|
-4897|104|5|4|19|19077.90|0.03|0.00|A|F|1992-11-08|1992-12-14|1992-12-03|DELIVER IN PERSON|FOB|! ironic, pending dependencies doze furiou|
-4898|72|1|1|44|42771.08|0.07|0.02|A|F|1994-09-13|1994-08-18|1994-09-16|NONE|FOB|y regular grouches about|
-4899|34|10|1|14|13076.42|0.06|0.00|R|F|1993-11-10|1994-01-10|1993-11-20|NONE|REG AIR| foxes eat|
-4900|116|3|1|40|40644.40|0.10|0.03|A|F|1992-09-02|1992-09-25|1992-09-21|COLLECT COD|TRUCK|heodolites. request|
-4900|77|8|2|33|32243.31|0.06|0.06|R|F|1992-08-18|1992-09-20|1992-08-19|COLLECT COD|MAIL|nto beans nag slyly reg|
-4900|103|8|3|48|48148.80|0.02|0.00|R|F|1992-09-18|1992-08-14|1992-09-28|TAKE BACK RETURN|MAIL|uickly ironic ideas kindle s|
-4900|32|3|4|20|18640.60|0.05|0.00|R|F|1992-09-22|1992-09-23|1992-09-27|TAKE BACK RETURN|MAIL|yers. accounts affix somet|
-4900|105|8|5|40|40204.00|0.03|0.02|R|F|1992-07-14|1992-09-05|1992-07-20|NONE|REG AIR|luffily final dol|
-4900|103|6|6|46|46142.60|0.06|0.08|R|F|1992-07-11|1992-09-19|1992-07-16|TAKE BACK RETURN|SHIP|ly final acco|
-4901|141|10|1|37|38522.18|0.00|0.04|N|O|1998-01-26|1998-02-20|1998-01-31|DELIVER IN PERSON|TRUCK| furiously ev|
-4901|165|4|2|12|12781.92|0.00|0.04|N|O|1998-01-12|1998-02-06|1998-02-03|COLLECT COD|REG AIR|y unusual deposits prom|
-4901|120|4|3|16|16321.92|0.05|0.08|N|O|1998-04-19|1998-03-18|1998-04-21|NONE|AIR|deposits. blithely fin|
-4901|36|7|4|41|38377.23|0.03|0.00|N|O|1998-03-18|1998-02-18|1998-04-14|TAKE BACK RETURN|AIR|efully bold packages affix carefully eve|
-4901|116|7|5|40|40644.40|0.06|0.02|N|O|1998-01-08|1998-01-30|1998-01-15|DELIVER IN PERSON|MAIL|ect across the furiou|
-4902|196|10|1|22|24116.18|0.00|0.04|N|O|1998-10-17|1998-08-10|1998-10-21|COLLECT COD|RAIL|r the furiously final fox|
-4902|83|4|2|1|983.08|0.09|0.04|N|O|1998-10-12|1998-08-20|1998-11-08|NONE|RAIL|daring foxes? even, bold requests wake f|
-4903|121|2|1|1|1021.12|0.06|0.03|R|F|1992-04-23|1992-06-13|1992-05-03|NONE|SHIP|nusual requests|
-4903|165|6|2|6|6390.96|0.09|0.07|R|F|1992-04-01|1992-05-16|1992-04-11|DELIVER IN PERSON|SHIP|azzle quickly along the blithely final pla|
-4903|120|10|3|27|27543.24|0.07|0.06|A|F|1992-06-29|1992-06-09|1992-07-08|COLLECT COD|RAIL|pinto beans are; |
-4928|100|1|1|4|4000.40|0.04|0.02|R|F|1993-10-25|1993-12-24|1993-11-16|TAKE BACK RETURN|REG AIR|bout the slyly final accounts. carefull|
-4928|93|4|2|20|19861.80|0.03|0.08|A|F|1994-01-19|1993-11-29|1994-02-13|DELIVER IN PERSON|SHIP|quiet theodolites ca|
-4928|149|8|3|34|35670.76|0.06|0.05|A|F|1993-10-12|1993-12-31|1993-10-14|DELIVER IN PERSON|AIR|, regular depos|
-4929|14|1|1|20|18280.20|0.00|0.04|N|O|1996-03-12|1996-05-23|1996-03-20|COLLECT COD|REG AIR| final pinto beans detect. final,|
-4929|79|7|2|40|39162.80|0.08|0.03|N|O|1996-05-30|1996-04-13|1996-06-22|TAKE BACK RETURN|AIR|unts against |
-4929|77|7|3|32|31266.24|0.08|0.02|N|O|1996-04-28|1996-05-23|1996-04-30|COLLECT COD|TRUCK|usly at the blithely pending pl|
-4929|109|4|4|26|26236.60|0.00|0.05|N|O|1996-06-10|1996-05-29|1996-06-26|DELIVER IN PERSON|RAIL| slyly. fl|
-4929|67|8|5|24|23209.44|0.09|0.05|N|O|1996-04-15|1996-04-30|1996-05-09|NONE|MAIL| accounts boost|
-4930|187|8|1|35|38051.30|0.03|0.01|A|F|1994-07-09|1994-07-30|1994-07-15|NONE|RAIL|lose slyly regular dependencies. fur|
-4930|115|5|2|20|20302.20|0.02|0.04|A|F|1994-08-21|1994-06-17|1994-08-24|COLLECT COD|FOB|he carefully|
-4930|168|7|3|28|29908.48|0.00|0.08|R|F|1994-08-27|1994-06-27|1994-09-18|COLLECT COD|TRUCK|e ironic, unusual courts. regula|
-4930|166|7|4|42|44778.72|0.00|0.00|A|F|1994-06-18|1994-06-22|1994-07-10|COLLECT COD|AIR|ions haggle. furiously regular ideas use |
-4930|190|1|5|38|41427.22|0.02|0.03|A|F|1994-06-06|1994-06-18|1994-07-03|TAKE BACK RETURN|AIR|bold requests sleep never|
-4931|194|7|1|1|1094.19|0.08|0.06|A|F|1995-01-24|1994-12-19|1995-02-07|DELIVER IN PERSON|SHIP| furiously |
-4931|151|3|2|8|8409.20|0.06|0.02|R|F|1994-12-15|1995-01-14|1995-01-06|NONE|SHIP|ts boost. packages wake sly|
-4931|144|5|3|20|20882.80|0.09|0.00|A|F|1995-01-25|1994-12-21|1995-02-06|DELIVER IN PERSON|MAIL|the furious|
-4931|200|4|4|50|55010.00|0.04|0.01|A|F|1994-12-15|1994-12-18|1994-12-23|COLLECT COD|REG AIR|s haggle al|
-4931|150|7|5|25|26253.75|0.05|0.05|R|F|1994-12-19|1995-01-05|1994-12-21|COLLECT COD|FOB|aggle bravely according to the quic|
-4931|103|6|6|8|8024.80|0.02|0.03|A|F|1995-02-16|1994-12-30|1995-03-15|DELIVER IN PERSON|SHIP|dependencies are slyly|
-4932|51|3|1|13|12363.65|0.04|0.03|A|F|1993-09-13|1993-10-16|1993-09-20|DELIVER IN PERSON|SHIP|slyly according to the furiously fin|
-4932|103|10|2|15|15046.50|0.01|0.02|R|F|1993-11-15|1993-10-25|1993-11-29|NONE|REG AIR|yly. unusu|
-4932|87|8|3|5|4935.40|0.06|0.06|A|F|1993-10-01|1993-09-13|1993-10-04|NONE|MAIL| haggle furiously. slyly ironic packages sl|
-4932|98|1|4|11|10978.99|0.09|0.06|A|F|1993-09-21|1993-09-30|1993-09-23|COLLECT COD|SHIP|as. special depende|
-4933|32|8|1|48|44737.44|0.08|0.00|N|O|1995-10-10|1995-10-03|1995-11-04|COLLECT COD|SHIP|ideas. sly|
-4933|82|3|2|2|1964.16|0.09|0.00|N|O|1995-10-01|1995-09-29|1995-10-19|DELIVER IN PERSON|MAIL|ctions nag final instructions. accou|
-4934|97|10|1|48|47860.32|0.00|0.01|N|O|1997-05-20|1997-04-22|1997-06-02|TAKE BACK RETURN|SHIP| ideas cajol|
-4934|110|1|2|41|41414.51|0.06|0.06|N|O|1997-06-04|1997-04-11|1997-06-25|TAKE BACK RETURN|FOB|wake final, ironic f|
-4934|140|1|3|8|8321.12|0.03|0.06|N|O|1997-05-20|1997-04-30|1997-05-27|TAKE BACK RETURN|MAIL|arefully express pains cajo|
-4934|148|5|4|9|9433.26|0.06|0.08|N|O|1997-06-10|1997-04-09|1997-06-12|TAKE BACK RETURN|REG AIR| haggle alongside of the|
-4934|138|9|5|29|30105.77|0.09|0.03|N|O|1997-04-10|1997-05-05|1997-05-04|DELIVER IN PERSON|AIR|aggle furiously among the busily final re|
-4934|52|3|6|42|39986.10|0.00|0.07|N|O|1997-03-19|1997-05-05|1997-03-25|NONE|MAIL|ven, ironic ideas|
-4934|11|5|7|2|1822.02|0.10|0.06|N|O|1997-06-05|1997-03-26|1997-06-09|COLLECT COD|MAIL|ongside of the brave, regula|
-4935|161|2|1|13|13795.08|0.09|0.01|A|F|1993-06-20|1993-08-13|1993-06-27|COLLECT COD|REG AIR|ly requests. final deposits might |
-4935|40|6|2|37|34781.48|0.01|0.05|R|F|1993-08-30|1993-07-23|1993-09-07|TAKE BACK RETURN|RAIL|y even dependencies nag a|
-4935|11|8|3|24|21864.24|0.06|0.04|A|F|1993-05-29|1993-08-17|1993-06-22|NONE|RAIL|ly quickly s|
-4935|45|6|4|49|46306.96|0.06|0.01|A|F|1993-09-16|1993-08-21|1993-10-12|COLLECT COD|TRUCK|ffily after the furiou|
-4935|10|1|5|14|12740.14|0.08|0.08|A|F|1993-05-30|1993-07-25|1993-05-31|COLLECT COD|FOB|slowly. blith|
-4935|188|9|6|36|39174.48|0.10|0.00|R|F|1993-07-11|1993-07-04|1993-08-01|DELIVER IN PERSON|RAIL|requests across the quick|
-4960|18|5|1|36|33048.36|0.01|0.05|R|F|1995-03-06|1995-05-04|1995-04-05|TAKE BACK RETURN|RAIL|c, unusual accou|
-4960|45|8|2|6|5670.24|0.03|0.08|R|F|1995-03-21|1995-05-13|1995-04-14|TAKE BACK RETURN|SHIP|ual package|
-4960|149|8|3|9|9442.26|0.01|0.03|A|F|1995-03-20|1995-05-05|1995-04-17|COLLECT COD|RAIL|e blithely carefully fina|
-4960|120|7|4|14|14281.68|0.00|0.06|A|F|1995-04-03|1995-04-17|1995-04-07|NONE|RAIL|accounts. warhorses are. grouches |
-4960|98|1|5|8|7984.72|0.07|0.04|R|F|1995-03-14|1995-04-18|1995-04-09|NONE|FOB|as. busily regular packages nag. |
-4960|146|7|6|37|38707.18|0.10|0.04|R|F|1995-05-23|1995-04-12|1995-06-01|DELIVER IN PERSON|MAIL|ending theodolites w|
-4960|170|1|7|42|44947.14|0.08|0.07|A|F|1995-04-19|1995-04-11|1995-05-08|NONE|SHIP|s requests cajole. |
-4961|44|7|1|38|35873.52|0.10|0.07|N|O|1998-07-09|1998-06-03|1998-07-11|TAKE BACK RETURN|FOB|e on the blithely bold accounts. unu|
-4961|60|5|2|1|960.06|0.08|0.08|N|O|1998-07-08|1998-05-25|1998-07-12|DELIVER IN PERSON|MAIL|s affix carefully silent dependen|
-4961|162|3|3|41|43548.56|0.02|0.02|N|O|1998-07-15|1998-06-15|1998-08-05|TAKE BACK RETURN|REG AIR|ily against the n|
-4961|100|3|4|10|10001.00|0.02|0.04|N|O|1998-04-15|1998-07-03|1998-04-18|DELIVER IN PERSON|MAIL|quests. regular, ironic ideas at the ironi|
-4962|19|6|1|46|42274.46|0.01|0.07|R|F|1993-08-23|1993-09-04|1993-08-27|COLLECT COD|REG AIR| pinto beans grow about the sl|
-4963|168|5|1|38|40590.08|0.08|0.02|N|O|1996-12-25|1996-12-12|1997-01-02|COLLECT COD|AIR|tegrate daringly accou|
-4963|76|4|2|16|15617.12|0.00|0.03|N|O|1996-11-20|1997-01-13|1996-12-06|COLLECT COD|MAIL| carefully slyly u|
-4964|133|9|1|29|29960.77|0.04|0.01|N|O|1997-10-18|1997-08-30|1997-11-01|NONE|AIR|k accounts nag carefully-- ironic, fin|
-4964|148|5|2|46|48214.44|0.06|0.06|N|O|1997-10-05|1997-09-12|1997-10-11|NONE|TRUCK|althy deposits|
-4964|143|4|3|18|18776.52|0.00|0.06|N|O|1997-10-13|1997-09-01|1997-11-10|DELIVER IN PERSON|AIR| platelets. furio|
-4964|180|10|4|12|12962.16|0.08|0.01|N|O|1997-09-03|1997-10-25|1997-09-15|NONE|TRUCK|ully silent instructions ca|
-4964|41|10|5|42|39523.68|0.06|0.04|N|O|1997-09-04|1997-08-28|1997-10-02|TAKE BACK RETURN|AIR| hinder. idly even|
-4964|193|7|6|22|24050.18|0.04|0.08|N|O|1997-09-11|1997-10-06|1997-09-29|NONE|AIR|equests doubt quickly. caref|
-4964|173|4|7|28|30048.76|0.00|0.05|N|O|1997-08-30|1997-09-15|1997-09-18|COLLECT COD|RAIL|among the carefully regula|
-4965|131|2|1|28|28871.64|0.05|0.03|A|F|1994-01-02|1993-11-20|1994-01-04|TAKE BACK RETURN|REG AIR| deposits. requests sublate quickly |
-4965|13|10|2|25|22825.25|0.10|0.02|R|F|1994-02-05|1993-12-15|1994-02-24|TAKE BACK RETURN|MAIL|wake at the carefully speci|
-4965|101|8|3|27|27029.70|0.05|0.06|R|F|1993-11-06|1993-12-24|1993-11-30|TAKE BACK RETURN|SHIP|efully final foxes|
-4965|138|9|4|33|34258.29|0.04|0.04|A|F|1993-12-31|1993-11-29|1994-01-27|DELIVER IN PERSON|REG AIR|iously slyly|
-4966|76|6|1|10|9760.70|0.06|0.03|N|O|1996-09-23|1996-11-02|1996-10-07|TAKE BACK RETURN|SHIP| requests. carefully pending requests|
-4966|194|6|2|6|6565.14|0.02|0.01|N|O|1996-12-09|1996-11-29|1996-12-30|NONE|AIR|d deposits are sly excuses. slyly iro|
-4966|165|6|3|7|7456.12|0.00|0.01|N|O|1996-12-08|1996-10-09|1997-01-06|COLLECT COD|MAIL|ckly ironic tithe|
-4966|16|6|4|26|23816.26|0.08|0.03|N|O|1996-11-14|1996-11-29|1996-12-05|COLLECT COD|REG AIR|nt pearls haggle carefully slyly even |
-4966|144|1|5|12|12529.68|0.02|0.07|N|O|1996-12-07|1996-11-23|1996-12-20|DELIVER IN PERSON|RAIL|eodolites. ironic requests across the exp|
-4967|71|1|1|50|48553.50|0.07|0.01|N|O|1997-05-27|1997-05-13|1997-06-12|NONE|REG AIR|kages. final, unusual accounts c|
-4967|53|5|2|43|40981.15|0.00|0.07|N|O|1997-05-28|1997-04-10|1997-06-09|NONE|TRUCK|ons. slyly ironic requests|
-4967|50|1|3|15|14250.75|0.08|0.02|N|O|1997-04-16|1997-04-12|1997-05-08|TAKE BACK RETURN|MAIL|y. blithel|
-4967|123|2|4|1|1023.12|0.10|0.07|N|O|1997-06-04|1997-03-29|1997-06-23|NONE|FOB|osits. unusual frets thrash furiously|
-4992|184|5|1|42|45535.56|0.07|0.01|R|F|1992-07-19|1992-06-16|1992-08-17|TAKE BACK RETURN|RAIL|foxes about the quickly final platele|
-4992|147|4|2|47|49215.58|0.10|0.08|A|F|1992-09-04|1992-08-05|1992-09-21|COLLECT COD|MAIL|atterns use fluffily.|
-4992|144|7|3|17|17750.38|0.03|0.03|A|F|1992-07-05|1992-07-19|1992-07-30|TAKE BACK RETURN|FOB|s along the perma|
-4992|70|7|4|25|24251.75|0.04|0.06|R|F|1992-08-06|1992-07-11|1992-08-20|NONE|SHIP|ly about the never ironic requests. pe|
-4992|139|5|5|23|23899.99|0.01|0.08|R|F|1992-06-28|1992-07-15|1992-07-12|DELIVER IN PERSON|MAIL|uickly regul|
-4992|163|8|6|44|46779.04|0.05|0.02|A|F|1992-06-01|1992-07-22|1992-06-03|NONE|RAIL|rmanent, sly packages print slyly. regula|
-4993|38|4|1|34|31893.02|0.05|0.00|R|F|1994-09-21|1994-10-31|1994-09-24|TAKE BACK RETURN|REG AIR|ular, pending packages at the even packa|
-4993|129|4|2|39|40135.68|0.03|0.08|R|F|1994-09-10|1994-09-04|1994-09-26|COLLECT COD|SHIP|pending, regular requests solve caref|
-4993|166|1|3|42|44778.72|0.06|0.00|A|F|1994-08-27|1994-09-24|1994-09-05|NONE|MAIL| final packages at the q|
-4993|158|6|4|31|32802.65|0.10|0.06|A|F|1994-10-02|1994-10-29|1994-10-15|NONE|AIR|nwind thinly platelets. a|
-4994|156|8|1|36|38021.40|0.00|0.06|N|O|1996-09-29|1996-07-30|1996-10-03|TAKE BACK RETURN|TRUCK|ess ideas. blithely silent brai|
-4994|80|9|2|47|46063.76|0.04|0.05|N|O|1996-09-20|1996-08-04|1996-10-15|COLLECT COD|TRUCK|sts. blithely close ideas sleep quic|
-4994|183|4|3|29|31412.22|0.08|0.01|N|O|1996-08-26|1996-09-27|1996-09-25|DELIVER IN PERSON|RAIL|ptotes boost carefully|
-4994|39|10|4|40|37561.20|0.01|0.06|N|O|1996-08-25|1996-08-16|1996-09-07|TAKE BACK RETURN|REG AIR|eposits. regula|
-4994|42|9|5|24|22608.96|0.01|0.07|N|O|1996-08-19|1996-09-24|1996-08-25|TAKE BACK RETURN|FOB|s. slyly ironic deposits cajole f|
-4994|73|4|6|6|5838.42|0.01|0.02|N|O|1996-09-05|1996-08-04|1996-09-30|TAKE BACK RETURN|FOB|grate carefully around th|
-4994|130|1|7|31|31934.03|0.07|0.04|N|O|1996-10-14|1996-09-23|1996-11-08|TAKE BACK RETURN|RAIL|lar decoys cajole fluffil|
-4995|65|4|1|16|15440.96|0.02|0.05|N|O|1996-02-27|1996-04-03|1996-02-29|DELIVER IN PERSON|MAIL|egular, bold packages. accou|
-4995|81|2|2|43|42186.44|0.00|0.06|N|O|1996-02-24|1996-02-20|1996-03-07|NONE|AIR|ts. blithely silent ideas after t|
-4995|156|7|3|22|23235.30|0.03|0.06|N|O|1996-03-17|1996-03-12|1996-04-01|DELIVER IN PERSON|MAIL|s wake furious, express dependencies.|
-4995|40|1|4|9|8460.36|0.07|0.07|N|O|1996-03-07|1996-03-17|1996-03-11|DELIVER IN PERSON|FOB| ironic packages cajole across t|
-4995|148|7|5|48|50310.72|0.08|0.07|N|O|1996-03-22|1996-04-01|1996-04-07|NONE|SHIP|t blithely. requests affix blithely. |
-4995|110|5|6|48|48485.28|0.09|0.07|N|O|1996-04-14|1996-04-04|1996-05-07|DELIVER IN PERSON|RAIL|nstructions. carefully final depos|
-4996|56|1|1|35|33461.75|0.07|0.01|A|F|1992-10-30|1992-10-27|1992-11-05|TAKE BACK RETURN|SHIP|s. unusual, regular dolphins integrate care|
-4996|156|7|2|39|41189.85|0.02|0.07|A|F|1992-09-19|1992-10-19|1992-10-06|COLLECT COD|FOB|equests are carefully final|
-4996|128|7|3|12|12337.44|0.04|0.06|R|F|1993-01-09|1992-11-22|1993-02-04|DELIVER IN PERSON|SHIP|usly bold requests sleep dogge|
-4996|144|3|4|13|13573.82|0.00|0.00|A|F|1992-09-17|1992-12-02|1992-10-07|DELIVER IN PERSON|TRUCK|o beans use about the furious|
-4997|79|7|1|44|43079.08|0.02|0.05|N|O|1998-06-09|1998-06-12|1998-07-07|NONE|RAIL|r escapades ca|
-4997|17|7|2|5|4585.05|0.02|0.04|N|O|1998-05-16|1998-06-05|1998-06-07|COLLECT COD|REG AIR|cuses are furiously unusual asymptotes|
-4997|58|9|3|24|22993.20|0.04|0.06|N|O|1998-04-20|1998-04-23|1998-05-16|NONE|AIR|xpress, bo|
-4997|40|6|4|5|4700.20|0.10|0.03|N|O|1998-06-12|1998-04-24|1998-06-13|DELIVER IN PERSON|TRUCK|aggle slyly alongside of the slyly i|
-4997|22|7|5|46|42412.92|0.00|0.04|N|O|1998-04-28|1998-06-04|1998-05-08|TAKE BACK RETURN|SHIP|ecial courts are carefully|
-4997|29|2|6|2|1858.04|0.07|0.01|N|O|1998-07-09|1998-06-10|1998-07-21|TAKE BACK RETURN|REG AIR|counts. slyl|
-4998|154|2|1|12|12649.80|0.04|0.03|A|F|1992-02-20|1992-03-06|1992-03-01|TAKE BACK RETURN|RAIL| sleep slyly furiously final accounts. ins|
-4998|183|4|2|15|16247.70|0.06|0.00|R|F|1992-04-24|1992-03-21|1992-05-02|NONE|REG AIR|heodolites sleep quickly.|
-4998|59|10|3|27|25894.35|0.06|0.02|R|F|1992-03-17|1992-02-26|1992-04-05|DELIVER IN PERSON|MAIL|the blithely ironic |
-4998|63|10|4|47|45263.82|0.10|0.04|A|F|1992-02-07|1992-03-07|1992-02-19|DELIVER IN PERSON|TRUCK|mong the careful|
-4998|145|4|5|24|25083.36|0.01|0.04|R|F|1992-01-25|1992-03-16|1992-01-27|COLLECT COD|REG AIR| unwind about|
-4998|99|1|6|8|7992.72|0.03|0.07|A|F|1992-05-01|1992-03-03|1992-05-24|TAKE BACK RETURN|AIR|ions nag quickly according to the theodolit|
-4999|153|8|1|30|31594.50|0.00|0.02|A|F|1993-08-20|1993-08-15|1993-08-30|NONE|AIR|ades cajole carefully unusual ide|
-4999|10|1|2|44|40040.44|0.03|0.01|A|F|1993-08-01|1993-08-04|1993-08-17|COLLECT COD|REG AIR|ependencies. slowly regu|
-4999|86|7|3|30|29582.40|0.09|0.01|R|F|1993-07-21|1993-08-11|1993-08-20|DELIVER IN PERSON|RAIL|s cajole among the blithel|
-5024|166|3|1|17|18124.72|0.10|0.02|N|O|1996-11-24|1997-01-10|1996-12-04|NONE|AIR| to the expre|
-5024|58|6|2|41|39280.05|0.06|0.01|N|O|1996-11-09|1996-12-03|1996-12-01|COLLECT COD|REG AIR|osits hinder carefully |
-5024|112|6|3|18|18217.98|0.04|0.03|N|O|1996-12-02|1997-01-16|1996-12-05|NONE|MAIL|zle carefully sauternes. quickly|
-5024|123|8|4|42|42971.04|0.03|0.06|N|O|1996-12-02|1996-12-08|1996-12-04|DELIVER IN PERSON|RAIL|tegrate. busily spec|
-5025|30|9|1|11|10230.33|0.00|0.04|N|O|1997-02-21|1997-04-16|1997-03-14|COLLECT COD|SHIP|the carefully final esc|
-5025|78|7|2|10|9780.70|0.07|0.04|N|O|1997-06-04|1997-04-29|1997-06-28|COLLECT COD|RAIL|lly silent deposits boost busily again|
-5026|96|8|1|13|12949.17|0.02|0.04|N|O|1997-12-23|1997-11-02|1998-01-03|TAKE BACK RETURN|SHIP|endencies sleep carefully alongs|
-5027|98|2|1|6|5988.54|0.04|0.05|N|O|1997-09-28|1997-11-24|1997-10-25|NONE|FOB|ar, ironic deposi|
-5027|62|3|2|39|37520.34|0.06|0.01|N|O|1997-09-09|1997-11-13|1997-09-21|TAKE BACK RETURN|FOB|ess requests! quickly regular pac|
-5027|126|5|3|32|32835.84|0.00|0.01|N|O|1997-11-13|1997-10-29|1997-11-18|TAKE BACK RETURN|RAIL|cording to|
-5027|26|7|4|37|34262.74|0.02|0.00|N|O|1997-10-05|1997-10-30|1997-10-26|NONE|REG AIR|ost slyly fluffily|
-5027|143|4|5|3|3129.42|0.03|0.06|N|O|1997-09-30|1997-11-26|1997-10-05|DELIVER IN PERSON|AIR|t the even mu|
-5027|87|8|6|25|24677.00|0.06|0.00|N|O|1997-09-16|1997-11-25|1997-10-08|TAKE BACK RETURN|RAIL|ic ideas. requests sleep fluffily am|
-5027|81|2|7|50|49054.00|0.07|0.02|N|O|1997-09-18|1997-11-07|1997-10-05|DELIVER IN PERSON|MAIL| beans dazzle according to the fluffi|
-5028|14|1|1|15|13710.15|0.07|0.07|R|F|1992-07-17|1992-07-16|1992-08-05|COLLECT COD|REG AIR|es are quickly final pains. furiously pend|
-5028|199|10|2|15|16487.85|0.03|0.07|R|F|1992-08-02|1992-07-09|1992-08-30|NONE|REG AIR|gular, bold pinto bea|
-5029|154|5|1|17|17920.55|0.02|0.01|A|F|1993-03-12|1992-12-18|1993-04-02|DELIVER IN PERSON|FOB|! packages boost blithely. furious|
-5029|97|9|2|2|1994.18|0.00|0.04|A|F|1992-11-25|1993-01-04|1992-12-20|DELIVER IN PERSON|MAIL|packages. furiously ironi|
-5030|102|3|1|22|22046.20|0.04|0.06|N|O|1998-09-01|1998-08-15|1998-09-30|TAKE BACK RETURN|TRUCK|. quickly regular foxes believe|
-5030|80|9|2|50|49004.00|0.05|0.06|N|O|1998-08-22|1998-07-25|1998-09-18|TAKE BACK RETURN|FOB|ss excuses serve bli|
-5031|50|1|1|15|14250.75|0.02|0.05|R|F|1995-04-01|1995-02-24|1995-04-12|DELIVER IN PERSON|AIR|yly pending theodolites.|
-5031|161|6|2|40|42446.40|0.10|0.04|A|F|1994-12-04|1995-01-27|1995-01-01|NONE|TRUCK|ns hang blithely across th|
-5031|154|6|3|4|4216.60|0.01|0.07|R|F|1994-12-26|1995-02-24|1995-01-11|NONE|RAIL|after the even frays: ironic, unusual th|
-5031|181|2|4|31|33516.58|0.10|0.08|R|F|1995-01-15|1995-01-08|1995-02-09|COLLECT COD|MAIL|ts across the even requests doze furiously|
-5056|48|7|1|7|6636.28|0.09|0.01|N|O|1997-04-28|1997-04-07|1997-05-15|DELIVER IN PERSON|TRUCK|rouches after the pending instruc|
-5056|197|1|2|19|20846.61|0.04|0.00|N|O|1997-03-24|1997-05-05|1997-04-23|DELIVER IN PERSON|AIR|c theodolites. ironic a|
-5056|90|1|3|23|22772.07|0.02|0.05|N|O|1997-05-12|1997-04-28|1997-05-25|NONE|SHIP|ickly regular requests cajole. depos|
-5056|87|8|4|14|13819.12|0.08|0.00|N|O|1997-06-09|1997-04-13|1997-07-06|COLLECT COD|SHIP|sts haggle carefully along the slyl|
-5057|37|3|1|38|35607.14|0.02|0.03|N|O|1997-10-24|1997-09-07|1997-10-30|TAKE BACK RETURN|MAIL|packages. stealthily bold wa|
-5057|8|1|2|45|40860.00|0.08|0.07|N|O|1997-09-20|1997-10-02|1997-10-20|NONE|FOB| asymptotes wake slyl|
-5058|193|5|1|16|17491.04|0.09|0.07|N|O|1998-07-12|1998-06-09|1998-07-15|DELIVER IN PERSON|SHIP| the special foxes |
-5059|70|5|1|5|4850.35|0.03|0.08|R|F|1993-12-23|1994-01-12|1993-12-24|TAKE BACK RETURN|FOB|ts affix slyly accordi|
-5059|123|2|2|19|19439.28|0.06|0.04|R|F|1994-03-02|1993-12-26|1994-03-14|TAKE BACK RETURN|MAIL| special ideas poach blithely qu|
-5059|77|7|3|45|43968.15|0.02|0.00|A|F|1994-01-28|1994-01-08|1994-02-18|DELIVER IN PERSON|MAIL|enly. requests doze. express, close pa|
-5060|25|8|1|27|24975.54|0.10|0.07|R|F|1992-07-23|1992-09-05|1992-08-07|COLLECT COD|SHIP|s. ironic |
-5060|32|8|2|28|26096.84|0.04|0.04|R|F|1992-09-25|1992-08-11|1992-10-09|NONE|REG AIR|c requests|
-5060|161|2|3|15|15917.40|0.06|0.01|A|F|1992-08-28|1992-08-20|1992-09-01|DELIVER IN PERSON|AIR|ular deposits sl|
-5061|165|2|1|18|19172.88|0.03|0.00|A|F|1993-10-20|1993-10-05|1993-10-28|TAKE BACK RETURN|SHIP|atelets among the ca|
-5061|198|1|2|8|8785.52|0.01|0.02|R|F|1993-09-07|1993-10-31|1993-10-04|DELIVER IN PERSON|REG AIR|regular foxes. ir|
-5061|24|5|3|26|24024.52|0.02|0.05|A|F|1993-11-07|1993-09-13|1993-11-13|NONE|REG AIR| cajole slyly. carefully spe|
-5062|101|4|1|9|9009.90|0.08|0.00|R|F|1993-01-02|1992-12-01|1993-01-20|TAKE BACK RETURN|MAIL| silent theodolites wake. c|
-5062|75|6|2|4|3900.28|0.02|0.02|R|F|1993-02-06|1992-12-14|1993-03-03|DELIVER IN PERSON|AIR|ke furiously express theodolites. |
-5062|159|10|3|50|52957.50|0.09|0.07|A|F|1992-12-25|1992-12-13|1992-12-29|TAKE BACK RETURN|MAIL| the regular, unusual pains. specia|
-5062|161|10|4|18|19100.88|0.03|0.07|R|F|1992-11-04|1992-12-25|1992-11-05|NONE|SHIP|furiously pending requests are ruthles|
-5062|194|8|5|25|27354.75|0.08|0.02|R|F|1992-12-15|1992-11-17|1993-01-01|NONE|TRUCK|uthless excuses ag|
-5063|129|10|1|31|31902.72|0.08|0.01|N|O|1997-06-02|1997-06-20|1997-06-27|NONE|RAIL|kages. ironic, ironic courts wake. carefu|
-5063|174|2|2|43|46189.31|0.04|0.08|N|O|1997-09-14|1997-07-05|1997-10-05|TAKE BACK RETURN|TRUCK|latelets might nod blithely regular requ|
-5063|167|4|3|2|2134.32|0.02|0.03|N|O|1997-06-17|1997-07-27|1997-06-24|COLLECT COD|SHIP|kly regular i|
-5063|135|6|4|18|18632.34|0.08|0.05|N|O|1997-06-02|1997-06-18|1997-06-06|TAKE BACK RETURN|RAIL|refully quiet reques|
-5063|161|8|5|1|1061.16|0.06|0.07|N|O|1997-09-03|1997-06-26|1997-10-03|NONE|FOB|ously special |
-5088|78|6|1|23|22495.61|0.06|0.06|R|F|1993-03-03|1993-03-07|1993-03-08|NONE|FOB|cording to the fluffily expr|
-5088|51|3|2|41|38993.05|0.09|0.00|R|F|1993-01-22|1993-03-07|1993-02-09|TAKE BACK RETURN|TRUCK|ing requests. |
-5088|86|7|3|36|35498.88|0.10|0.05|A|F|1993-04-16|1993-04-03|1993-05-14|NONE|TRUCK|the furiously final deposits. furiously re|
-5088|109|6|4|10|10091.00|0.04|0.05|R|F|1993-04-07|1993-02-06|1993-04-26|NONE|FOB|beans. special requests af|
-5089|158|6|1|4|4232.60|0.05|0.06|R|F|1992-09-18|1992-09-28|1992-10-13|DELIVER IN PERSON|TRUCK|nts sleep blithely |
-5089|162|3|2|20|21243.20|0.00|0.07|R|F|1992-10-10|1992-10-07|1992-11-06|COLLECT COD|RAIL| ironic accounts|
-5089|124|7|3|46|47109.52|0.03|0.04|A|F|1992-11-09|1992-10-13|1992-11-10|TAKE BACK RETURN|RAIL|above the express accounts. exc|
-5089|34|10|4|38|35493.14|0.05|0.03|R|F|1992-11-23|1992-09-11|1992-12-22|TAKE BACK RETURN|SHIP|regular instructions are|
-5090|22|3|1|22|20284.44|0.07|0.00|N|O|1997-05-10|1997-05-25|1997-05-24|TAKE BACK RETURN|TRUCK|ets integrate ironic, regul|
-5090|129|10|2|46|47339.52|0.05|0.00|N|O|1997-04-05|1997-04-14|1997-05-01|COLLECT COD|REG AIR|lose theodolites sleep blit|
-5090|2|9|3|22|19844.00|0.09|0.05|N|O|1997-07-03|1997-04-12|1997-07-26|NONE|REG AIR|ular requests su|
-5090|114|8|4|2|2028.22|0.03|0.06|N|O|1997-04-07|1997-04-23|1997-05-01|TAKE BACK RETURN|AIR|tes. slowly iro|
-5090|48|9|5|21|19908.84|0.10|0.02|N|O|1997-03-29|1997-04-24|1997-04-25|TAKE BACK RETURN|FOB|ly express accounts. slyly even r|
-5090|80|9|6|30|29402.40|0.02|0.03|N|O|1997-05-04|1997-04-14|1997-05-30|COLLECT COD|MAIL|osits nag slyly. fluffily ex|
-5091|78|6|1|50|48903.50|0.05|0.03|N|O|1998-07-21|1998-06-22|1998-07-26|COLLECT COD|REG AIR|al dependencies. r|
-5092|164|1|1|30|31924.80|0.06|0.00|N|O|1995-12-27|1995-12-08|1996-01-09|DELIVER IN PERSON|MAIL|ss, ironic deposits. furiously stea|
-5092|45|4|2|34|32131.36|0.04|0.02|N|O|1995-12-09|1995-12-26|1995-12-21|TAKE BACK RETURN|AIR|ckages nag |
-5092|140|6|3|13|13521.82|0.06|0.01|N|O|1995-11-21|1996-01-05|1995-12-19|TAKE BACK RETURN|SHIP|es detect sly|
-5092|180|1|4|14|15122.52|0.04|0.00|N|O|1996-02-20|1995-11-30|1996-03-20|DELIVER IN PERSON|REG AIR| deposits cajole furiously against the sly|
-5092|186|7|5|42|45619.56|0.01|0.02|N|O|1995-11-06|1996-01-01|1995-12-06|DELIVER IN PERSON|AIR|s use along t|
-5092|178|6|6|11|11859.87|0.03|0.03|N|O|1995-12-02|1995-12-27|1995-12-11|COLLECT COD|MAIL|ly against the slyly silen|
-5092|159|10|7|50|52957.50|0.10|0.03|N|O|1995-11-30|1996-01-14|1995-12-19|NONE|REG AIR|r platelets maintain car|
-5093|168|9|1|40|42726.40|0.05|0.01|R|F|1993-09-16|1993-11-04|1993-10-05|TAKE BACK RETURN|REG AIR|ing pinto beans. quickly bold dependenci|
-5093|74|2|2|15|14611.05|0.01|0.04|A|F|1993-12-02|1993-11-18|1994-01-01|DELIVER IN PERSON|FOB|ly among the unusual foxe|
-5093|151|9|3|31|32585.65|0.00|0.02|R|F|1993-09-22|1993-11-14|1993-09-26|TAKE BACK RETURN|REG AIR| against the|
-5093|156|1|4|37|39077.55|0.04|0.00|A|F|1993-10-26|1993-12-02|1993-10-27|NONE|TRUCK|courts. qui|
-5093|115|2|5|30|30453.30|0.06|0.05|A|F|1993-11-22|1993-11-27|1993-12-14|DELIVER IN PERSON|TRUCK|ithely ironic sheaves use fluff|
-5093|121|6|6|31|31654.72|0.01|0.08|A|F|1993-12-17|1993-11-14|1994-01-02|NONE|SHIP|he final foxes. fluffily ironic |
-5094|143|10|1|19|19819.66|0.03|0.03|R|F|1993-03-31|1993-06-12|1993-04-04|NONE|AIR|ronic foxes. furi|
-5094|108|5|2|23|23186.30|0.05|0.07|R|F|1993-06-13|1993-05-19|1993-07-06|NONE|MAIL|st furiously above the fluffily care|
-5094|92|6|3|11|10912.99|0.04|0.08|A|F|1993-06-25|1993-06-24|1993-07-18|TAKE BACK RETURN|MAIL|s cajole quickly against the furiously ex|
-5094|79|10|4|21|20560.47|0.09|0.08|R|F|1993-07-26|1993-05-03|1993-08-16|NONE|MAIL| blithely furiously final re|
-5095|65|10|1|46|44392.76|0.07|0.01|A|F|1992-06-26|1992-06-25|1992-07-05|COLLECT COD|RAIL|egular instruction|
-5095|106|3|2|2|2012.20|0.07|0.08|A|F|1992-07-09|1992-05-25|1992-07-21|DELIVER IN PERSON|REG AIR|detect car|
-5095|123|8|3|28|28647.36|0.01|0.04|A|F|1992-06-20|1992-06-27|1992-06-22|DELIVER IN PERSON|AIR| into the final courts. ca|
-5095|178|7|4|42|45283.14|0.08|0.08|R|F|1992-05-23|1992-06-01|1992-06-18|COLLECT COD|TRUCK|ccounts. packages could have t|
-5095|166|7|5|9|9595.44|0.10|0.07|R|F|1992-08-14|1992-06-23|1992-08-16|TAKE BACK RETURN|REG AIR|bold theodolites wake about the expr|
-5095|97|8|6|15|14956.35|0.01|0.06|A|F|1992-07-11|1992-07-12|1992-08-09|COLLECT COD|AIR| to the packages wake sly|
-5095|169|10|7|40|42766.40|0.05|0.02|A|F|1992-07-11|1992-06-07|1992-07-26|DELIVER IN PERSON|MAIL|carefully unusual plat|
-5120|133|4|1|28|28927.64|0.06|0.03|N|O|1996-07-20|1996-08-31|1996-08-06|NONE|RAIL| across the silent requests. caref|
-5121|184|5|1|23|24936.14|0.06|0.01|A|F|1992-05-18|1992-06-20|1992-06-02|TAKE BACK RETURN|REG AIR|even courts are blithely ironically |
-5121|111|1|2|45|45499.95|0.08|0.04|A|F|1992-08-13|1992-07-27|1992-09-12|NONE|TRUCK|pecial accounts cajole ca|
-5121|97|10|3|27|26921.43|0.08|0.07|R|F|1992-06-17|1992-06-11|1992-06-19|NONE|MAIL|ly silent theodolit|
-5121|68|7|4|10|9680.60|0.04|0.05|R|F|1992-06-08|1992-07-10|1992-07-02|TAKE BACK RETURN|FOB|e quickly according |
-5121|89|10|5|46|45497.68|0.03|0.02|R|F|1992-05-27|1992-07-19|1992-05-28|TAKE BACK RETURN|FOB|use express foxes. slyly |
-5121|1|8|6|2|1802.00|0.04|0.07|R|F|1992-08-10|1992-06-28|1992-08-11|NONE|FOB| final, regular account|
-5122|183|4|1|28|30329.04|0.03|0.00|N|O|1996-04-20|1996-03-29|1996-04-29|DELIVER IN PERSON|FOB|g the busily ironic accounts boos|
-5122|82|3|2|43|42229.44|0.09|0.03|N|O|1996-05-31|1996-04-12|1996-06-13|NONE|MAIL|ut the carefully special foxes. idle,|
-5122|45|6|3|12|11340.48|0.07|0.03|N|O|1996-04-02|1996-04-27|1996-04-10|DELIVER IN PERSON|AIR|lar instructions |
-5123|26|7|1|13|12038.26|0.08|0.07|N|O|1998-05-17|1998-03-23|1998-06-02|COLLECT COD|MAIL|regular pearls|
-5124|55|7|1|43|41067.15|0.00|0.02|N|O|1997-07-10|1997-05-13|1997-07-31|COLLECT COD|AIR|onic package|
-5124|6|3|2|41|37146.00|0.02|0.06|N|O|1997-07-05|1997-06-29|1997-07-23|DELIVER IN PERSON|RAIL|wake across the|
-5124|125|6|3|44|45105.28|0.03|0.03|N|O|1997-07-13|1997-06-26|1997-08-01|DELIVER IN PERSON|RAIL|equests. carefully unusual d|
-5124|70|9|4|36|34922.52|0.10|0.07|N|O|1997-04-20|1997-07-03|1997-05-04|TAKE BACK RETURN|AIR|r deposits ab|
-5125|6|9|1|38|34428.00|0.09|0.05|N|O|1998-03-20|1998-04-14|1998-03-22|COLLECT COD|MAIL|ily even deposits w|
-5125|160|1|2|5|5300.80|0.08|0.06|N|O|1998-04-07|1998-04-14|1998-04-29|COLLECT COD|RAIL| thinly even pack|
-5126|24|3|1|33|30492.66|0.02|0.02|R|F|1993-02-04|1992-12-23|1993-02-14|NONE|RAIL|ipliers promise furiously whithout the |
-5126|101|6|2|43|43047.30|0.09|0.04|R|F|1993-01-07|1992-12-19|1993-01-16|COLLECT COD|MAIL|e silently. ironic, unusual accounts|
-5126|78|8|3|23|22495.61|0.08|0.01|R|F|1993-01-02|1993-01-02|1993-01-05|COLLECT COD|TRUCK|egular, blithe packages.|
-5127|19|3|1|33|30327.33|0.08|0.04|N|O|1997-03-25|1997-03-02|1997-04-04|NONE|SHIP| bold deposits use carefully a|
-5127|32|8|2|20|18640.60|0.01|0.03|N|O|1997-05-11|1997-02-26|1997-05-12|TAKE BACK RETURN|SHIP|dolites about the final platelets w|
-5152|105|2|1|9|9045.90|0.04|0.03|N|O|1997-04-11|1997-02-11|1997-04-18|COLLECT COD|AIR| cajole furiously alongside of the bo|
-5152|134|10|2|50|51706.50|0.04|0.04|N|O|1997-03-10|1997-02-04|1997-03-15|COLLECT COD|FOB| the final deposits. slyly ironic warth|
-5153|35|1|1|42|39271.26|0.03|0.01|N|O|1995-10-03|1995-11-09|1995-10-11|COLLECT COD|RAIL|re thinly. ironic|
-5153|53|5|2|14|13342.70|0.05|0.05|N|O|1995-11-29|1995-10-21|1995-12-08|TAKE BACK RETURN|TRUCK| slyly daring pinto beans lose blithely fi|
-5153|68|7|3|30|29041.80|0.09|0.01|N|O|1995-11-10|1995-11-14|1995-11-16|DELIVER IN PERSON|AIR|beans sleep bl|
-5153|173|2|4|32|34341.44|0.10|0.08|N|O|1995-12-05|1995-09-25|1996-01-03|DELIVER IN PERSON|MAIL|egular deposits. ironi|
-5153|112|2|5|36|36435.96|0.01|0.03|N|O|1995-12-15|1995-11-08|1995-12-30|COLLECT COD|TRUCK| ironic instru|
-5153|136|2|6|42|43517.46|0.00|0.03|N|O|1995-10-19|1995-11-23|1995-11-06|TAKE BACK RETURN|RAIL|ickly even deposi|
-5154|190|1|1|11|11992.09|0.02|0.05|N|O|1997-08-06|1997-06-30|1997-09-04|NONE|RAIL|luffily bold foxes. final|
-5154|144|5|2|15|15662.10|0.07|0.08|N|O|1997-06-23|1997-07-11|1997-07-11|NONE|AIR|even packages. packages use|
-5155|48|9|1|1|948.04|0.00|0.00|A|F|1994-07-03|1994-08-11|1994-07-29|COLLECT COD|FOB|oze slyly after the silent, regular idea|
-5155|188|9|2|5|5440.90|0.08|0.02|A|F|1994-06-30|1994-08-13|1994-07-15|TAKE BACK RETURN|AIR|ole blithely slyly ironic |
-5155|106|3|3|28|28170.80|0.05|0.02|R|F|1994-07-01|1994-07-19|1994-07-18|COLLECT COD|REG AIR|s cajole. accounts wake. thinly quiet pla|
-5155|79|7|4|39|38183.73|0.09|0.06|A|F|1994-08-25|1994-09-01|1994-09-18|COLLECT COD|TRUCK|l dolphins nag caref|
-5156|117|4|1|21|21359.31|0.06|0.03|N|O|1997-01-01|1997-01-30|1997-01-11|TAKE BACK RETURN|TRUCK|ts detect against the furiously reg|
-5156|148|1|2|36|37733.04|0.04|0.07|N|O|1997-02-12|1996-12-10|1997-03-13|TAKE BACK RETURN|REG AIR| slyly even orbi|
-5157|55|7|1|35|33426.75|0.06|0.08|N|O|1997-07-28|1997-09-30|1997-08-15|TAKE BACK RETURN|REG AIR|to the furiously sil|
-5157|138|9|2|18|18686.34|0.10|0.04|N|O|1997-09-06|1997-10-03|1997-09-19|COLLECT COD|MAIL|y bold deposits nag blithely. final reque|
-5157|167|8|3|15|16007.40|0.09|0.00|N|O|1997-07-27|1997-08-30|1997-08-08|DELIVER IN PERSON|RAIL|cajole. spec|
-5157|59|7|4|25|23976.25|0.00|0.03|N|O|1997-08-24|1997-09-23|1997-08-28|COLLECT COD|REG AIR| packages detect. even requests against th|
-5157|149|8|5|40|41965.60|0.09|0.06|N|O|1997-08-11|1997-08-28|1997-09-01|TAKE BACK RETURN|FOB|ial packages according to |
-5157|150|9|6|26|27303.90|0.10|0.01|N|O|1997-07-28|1997-08-22|1997-08-22|NONE|FOB|nto beans cajole car|
-5157|49|8|7|12|11388.48|0.10|0.08|N|O|1997-10-19|1997-08-07|1997-10-26|NONE|FOB|es. busily |
-5158|45|4|1|43|40636.72|0.10|0.04|N|O|1997-04-10|1997-03-06|1997-04-15|DELIVER IN PERSON|AIR|nusual platelets. slyly even foxes cajole |
-5158|85|6|2|18|17731.44|0.04|0.04|N|O|1997-04-30|1997-03-28|1997-05-12|COLLECT COD|REG AIR|hely regular pa|
-5158|142|9|3|41|42727.74|0.05|0.05|N|O|1997-02-25|1997-03-19|1997-03-03|COLLECT COD|AIR|deposits. quickly special |
-5158|131|7|4|49|50525.37|0.05|0.01|N|O|1997-04-10|1997-03-21|1997-04-30|NONE|REG AIR|r requests sleep q|
-5158|119|9|5|20|20382.20|0.01|0.04|N|O|1997-02-03|1997-02-20|1997-02-08|TAKE BACK RETURN|AIR|latelets use accordin|
-5158|88|9|6|39|38535.12|0.08|0.04|N|O|1997-05-15|1997-04-04|1997-06-02|DELIVER IN PERSON|FOB|lithely fina|
-5158|91|5|7|38|37661.42|0.10|0.05|N|O|1997-05-09|1997-03-03|1997-06-04|NONE|SHIP|uffily regular ac|
-5159|124|7|1|39|39940.68|0.06|0.07|N|O|1996-12-17|1996-12-08|1997-01-10|COLLECT COD|MAIL|re furiously after the pending dolphin|
-5159|17|1|2|46|42182.46|0.01|0.01|N|O|1996-12-15|1996-12-07|1996-12-30|DELIVER IN PERSON|SHIP|s kindle slyly carefully regular|
-5159|152|4|3|22|23147.30|0.01|0.02|N|O|1996-11-06|1996-11-04|1996-11-15|TAKE BACK RETURN|SHIP|he furiously sile|
-5159|52|3|4|5|4760.25|0.10|0.00|N|O|1996-11-25|1996-12-19|1996-12-25|TAKE BACK RETURN|FOB|nal deposits. pending, ironic ideas grow|
-5159|198|10|5|36|39534.84|0.06|0.01|N|O|1997-01-24|1996-11-07|1997-02-08|NONE|REG AIR|packages wake.|
-5184|153|8|1|33|34753.95|0.07|0.04|N|O|1998-08-17|1998-10-16|1998-08-24|TAKE BACK RETURN|AIR|posits. carefully express asympto|
-5184|16|6|2|47|43052.47|0.05|0.01|N|O|1998-11-02|1998-08-19|1998-11-07|COLLECT COD|TRUCK|se. carefully express pinto beans x|
-5184|88|9|3|39|38535.12|0.03|0.06|N|O|1998-10-27|1998-10-17|1998-11-19|DELIVER IN PERSON|FOB|es above the care|
-5184|176|7|4|26|27980.42|0.05|0.08|N|O|1998-11-11|1998-08-26|1998-12-01|TAKE BACK RETURN|TRUCK| packages are|
-5184|124|9|5|19|19458.28|0.06|0.03|N|O|1998-11-15|1998-10-12|1998-11-21|COLLECT COD|REG AIR|refully express platelets sleep carefull|
-5184|80|9|6|49|48023.92|0.02|0.00|N|O|1998-09-18|1998-08-28|1998-10-14|COLLECT COD|FOB|thlessly closely even reque|
-5185|197|1|1|37|40596.03|0.00|0.04|N|O|1997-08-08|1997-09-08|1997-08-14|COLLECT COD|SHIP|gainst the courts dazzle care|
-5185|25|8|2|32|29600.64|0.06|0.00|N|O|1997-08-17|1997-09-30|1997-08-24|TAKE BACK RETURN|REG AIR|ackages. slyly even requests|
-5185|196|9|3|41|44943.79|0.00|0.05|N|O|1997-10-15|1997-10-11|1997-11-02|COLLECT COD|REG AIR|ly blithe deposits. furi|
-5185|96|7|4|30|29882.70|0.09|0.04|N|O|1997-10-17|1997-09-16|1997-10-23|TAKE BACK RETURN|SHIP|ress packages are furiously|
-5185|128|9|5|8|8224.96|0.04|0.00|N|O|1997-08-30|1997-09-02|1997-09-22|COLLECT COD|REG AIR|sts around the slyly perma|
-5185|146|9|6|50|52307.00|0.03|0.04|N|O|1997-10-15|1997-10-19|1997-11-06|TAKE BACK RETURN|FOB|final platelets. ideas sleep careful|
-5186|55|10|1|38|36291.90|0.06|0.02|N|O|1996-11-23|1996-09-21|1996-12-11|DELIVER IN PERSON|MAIL|y ruthless foxes. fluffily |
-5186|91|2|2|31|30723.79|0.09|0.03|N|O|1996-10-19|1996-09-26|1996-10-25|TAKE BACK RETURN|REG AIR| accounts use furiously slyly spe|
-5186|89|10|3|26|25716.08|0.03|0.02|N|O|1996-08-08|1996-10-05|1996-08-21|DELIVER IN PERSON|FOB|capades. accounts sublate. pinto|
-5186|90|1|4|8|7920.72|0.10|0.05|N|O|1996-09-23|1996-09-29|1996-09-30|COLLECT COD|RAIL|y regular notornis k|
-5186|18|2|5|28|25704.28|0.09|0.03|N|O|1996-10-05|1996-10-27|1996-10-19|TAKE BACK RETURN|RAIL|al decoys. blit|
-5186|82|3|6|35|34372.80|0.00|0.05|N|O|1996-10-20|1996-10-12|1996-11-12|TAKE BACK RETURN|RAIL|sly silent pack|
-5186|198|10|7|44|48320.36|0.00|0.08|N|O|1996-09-23|1996-10-14|1996-10-01|NONE|TRUCK|old, final accounts cajole sl|
-5187|11|1|1|49|44639.49|0.04|0.06|N|O|1997-10-20|1997-10-12|1997-10-26|DELIVER IN PERSON|AIR|l, regular platelets instead of the foxes w|
-5187|83|4|2|1|983.08|0.10|0.08|N|O|1997-08-08|1997-08-24|1997-08-22|DELIVER IN PERSON|REG AIR|aggle never bold |
-5188|118|2|1|18|18325.98|0.04|0.03|N|O|1995-06-19|1995-05-19|1995-06-25|DELIVER IN PERSON|AIR|p according to the sometimes regu|
-5188|194|8|2|36|39390.84|0.04|0.02|A|F|1995-03-09|1995-05-16|1995-03-19|NONE|TRUCK|packages? blithely s|
-5188|148|1|3|9|9433.26|0.06|0.08|A|F|1995-05-09|1995-05-22|1995-05-19|TAKE BACK RETURN|REG AIR|r attainments are across the |
-5189|138|9|1|44|45677.72|0.02|0.06|A|F|1994-01-13|1994-02-07|1994-01-21|DELIVER IN PERSON|MAIL|y finally pendin|
-5189|16|3|2|38|34808.38|0.06|0.00|A|F|1994-03-26|1994-01-28|1994-04-20|DELIVER IN PERSON|REG AIR|ideas. idle, final deposits de|
-5189|110|5|3|4|4040.44|0.09|0.02|A|F|1993-12-21|1994-02-23|1994-01-09|DELIVER IN PERSON|REG AIR|. blithely exp|
-5189|94|7|4|49|48710.41|0.05|0.01|R|F|1994-01-22|1994-01-19|1994-02-04|TAKE BACK RETURN|SHIP| requests |
-5189|123|2|5|14|14323.68|0.02|0.03|A|F|1994-01-23|1994-01-05|1994-02-12|DELIVER IN PERSON|REG AIR|unusual packag|
-5189|17|8|6|41|37597.41|0.02|0.06|R|F|1993-12-12|1994-02-05|1994-01-09|DELIVER IN PERSON|RAIL|ial theodolites cajole slyly. slyly unus|
-5190|56|1|1|43|41110.15|0.09|0.06|A|F|1992-08-19|1992-06-10|1992-09-01|DELIVER IN PERSON|FOB|encies use fluffily unusual requests? hoc|
-5190|132|3|2|6|6192.78|0.10|0.08|A|F|1992-08-08|1992-07-14|1992-08-22|COLLECT COD|RAIL|furiously regular pinto beans. furiously i|
-5190|89|10|3|45|44508.60|0.04|0.03|A|F|1992-07-23|1992-06-16|1992-08-04|NONE|FOB|y carefully final ideas. f|
-5191|115|6|1|41|41619.51|0.00|0.08|A|F|1995-02-05|1995-02-27|1995-02-15|DELIVER IN PERSON|AIR|uests! ironic theodolites cajole care|
-5191|168|7|2|40|42726.40|0.02|0.01|A|F|1995-03-31|1995-02-21|1995-04-02|NONE|AIR|nes haggle sometimes. requests eng|
-5191|43|4|3|27|25462.08|0.07|0.05|A|F|1994-12-26|1995-01-24|1995-01-14|DELIVER IN PERSON|RAIL|tructions nag bravely within the re|
-5191|183|4|4|7|7582.26|0.01|0.04|A|F|1995-03-24|1995-01-30|1995-03-30|NONE|RAIL|eposits. express|
-5216|69|10|1|17|16474.02|0.04|0.06|N|O|1997-08-20|1997-11-07|1997-09-14|COLLECT COD|FOB|s according to the accounts bo|
-5217|80|1|1|50|49004.00|0.05|0.02|N|O|1995-12-26|1995-11-21|1996-01-24|DELIVER IN PERSON|MAIL|s. express, express accounts c|
-5217|16|7|2|23|21068.23|0.06|0.07|N|O|1996-01-18|1995-12-24|1996-02-10|COLLECT COD|RAIL|ven ideas. requests amo|
-5217|102|7|3|23|23048.30|0.03|0.02|N|O|1995-11-15|1995-12-17|1995-11-27|DELIVER IN PERSON|FOB|pending packages cajole ne|
-5217|81|2|4|47|46110.76|0.04|0.00|N|O|1995-11-24|1995-12-25|1995-11-25|COLLECT COD|AIR|ronic packages i|
-5218|83|4|1|43|42272.44|0.05|0.04|A|F|1992-08-04|1992-09-12|1992-08-17|DELIVER IN PERSON|SHIP|k theodolites. express, even id|
-5218|125|4|2|33|33828.96|0.06|0.01|R|F|1992-09-16|1992-09-30|1992-09-27|NONE|TRUCK|ronic instructi|
-5219|135|6|1|2|2070.26|0.08|0.00|N|O|1997-06-26|1997-04-29|1997-07-08|TAKE BACK RETURN|FOB| blithely according to the stea|
-5219|119|9|2|20|20382.20|0.05|0.00|N|O|1997-04-20|1997-05-26|1997-05-13|COLLECT COD|FOB|e along the ironic,|
-5220|83|4|1|27|26543.16|0.10|0.04|R|F|1992-09-21|1992-08-29|1992-10-16|DELIVER IN PERSON|RAIL|s cajole blithely furiously iron|
-5221|104|9|1|24|24098.40|0.07|0.03|N|O|1995-10-04|1995-08-11|1995-10-30|COLLECT COD|REG AIR|s pinto beans sleep. sly|
-5221|9|10|2|34|30906.00|0.01|0.05|N|O|1995-09-11|1995-07-17|1995-10-10|COLLECT COD|SHIP|eans. furio|
-5221|180|10|3|16|17282.88|0.04|0.01|N|O|1995-08-29|1995-09-06|1995-09-12|TAKE BACK RETURN|TRUCK|ending request|
-5222|151|3|1|1|1051.15|0.00|0.00|A|F|1994-08-19|1994-07-16|1994-09-08|TAKE BACK RETURN|FOB|idle requests. carefully pending pinto bean|
-5223|45|4|1|24|22680.96|0.00|0.00|A|F|1994-10-03|1994-09-20|1994-10-11|TAKE BACK RETURN|TRUCK|refully bold courts besides the regular,|
-5223|124|9|2|25|25603.00|0.09|0.02|R|F|1994-07-12|1994-08-13|1994-08-01|NONE|FOB|y express ideas impress|
-5223|6|3|3|19|17214.00|0.04|0.01|R|F|1994-10-28|1994-08-26|1994-10-31|COLLECT COD|REG AIR|ntly. furiously even excuses a|
-5223|130|9|4|40|41205.20|0.01|0.04|R|F|1994-10-01|1994-09-18|1994-10-28|COLLECT COD|SHIP|kly pending |
-5248|81|2|1|39|38262.12|0.05|0.03|N|O|1995-08-10|1995-07-04|1995-09-09|TAKE BACK RETURN|MAIL|yly even accounts. spe|
-5248|138|9|2|45|46715.85|0.00|0.06|A|F|1995-05-09|1995-07-12|1995-05-27|DELIVER IN PERSON|FOB|. bold, pending foxes h|
-5249|50|9|1|31|29451.55|0.07|0.03|A|F|1994-11-21|1994-11-19|1994-12-08|NONE|REG AIR|f the excuses. furiously fin|
-5249|31|7|2|44|40965.32|0.05|0.00|A|F|1994-12-28|1994-11-29|1994-12-29|TAKE BACK RETURN|MAIL|ole furiousl|
-5249|32|8|3|13|12116.39|0.09|0.00|R|F|1994-09-27|1994-10-20|1994-10-05|DELIVER IN PERSON|SHIP|ites. finally exp|
-5249|146|3|4|29|30338.06|0.00|0.05|A|F|1994-09-16|1994-11-03|1994-10-06|NONE|TRUCK| players. f|
-5249|158|6|5|12|12697.80|0.01|0.08|R|F|1994-12-28|1994-11-07|1995-01-15|COLLECT COD|MAIL|press depths could have to sleep carefu|
-5250|44|3|1|2|1888.08|0.08|0.04|N|O|1995-08-09|1995-10-10|1995-08-13|COLLECT COD|AIR|its. final pinto|
-5250|192|6|2|27|29489.13|0.10|0.05|N|O|1995-10-24|1995-09-03|1995-11-18|COLLECT COD|TRUCK|l forges are. furiously unusual pin|
-5251|139|10|1|36|37408.68|0.10|0.01|N|O|1995-07-16|1995-07-05|1995-07-28|DELIVER IN PERSON|FOB|slowly! bli|
-5252|141|10|1|13|13534.82|0.02|0.01|N|O|1996-03-02|1996-05-10|1996-03-11|NONE|FOB|boost fluffily across |
-5252|139|5|2|39|40526.07|0.06|0.05|N|O|1996-05-17|1996-04-23|1996-05-23|COLLECT COD|AIR|gular requests.|
-5252|195|9|3|9|9856.71|0.09|0.03|N|O|1996-05-30|1996-05-03|1996-06-26|TAKE BACK RETURN|RAIL|x. slyly special depos|
-5252|87|8|4|48|47379.84|0.01|0.06|N|O|1996-04-17|1996-03-19|1996-05-03|COLLECT COD|AIR|bold requests. furious|
-5252|68|5|5|24|23233.44|0.04|0.05|N|O|1996-05-11|1996-04-17|1996-05-12|COLLECT COD|REG AIR|posits after the fluffi|
-5252|3|10|6|41|37023.00|0.02|0.03|N|O|1996-03-16|1996-04-18|1996-03-17|NONE|TRUCK|ording to the blithely express somas sho|
-5253|31|2|1|35|32586.05|0.02|0.00|N|O|1995-07-23|1995-06-12|1995-08-03|DELIVER IN PERSON|AIR|ven deposits. careful|
-5253|150|7|2|38|39905.70|0.02|0.06|N|O|1995-08-03|1995-06-14|1995-08-27|DELIVER IN PERSON|REG AIR|onic dependencies are furiou|
-5253|14|5|3|9|8226.09|0.03|0.08|N|F|1995-06-08|1995-05-12|1995-06-23|DELIVER IN PERSON|REG AIR|lyly express deposits use furiou|
-5253|166|1|4|25|26654.00|0.04|0.03|A|F|1995-05-21|1995-06-13|1995-06-09|COLLECT COD|TRUCK|urts. even theodoli|
-5254|111|2|1|35|35388.85|0.01|0.07|A|F|1992-07-28|1992-09-05|1992-08-07|COLLECT COD|REG AIR|ntegrate carefully among the pending|
-5254|135|6|2|10|10351.30|0.05|0.04|A|F|1992-11-19|1992-10-20|1992-12-15|COLLECT COD|SHIP| accounts. silent deposit|
-5254|192|5|3|32|34950.08|0.00|0.08|A|F|1992-08-10|1992-09-21|1992-08-16|NONE|RAIL|ts impress closely furi|
-5254|163|2|4|45|47842.20|0.05|0.06|A|F|1992-11-11|1992-09-01|1992-12-07|COLLECT COD|REG AIR| wake. blithely silent excuse|
-5254|29|8|5|23|21367.46|0.02|0.06|A|F|1992-08-16|1992-09-05|1992-09-15|COLLECT COD|RAIL|lyly regular accounts. furiously pendin|
-5254|158|3|6|34|35977.10|0.09|0.02|R|F|1992-08-29|1992-10-16|1992-09-20|TAKE BACK RETURN|RAIL| furiously above the furiously |
-5254|20|7|7|9|8280.18|0.09|0.03|R|F|1992-07-29|1992-10-15|1992-08-20|TAKE BACK RETURN|REG AIR| wake blithely fluff|
-5255|131|7|1|2|2062.26|0.04|0.08|N|O|1996-09-27|1996-10-04|1996-10-04|DELIVER IN PERSON|RAIL|ajole blithely fluf|
-5255|172|10|2|30|32165.10|0.04|0.08|N|O|1996-09-20|1996-08-18|1996-10-09|TAKE BACK RETURN|AIR| to the silent requests cajole b|
-5255|130|3|3|41|42235.33|0.09|0.03|N|O|1996-08-21|1996-09-24|1996-09-05|COLLECT COD|FOB|tect blithely against t|
-5280|97|9|1|16|15953.44|0.02|0.03|N|O|1998-03-29|1998-01-28|1998-04-03|TAKE BACK RETURN|SHIP| foxes are furiously. theodoli|
-5280|176|5|2|46|49503.82|0.01|0.06|N|O|1998-01-04|1998-01-21|1998-02-03|TAKE BACK RETURN|FOB|efully carefully pen|
-5281|114|1|1|37|37522.07|0.05|0.02|N|O|1995-11-10|1996-01-31|1995-11-22|DELIVER IN PERSON|MAIL|ronic dependencies. fluffily final p|
-5281|105|2|2|38|38193.80|0.00|0.05|N|O|1996-02-17|1995-12-19|1996-02-29|NONE|RAIL|n asymptotes could wake about th|
-5281|127|2|3|23|23623.76|0.08|0.00|N|O|1995-12-30|1996-01-26|1996-01-23|COLLECT COD|REG AIR|. final theodolites cajole. ironic p|
-5281|87|8|4|48|47379.84|0.03|0.05|N|O|1996-01-31|1995-12-23|1996-02-08|TAKE BACK RETURN|REG AIR|ss the furiously |
-5281|43|10|5|33|31120.32|0.01|0.07|N|O|1996-03-01|1995-12-28|1996-03-05|COLLECT COD|RAIL|ly brave foxes. bold deposits above the |
-5282|118|2|1|36|36651.96|0.05|0.02|N|O|1998-05-20|1998-04-10|1998-06-14|DELIVER IN PERSON|TRUCK|re slyly accor|
-5282|52|10|2|32|30465.60|0.02|0.05|N|O|1998-03-01|1998-03-31|1998-03-03|NONE|FOB|onic deposits; furiou|
-5282|58|10|3|28|26825.40|0.03|0.06|N|O|1998-05-06|1998-04-24|1998-05-30|COLLECT COD|SHIP|fily final instruc|
-5283|5|2|1|20|18100.00|0.05|0.02|A|F|1994-09-16|1994-08-03|1994-10-15|TAKE BACK RETURN|TRUCK|al deposits? blithely even pinto beans|
-5283|186|7|2|1|1086.18|0.10|0.08|R|F|1994-06-20|1994-08-03|1994-07-01|COLLECT COD|FOB|deposits within the furio|
-5284|173|1|1|16|17170.72|0.04|0.02|N|O|1995-08-17|1995-08-23|1995-08-26|DELIVER IN PERSON|TRUCK|unts detect furiously even d|
-5284|44|7|2|24|22656.96|0.03|0.08|N|O|1995-10-21|1995-08-23|1995-10-27|COLLECT COD|AIR| haggle according |
-5285|193|5|1|31|33888.89|0.08|0.00|A|F|1994-04-17|1994-04-05|1994-05-09|NONE|RAIL|ubt. quickly blithe |
-5285|31|2|2|37|34448.11|0.09|0.02|R|F|1994-02-26|1994-02-18|1994-03-27|NONE|SHIP|uffily regu|
-5285|34|10|3|24|22416.72|0.02|0.04|A|F|1994-04-19|1994-04-03|1994-04-25|DELIVER IN PERSON|FOB|ess packages. quick, even deposits snooze b|
-5285|43|2|4|12|11316.48|0.05|0.06|A|F|1994-04-22|1994-04-07|1994-05-19|NONE|AIR| deposits-- quickly bold requests hag|
-5285|71|2|5|1|971.07|0.03|0.05|R|F|1994-03-14|1994-02-20|1994-04-10|COLLECT COD|TRUCK|e fluffily about the slyly special pa|
-5285|146|7|6|1|1046.14|0.06|0.01|R|F|1994-02-08|1994-04-02|1994-02-17|COLLECT COD|SHIP|ing deposits integra|
-5286|199|1|1|1|1099.19|0.01|0.07|N|O|1997-11-25|1997-11-07|1997-12-17|COLLECT COD|REG AIR|ly! furiously final pack|
-5286|97|1|2|7|6979.63|0.06|0.05|N|O|1997-10-23|1997-12-10|1997-11-20|TAKE BACK RETURN|RAIL|y express instructions sleep carefull|
-5286|16|10|3|3|2748.03|0.06|0.08|N|O|1997-12-04|1997-11-06|1997-12-09|COLLECT COD|MAIL|re fluffily|
-5286|40|6|4|6|5640.24|0.04|0.03|N|O|1997-10-15|1997-12-05|1997-11-12|COLLECT COD|RAIL|y special a|
-5286|186|7|5|38|41274.84|0.07|0.05|N|O|1997-11-29|1997-11-26|1997-12-15|TAKE BACK RETURN|SHIP|fluffily. special, ironic deposit|
-5286|138|9|6|24|24915.12|0.08|0.00|N|O|1997-09-27|1997-12-21|1997-09-30|COLLECT COD|TRUCK|s. express foxes of the|
-5287|39|10|1|32|30048.96|0.01|0.01|A|F|1994-01-29|1994-01-27|1994-02-08|NONE|RAIL|heodolites haggle caref|
-5312|61|6|1|27|25948.62|0.04|0.08|A|F|1995-04-20|1995-04-09|1995-04-25|COLLECT COD|SHIP|tructions cajol|
-5312|2|5|2|43|38786.00|0.05|0.08|A|F|1995-03-24|1995-05-07|1995-03-28|NONE|TRUCK|ly unusual|
-5313|17|1|1|34|31178.34|0.10|0.02|N|O|1997-08-07|1997-08-12|1997-08-24|DELIVER IN PERSON|FOB|ccording to the blithely final account|
-5313|13|10|2|17|15521.17|0.00|0.02|N|O|1997-09-02|1997-08-20|1997-09-07|NONE|SHIP|uests wake|
-5313|112|9|3|47|47569.17|0.06|0.08|N|O|1997-08-12|1997-08-18|1997-08-13|TAKE BACK RETURN|RAIL|pinto beans across the |
-5313|197|1|4|16|17555.04|0.08|0.00|N|O|1997-10-04|1997-08-02|1997-10-25|COLLECT COD|REG AIR|ckages wake carefully aga|
-5313|72|1|5|30|29162.10|0.06|0.08|N|O|1997-06-27|1997-07-18|1997-06-30|NONE|SHIP|nding packages use|
-5313|120|7|6|21|21422.52|0.05|0.05|N|O|1997-09-26|1997-09-02|1997-10-18|COLLECT COD|FOB|he blithely regular packages. quickly|
-5314|118|9|1|10|10181.10|0.07|0.05|N|O|1995-09-26|1995-07-24|1995-10-19|DELIVER IN PERSON|RAIL|latelets haggle final|
-5314|125|6|2|16|16401.92|0.00|0.04|N|O|1995-09-25|1995-07-08|1995-10-17|COLLECT COD|SHIP|hely unusual packages acc|
-5315|35|1|1|12|11220.36|0.08|0.06|R|F|1992-12-18|1993-01-16|1993-01-10|NONE|AIR|ccounts. furiously ironi|
-5315|179|10|2|39|42087.63|0.00|0.06|R|F|1992-11-09|1992-12-29|1992-12-07|NONE|SHIP|ly alongside of the ca|
-5316|108|1|1|29|29234.90|0.10|0.05|R|F|1994-03-28|1994-04-29|1994-04-09|DELIVER IN PERSON|REG AIR|ckly unusual foxes bo|
-5316|136|7|2|31|32120.03|0.00|0.08|A|F|1994-04-01|1994-04-21|1994-04-12|DELIVER IN PERSON|MAIL|s. deposits cajole around t|
-5317|82|3|1|29|28480.32|0.02|0.06|A|F|1994-11-28|1994-11-27|1994-12-16|COLLECT COD|FOB|oss the carefull|
-5317|171|2|2|18|19281.06|0.06|0.06|A|F|1995-01-02|1994-10-29|1995-01-16|NONE|RAIL|g to the blithely p|
-5317|120|4|3|37|37744.44|0.09|0.00|R|F|1994-09-15|1994-10-24|1994-09-23|NONE|TRUCK|totes nag theodolites. pend|
-5317|67|6|4|50|48353.00|0.09|0.01|A|F|1994-10-17|1994-10-25|1994-11-03|NONE|REG AIR|cajole furiously. accounts use quick|
-5317|95|8|5|19|18906.71|0.07|0.07|R|F|1994-12-15|1994-10-18|1994-12-27|NONE|MAIL|onic requests boost bli|
-5317|115|9|6|48|48725.28|0.01|0.03|A|F|1994-09-19|1994-11-25|1994-10-03|COLLECT COD|MAIL|ts about the packages cajole furio|
-5317|169|4|7|30|32074.80|0.07|0.07|A|F|1994-10-13|1994-10-31|1994-10-28|NONE|AIR|cross the attainments. slyly |
-5318|61|6|1|13|12493.78|0.10|0.04|R|F|1993-07-15|1993-06-25|1993-08-13|COLLECT COD|REG AIR|ly silent ideas. ideas haggle among the |
-5318|180|1|2|26|28084.68|0.00|0.04|R|F|1993-07-07|1993-05-23|1993-07-28|COLLECT COD|SHIP|al, express foxes. bold requests sleep alwa|
-5318|7|10|3|37|33559.00|0.07|0.05|A|F|1993-07-09|1993-06-22|1993-07-21|COLLECT COD|SHIP|ickly final deposi|
-5318|142|5|4|31|32306.34|0.01|0.04|R|F|1993-07-28|1993-05-06|1993-08-06|DELIVER IN PERSON|REG AIR|requests must sleep slyly quickly|
-5319|150|9|1|31|32554.65|0.04|0.07|N|O|1996-03-26|1996-03-07|1996-04-24|COLLECT COD|TRUCK|d carefully about the courts. fluffily spe|
-5319|44|3|2|39|36817.56|0.09|0.05|N|O|1996-05-17|1996-03-14|1996-06-11|NONE|TRUCK|unts. furiously silent|
-5344|19|3|1|6|5514.06|0.07|0.01|N|O|1998-08-04|1998-09-03|1998-08-11|TAKE BACK RETURN|REG AIR|ithely about the pending plate|
-5344|79|9|2|37|36225.59|0.03|0.07|N|O|1998-10-09|1998-07-26|1998-11-08|NONE|TRUCK|thely express packages|
-5344|67|8|3|26|25143.56|0.02|0.06|N|O|1998-08-27|1998-08-22|1998-09-24|NONE|AIR|furiously pending, silent multipliers.|
-5344|39|10|4|21|19719.63|0.03|0.01|N|O|1998-08-31|1998-09-06|1998-09-02|NONE|MAIL|xes. furiously even pinto beans sleep f|
-5345|83|4|1|3|2949.24|0.05|0.01|N|O|1997-12-10|1997-10-03|1998-01-05|COLLECT COD|SHIP|ites wake carefully unusual |
-5345|146|5|2|2|2092.28|0.10|0.02|N|O|1997-11-18|1997-10-12|1997-12-08|NONE|MAIL|ut the slyly specia|
-5345|192|5|3|46|50240.74|0.06|0.04|N|O|1997-10-06|1997-09-27|1997-10-18|COLLECT COD|REG AIR|slyly special deposits. fin|
-5345|114|4|4|37|37522.07|0.01|0.01|N|O|1997-11-01|1997-10-09|1997-11-26|DELIVER IN PERSON|AIR| along the ironically fina|
-5345|34|10|5|22|20548.66|0.02|0.02|N|O|1997-08-27|1997-11-22|1997-09-10|TAKE BACK RETURN|MAIL|leep slyly regular fox|
-5346|149|8|1|21|22031.94|0.07|0.08|R|F|1994-03-11|1994-03-07|1994-04-04|DELIVER IN PERSON|RAIL|integrate blithely a|
-5346|192|5|2|13|14198.47|0.04|0.04|A|F|1994-02-03|1994-02-05|1994-02-09|COLLECT COD|TRUCK|y. fluffily bold accounts grow. furio|
-5346|109|2|3|7|7063.70|0.08|0.05|A|F|1994-01-30|1994-03-26|1994-01-31|DELIVER IN PERSON|SHIP|equests use carefully care|
-5346|162|3|4|35|37175.60|0.06|0.02|A|F|1994-02-09|1994-03-01|1994-02-14|TAKE BACK RETURN|FOB|nic excuses cajole entic|
-5346|121|2|5|25|25528.00|0.05|0.06|R|F|1993-12-28|1994-03-19|1994-01-09|TAKE BACK RETURN|REG AIR|he ironic ideas are boldly slyly ironi|
-5346|33|9|6|6|5598.18|0.08|0.04|R|F|1994-03-01|1994-02-04|1994-03-09|NONE|REG AIR|escapades sleep furiously beside the |
-5346|80|9|7|41|40183.28|0.05|0.04|R|F|1994-01-10|1994-02-15|1994-01-26|TAKE BACK RETURN|REG AIR|fully close instructi|
-5347|83|4|1|48|47187.84|0.04|0.08|A|F|1995-02-25|1995-04-26|1995-03-26|NONE|SHIP|equests are slyly. blithely regu|
-5347|124|3|2|47|48133.64|0.02|0.01|N|F|1995-06-05|1995-03-29|1995-06-28|COLLECT COD|AIR|across the slyly bol|
-5347|23|2|3|34|31382.68|0.06|0.00|A|F|1995-05-18|1995-04-04|1995-06-02|DELIVER IN PERSON|SHIP| pending deposits. fluffily regular senti|
-5347|40|1|4|4|3760.16|0.06|0.03|A|F|1995-03-24|1995-04-03|1995-04-01|NONE|SHIP|ldly pending asymptotes ki|
-5347|131|2|5|21|21653.73|0.08|0.04|R|F|1995-04-01|1995-04-16|1995-04-23|NONE|SHIP|sly slyly final requests. careful|
-5347|56|1|6|6|5736.30|0.06|0.02|A|F|1995-04-11|1995-04-14|1995-05-02|NONE|TRUCK|lly unusual ideas. sl|
-5347|50|7|7|18|17100.90|0.01|0.01|N|F|1995-05-24|1995-05-07|1995-06-19|NONE|FOB|he ideas among the requests |
-5348|69|4|1|21|20350.26|0.10|0.04|N|O|1997-12-11|1997-12-24|1997-12-28|NONE|REG AIR| regular theodolites haggle car|
-5348|156|1|2|31|32740.65|0.07|0.02|N|O|1998-01-04|1997-12-09|1998-01-17|COLLECT COD|RAIL|are finally|
-5348|17|8|3|16|14672.16|0.06|0.08|N|O|1998-02-28|1997-12-25|1998-03-12|DELIVER IN PERSON|AIR|uriously thin pinto beans |
-5348|20|4|4|7|6440.14|0.04|0.00|N|O|1998-01-29|1997-12-20|1998-02-10|DELIVER IN PERSON|RAIL|even foxes. epitap|
-5348|2|5|5|37|33374.00|0.06|0.07|N|O|1997-12-01|1998-02-02|1997-12-07|NONE|FOB|y according to the carefully pending acco|
-5348|143|10|6|14|14603.96|0.06|0.05|N|O|1997-12-16|1998-01-12|1997-12-24|COLLECT COD|FOB|en pinto beans. somas cajo|
-5349|156|7|1|19|20066.85|0.06|0.01|N|O|1996-09-11|1996-11-18|1996-09-22|TAKE BACK RETURN|FOB|endencies use whithout the special |
-5349|168|3|2|14|14954.24|0.06|0.00|N|O|1996-11-07|1996-11-17|1996-11-20|TAKE BACK RETURN|TRUCK|fully regular |
-5349|4|5|3|6|5424.00|0.10|0.01|N|O|1996-12-30|1996-10-08|1997-01-01|DELIVER IN PERSON|MAIL|inal deposits affix carefully|
-5350|122|3|1|19|19420.28|0.02|0.06|R|F|1993-10-20|1993-11-15|1993-11-17|DELIVER IN PERSON|RAIL|romise slyly alongsi|
-5350|191|4|2|44|48012.36|0.04|0.06|R|F|1993-10-30|1993-11-23|1993-11-25|DELIVER IN PERSON|AIR|p above the ironic, pending dep|
-5350|54|9|3|12|11448.60|0.10|0.04|A|F|1994-01-30|1993-11-21|1994-02-15|COLLECT COD|REG AIR| cajole. even instructions haggle. blithe|
-5350|155|10|4|7|7386.05|0.08|0.00|R|F|1993-10-19|1993-12-28|1993-11-04|NONE|SHIP|alongside of th|
-5350|129|10|5|27|27786.24|0.07|0.04|A|F|1993-11-25|1993-12-27|1993-12-08|COLLECT COD|TRUCK|es. blithe theodolites haggl|
-5351|7|2|1|36|32652.00|0.06|0.05|N|O|1998-07-27|1998-07-06|1998-08-25|NONE|MAIL|ss the ironic, regular asymptotes cajole |
-5351|33|9|2|47|43852.41|0.04|0.01|N|O|1998-05-30|1998-08-08|1998-06-23|DELIVER IN PERSON|REG AIR|s. grouches cajole. sile|
-5351|106|3|3|2|2012.20|0.00|0.02|N|O|1998-05-12|1998-07-15|1998-05-24|NONE|TRUCK|g accounts wake furiously slyly even dolph|
-5376|61|6|1|42|40364.52|0.10|0.04|A|F|1994-09-20|1994-08-30|1994-09-29|TAKE BACK RETURN|REG AIR|y even asymptotes. courts are unusual pa|
-5376|91|4|2|44|43607.96|0.05|0.02|R|F|1994-08-30|1994-08-05|1994-09-07|COLLECT COD|AIR|ithe packages detect final theodolites. f|
-5376|65|6|3|18|17371.08|0.02|0.08|A|F|1994-10-29|1994-09-13|1994-11-01|COLLECT COD|MAIL| accounts boo|
-5377|79|8|1|40|39162.80|0.00|0.04|N|O|1997-05-21|1997-06-15|1997-05-26|DELIVER IN PERSON|AIR|lithely ironic theodolites are care|
-5377|30|3|2|17|15810.51|0.09|0.00|N|O|1997-07-05|1997-05-25|1997-07-22|COLLECT COD|RAIL|dencies. carefully regular re|
-5377|103|8|3|23|23071.30|0.07|0.08|N|O|1997-06-26|1997-07-13|1997-07-08|COLLECT COD|RAIL| silent wa|
-5377|104|7|4|12|12049.20|0.05|0.07|N|O|1997-05-08|1997-06-15|1997-05-15|DELIVER IN PERSON|MAIL| ironic, final|
-5377|173|3|5|27|28975.59|0.08|0.02|N|O|1997-07-11|1997-06-12|1997-08-08|TAKE BACK RETURN|MAIL|press theodolites. e|
-5378|155|3|1|39|41150.85|0.07|0.04|R|F|1992-11-25|1992-12-22|1992-12-02|COLLECT COD|AIR|ts are quickly around the|
-5378|62|9|2|46|44254.76|0.01|0.04|A|F|1993-02-17|1993-01-20|1993-02-26|COLLECT COD|REG AIR|into beans sleep. fu|
-5378|10|7|3|18|16380.18|0.02|0.03|R|F|1992-11-25|1992-12-21|1992-12-10|COLLECT COD|FOB|onic accounts was bold, |
-5379|199|1|1|40|43967.60|0.01|0.08|N|O|1995-10-01|1995-10-19|1995-10-30|COLLECT COD|MAIL|carefully final accounts haggle blithely. |
-5380|182|3|1|14|15150.52|0.10|0.01|N|O|1997-12-18|1997-12-03|1998-01-06|NONE|RAIL|final platelets.|
-5380|147|6|2|10|10471.40|0.09|0.05|N|O|1997-11-24|1998-01-10|1997-12-21|COLLECT COD|AIR|refully pending deposits. special, even t|
-5380|184|5|3|40|43367.20|0.02|0.08|N|O|1997-12-30|1997-11-27|1998-01-09|DELIVER IN PERSON|SHIP|ar asymptotes. blithely r|
-5380|66|3|4|6|5796.36|0.09|0.05|N|O|1997-11-15|1998-01-08|1997-12-11|COLLECT COD|MAIL|es. fluffily brave accounts across t|
-5380|107|8|5|48|48340.80|0.04|0.03|N|O|1997-12-01|1997-12-28|1997-12-05|DELIVER IN PERSON|FOB|encies haggle car|
-5381|188|9|1|37|40262.66|0.04|0.01|A|F|1993-04-08|1993-04-07|1993-04-12|DELIVER IN PERSON|SHIP|ly final deposits print carefully. unusua|
-5381|111|8|2|48|48533.28|0.04|0.03|R|F|1993-04-22|1993-04-17|1993-05-14|TAKE BACK RETURN|FOB|luffily spec|
-5381|192|3|3|13|14198.47|0.08|0.03|R|F|1993-05-09|1993-04-26|1993-05-25|NONE|FOB|s after the f|
-5381|168|3|4|17|18158.72|0.05|0.05|R|F|1993-05-25|1993-04-14|1993-06-17|NONE|MAIL|ckly final requests haggle qui|
-5381|63|8|5|49|47189.94|0.06|0.02|R|F|1993-05-08|1993-04-07|1993-06-03|NONE|FOB| accounts. regular, regula|
-5381|132|3|6|33|34060.29|0.10|0.00|A|F|1993-04-09|1993-04-03|1993-04-22|DELIVER IN PERSON|SHIP|ly special deposits |
-5381|44|3|7|31|29265.24|0.04|0.05|A|F|1993-04-10|1993-03-22|1993-04-13|TAKE BACK RETURN|MAIL|the carefully expre|
-5382|153|8|1|34|35807.10|0.03|0.03|R|F|1992-02-22|1992-02-18|1992-03-02|DELIVER IN PERSON|FOB|gular accounts. even accounts integrate|
-5382|55|3|2|13|12415.65|0.09|0.06|A|F|1992-01-16|1992-03-12|1992-02-06|NONE|MAIL|eodolites. final foxes |
-5382|149|10|3|3|3147.42|0.10|0.06|A|F|1992-03-22|1992-03-06|1992-04-19|TAKE BACK RETURN|AIR|efully unusua|
-5382|62|9|4|20|19241.20|0.08|0.02|A|F|1992-03-26|1992-02-17|1992-04-15|DELIVER IN PERSON|FOB|carefully regular accounts. slyly ev|
-5382|177|8|5|14|15080.38|0.02|0.02|A|F|1992-04-05|1992-04-05|1992-05-04|TAKE BACK RETURN|FOB| brave platelets. ev|
-5382|180|9|6|6|6481.08|0.02|0.01|A|F|1992-03-07|1992-04-02|1992-03-18|TAKE BACK RETURN|FOB|y final foxes by the sl|
-5382|105|2|7|48|48244.80|0.05|0.05|A|F|1992-02-14|1992-03-19|1992-02-25|DELIVER IN PERSON|REG AIR|nts integrate quickly ca|
-5383|96|7|1|12|11953.08|0.04|0.00|N|O|1995-07-02|1995-08-16|1995-08-01|TAKE BACK RETURN|AIR|y regular instructi|
-5408|102|7|1|2|2004.20|0.07|0.04|R|F|1992-08-21|1992-10-03|1992-08-28|DELIVER IN PERSON|MAIL|cross the dolphins h|
-5408|118|2|2|35|35633.85|0.04|0.05|R|F|1992-10-02|1992-10-17|1992-10-13|TAKE BACK RETURN|AIR|thely ironic requests alongside of the sl|
-5408|76|6|3|34|33186.38|0.10|0.02|A|F|1992-10-22|1992-08-25|1992-11-16|DELIVER IN PERSON|TRUCK|requests detect blithely a|
-5408|54|2|4|48|45794.40|0.04|0.05|R|F|1992-09-30|1992-08-27|1992-10-27|NONE|TRUCK|. furiously regular |
-5408|183|4|5|8|8665.44|0.03|0.07|A|F|1992-10-24|1992-09-06|1992-11-03|NONE|AIR|thely regular hocke|
-5409|194|8|1|27|29543.13|0.01|0.02|A|F|1992-02-14|1992-03-18|1992-02-23|DELIVER IN PERSON|AIR|eodolites |
-5409|104|5|2|38|38155.80|0.01|0.02|A|F|1992-03-17|1992-03-29|1992-04-13|NONE|REG AIR|onic, regular accounts! blithely even|
-5409|141|10|3|17|17699.38|0.07|0.00|A|F|1992-01-13|1992-04-05|1992-01-20|DELIVER IN PERSON|AIR|cross the sil|
-5409|1|8|4|9|8109.00|0.07|0.03|A|F|1992-02-15|1992-04-02|1992-02-28|DELIVER IN PERSON|AIR| unusual, unusual reques|
-5409|159|10|5|37|39188.55|0.06|0.04|R|F|1992-05-07|1992-02-10|1992-05-20|DELIVER IN PERSON|FOB|ously regular packages. packages|
-5409|64|3|6|14|13496.84|0.03|0.08|R|F|1992-02-14|1992-03-26|1992-02-29|DELIVER IN PERSON|AIR|osits cajole furiously|
-5410|117|8|1|48|48821.28|0.04|0.08|N|O|1998-09-27|1998-09-11|1998-10-01|TAKE BACK RETURN|AIR| about the slyly even courts. quickly regul|
-5410|105|8|2|41|41209.10|0.01|0.07|N|O|1998-08-25|1998-10-20|1998-09-01|DELIVER IN PERSON|REG AIR|sly. slyly ironic theodolites|
-5410|29|4|3|40|37160.80|0.07|0.08|N|O|1998-11-17|1998-10-02|1998-11-27|COLLECT COD|TRUCK|iously special accounts are along th|
-5410|50|7|4|8|7600.40|0.05|0.04|N|O|1998-09-12|1998-10-22|1998-09-22|DELIVER IN PERSON|TRUCK|ly. fluffily ironic platelets alon|
-5411|96|9|1|17|16933.53|0.05|0.01|N|O|1997-07-22|1997-07-14|1997-07-30|TAKE BACK RETURN|REG AIR| slyly slyly even deposits. carefully b|
-5411|113|7|2|10|10131.10|0.08|0.01|N|O|1997-07-19|1997-08-04|1997-07-26|TAKE BACK RETURN|MAIL|nding, special foxes unw|
-5411|56|7|3|5|4780.25|0.10|0.01|N|O|1997-09-12|1997-08-03|1997-09-23|DELIVER IN PERSON|FOB| bold, ironic theodo|
-5411|129|8|4|15|15436.80|0.08|0.05|N|O|1997-07-01|1997-07-15|1997-07-07|COLLECT COD|RAIL|attainments sleep slyly ironic|
-5411|4|5|5|19|17176.00|0.05|0.08|N|O|1997-05-25|1997-07-30|1997-06-19|COLLECT COD|RAIL|ial accounts according to the f|
-5412|54|9|1|2|1908.10|0.03|0.07|N|O|1998-04-14|1998-04-02|1998-04-19|TAKE BACK RETURN|REG AIR| sleep above the furiou|
-5412|66|1|2|48|46370.88|0.01|0.08|N|O|1998-02-22|1998-03-28|1998-03-18|TAKE BACK RETURN|TRUCK|s. slyly final packages cajole blithe|
-5412|74|2|3|31|30196.17|0.05|0.08|N|O|1998-03-23|1998-04-17|1998-04-10|NONE|SHIP|t the accounts detect slyly about the c|
-5412|97|10|4|26|25924.34|0.02|0.08|N|O|1998-01-22|1998-04-19|1998-02-17|NONE|AIR| the blithel|
-5413|126|7|1|48|49253.76|0.02|0.08|N|O|1998-01-25|1997-11-20|1998-02-22|COLLECT COD|SHIP| theodolites. furiously ironic instr|
-5413|142|9|2|37|38559.18|0.02|0.07|N|O|1997-12-08|1998-01-01|1997-12-13|COLLECT COD|TRUCK|usly bold instructions affix idly unusual, |
-5413|111|8|3|36|36399.96|0.02|0.07|N|O|1997-12-12|1997-11-28|1997-12-25|NONE|TRUCK|ular, regular ideas mold! final requests|
-5413|110|3|4|22|22222.42|0.02|0.08|N|O|1997-11-10|1997-11-24|1997-11-22|DELIVER IN PERSON|FOB|posits. quick|
-5413|189|10|5|5|5445.90|0.10|0.01|N|O|1997-11-28|1997-11-24|1997-12-05|NONE|RAIL|tes are al|
-5413|190|1|6|32|34886.08|0.02|0.03|N|O|1997-10-28|1998-01-03|1997-11-10|NONE|TRUCK|refully special package|
-5413|31|7|7|32|29792.96|0.06|0.07|N|O|1997-10-23|1997-12-09|1997-11-17|NONE|TRUCK|he quickly ironic ideas. slyly ironic ide|
-5414|68|9|1|40|38722.40|0.07|0.06|R|F|1993-04-07|1993-05-18|1993-04-23|COLLECT COD|AIR|ts are evenly across|
-5414|123|8|2|48|49109.76|0.06|0.07|R|F|1993-06-08|1993-05-14|1993-07-06|DELIVER IN PERSON|FOB| silent dolphins; fluffily regular tithe|
-5414|35|1|3|23|21505.69|0.10|0.00|A|F|1993-07-22|1993-05-26|1993-08-08|COLLECT COD|MAIL|e bold, express dolphins. spec|
-5414|133|4|4|15|15496.95|0.06|0.08|R|F|1993-05-18|1993-06-09|1993-05-27|DELIVER IN PERSON|REG AIR|e slyly about the carefully regula|
-5414|9|2|5|19|17271.00|0.01|0.05|R|F|1993-04-06|1993-05-12|1993-05-02|DELIVER IN PERSON|RAIL|ffily silent theodolites na|
-5414|98|1|6|28|27946.52|0.10|0.05|A|F|1993-03-27|1993-06-04|1993-04-07|TAKE BACK RETURN|SHIP|ts sleep sl|
-5415|102|5|1|44|44092.40|0.00|0.06|A|F|1992-08-19|1992-10-26|1992-09-17|TAKE BACK RETURN|TRUCK| requests. unusual theodolites sleep agains|
-5415|31|7|2|16|14896.48|0.08|0.00|A|F|1992-09-29|1992-09-12|1992-10-10|NONE|AIR|pinto beans haggle furiously|
-5415|102|7|3|6|6012.60|0.10|0.03|A|F|1992-10-28|1992-09-09|1992-11-20|COLLECT COD|RAIL|ges around the fur|
-5415|16|7|4|43|39388.43|0.01|0.02|R|F|1992-11-17|1992-09-14|1992-12-14|DELIVER IN PERSON|SHIP|yly blithely stealthy deposits. carefu|
-5415|161|6|5|11|11672.76|0.00|0.01|R|F|1992-11-22|1992-10-19|1992-12-10|DELIVER IN PERSON|SHIP|gle among t|
-5415|144|1|6|46|48030.44|0.03|0.03|R|F|1992-08-25|1992-09-10|1992-09-22|DELIVER IN PERSON|REG AIR|ve the fluffily |
-5415|153|4|7|11|11584.65|0.08|0.06|A|F|1992-08-21|1992-09-04|1992-08-23|NONE|TRUCK|unts maintain carefully unusual|
-5440|115|2|1|3|3045.33|0.02|0.08|N|O|1997-02-18|1997-02-28|1997-03-15|NONE|SHIP|y. accounts haggle along the blit|
-5441|164|1|1|3|3192.48|0.00|0.02|R|F|1994-08-12|1994-10-14|1994-09-01|TAKE BACK RETURN|REG AIR|are. unusual, |
-5441|131|2|2|49|50525.37|0.02|0.03|A|F|1994-09-23|1994-09-22|1994-10-22|NONE|FOB|ording to the furio|
-5441|144|3|3|33|34456.62|0.09|0.02|R|F|1994-10-09|1994-10-06|1994-10-30|DELIVER IN PERSON|TRUCK|ges. final instruction|
-5441|67|4|4|47|45451.82|0.07|0.08|R|F|1994-11-19|1994-10-16|1994-12-16|TAKE BACK RETURN|FOB|ounts wake slyly about the express instr|
-5442|42|5|1|16|15072.64|0.00|0.00|N|O|1998-04-12|1998-03-03|1998-05-04|TAKE BACK RETURN|RAIL|r packages. accounts haggle dependencies. f|
-5442|88|9|2|45|44463.60|0.08|0.01|N|O|1998-03-30|1998-02-24|1998-04-18|TAKE BACK RETURN|AIR|old slyly after |
-5442|61|8|3|12|11532.72|0.01|0.08|N|O|1998-04-15|1998-03-18|1998-05-05|DELIVER IN PERSON|TRUCK|fully final|
-5442|158|9|4|21|22221.15|0.07|0.06|N|O|1998-03-13|1998-02-19|1998-04-06|COLLECT COD|MAIL|ffily furiously ironic theodolites. furio|
-5442|16|7|5|25|22900.25|0.04|0.00|N|O|1998-03-29|1998-02-13|1998-04-13|TAKE BACK RETURN|REG AIR|ake furiously. slyly express th|
-5442|144|3|6|26|27147.64|0.08|0.07|N|O|1998-03-21|1998-03-21|1998-03-25|TAKE BACK RETURN|AIR|have to sleep furiously bold ideas. blith|
-5443|178|9|1|14|15094.38|0.02|0.00|N|O|1996-10-27|1996-11-11|1996-11-21|DELIVER IN PERSON|RAIL|s after the regular, regular deposits hag|
-5443|72|3|2|39|37910.73|0.03|0.07|N|O|1996-11-01|1996-11-30|1996-11-19|NONE|RAIL|gage carefully across the furiously|
-5443|160|5|3|25|26504.00|0.05|0.00|N|O|1996-12-07|1997-01-08|1997-01-05|NONE|FOB|use carefully above the pinto bea|
-5443|191|4|4|6|6547.14|0.05|0.02|N|O|1996-11-17|1996-12-03|1996-11-30|TAKE BACK RETURN|AIR|p fluffily foxe|
-5443|83|4|5|40|39323.20|0.03|0.03|N|O|1997-01-28|1996-12-10|1997-02-13|NONE|FOB|n courts. special re|
-5444|186|7|1|21|22809.78|0.01|0.07|A|F|1995-04-11|1995-04-25|1995-04-21|DELIVER IN PERSON|RAIL|ar packages haggle above th|
-5444|43|6|2|40|37721.60|0.05|0.08|N|O|1995-07-09|1995-04-25|1995-07-19|COLLECT COD|TRUCK|ously bold ideas. instructions wake slyl|
-5444|150|9|3|40|42006.00|0.08|0.01|A|F|1995-04-06|1995-05-08|1995-05-06|DELIVER IN PERSON|AIR| even packages.|
-5444|59|4|4|33|31648.65|0.05|0.04|N|O|1995-06-24|1995-04-24|1995-07-13|DELIVER IN PERSON|SHIP|ut the courts cajole blithely excuses|
-5444|171|9|5|21|22494.57|0.04|0.00|R|F|1995-05-05|1995-05-25|1995-05-29|TAKE BACK RETURN|REG AIR|aves serve sly|
-5444|20|7|6|21|19320.42|0.07|0.01|A|F|1995-03-30|1995-05-01|1995-03-31|COLLECT COD|AIR|furiously even theodolites.|
-5445|90|1|1|33|32672.97|0.08|0.07|A|F|1993-10-21|1993-10-14|1993-10-28|DELIVER IN PERSON|REG AIR|ests. final instructions|
-5445|131|2|2|12|12373.56|0.09|0.08|R|F|1993-11-02|1993-09-05|1993-11-26|COLLECT COD|FOB| slyly pending pinto beans was slyly al|
-5445|103|8|3|46|46142.60|0.04|0.07|A|F|1993-10-06|1993-09-15|1993-10-28|DELIVER IN PERSON|RAIL|old depend|
-5445|149|10|4|10|10491.40|0.08|0.06|A|F|1993-09-16|1993-10-05|1993-10-01|NONE|TRUCK|ncies abou|
-5445|13|10|5|14|12782.14|0.00|0.02|R|F|1993-11-19|1993-10-18|1993-12-07|NONE|RAIL| requests. bravely i|
-5446|190|1|1|27|29435.13|0.05|0.07|R|F|1994-07-21|1994-08-25|1994-08-17|TAKE BACK RETURN|RAIL|ously across the quic|
-5447|99|1|1|31|30971.79|0.09|0.03|N|O|1996-07-14|1996-05-07|1996-07-17|COLLECT COD|SHIP| foxes sleep. blithely unusual accounts det|
-5472|59|10|1|27|25894.35|0.09|0.06|A|F|1993-08-04|1993-07-07|1993-09-03|COLLECT COD|TRUCK|fily pending attainments. unus|
-5472|68|3|2|28|27105.68|0.00|0.03|A|F|1993-07-28|1993-05-28|1993-08-11|TAKE BACK RETURN|FOB|ffily pendin|
-5472|178|7|3|45|48517.65|0.06|0.02|R|F|1993-06-05|1993-05-14|1993-06-10|NONE|TRUCK| idle packages. furi|
-5472|184|5|4|37|40114.66|0.07|0.05|R|F|1993-06-15|1993-07-03|1993-07-09|DELIVER IN PERSON|RAIL|egrate carefully dependencies. |
-5472|75|6|5|40|39002.80|0.02|0.05|A|F|1993-04-13|1993-07-04|1993-05-04|NONE|REG AIR|e requests detect furiously. ruthlessly un|
-5472|167|2|6|39|41619.24|0.02|0.03|R|F|1993-04-18|1993-07-10|1993-05-12|TAKE BACK RETURN|MAIL|uriously carefully |
-5472|15|5|7|1|915.01|0.03|0.02|A|F|1993-04-14|1993-06-28|1993-04-16|NONE|RAIL|s use furiou|
-5473|48|5|1|9|8532.36|0.03|0.07|R|F|1992-06-03|1992-05-30|1992-06-09|TAKE BACK RETURN|AIR| excuses sleep blithely! regular dep|
-5473|70|1|2|27|26191.89|0.01|0.03|A|F|1992-04-06|1992-04-26|1992-04-29|TAKE BACK RETURN|MAIL|the deposits. warthogs wake fur|
-5473|15|5|3|33|30195.33|0.09|0.00|R|F|1992-05-18|1992-06-10|1992-06-13|TAKE BACK RETURN|MAIL|efully above the even, |
-5474|184|5|1|38|41198.84|0.01|0.08|A|F|1992-07-15|1992-07-16|1992-07-20|NONE|REG AIR| slyly beneath |
-5474|94|8|2|10|9940.90|0.06|0.00|R|F|1992-08-08|1992-08-10|1992-08-24|TAKE BACK RETURN|TRUCK|pinto bean|
-5474|48|1|3|31|29389.24|0.00|0.08|R|F|1992-08-02|1992-07-12|1992-08-04|NONE|TRUCK|the furiously express ideas. speci|
-5474|90|1|4|46|45544.14|0.03|0.04|A|F|1992-06-07|1992-07-11|1992-06-22|NONE|TRUCK|nstructions. furio|
-5475|183|4|1|10|10831.80|0.09|0.08|N|O|1996-07-19|1996-08-22|1996-07-23|COLLECT COD|AIR|ding to the deposits wake fina|
-5476|48|1|1|13|12324.52|0.01|0.04|N|O|1997-12-27|1997-12-08|1997-12-29|COLLECT COD|TRUCK|iously special ac|
-5476|20|4|2|17|15640.34|0.10|0.01|N|O|1998-02-02|1998-01-28|1998-02-14|COLLECT COD|FOB|ng dependencies until the f|
-5477|80|8|1|20|19601.60|0.03|0.01|N|O|1998-03-21|1998-02-09|1998-04-07|TAKE BACK RETURN|SHIP|platelets about the ironic|
-5477|77|7|2|21|20518.47|0.03|0.00|N|O|1998-01-28|1998-02-15|1998-02-24|TAKE BACK RETURN|SHIP|blate slyly. silent|
-5477|134|5|3|31|32058.03|0.04|0.01|N|O|1998-01-11|1998-01-30|1998-02-04|DELIVER IN PERSON|MAIL| special Tiresias cajole furiously. pending|
-5477|193|6|4|16|17491.04|0.00|0.01|N|O|1998-03-07|1998-03-12|1998-04-06|COLLECT COD|RAIL|regular, s|
-5477|96|9|5|23|22910.07|0.00|0.06|N|O|1998-01-04|1998-02-23|1998-01-24|NONE|REG AIR|telets wake blithely ab|
-5477|121|6|6|19|19401.28|0.10|0.03|N|O|1998-02-03|1998-01-30|1998-03-04|TAKE BACK RETURN|MAIL|ost carefully packages.|
-5478|8|9|1|39|35412.00|0.09|0.06|N|O|1996-08-19|1996-06-25|1996-09-08|DELIVER IN PERSON|SHIP|s. furiously |
-5478|2|5|2|47|42394.00|0.10|0.01|N|O|1996-08-15|1996-07-12|1996-08-31|NONE|RAIL| instructions; slyly even accounts hagg|
-5478|119|3|3|25|25477.75|0.09|0.07|N|O|1996-06-08|1996-07-12|1996-07-07|NONE|TRUCK|unusual, pending requests haggle accoun|
-5479|138|4|1|50|51906.50|0.02|0.02|A|F|1993-12-24|1994-02-14|1994-01-18|DELIVER IN PERSON|MAIL|ironic gifts. even dependencies sno|
-5479|104|5|2|19|19077.90|0.05|0.03|A|F|1994-01-22|1994-03-07|1994-02-11|DELIVER IN PERSON|SHIP|arefully bo|
-5504|68|5|1|4|3872.24|0.10|0.07|A|F|1993-04-30|1993-03-01|1993-05-22|DELIVER IN PERSON|AIR|into beans boost. |
-5504|177|8|2|7|7540.19|0.03|0.05|R|F|1993-04-25|1993-03-15|1993-05-06|NONE|TRUCK|packages detect furiously express reques|
-5504|160|2|3|29|30744.64|0.05|0.03|A|F|1993-01-28|1993-02-13|1993-02-27|NONE|SHIP|ajole carefully. care|
-5505|25|8|1|43|39775.86|0.07|0.01|N|O|1997-12-30|1997-11-28|1998-01-09|TAKE BACK RETURN|TRUCK|y alongside of the special requests.|
-5505|182|3|2|33|35711.94|0.05|0.08|N|O|1998-01-11|1997-11-11|1998-01-30|TAKE BACK RETURN|AIR|ithely unusual excuses integrat|
-5505|155|10|3|10|10551.50|0.06|0.01|N|O|1997-10-28|1997-11-27|1997-10-29|DELIVER IN PERSON|AIR| furiously special asym|
-5505|40|1|4|18|16920.72|0.04|0.04|N|O|1997-10-25|1997-12-12|1997-10-30|TAKE BACK RETURN|RAIL| to the quickly express pac|
-5505|162|9|5|46|48859.36|0.05|0.00|N|O|1998-01-06|1997-11-04|1998-02-04|TAKE BACK RETURN|SHIP|usly ironic dependencies haggle across |
-5506|140|1|1|2|2080.28|0.00|0.03|R|F|1994-02-04|1994-01-13|1994-02-17|COLLECT COD|MAIL|onic theodolites are fluffil|
-5506|160|1|2|6|6360.96|0.07|0.06|R|F|1994-02-21|1994-01-30|1994-02-27|DELIVER IN PERSON|MAIL|hely according to the furiously unusua|
-5507|10|5|1|23|20930.23|0.05|0.04|N|O|1998-09-04|1998-07-04|1998-09-18|TAKE BACK RETURN|AIR|ously slow packages poach whithout the|
-5507|138|9|2|48|49830.24|0.03|0.01|N|O|1998-08-03|1998-08-10|1998-08-24|DELIVER IN PERSON|AIR|yly idle deposits. final, final fox|
-5507|45|2|3|4|3780.16|0.04|0.06|N|O|1998-06-06|1998-07-02|1998-06-27|TAKE BACK RETURN|RAIL|into beans are|
-5507|67|6|4|22|21275.32|0.07|0.01|N|O|1998-07-08|1998-08-10|1998-07-22|DELIVER IN PERSON|TRUCK|gular ideas. carefully unu|
-5507|132|3|5|48|49542.24|0.06|0.01|N|O|1998-07-21|1998-07-15|1998-07-31|DELIVER IN PERSON|SHIP|uriously regular acc|
-5508|117|7|1|4|4068.44|0.10|0.04|N|O|1996-09-01|1996-08-02|1996-09-17|COLLECT COD|AIR|fluffily about the even |
-5509|197|10|1|3|3291.57|0.03|0.02|A|F|1994-06-14|1994-05-11|1994-06-17|NONE|SHIP| quickly fin|
-5509|99|3|2|17|16984.53|0.03|0.07|R|F|1994-07-01|1994-06-30|1994-07-31|COLLECT COD|AIR|ccounts wake ar|
-5509|93|7|3|30|29792.70|0.04|0.04|A|F|1994-07-23|1994-06-01|1994-08-08|NONE|AIR|counts haggle pinto beans. furiously |
-5509|100|3|4|45|45004.50|0.00|0.07|A|F|1994-07-24|1994-05-28|1994-08-20|COLLECT COD|AIR|counts sleep. f|
-5509|156|8|5|35|36965.25|0.04|0.03|A|F|1994-04-17|1994-06-29|1994-04-24|COLLECT COD|RAIL|c accounts. ca|
-5510|16|6|1|8|7328.08|0.01|0.01|A|F|1993-03-16|1993-03-29|1993-03-24|DELIVER IN PERSON|FOB|n packages boost sly|
-5510|20|10|2|46|42320.92|0.02|0.07|A|F|1993-03-12|1993-02-09|1993-03-19|NONE|TRUCK|silent packages cajole doggedly regular |
-5510|162|3|3|47|49921.52|0.03|0.01|A|F|1993-01-20|1993-03-25|1993-02-15|DELIVER IN PERSON|SHIP|riously even requests. slyly bold accou|
-5510|24|7|4|29|26796.58|0.09|0.08|A|F|1993-02-28|1993-03-28|1993-03-12|COLLECT COD|AIR|lithely fluffily ironic req|
-5511|165|4|1|16|17042.56|0.10|0.05|A|F|1995-02-02|1995-01-06|1995-02-19|TAKE BACK RETURN|RAIL|thely bold theodolites |
-5511|165|10|2|31|33019.96|0.09|0.01|A|F|1995-02-23|1995-01-21|1995-03-02|COLLECT COD|REG AIR|gular excuses. fluffily even pinto beans c|
-5511|128|3|3|49|50377.88|0.05|0.05|R|F|1994-12-21|1995-01-27|1994-12-26|NONE|REG AIR|bout the requests. theodolites |
-5511|122|7|4|4|4088.48|0.08|0.02|R|F|1994-12-28|1995-01-16|1995-01-24|TAKE BACK RETURN|RAIL|lphins. carefully blithe de|
-5511|9|2|5|23|20907.00|0.10|0.07|A|F|1995-03-11|1995-01-21|1995-03-27|TAKE BACK RETURN|TRUCK|ing dugouts |
-5511|188|9|6|5|5440.90|0.08|0.05|R|F|1994-12-29|1995-01-16|1995-01-24|DELIVER IN PERSON|MAIL|al theodolites. blithely final de|
-5511|143|2|7|23|23992.22|0.02|0.07|R|F|1995-02-03|1995-01-05|1995-02-18|COLLECT COD|REG AIR|ully deposits. warthogs hagg|
-5536|90|1|1|14|13861.26|0.08|0.06|N|O|1998-05-18|1998-05-08|1998-06-05|COLLECT COD|MAIL|instructions sleep |
-5536|62|1|2|20|19241.20|0.08|0.04|N|O|1998-05-08|1998-05-10|1998-05-31|DELIVER IN PERSON|REG AIR|equests mo|
-5536|197|9|3|35|38401.65|0.07|0.02|N|O|1998-05-19|1998-06-08|1998-06-05|NONE|MAIL|c, final theo|
-5536|9|10|4|30|27270.00|0.05|0.07|N|O|1998-04-15|1998-05-23|1998-05-03|NONE|FOB|arefully regular theodolites according|
-5536|141|2|5|11|11452.54|0.02|0.08|N|O|1998-03-18|1998-05-12|1998-03-28|TAKE BACK RETURN|FOB| snooze furio|
-5537|45|8|1|10|9450.40|0.05|0.08|N|O|1997-01-13|1996-12-25|1997-01-28|TAKE BACK RETURN|AIR| sleep carefully slyly bold depos|
-5537|150|9|2|15|15752.25|0.07|0.04|N|O|1997-01-13|1996-12-25|1997-01-27|COLLECT COD|AIR|eposits. permanently pending packag|
-5537|151|6|3|39|40994.85|0.03|0.00|N|O|1996-12-17|1996-11-08|1997-01-15|COLLECT COD|REG AIR| slyly bold packages are. qu|
-5537|97|1|4|38|37889.42|0.01|0.00|N|O|1996-11-06|1996-11-23|1996-11-12|TAKE BACK RETURN|MAIL|s above the carefully ironic deposits |
-5538|154|9|1|42|44274.30|0.05|0.00|A|F|1994-04-08|1994-03-17|1994-05-05|DELIVER IN PERSON|REG AIR|vely ironic accounts. furiously unusual acc|
-5538|121|2|2|4|4084.48|0.02|0.03|R|F|1994-03-21|1994-02-17|1994-04-11|TAKE BACK RETURN|REG AIR|ithely along the c|
-5538|19|3|3|38|34922.38|0.03|0.06|R|F|1994-03-17|1994-02-11|1994-04-10|TAKE BACK RETURN|FOB|ular pinto beans. silent ideas above |
-5538|78|6|4|9|8802.63|0.00|0.01|R|F|1993-12-26|1994-01-31|1994-01-03|TAKE BACK RETURN|REG AIR|encies across the blithely fina|
-5539|65|10|1|42|40532.52|0.10|0.08|A|F|1994-09-29|1994-09-17|1994-10-20|DELIVER IN PERSON|RAIL|ons across the carefully si|
-5540|181|2|1|42|45409.56|0.02|0.08|N|O|1996-11-12|1996-12-18|1996-12-05|TAKE BACK RETURN|RAIL|ss dolphins haggle |
-5540|102|3|2|2|2004.20|0.06|0.02|N|O|1996-12-12|1997-01-09|1996-12-25|DELIVER IN PERSON|MAIL|nic asymptotes could hav|
-5540|64|3|3|19|18317.14|0.01|0.03|N|O|1997-02-06|1996-11-18|1997-02-20|DELIVER IN PERSON|SHIP| slyly slyl|
-5540|72|10|4|24|23329.68|0.10|0.05|N|O|1997-01-09|1996-12-02|1997-01-23|COLLECT COD|FOB|deposits! ironic depths may engage-- b|
-5541|96|8|1|39|38847.51|0.08|0.05|N|O|1997-11-17|1997-12-27|1997-12-11|TAKE BACK RETURN|RAIL|ding theodolites haggle against the slyly |
-5542|189|10|1|6|6535.08|0.03|0.01|N|O|1996-06-14|1996-05-28|1996-07-11|DELIVER IN PERSON|TRUCK| foxes doubt. theodolites ca|
-5543|143|10|1|14|14603.96|0.02|0.03|R|F|1993-10-09|1993-12-09|1993-10-21|NONE|SHIP|ecial reque|
-5543|162|7|2|22|23367.52|0.04|0.00|A|F|1993-11-06|1993-11-02|1993-12-02|DELIVER IN PERSON|SHIP|instructions. deposits use quickly. ir|
-5543|67|6|3|3|2901.18|0.08|0.05|R|F|1993-11-18|1993-11-05|1993-12-17|NONE|FOB|ress, even |
-5543|147|10|4|8|8377.12|0.05|0.01|R|F|1993-10-28|1993-11-18|1993-11-07|NONE|SHIP|totes? iron|
-5543|80|1|5|32|31362.56|0.03|0.03|R|F|1993-10-04|1993-11-14|1993-11-03|DELIVER IN PERSON|AIR|ully around the |
-5543|184|5|6|1|1084.18|0.03|0.07|A|F|1993-10-29|1993-11-11|1993-11-23|TAKE BACK RETURN|FOB|uriously. slyly|
-5543|129|8|7|39|40135.68|0.06|0.00|R|F|1993-10-07|1993-11-15|1993-10-28|TAKE BACK RETURN|MAIL|l excuses are furiously. slyly unusual requ|
-5568|166|5|1|50|53308.00|0.05|0.05|N|O|1995-07-14|1995-09-04|1995-08-03|COLLECT COD|TRUCK|furious ide|
-5568|44|5|2|18|16992.72|0.01|0.08|N|O|1995-08-19|1995-08-18|1995-08-24|DELIVER IN PERSON|SHIP|structions haggle. carefully regular |
-5568|89|10|3|35|34617.80|0.08|0.07|N|O|1995-09-17|1995-09-04|1995-10-14|NONE|SHIP|lyly. blit|
-5569|29|4|1|25|23225.50|0.10|0.03|R|F|1993-06-29|1993-07-18|1993-07-05|TAKE BACK RETURN|TRUCK| deposits cajole above|
-5569|58|10|2|26|24909.30|0.09|0.06|A|F|1993-08-21|1993-07-22|1993-09-09|DELIVER IN PERSON|MAIL|pitaphs. ironic req|
-5569|55|3|3|48|45842.40|0.02|0.03|R|F|1993-06-16|1993-06-15|1993-07-09|COLLECT COD|SHIP|the fluffily|
-5569|147|10|4|19|19895.66|0.10|0.08|R|F|1993-07-30|1993-06-21|1993-08-13|TAKE BACK RETURN|FOB| detect ca|
-5569|59|1|5|15|14385.75|0.02|0.06|A|F|1993-06-29|1993-07-06|1993-07-05|DELIVER IN PERSON|MAIL|lithely bold requests boost fur|
-5570|161|6|1|37|39262.92|0.08|0.02|N|O|1996-08-29|1996-10-23|1996-09-11|NONE|RAIL|y ironic pin|
-5570|39|10|2|15|14085.45|0.09|0.02|N|O|1996-10-04|1996-10-05|1996-10-28|TAKE BACK RETURN|REG AIR|beans nag slyly special, regular pack|
-5570|60|1|3|29|27841.74|0.02|0.05|N|O|1996-10-12|1996-10-20|1996-11-08|TAKE BACK RETURN|SHIP|he silent, enticing requests.|
-5571|154|2|1|32|33732.80|0.05|0.01|R|F|1992-12-25|1993-03-01|1993-01-23|NONE|FOB| the blithely even packages nag q|
-5571|94|8|2|31|30816.79|0.09|0.07|R|F|1993-01-05|1993-01-18|1993-02-04|DELIVER IN PERSON|SHIP|uffily even accounts. quickly re|
-5571|92|6|3|18|17857.62|0.10|0.05|R|F|1993-03-11|1993-02-28|1993-04-03|COLLECT COD|REG AIR|uests haggle furiously pending d|
-5572|22|1|1|24|22128.48|0.08|0.08|R|F|1994-10-30|1994-10-02|1994-11-27|TAKE BACK RETURN|MAIL|ests cajole. evenly ironic exc|
-5572|172|10|2|27|28948.59|0.03|0.04|A|F|1994-08-29|1994-09-10|1994-08-30|TAKE BACK RETURN|SHIP| accounts. carefully final accoun|
-5572|87|8|3|19|18754.52|0.10|0.00|A|F|1994-08-12|1994-10-07|1994-09-01|DELIVER IN PERSON|RAIL|es. final, final requests wake blithely ag|
-5572|135|1|4|46|47615.98|0.02|0.01|R|F|1994-09-08|1994-10-14|1994-10-01|NONE|REG AIR|ully regular platelet|
-5572|24|3|5|34|31416.68|0.10|0.08|R|F|1994-10-22|1994-08-16|1994-11-08|NONE|TRUCK|asymptotes integrate. s|
-5572|101|2|6|14|14015.40|0.04|0.05|A|F|1994-11-02|1994-09-20|1994-11-03|COLLECT COD|RAIL|he fluffily express packages. fluffily fina|
-5572|26|1|7|24|22224.48|0.01|0.05|R|F|1994-09-26|1994-09-04|1994-10-22|DELIVER IN PERSON|FOB| beans. foxes sleep fluffily across th|
-5573|21|6|1|32|29472.64|0.05|0.07|N|O|1996-09-30|1996-10-25|1996-10-15|DELIVER IN PERSON|RAIL|egular depths haggl|
-5573|50|3|2|2|1900.10|0.01|0.07|N|O|1996-08-26|1996-09-29|1996-09-04|COLLECT COD|TRUCK| even foxes. specia|
-5573|11|8|3|46|41906.46|0.06|0.01|N|O|1996-11-04|1996-10-02|1996-11-15|DELIVER IN PERSON|MAIL|s haggle qu|
-5573|169|4|4|43|45973.88|0.10|0.03|N|O|1996-10-22|1996-11-03|1996-11-02|TAKE BACK RETURN|FOB| furiously pending packages against |
-5573|138|9|5|43|44639.59|0.05|0.04|N|O|1996-09-09|1996-09-24|1996-09-28|COLLECT COD|AIR| bold package|
-5574|185|6|1|46|49918.28|0.02|0.07|A|F|1992-06-20|1992-04-19|1992-07-11|NONE|FOB|arefully express requests wake furiousl|
-5574|33|4|2|21|19593.63|0.05|0.08|A|F|1992-03-22|1992-04-26|1992-04-16|TAKE BACK RETURN|TRUCK|fully final dugouts. express foxes nag |
-5574|119|6|3|27|27515.97|0.10|0.06|R|F|1992-05-08|1992-05-19|1992-06-05|TAKE BACK RETURN|REG AIR|ecial realms. furiously entici|
-5574|94|6|4|14|13917.26|0.09|0.01|R|F|1992-05-20|1992-04-09|1992-05-23|COLLECT COD|REG AIR| use slyly carefully special requests? slyl|
-5574|85|6|5|19|18716.52|0.05|0.03|A|F|1992-05-28|1992-04-24|1992-06-11|TAKE BACK RETURN|REG AIR|old deposits int|
-5575|58|10|1|7|6706.35|0.01|0.07|N|O|1995-10-01|1995-09-30|1995-10-06|NONE|FOB|s. slyly pending theodolites prin|
-5575|31|7|2|23|21413.69|0.04|0.02|N|O|1995-10-26|1995-10-09|1995-11-13|TAKE BACK RETURN|AIR|enticingly final requests. ironically|
-5575|63|8|3|16|15408.96|0.00|0.07|N|O|1995-08-17|1995-10-14|1995-08-30|NONE|RAIL|jole boldly beyond the final as|
-5575|110|1|4|7|7070.77|0.01|0.04|N|O|1995-10-15|1995-09-14|1995-10-18|DELIVER IN PERSON|RAIL|special requests. final, final |
-5600|187|8|1|34|36964.12|0.02|0.00|N|O|1997-03-22|1997-04-05|1997-04-09|TAKE BACK RETURN|MAIL|ly above the stealthy ideas. permane|
-5600|8|5|2|19|17252.00|0.00|0.01|N|O|1997-04-10|1997-03-24|1997-04-16|TAKE BACK RETURN|TRUCK|dencies. carefully p|
-5601|38|4|1|29|27202.87|0.09|0.04|A|F|1992-04-06|1992-02-24|1992-04-29|DELIVER IN PERSON|TRUCK| ironic ideas. final|
-5601|164|1|2|45|47887.20|0.10|0.07|A|F|1992-03-25|1992-04-03|1992-04-04|TAKE BACK RETURN|MAIL|ts-- blithely final accounts cajole. carefu|
-5601|73|4|3|38|36976.66|0.07|0.00|A|F|1992-01-08|1992-03-01|1992-01-09|TAKE BACK RETURN|REG AIR|ter the evenly final deposit|
-5601|148|5|4|12|12577.68|0.03|0.01|A|F|1992-02-27|1992-03-16|1992-03-27|COLLECT COD|TRUCK|ep carefully a|
-5602|176|4|1|9|9685.53|0.08|0.03|N|O|1997-10-14|1997-09-14|1997-11-11|COLLECT COD|FOB|lar foxes; quickly ironic ac|
-5602|62|7|2|31|29823.86|0.04|0.08|N|O|1997-09-04|1997-10-24|1997-09-07|NONE|TRUCK|rate fluffily regular platelets. blithel|
-5602|68|5|3|30|29041.80|0.04|0.00|N|O|1997-09-20|1997-10-25|1997-10-12|DELIVER IN PERSON|FOB|e slyly even packages. careful|
-5603|98|2|1|50|49904.50|0.03|0.02|A|F|1992-10-06|1992-08-20|1992-10-08|COLLECT COD|SHIP|final theodolites accor|
-5603|116|6|2|49|49789.39|0.06|0.05|A|F|1992-06-24|1992-07-28|1992-07-01|DELIVER IN PERSON|FOB|fully silent requests. carefully fin|
-5603|32|8|3|49|45669.47|0.00|0.02|R|F|1992-10-07|1992-07-21|1992-10-10|DELIVER IN PERSON|TRUCK|nic, pending dependencies print|
-5604|136|7|1|44|45589.72|0.05|0.01|N|O|1998-08-06|1998-07-08|1998-09-04|NONE|RAIL|efully ironi|
-5604|136|2|2|49|50770.37|0.10|0.00|N|O|1998-05-02|1998-07-07|1998-05-20|NONE|FOB|ove the regula|
-5604|78|8|3|10|9780.70|0.07|0.05|N|O|1998-08-03|1998-06-23|1998-08-04|COLLECT COD|SHIP|ly final realms wake blit|
-5605|87|8|1|50|49354.00|0.08|0.05|N|O|1996-08-26|1996-10-15|1996-09-04|TAKE BACK RETURN|RAIL|instructions sleep carefully ironic req|
-5605|151|2|2|7|7358.05|0.06|0.01|N|O|1996-12-13|1996-10-13|1996-12-15|TAKE BACK RETURN|FOB|lowly special courts nag among the furi|
-5605|173|2|3|3|3219.51|0.01|0.02|N|O|1996-09-01|1996-10-02|1996-09-20|TAKE BACK RETURN|AIR|posits. accounts boost. t|
-5605|55|3|4|45|42977.25|0.00|0.01|N|O|1996-09-05|1996-10-04|1996-09-13|COLLECT COD|FOB|ly unusual instructions. carefully ironic p|
-5605|70|7|5|39|37832.73|0.00|0.08|N|O|1996-12-13|1996-11-03|1996-12-24|DELIVER IN PERSON|REG AIR|cial deposits. theodolites w|
-5605|166|7|6|29|30918.64|0.08|0.08|N|O|1996-09-19|1996-10-22|1996-10-06|DELIVER IN PERSON|SHIP| quickly. quickly pending sen|
-5606|174|5|1|47|50485.99|0.10|0.04|N|O|1996-12-23|1997-01-31|1997-01-20|DELIVER IN PERSON|REG AIR|carefully final foxes. pending, final|
-5606|92|3|2|34|33731.06|0.09|0.06|N|O|1997-02-23|1997-02-08|1997-03-09|TAKE BACK RETURN|REG AIR|uses. slyly final |
-5606|127|8|3|46|47247.52|0.04|0.00|N|O|1997-03-11|1997-01-13|1997-03-23|DELIVER IN PERSON|REG AIR|ter the ironic accounts. even, ironic depos|
-5606|82|3|4|30|29462.40|0.08|0.04|N|O|1997-02-06|1997-01-26|1997-02-16|DELIVER IN PERSON|REG AIR| nag always. blithely express packages |
-5606|7|2|5|25|22675.00|0.06|0.00|N|O|1996-12-25|1997-01-12|1997-01-11|TAKE BACK RETURN|AIR|breach about the furiously bold |
-5606|154|5|6|3|3162.45|0.04|0.06|N|O|1997-01-11|1997-01-04|1997-02-08|COLLECT COD|AIR| sauternes. asympto|
-5606|74|5|7|46|44807.22|0.07|0.01|N|O|1997-02-01|1997-01-31|1997-02-15|DELIVER IN PERSON|TRUCK|ow requests wake around the regular accoun|
-5607|132|8|1|23|23738.99|0.02|0.06|R|F|1992-04-17|1992-02-12|1992-04-30|DELIVER IN PERSON|MAIL|the special, final patterns |
-5632|10|3|1|48|43680.48|0.06|0.06|N|O|1996-05-08|1996-03-24|1996-06-04|TAKE BACK RETURN|FOB|unts. decoys u|
-5632|106|7|2|21|21128.10|0.02|0.08|N|O|1996-03-22|1996-03-10|1996-04-10|NONE|AIR|refully regular pinto beans. ironic reques|
-5632|67|2|3|24|23209.44|0.04|0.06|N|O|1996-03-23|1996-04-02|1996-03-30|TAKE BACK RETURN|MAIL|beans detect. quickly final i|
-5633|160|2|1|28|29684.48|0.02|0.00|N|O|1998-08-14|1998-07-24|1998-08-26|TAKE BACK RETURN|SHIP|as boost quickly. unusual pinto |
-5633|102|3|2|10|10021.00|0.09|0.04|N|O|1998-07-15|1998-08-03|1998-08-03|COLLECT COD|AIR|its cajole fluffily fluffily special pinto|
-5633|46|7|3|27|25543.08|0.03|0.02|N|O|1998-09-28|1998-07-28|1998-10-12|DELIVER IN PERSON|AIR|ructions. even ideas haggle carefully r|
-5633|164|5|4|50|53208.00|0.02|0.05|N|O|1998-07-23|1998-07-09|1998-08-21|DELIVER IN PERSON|TRUCK|ts. slyly regular |
-5633|100|2|5|48|48004.80|0.01|0.05|N|O|1998-06-24|1998-07-22|1998-07-18|DELIVER IN PERSON|TRUCK|even courts haggle slyly at the requ|
-5633|107|2|6|1|1007.10|0.02|0.03|N|O|1998-09-29|1998-08-28|1998-10-19|NONE|RAIL|thely notornis: |
-5633|11|5|7|39|35529.39|0.02|0.08|N|O|1998-07-12|1998-07-03|1998-07-13|COLLECT COD|TRUCK|ding ideas cajole furiously after|
-5634|185|6|1|26|28214.68|0.10|0.08|N|O|1996-10-29|1996-09-15|1996-11-24|COLLECT COD|REG AIR|ptotes mold qu|
-5634|175|3|2|22|23653.74|0.02|0.05|N|O|1996-09-01|1996-08-31|1996-09-05|DELIVER IN PERSON|MAIL|silently unusual foxes above the blithely|
-5634|109|6|3|16|16145.60|0.08|0.02|N|O|1996-11-15|1996-09-14|1996-12-04|NONE|AIR|ess ideas are carefully pending, even re|
-5634|182|3|4|29|31383.22|0.00|0.01|N|O|1996-08-10|1996-10-29|1996-08-11|TAKE BACK RETURN|MAIL|ely final ideas. deposits sleep. reg|
-5634|1|2|5|1|901.00|0.04|0.02|N|O|1996-10-02|1996-10-21|1996-10-27|COLLECT COD|MAIL|ctions haggle carefully. carefully clo|
-5635|83|4|1|43|42272.44|0.03|0.00|R|F|1992-10-12|1992-09-29|1992-11-01|TAKE BACK RETURN|TRUCK|cross the d|
-5635|72|3|2|5|4860.35|0.05|0.08|R|F|1992-10-02|1992-11-05|1992-10-26|TAKE BACK RETURN|REG AIR|yly along the ironic, fi|
-5635|72|1|3|12|11664.84|0.09|0.02|A|F|1992-10-18|1992-09-24|1992-11-17|NONE|REG AIR|ke slyly against the carefully final req|
-5635|8|5|4|40|36320.00|0.03|0.01|A|F|1992-09-25|1992-11-05|1992-10-11|NONE|FOB|pending foxes. regular packages|
-5635|169|10|5|38|40628.08|0.05|0.06|A|F|1992-10-09|1992-09-25|1992-10-18|NONE|MAIL|ckly pendin|
-5635|162|9|6|23|24429.68|0.05|0.04|A|F|1992-08-24|1992-11-10|1992-09-21|NONE|AIR|ily pending packages. bold,|
-5635|137|3|7|32|33188.16|0.03|0.08|R|F|1992-11-24|1992-09-20|1992-12-17|TAKE BACK RETURN|TRUCK|slyly even|
-5636|70|9|1|18|17461.26|0.05|0.03|R|F|1995-05-14|1995-05-17|1995-06-12|DELIVER IN PERSON|REG AIR|slyly express requests. furiously pen|
-5636|70|5|2|26|25221.82|0.03|0.06|A|F|1995-03-05|1995-05-16|1995-03-23|TAKE BACK RETURN|AIR| furiously final pinto beans o|
-5636|90|1|3|21|20791.89|0.03|0.03|A|F|1995-03-13|1995-05-11|1995-03-24|COLLECT COD|AIR| are furiously unusual |
-5636|109|6|4|15|15136.50|0.03|0.04|R|F|1995-04-21|1995-04-30|1995-05-05|DELIVER IN PERSON|REG AIR|efully special|
-5636|47|4|5|13|12311.52|0.10|0.03|A|F|1995-05-11|1995-04-27|1995-05-26|COLLECT COD|AIR|en, fluffy accounts amon|
-5636|12|3|6|33|30096.33|0.06|0.04|A|F|1995-03-09|1995-04-05|1995-03-23|DELIVER IN PERSON|MAIL|ding to the |
-5636|134|10|7|24|24819.12|0.10|0.05|R|F|1995-04-12|1995-03-27|1995-04-16|DELIVER IN PERSON|RAIL|counts sleep furiously b|
-5637|47|4|1|14|13258.56|0.03|0.05|N|O|1996-07-20|1996-07-26|1996-08-14|COLLECT COD|MAIL|y bold deposits wak|
-5637|172|3|2|35|37525.95|0.09|0.08|N|O|1996-08-01|1996-08-04|1996-08-20|NONE|AIR|s sleep blithely alongside of the ironic|
-5637|96|10|3|22|21913.98|0.01|0.07|N|O|1996-08-28|1996-07-30|1996-09-17|COLLECT COD|REG AIR|nding requests are ca|
-5637|66|1|4|16|15456.96|0.03|0.03|N|O|1996-09-08|1996-08-31|1996-09-29|TAKE BACK RETURN|TRUCK|d packages. express requests|
-5637|196|7|5|10|10961.90|0.01|0.00|N|O|1996-08-25|1996-08-11|1996-09-23|TAKE BACK RETURN|MAIL|ickly ironic gifts. blithely even cour|
-5637|129|4|6|27|27786.24|0.01|0.05|N|O|1996-06-27|1996-08-09|1996-07-27|DELIVER IN PERSON|REG AIR|oss the carefully express warhorses|
-5638|138|9|1|45|46715.85|0.09|0.07|A|F|1994-05-17|1994-03-09|1994-06-15|NONE|TRUCK|ar foxes. fluffily pending accounts |
-5638|168|3|2|12|12817.92|0.02|0.05|A|F|1994-02-05|1994-04-01|1994-02-25|COLLECT COD|TRUCK|n, even requests. furiously ironic not|
-5638|162|9|3|21|22305.36|0.08|0.00|A|F|1994-03-13|1994-03-27|1994-03-17|DELIVER IN PERSON|TRUCK|press courts use f|
-5639|47|10|1|11|10417.44|0.09|0.02|R|F|1994-09-18|1994-07-10|1994-10-12|TAKE BACK RETURN|SHIP|g the unusual pinto beans caj|
-5664|122|1|1|25|25553.00|0.00|0.06|N|O|1998-10-29|1998-09-23|1998-11-25|COLLECT COD|FOB|eposits: furiously ironic grouch|
-5664|173|2|2|9|9658.53|0.07|0.05|N|O|1998-07-31|1998-08-26|1998-08-12|COLLECT COD|RAIL| ironic deposits haggle furiously. re|
-5664|53|4|3|31|29544.55|0.01|0.03|N|O|1998-11-10|1998-09-12|1998-12-07|TAKE BACK RETURN|FOB|ainst the never silent request|
-5664|138|9|4|33|34258.29|0.08|0.03|N|O|1998-08-29|1998-09-17|1998-09-25|DELIVER IN PERSON|RAIL|d the final |
-5664|112|2|5|44|44532.84|0.01|0.06|N|O|1998-09-24|1998-09-26|1998-10-23|NONE|TRUCK|ang thinly bold pa|
-5664|68|5|6|34|32914.04|0.09|0.01|N|O|1998-09-10|1998-10-05|1998-09-15|COLLECT COD|RAIL|st. fluffily pending foxes na|
-5664|182|3|7|9|9739.62|0.01|0.05|N|O|1998-11-04|1998-10-15|1998-11-20|TAKE BACK RETURN|REG AIR|yly. express ideas agai|
-5665|101|2|1|32|32035.20|0.00|0.02|A|F|1993-08-11|1993-08-01|1993-09-07|NONE|AIR|f the slyly even requests! regular request|
-5665|5|8|2|14|12670.00|0.02|0.00|R|F|1993-06-29|1993-09-16|1993-07-16|DELIVER IN PERSON|AIR|- special pinto beans sleep quickly blithel|
-5665|158|9|3|41|43384.15|0.09|0.02|A|F|1993-08-23|1993-09-22|1993-09-11|COLLECT COD|REG AIR| idle ideas across |
-5665|46|9|4|47|44463.88|0.01|0.01|A|F|1993-10-06|1993-09-19|1993-11-01|NONE|RAIL|s mold fluffily. final deposits along the|
-5666|122|5|1|7|7154.84|0.09|0.08|R|F|1994-05-10|1994-04-06|1994-05-21|NONE|FOB| ideas. regular packag|
-5666|36|7|2|14|13104.42|0.08|0.01|A|F|1994-02-27|1994-04-11|1994-03-06|DELIVER IN PERSON|TRUCK|lar deposits nag against the slyly final d|
-5666|193|6|3|39|42634.41|0.00|0.01|A|F|1994-05-13|1994-04-02|1994-06-12|DELIVER IN PERSON|TRUCK|the even, final foxes. quickly iron|
-5666|131|2|4|24|24747.12|0.07|0.01|R|F|1994-02-14|1994-03-09|1994-03-06|DELIVER IN PERSON|FOB|on the carefully pending asympto|
-5666|109|10|5|36|36327.60|0.07|0.07|R|F|1994-03-15|1994-03-16|1994-03-18|COLLECT COD|TRUCK|accounts. furiousl|
-5667|145|4|1|37|38670.18|0.09|0.06|N|O|1995-09-24|1995-09-17|1995-10-03|NONE|REG AIR|s cajole blit|
-5668|4|9|1|15|13560.00|0.03|0.04|A|F|1995-04-06|1995-05-12|1995-04-17|COLLECT COD|FOB| the express, pending requests. bo|
-5669|191|2|1|7|7638.33|0.06|0.06|N|O|1996-06-19|1996-07-07|1996-07-11|COLLECT COD|SHIP|yly regular requests lose blithely. careful|
-5669|156|8|2|2|2112.30|0.06|0.07|N|O|1996-08-04|1996-06-15|1996-08-20|NONE|SHIP| blithely excuses. slyly|
-5669|158|9|3|40|42326.00|0.00|0.02|N|O|1996-08-30|1996-06-15|1996-09-07|TAKE BACK RETURN|FOB|ar accounts alongside of the final, p|
-5669|90|1|4|31|30692.79|0.04|0.05|N|O|1996-08-05|1996-06-10|1996-08-29|COLLECT COD|AIR|to beans against the regular depo|
-5669|140|6|5|30|31204.20|0.07|0.01|N|O|1996-07-14|1996-07-28|1996-08-10|TAKE BACK RETURN|TRUCK|l accounts. care|
-5670|90|1|1|27|26732.43|0.10|0.06|R|F|1993-05-09|1993-05-30|1993-06-06|TAKE BACK RETURN|REG AIR| ideas promise bli|
-5670|186|7|2|43|46705.74|0.06|0.00|A|F|1993-07-09|1993-06-03|1993-07-14|DELIVER IN PERSON|FOB|ests in place of the carefully sly depos|
-5670|7|8|3|24|21768.00|0.09|0.04|A|F|1993-07-17|1993-07-01|1993-08-03|NONE|AIR|press, express requests haggle|
-5670|142|9|4|11|11463.54|0.06|0.06|R|F|1993-07-11|1993-06-26|1993-07-24|DELIVER IN PERSON|MAIL|etect furiously among the even pin|
-5671|120|7|1|25|25503.00|0.00|0.08|N|O|1998-04-17|1998-03-28|1998-05-06|DELIVER IN PERSON|AIR|cording to the quickly final requests-- |
-5671|129|8|2|46|47339.52|0.05|0.08|N|O|1998-03-28|1998-04-22|1998-04-19|TAKE BACK RETURN|MAIL|lar pinto beans detect care|
-5671|172|10|3|13|13938.21|0.10|0.06|N|O|1998-03-02|1998-04-03|1998-03-08|TAKE BACK RETURN|TRUCK|bold theodolites about|
-5671|111|1|4|42|42466.62|0.00|0.07|N|O|1998-02-17|1998-04-24|1998-03-17|TAKE BACK RETURN|SHIP|carefully slyly special deposit|
-5671|129|4|5|13|13378.56|0.09|0.00|N|O|1998-04-24|1998-03-26|1998-04-27|NONE|REG AIR|ers according to the ironic, unusual excu|
-5671|114|1|6|30|30423.30|0.09|0.07|N|O|1998-06-06|1998-04-15|1998-07-01|DELIVER IN PERSON|TRUCK|fily ironi|
-5696|137|3|1|28|29039.64|0.03|0.06|N|O|1995-07-03|1995-06-14|1995-07-27|COLLECT COD|REG AIR| the fluffily brave pearls |
-5696|59|1|2|46|44116.30|0.01|0.00|N|O|1995-08-10|1995-07-08|1995-08-25|COLLECT COD|AIR|ter the instruct|
-5696|167|2|3|42|44820.72|0.04|0.01|N|F|1995-06-06|1995-06-11|1995-06-19|TAKE BACK RETURN|SHIP|te furious|
-5696|98|10|4|20|19961.80|0.08|0.00|N|O|1995-06-25|1995-07-18|1995-07-16|NONE|TRUCK|silent, pending ideas sleep fluffil|
-5696|124|9|5|19|19458.28|0.07|0.05|N|O|1995-08-31|1995-06-13|1995-09-10|COLLECT COD|SHIP|unusual requests sleep furiously ru|
-5696|132|8|6|37|38188.81|0.04|0.05|N|O|1995-07-21|1995-06-23|1995-08-19|NONE|RAIL| carefully expres|
-5696|102|9|7|6|6012.60|0.07|0.05|N|O|1995-08-03|1995-07-15|1995-09-01|DELIVER IN PERSON|REG AIR|n patterns lose slyly fina|
-5697|55|7|1|24|22921.20|0.10|0.07|R|F|1992-10-27|1992-11-28|1992-11-20|NONE|RAIL|uffily iro|
-5697|16|10|2|43|39388.43|0.06|0.02|R|F|1992-12-08|1992-12-03|1992-12-17|TAKE BACK RETURN|FOB|blithely reg|
-5697|56|8|3|42|40154.10|0.03|0.01|A|F|1992-12-19|1992-12-08|1993-01-03|COLLECT COD|TRUCK|inal theodolites cajole after the bli|
-5698|11|8|1|30|27330.30|0.01|0.05|A|F|1994-05-26|1994-08-16|1994-06-19|COLLECT COD|AIR|its. quickly regular foxes aro|
-5698|163|4|2|25|26579.00|0.08|0.07|R|F|1994-08-06|1994-06-21|1994-08-25|NONE|SHIP| asymptotes sleep slyly above the|
-5698|155|3|3|45|47481.75|0.03|0.01|A|F|1994-06-23|1994-08-13|1994-07-02|NONE|FOB|ng excuses. slyly express asymptotes|
-5698|58|6|4|15|14370.75|0.07|0.08|R|F|1994-06-29|1994-07-03|1994-07-02|COLLECT COD|REG AIR|ly ironic frets haggle carefully |
-5698|140|1|5|37|38485.18|0.06|0.06|A|F|1994-06-30|1994-06-23|1994-07-22|TAKE BACK RETURN|SHIP|ts. even, ironic |
-5698|188|9|6|1|1088.18|0.06|0.04|R|F|1994-05-31|1994-07-10|1994-06-03|DELIVER IN PERSON|MAIL|nts. slyly quiet pinto beans nag carefu|
-5699|2|7|1|24|21648.00|0.01|0.07|A|F|1992-10-21|1992-09-04|1992-11-04|COLLECT COD|AIR|kages. fin|
-5699|55|10|2|26|24831.30|0.06|0.06|R|F|1992-08-11|1992-09-21|1992-08-14|COLLECT COD|MAIL|y final deposits wake fluffily u|
-5699|18|2|3|48|44064.48|0.10|0.05|R|F|1992-11-23|1992-10-20|1992-11-29|DELIVER IN PERSON|TRUCK|s. carefully regul|
-5699|55|3|4|46|43932.30|0.08|0.02|A|F|1992-11-28|1992-09-23|1992-12-27|TAKE BACK RETURN|FOB|o the slyly|
-5699|28|7|5|21|19488.42|0.02|0.02|A|F|1992-10-13|1992-09-30|1992-10-19|NONE|MAIL|lyly final pla|
-5699|191|5|6|30|32735.70|0.08|0.05|R|F|1992-11-13|1992-10-01|1992-12-11|DELIVER IN PERSON|AIR| the carefully final |
-5699|129|8|7|45|46310.40|0.09|0.06|A|F|1992-09-23|1992-10-22|1992-10-04|DELIVER IN PERSON|SHIP|rmanent packages sleep across the f|
-5700|168|5|1|24|25635.84|0.09|0.00|N|O|1997-12-26|1998-01-28|1998-01-18|DELIVER IN PERSON|REG AIR|ix carefully |
-5700|123|8|2|30|30693.60|0.00|0.06|N|O|1998-04-19|1998-03-13|1998-04-27|COLLECT COD|MAIL|ly blithely final instructions. fl|
-5700|126|5|3|23|23600.76|0.03|0.05|N|O|1998-01-30|1998-01-31|1998-01-31|NONE|REG AIR| wake quickly carefully fluffy hockey|
-5701|54|2|1|17|16218.85|0.02|0.05|N|O|1997-03-27|1997-04-08|1997-04-21|DELIVER IN PERSON|RAIL|tes. quickly final a|
-5702|77|7|1|44|42991.08|0.06|0.02|R|F|1994-01-04|1993-11-25|1994-01-22|NONE|RAIL|lites. carefully final requests doze b|
-5702|86|7|2|37|36484.96|0.10|0.05|R|F|1993-12-14|1993-10-21|1994-01-08|NONE|FOB|ix slyly. regular instructions slee|
-5702|131|7|3|44|45369.72|0.00|0.02|R|F|1993-11-28|1993-12-02|1993-12-22|NONE|TRUCK|ake according to th|
-5702|63|8|4|31|29854.86|0.00|0.04|A|F|1994-01-04|1993-10-22|1994-01-26|DELIVER IN PERSON|TRUCK|pinto beans. blithely |
-5703|88|9|1|2|1976.16|0.09|0.01|R|F|1993-05-29|1993-07-26|1993-06-05|TAKE BACK RETURN|REG AIR|nts against the blithely sile|
-5728|44|1|1|47|44369.88|0.10|0.05|A|F|1994-12-13|1995-01-25|1994-12-25|TAKE BACK RETURN|MAIL|nd the bravely final deposits. final ideas|
-5728|159|1|2|40|42366.00|0.05|0.08|A|F|1995-03-28|1995-01-17|1995-04-14|TAKE BACK RETURN|SHIP|final deposits. theodolite|
-5729|143|4|1|5|5215.70|0.07|0.00|R|F|1994-11-27|1994-11-11|1994-12-23|TAKE BACK RETURN|MAIL|s. even sheaves nag courts. |
-5729|107|10|2|39|39276.90|0.10|0.00|A|F|1995-01-22|1994-11-21|1995-02-13|TAKE BACK RETURN|MAIL|. special pl|
-5729|12|3|3|50|45600.50|0.00|0.05|R|F|1994-12-09|1994-12-31|1994-12-24|TAKE BACK RETURN|AIR|ly special sentiments. car|
-5730|151|2|1|2|2102.30|0.08|0.00|N|O|1998-02-24|1998-03-15|1998-03-11|COLLECT COD|SHIP|ely ironic foxes. carefu|
-5730|200|1|2|9|9901.80|0.10|0.01|N|O|1998-03-05|1998-02-02|1998-03-28|DELIVER IN PERSON|MAIL|s lose blithely. specia|
-5731|192|6|1|13|14198.47|0.02|0.04|N|O|1997-07-30|1997-06-23|1997-08-13|COLLECT COD|RAIL|ngside of the quickly regular depos|
-5731|105|6|2|11|11056.10|0.00|0.08|N|O|1997-06-06|1997-07-08|1997-06-25|NONE|MAIL| furiously final accounts wake. d|
-5731|111|2|3|6|6066.66|0.01|0.04|N|O|1997-07-02|1997-07-01|1997-07-08|COLLECT COD|SHIP|sits integrate slyly close platelets. quick|
-5731|14|1|4|6|5484.06|0.03|0.06|N|O|1997-09-07|1997-06-20|1997-09-20|TAKE BACK RETURN|RAIL|rs. quickly regular theo|
-5731|195|6|5|19|20808.61|0.08|0.02|N|O|1997-06-29|1997-06-27|1997-07-15|NONE|REG AIR|ly unusual ideas above the |
-5732|139|5|1|26|27017.38|0.02|0.07|N|O|1997-08-18|1997-10-25|1997-09-12|TAKE BACK RETURN|TRUCK|totes cajole according to the theodolites.|
-5733|33|4|1|39|36388.17|0.01|0.07|A|F|1993-03-22|1993-05-24|1993-04-04|DELIVER IN PERSON|FOB|side of the|
-5734|183|4|1|29|31412.22|0.05|0.01|N|O|1997-12-01|1997-12-08|1997-12-23|NONE|RAIL|structions cajole final, express |
-5734|150|3|2|6|6300.90|0.07|0.00|N|O|1997-10-27|1997-12-19|1997-11-02|COLLECT COD|RAIL|s. regular platelets cajole furiously. regu|
-5734|67|8|3|10|9670.60|0.01|0.03|N|O|1997-12-28|1997-12-24|1998-01-24|DELIVER IN PERSON|TRUCK|equests; accounts above|
-5735|60|1|1|41|39362.46|0.01|0.01|R|F|1994-12-23|1995-02-10|1995-01-22|COLLECT COD|MAIL|lthily ruthless i|
-5760|1|8|1|6|5406.00|0.09|0.03|R|F|1994-07-30|1994-07-31|1994-08-16|COLLECT COD|REG AIR|ng the acco|
-5760|6|1|2|24|21744.00|0.04|0.05|A|F|1994-07-15|1994-07-04|1994-08-08|NONE|MAIL|s. bravely ironic accounts among|
-5760|148|5|3|8|8385.12|0.07|0.04|A|F|1994-09-06|1994-08-03|1994-10-06|NONE|AIR|l accounts among the carefully even de|
-5760|123|4|4|19|19439.28|0.10|0.01|R|F|1994-08-02|1994-08-02|1994-08-15|COLLECT COD|SHIP|sits nag. even, regular ideas cajole b|
-5760|166|1|5|6|6396.96|0.03|0.07|R|F|1994-06-09|1994-07-06|1994-06-16|DELIVER IN PERSON|MAIL| shall have to cajole along the |
-5761|47|6|1|41|38828.64|0.08|0.00|N|O|1998-07-31|1998-08-09|1998-08-08|TAKE BACK RETURN|TRUCK|pecial deposits. qu|
-5761|108|9|2|36|36291.60|0.00|0.07|N|O|1998-09-07|1998-09-21|1998-09-11|TAKE BACK RETURN|TRUCK| pinto beans thrash alongside of the pendi|
-5761|198|2|3|49|53811.31|0.04|0.08|N|O|1998-07-14|1998-08-20|1998-07-25|NONE|SHIP|ly bold accounts wake above the|
-5762|175|6|1|6|6451.02|0.05|0.02|N|O|1997-04-07|1997-03-25|1997-05-02|NONE|AIR|ironic dependencies doze carefu|
-5762|102|9|2|27|27056.70|0.02|0.08|N|O|1997-02-21|1997-05-08|1997-03-23|NONE|REG AIR|across the bold ideas. carefully sp|
-5762|89|10|3|40|39563.20|0.00|0.08|N|O|1997-04-30|1997-05-09|1997-05-08|COLLECT COD|SHIP|al instructions. furiousl|
-5762|133|4|4|47|48557.11|0.05|0.06|N|O|1997-03-02|1997-03-23|1997-03-19|NONE|RAIL|equests sleep after the furiously ironic pa|
-5762|25|6|5|28|25900.56|0.02|0.06|N|O|1997-02-22|1997-03-25|1997-02-24|TAKE BACK RETURN|SHIP|ic foxes among the blithely qui|
-5762|12|6|6|12|10944.12|0.00|0.06|N|O|1997-04-18|1997-04-27|1997-05-11|DELIVER IN PERSON|REG AIR|ages are abo|
-5763|131|2|1|32|32996.16|0.02|0.06|N|O|1998-07-16|1998-09-13|1998-08-02|DELIVER IN PERSON|FOB|ding instruct|
-5763|136|2|2|23|23830.99|0.09|0.04|N|O|1998-07-25|1998-09-21|1998-08-15|DELIVER IN PERSON|SHIP|re after the blithel|
-5763|13|3|3|25|22825.25|0.01|0.02|N|O|1998-10-04|1998-08-16|1998-10-09|DELIVER IN PERSON|REG AIR|inal theodolites. even re|
-5763|121|6|4|47|47992.64|0.09|0.00|N|O|1998-08-22|1998-09-22|1998-09-04|NONE|REG AIR|gle slyly. slyly final re|
-5763|123|4|5|8|8184.96|0.06|0.05|N|O|1998-09-23|1998-09-15|1998-09-27|DELIVER IN PERSON|TRUCK|foxes wake slyly. car|
-5763|190|1|6|9|9811.71|0.08|0.02|N|O|1998-09-24|1998-09-01|1998-10-02|NONE|AIR| deposits. instru|
-5764|101|2|1|28|28030.80|0.04|0.04|A|F|1993-12-07|1993-12-20|1993-12-26|TAKE BACK RETURN|RAIL|sleep furi|
-5764|200|3|2|20|22004.00|0.10|0.05|A|F|1993-10-17|1993-12-24|1993-10-18|TAKE BACK RETURN|FOB|ng to the fluffily qu|
-5764|188|9|3|4|4352.72|0.03|0.05|A|F|1993-10-25|1993-12-23|1993-11-06|DELIVER IN PERSON|AIR|ily regular courts haggle|
-5765|162|7|1|31|32926.96|0.00|0.06|A|F|1995-01-11|1995-02-13|1995-01-23|TAKE BACK RETURN|AIR|r foxes. ev|
-5765|124|9|2|29|29699.48|0.07|0.08|A|F|1994-12-29|1995-02-01|1995-01-26|NONE|RAIL|nic requests. deposits wake quickly among |
-5765|139|10|3|31|32213.03|0.05|0.01|R|F|1995-03-01|1995-01-23|1995-03-31|TAKE BACK RETURN|REG AIR|the furiou|
-5765|152|4|4|46|48398.90|0.07|0.07|R|F|1995-03-13|1995-02-12|1995-03-20|DELIVER IN PERSON|MAIL|ccounts sleep about th|
-5765|174|3|5|48|51560.16|0.09|0.02|A|F|1995-03-30|1995-01-14|1995-04-09|DELIVER IN PERSON|SHIP|theodolites integrate furiously|
-5765|83|4|6|41|40306.28|0.04|0.00|A|F|1994-12-31|1995-02-11|1995-01-17|TAKE BACK RETURN|SHIP| furiously. slyly sile|
-5765|42|5|7|21|19782.84|0.05|0.04|R|F|1995-04-05|1995-02-12|1995-05-05|COLLECT COD|TRUCK|ole furiously. quick, special dependencies |
-5766|188|9|1|1|1088.18|0.10|0.01|R|F|1994-01-16|1993-11-16|1994-01-23|NONE|MAIL|blithely regular the|
-5766|149|8|2|39|40916.46|0.02|0.07|A|F|1993-10-24|1993-12-07|1993-11-08|DELIVER IN PERSON|SHIP| furiously unusual courts. slyly final pear|
-5766|118|8|3|4|4072.44|0.08|0.08|R|F|1993-11-10|1993-10-30|1993-12-01|COLLECT COD|TRUCK|ly even requests. furiou|
-5767|167|8|1|11|11738.76|0.08|0.01|A|F|1992-06-02|1992-05-30|1992-06-08|NONE|TRUCK|instructions. carefully final accou|
-5767|69|8|2|15|14535.90|0.07|0.05|R|F|1992-06-05|1992-07-28|1992-06-08|DELIVER IN PERSON|MAIL|warthogs. carefully unusual g|
-5767|191|3|3|42|45829.98|0.06|0.01|R|F|1992-07-31|1992-06-09|1992-08-09|COLLECT COD|TRUCK| blithe deposi|
-5767|153|4|4|34|35807.10|0.06|0.01|R|F|1992-06-02|1992-06-23|1992-06-17|NONE|FOB|sits among the|
-5767|46|7|5|36|34057.44|0.03|0.00|A|F|1992-07-17|1992-06-10|1992-07-19|COLLECT COD|AIR|ake carefully. packages |
-5792|178|8|1|34|36657.78|0.08|0.07|R|F|1993-05-23|1993-06-25|1993-06-12|NONE|RAIL|requests are against t|
-5792|157|5|2|47|49686.05|0.10|0.00|A|F|1993-06-08|1993-05-10|1993-06-26|COLLECT COD|AIR|regular, ironic excuses n|
-5792|183|4|3|32|34661.76|0.05|0.08|R|F|1993-06-26|1993-05-23|1993-07-07|COLLECT COD|RAIL|s are slyly against the ev|
-5792|14|8|4|14|12796.14|0.09|0.02|A|F|1993-07-28|1993-06-17|1993-08-27|DELIVER IN PERSON|RAIL|olites print carefully|
-5792|102|9|5|31|31065.10|0.02|0.01|A|F|1993-06-17|1993-05-05|1993-07-01|COLLECT COD|TRUCK|s? furiously even instructions |
-5793|53|5|1|20|19061.00|0.05|0.03|N|O|1997-10-05|1997-09-04|1997-10-30|COLLECT COD|AIR|e carefully ex|
-5793|170|5|2|41|43876.97|0.06|0.06|N|O|1997-08-04|1997-10-10|1997-08-12|DELIVER IN PERSON|TRUCK|snooze quick|
-5793|43|4|3|8|7544.32|0.07|0.03|N|O|1997-08-16|1997-09-08|1997-08-28|COLLECT COD|AIR|al foxes l|
-5793|148|7|4|48|50310.72|0.02|0.02|N|O|1997-09-27|1997-08-23|1997-10-27|DELIVER IN PERSON|REG AIR|quickly enticing excuses use slyly abov|
-5794|158|9|1|42|44442.30|0.06|0.05|R|F|1993-06-29|1993-05-30|1993-07-28|COLLECT COD|REG AIR|he careful|
-5794|115|2|2|14|14211.54|0.09|0.02|R|F|1993-04-19|1993-07-02|1993-05-18|COLLECT COD|SHIP|uriously carefully ironic reque|
-5794|7|8|3|15|13605.00|0.09|0.06|R|F|1993-06-25|1993-06-27|1993-07-09|NONE|MAIL|blithely regular ideas. final foxes haggle |
-5794|137|3|4|47|48745.11|0.00|0.08|A|F|1993-07-16|1993-06-21|1993-08-05|TAKE BACK RETURN|REG AIR|quests. blithely final excu|
-5795|193|6|1|34|37168.46|0.09|0.05|A|F|1992-08-21|1992-07-30|1992-08-27|COLLECT COD|REG AIR|al instructions must affix along the ironic|
-5796|58|3|1|27|25867.35|0.10|0.00|N|O|1996-04-06|1996-02-29|1996-04-20|DELIVER IN PERSON|RAIL|s wake quickly aro|
-5797|61|6|1|17|16338.02|0.09|0.03|N|O|1997-12-13|1998-01-12|1997-12-23|NONE|REG AIR|the ironic, even theodoli|
-5798|127|8|1|2|2054.24|0.09|0.00|N|O|1998-05-25|1998-06-22|1998-06-09|COLLECT COD|FOB|e furiously across |
-5798|124|9|2|14|14337.68|0.06|0.05|N|O|1998-04-01|1998-06-14|1998-04-27|NONE|RAIL|he special, bold packages. carefully iron|
-5798|134|5|3|22|22750.86|0.02|0.01|N|O|1998-06-24|1998-06-06|1998-07-20|COLLECT COD|TRUCK|sits poach carefully|
-5798|146|3|4|40|41845.60|0.08|0.06|N|O|1998-07-09|1998-06-24|1998-07-16|NONE|TRUCK| integrate carefu|
-5798|149|8|5|7|7343.98|0.06|0.07|N|O|1998-06-06|1998-05-10|1998-06-07|NONE|SHIP|ts against the blithely final p|
-5798|38|4|6|9|8442.27|0.06|0.02|N|O|1998-05-05|1998-05-25|1998-05-09|DELIVER IN PERSON|REG AIR|e blithely|
-5798|115|9|7|32|32483.52|0.08|0.01|N|O|1998-04-27|1998-05-03|1998-05-08|TAKE BACK RETURN|REG AIR|ubt blithely above the |
-5799|95|6|1|41|40798.69|0.04|0.02|N|O|1995-11-13|1995-10-31|1995-11-16|COLLECT COD|TRUCK|al accounts sleep ruthlessl|
-5799|100|3|2|30|30003.00|0.03|0.08|N|O|1995-09-12|1995-09-13|1995-09-19|NONE|RAIL| furiously s|
-5824|77|7|1|40|39082.80|0.06|0.06|N|O|1997-01-14|1997-01-17|1997-02-02|NONE|REG AIR|he final packag|
-5824|182|3|2|42|45451.56|0.09|0.00|N|O|1997-02-01|1997-02-20|1997-02-07|COLLECT COD|SHIP|ts sleep. carefully regular accounts h|
-5824|73|1|3|16|15569.12|0.03|0.02|N|O|1997-02-13|1997-01-07|1997-02-17|TAKE BACK RETURN|TRUCK|sly express Ti|
-5824|92|5|4|32|31746.88|0.03|0.02|N|O|1997-02-16|1997-01-24|1997-02-20|DELIVER IN PERSON|RAIL|ven requests. |
-5824|107|8|5|44|44312.40|0.08|0.03|N|O|1997-01-24|1997-01-31|1997-02-11|COLLECT COD|TRUCK|fily fluffily bold|
-5825|159|7|1|23|24360.45|0.10|0.05|R|F|1995-05-10|1995-04-28|1995-05-13|DELIVER IN PERSON|TRUCK| special pinto beans. dependencies haggl|
-5826|144|1|1|4|4176.56|0.03|0.06|N|O|1998-07-31|1998-09-10|1998-08-27|NONE|AIR| packages across the fluffily spec|
-5826|64|5|2|18|17353.08|0.04|0.01|N|O|1998-07-17|1998-09-03|1998-07-22|NONE|SHIP|atelets use above t|
-5827|187|8|1|30|32615.40|0.03|0.05|N|O|1998-11-11|1998-09-27|1998-11-30|DELIVER IN PERSON|RAIL|ounts may c|
-5827|103|6|2|23|23071.30|0.09|0.05|N|O|1998-11-16|1998-09-14|1998-11-17|COLLECT COD|RAIL|ans. furiously special instruct|
-5827|164|1|3|3|3192.48|0.03|0.06|N|O|1998-10-17|1998-09-29|1998-10-28|DELIVER IN PERSON|MAIL|uses eat along the furiously|
-5827|200|1|4|26|28605.20|0.06|0.00|N|O|1998-07-29|1998-09-24|1998-07-30|DELIVER IN PERSON|SHIP|arefully special packages wake thin|
-5827|112|9|5|38|38460.18|0.03|0.06|N|O|1998-10-18|1998-08-27|1998-10-23|TAKE BACK RETURN|TRUCK|ly ruthless accounts|
-5827|17|4|6|14|12838.14|0.05|0.01|N|O|1998-08-31|1998-09-06|1998-09-13|TAKE BACK RETURN|RAIL|rges. fluffily pending |
-5828|2|9|1|28|25256.00|0.10|0.03|A|F|1994-05-15|1994-05-20|1994-06-08|DELIVER IN PERSON|MAIL| special ideas haggle slyly ac|
-5828|158|3|2|37|39151.55|0.01|0.00|R|F|1994-06-07|1994-05-30|1994-06-17|NONE|RAIL|e carefully spec|
-5829|40|1|1|4|3760.16|0.01|0.02|N|O|1997-03-01|1997-02-17|1997-03-22|NONE|TRUCK|ithely; accounts cajole ideas. regular foxe|
-5829|107|10|2|40|40284.00|0.04|0.01|N|O|1997-04-21|1997-02-12|1997-05-04|COLLECT COD|TRUCK| the carefully ironic accounts. a|
-5829|129|8|3|6|6174.72|0.05|0.06|N|O|1997-01-22|1997-03-12|1997-02-02|TAKE BACK RETURN|AIR|sts. slyly special fo|
-5829|90|1|4|42|41583.78|0.02|0.07|N|O|1997-03-26|1997-04-01|1997-03-30|COLLECT COD|REG AIR|pearls. slyly bold deposits solve final|
-5829|191|5|5|49|53468.31|0.05|0.01|N|O|1997-01-31|1997-03-13|1997-02-18|NONE|MAIL| ironic excuses use fluf|
-5829|18|5|6|17|15606.17|0.09|0.02|N|O|1997-04-10|1997-03-29|1997-04-22|COLLECT COD|AIR|after the furiously ironic ideas no|
-5829|78|9|7|27|26407.89|0.08|0.04|N|O|1997-02-25|1997-03-31|1997-03-03|DELIVER IN PERSON|AIR|ns about the excuses are c|
-5830|160|2|1|29|30744.64|0.10|0.02|R|F|1993-06-19|1993-05-10|1993-07-13|DELIVER IN PERSON|REG AIR|y bold excuses|
-5831|191|2|1|2|2182.38|0.10|0.01|N|O|1997-02-09|1997-01-20|1997-03-07|TAKE BACK RETURN|TRUCK|quickly silent req|
-5831|74|3|2|33|32144.31|0.04|0.03|N|O|1996-11-20|1997-01-18|1996-12-18|TAKE BACK RETURN|MAIL| instructions wake. slyly sil|
-5831|82|3|3|6|5892.48|0.05|0.07|N|O|1997-01-29|1997-01-14|1997-02-09|NONE|MAIL|ly ironic accounts nag pendin|
-5831|13|10|4|46|41998.46|0.06|0.02|N|O|1997-02-24|1997-01-18|1997-03-02|COLLECT COD|MAIL|ly final pa|
-5831|43|4|5|37|34892.48|0.05|0.01|N|O|1997-01-17|1997-02-08|1997-02-01|NONE|FOB|uriously even requests|
-5856|4|1|1|1|904.00|0.03|0.02|A|F|1994-12-29|1995-01-07|1995-01-10|TAKE BACK RETURN|MAIL|tly. special deposits wake blithely even|
-5856|35|6|2|35|32726.05|0.09|0.02|R|F|1994-11-24|1994-12-23|1994-11-30|COLLECT COD|AIR|excuses. finally ir|
-5856|153|4|3|39|41072.85|0.05|0.03|A|F|1995-01-18|1995-01-11|1995-01-19|DELIVER IN PERSON|TRUCK|uickly quickly fluffy in|
-5857|58|9|1|25|23951.25|0.03|0.02|N|O|1997-12-02|1997-12-17|1997-12-08|DELIVER IN PERSON|REG AIR|ding platelets. pending excu|
-5857|195|9|2|50|54759.50|0.06|0.07|N|O|1997-12-04|1997-12-16|1997-12-20|NONE|TRUCK|y regular d|
-5857|68|3|3|1|968.06|0.03|0.01|N|O|1998-02-01|1997-12-09|1998-02-20|TAKE BACK RETURN|SHIP|instructions detect final reques|
-5857|118|2|4|12|12217.32|0.03|0.08|N|O|1998-01-24|1997-12-27|1998-02-10|TAKE BACK RETURN|AIR|counts. express, final|
-5857|192|4|5|14|15290.66|0.07|0.07|N|O|1997-12-10|1998-01-06|1998-01-04|TAKE BACK RETURN|TRUCK|ffily pendin|
-5857|93|5|6|49|48661.41|0.00|0.04|N|O|1998-01-23|1997-12-12|1998-01-28|DELIVER IN PERSON|REG AIR|egular pinto beans|
-5858|121|4|1|20|20422.40|0.02|0.06|A|F|1992-07-23|1992-08-26|1992-07-24|COLLECT COD|SHIP|uffily unusual pinto beans sleep|
-5858|16|7|2|36|32976.36|0.00|0.05|A|F|1992-09-25|1992-08-16|1992-10-11|NONE|SHIP|osits wake quickly quickly sile|
-5858|148|5|3|7|7336.98|0.08|0.02|A|F|1992-10-07|1992-08-16|1992-10-15|TAKE BACK RETURN|REG AIR|. doggedly regular packages use pendin|
-5858|164|9|4|46|48951.36|0.07|0.06|R|F|1992-09-07|1992-10-06|1992-10-06|DELIVER IN PERSON|MAIL|posits withi|
-5858|161|8|5|18|19100.88|0.00|0.07|A|F|1992-11-05|1992-10-08|1992-12-03|NONE|TRUCK|al excuses. bold|
-5858|154|9|6|7|7379.05|0.04|0.00|A|F|1992-09-14|1992-10-01|1992-10-01|TAKE BACK RETURN|RAIL|dly pending ac|
-5858|11|5|7|50|45550.50|0.06|0.00|R|F|1992-07-20|1992-10-07|1992-07-25|NONE|TRUCK|r the ironic ex|
-5859|175|4|1|50|53758.50|0.07|0.01|N|O|1997-07-08|1997-06-20|1997-07-27|COLLECT COD|MAIL|ly regular deposits use. ironic|
-5859|9|6|2|17|15453.00|0.03|0.03|N|O|1997-05-15|1997-06-30|1997-05-26|DELIVER IN PERSON|AIR|ly ironic requests. quickly unusual pin|
-5859|46|3|3|33|31219.32|0.10|0.04|N|O|1997-07-08|1997-06-22|1997-07-18|TAKE BACK RETURN|TRUCK|eposits unwind furiously final pinto bea|
-5859|93|4|4|40|39723.60|0.09|0.02|N|O|1997-08-05|1997-06-17|1997-08-20|NONE|REG AIR|l dependenci|
-5859|153|8|5|35|36860.25|0.00|0.08|N|O|1997-05-28|1997-07-14|1997-06-15|COLLECT COD|TRUCK|egular acco|
-5859|44|5|6|9|8496.36|0.01|0.02|N|O|1997-06-15|1997-06-06|1997-06-20|NONE|RAIL|ges boost quickly. blithely r|
-5859|191|5|7|27|29462.13|0.05|0.08|N|O|1997-07-30|1997-07-08|1997-08-08|NONE|MAIL| across th|
-5860|51|3|1|10|9510.50|0.04|0.04|A|F|1992-03-11|1992-03-30|1992-03-31|NONE|MAIL|ual patterns try to eat carefully above|
-5861|191|5|1|32|34918.08|0.00|0.03|N|O|1997-05-27|1997-05-29|1997-05-28|TAKE BACK RETURN|MAIL|nt asymptotes. carefully express request|
-5861|86|7|2|6|5916.48|0.10|0.03|N|O|1997-07-28|1997-05-18|1997-08-24|TAKE BACK RETURN|TRUCK|olites. slyly|
-5862|113|7|1|4|4052.44|0.09|0.06|N|O|1997-06-04|1997-04-26|1997-06-19|NONE|TRUCK|yly silent deposit|
-5862|2|7|2|29|26158.00|0.03|0.05|N|O|1997-04-02|1997-04-16|1997-04-04|NONE|FOB|e fluffily. furiously|
-5863|161|10|1|45|47752.20|0.07|0.06|A|F|1993-12-19|1994-01-25|1994-01-05|NONE|REG AIR| deposits are ab|
-5863|160|8|2|21|22263.36|0.09|0.03|R|F|1994-01-13|1994-01-09|1994-01-28|DELIVER IN PERSON|FOB|atelets nag blithely furi|
-5888|62|7|1|46|44254.76|0.02|0.00|N|O|1996-11-18|1996-11-05|1996-12-08|TAKE BACK RETURN|FOB|yly final accounts hag|
-5888|112|3|2|24|24290.64|0.03|0.01|N|O|1996-11-07|1996-11-30|1996-11-20|COLLECT COD|SHIP|ing to the spe|
-5889|77|7|1|17|16610.19|0.09|0.02|N|O|1995-07-01|1995-08-12|1995-07-25|NONE|AIR|blithely pending packages. flu|
-5890|113|4|1|38|38498.18|0.01|0.08|A|F|1993-02-14|1992-12-09|1993-02-27|COLLECT COD|FOB| accounts. carefully final asymptotes|
-5891|85|6|1|22|21671.76|0.00|0.06|R|F|1993-01-01|1993-02-18|1993-01-14|DELIVER IN PERSON|TRUCK|iresias cajole deposits. special, ir|
-5891|186|7|2|9|9775.62|0.03|0.07|R|F|1993-01-20|1993-02-27|1993-02-10|COLLECT COD|REG AIR|cajole carefully |
-5891|30|9|3|10|9300.30|0.08|0.01|A|F|1993-04-14|1993-02-07|1993-04-15|DELIVER IN PERSON|RAIL|nding requests. b|
-5892|148|9|1|7|7336.98|0.02|0.03|N|O|1995-06-26|1995-07-18|1995-07-25|COLLECT COD|AIR|e furiously. quickly even deposits da|
-5892|150|9|2|37|38855.55|0.09|0.06|N|O|1995-08-12|1995-06-11|1995-09-05|NONE|REG AIR|maintain. bold, expre|
-5892|3|4|3|28|25284.00|0.03|0.06|N|O|1995-08-16|1995-07-06|1995-08-22|DELIVER IN PERSON|MAIL|ithely unusual accounts will have to integ|
-5892|75|6|4|23|22426.61|0.08|0.04|R|F|1995-05-18|1995-07-06|1995-05-29|COLLECT COD|MAIL| foxes nag slyly about the qui|
-5893|134|10|1|43|44467.59|0.05|0.02|R|F|1992-11-02|1992-09-27|1992-11-21|TAKE BACK RETURN|RAIL|s. regular courts above the carefully silen|
-5893|2|9|2|2|1804.00|0.10|0.04|R|F|1992-07-18|1992-09-10|1992-08-12|NONE|RAIL|ckages wake sly|
-5894|8|5|1|23|20884.00|0.04|0.08|A|F|1994-09-05|1994-10-27|1994-09-13|NONE|TRUCK| furiously even deposits haggle alw|
-5894|79|8|2|48|46995.36|0.04|0.08|A|F|1994-09-04|1994-11-03|1994-09-17|NONE|TRUCK| asymptotes among the blithely silent |
-5895|15|9|1|38|34770.38|0.05|0.08|N|O|1997-04-05|1997-03-06|1997-05-03|DELIVER IN PERSON|RAIL|ts are furiously. regular, final excuses |
-5895|122|3|2|47|48039.64|0.04|0.06|N|O|1997-04-27|1997-03-17|1997-05-07|DELIVER IN PERSON|AIR|r packages wake carefull|
-5895|84|5|3|49|48219.92|0.03|0.07|N|O|1997-03-15|1997-02-17|1997-04-04|NONE|TRUCK|permanent foxes. packages|
-5895|146|7|4|31|32430.34|0.03|0.01|N|O|1997-03-03|1997-03-30|1997-03-08|TAKE BACK RETURN|TRUCK| final deposits nod slyly careful|
-5895|200|1|5|20|22004.00|0.07|0.00|N|O|1997-04-30|1997-02-07|1997-05-08|DELIVER IN PERSON|AIR|gular deposits wake blithely carefully fin|
-5895|78|7|6|15|14671.05|0.08|0.08|N|O|1997-04-19|1997-03-09|1997-05-13|TAKE BACK RETURN|RAIL|silent package|
-5920|187|8|1|50|54359.00|0.06|0.00|A|F|1995-03-13|1995-01-03|1995-03-31|TAKE BACK RETURN|RAIL|across the carefully pending platelets|
-5920|58|9|2|24|22993.20|0.01|0.05|A|F|1994-12-28|1995-01-21|1994-12-31|DELIVER IN PERSON|FOB|fully regular dolphins. furiousl|
-5920|117|1|3|2|2034.22|0.08|0.07|A|F|1995-02-18|1995-01-13|1995-03-04|NONE|SHIP| evenly spe|
-5920|12|2|4|28|25536.28|0.06|0.02|R|F|1994-12-17|1995-02-13|1994-12-31|NONE|SHIP|le slyly slyly even deposits. f|
-5920|100|4|5|42|42004.20|0.09|0.08|A|F|1994-12-18|1995-01-07|1995-01-14|COLLECT COD|AIR|lar, ironic dependencies sno|
-5921|99|3|1|44|43959.96|0.07|0.01|R|F|1994-07-14|1994-06-30|1994-07-15|NONE|TRUCK|ain about the special|
-5921|146|9|2|25|26153.50|0.06|0.01|A|F|1994-05-19|1994-06-15|1994-06-17|COLLECT COD|TRUCK|nd the slyly regular deposits. quick|
-5921|68|5|3|17|16457.02|0.06|0.01|R|F|1994-05-20|1994-05-26|1994-05-23|NONE|FOB|final asymptotes. even packages boost |
-5921|28|7|4|26|24128.52|0.03|0.04|A|F|1994-05-03|1994-07-06|1994-05-06|NONE|AIR|hy dependenc|
-5921|143|10|5|41|42768.74|0.04|0.02|R|F|1994-04-13|1994-05-31|1994-04-26|DELIVER IN PERSON|AIR|nusual, regular theodol|
-5921|115|6|6|5|5075.55|0.02|0.00|R|F|1994-06-01|1994-05-07|1994-06-10|COLLECT COD|TRUCK|eas cajole across the final, fi|
-5922|196|10|1|9|9865.71|0.07|0.00|N|O|1996-12-04|1997-01-20|1996-12-08|DELIVER IN PERSON|RAIL|haggle slyly even packages. packages|
-5922|157|2|2|37|39114.55|0.01|0.04|N|O|1996-12-19|1996-12-16|1997-01-15|COLLECT COD|RAIL|s wake slyly. requests cajole furiously asy|
-5922|90|1|3|35|34653.15|0.08|0.00|N|O|1996-12-12|1997-01-21|1997-01-01|DELIVER IN PERSON|SHIP|accounts. regu|
-5922|66|7|4|13|12558.78|0.08|0.07|N|O|1997-03-08|1996-12-26|1997-04-03|DELIVER IN PERSON|FOB|sly special accounts wake ironically.|
-5922|57|5|5|39|37324.95|0.04|0.07|N|O|1997-03-04|1997-01-17|1997-03-25|TAKE BACK RETURN|SHIP|e of the instructions. quick|
-5922|179|9|6|10|10791.70|0.04|0.01|N|O|1997-02-23|1996-12-26|1997-03-04|NONE|REG AIR|sly regular deposits haggle quickly ins|
-5923|177|8|1|27|29083.59|0.08|0.03|N|O|1997-08-16|1997-06-27|1997-08-29|DELIVER IN PERSON|RAIL|arefully i|
-5923|119|3|2|42|42802.62|0.01|0.08|N|O|1997-09-16|1997-07-23|1997-09-27|COLLECT COD|REG AIR|y regular theodolites w|
-5923|108|5|3|2|2016.20|0.06|0.05|N|O|1997-06-19|1997-07-31|1997-06-28|TAKE BACK RETURN|TRUCK|express patterns. even deposits|
-5923|174|4|4|46|49411.82|0.05|0.04|N|O|1997-07-29|1997-07-23|1997-08-23|COLLECT COD|SHIP|nto beans cajole blithe|
-5923|59|4|5|35|33566.75|0.04|0.05|N|O|1997-07-21|1997-07-11|1997-08-01|DELIVER IN PERSON|AIR|sts affix unusual, final requests. request|
-5924|176|5|1|38|40894.46|0.06|0.05|N|O|1995-12-17|1995-12-11|1996-01-06|TAKE BACK RETURN|AIR|ions cajole carefully along the |
-5924|53|1|2|49|46699.45|0.04|0.00|N|O|1995-10-25|1995-12-11|1995-11-08|NONE|MAIL|inly final excuses. blithely regular requ|
-5924|17|8|3|24|22008.24|0.09|0.08|N|O|1996-01-12|1995-12-13|1996-01-25|COLLECT COD|REG AIR| use carefully. special, e|
-5925|87|8|1|42|41457.36|0.05|0.02|N|O|1996-03-05|1996-01-13|1996-03-10|COLLECT COD|SHIP|to the furiously|
-5925|125|4|2|31|31778.72|0.03|0.03|N|O|1996-01-02|1995-12-14|1996-01-07|TAKE BACK RETURN|FOB|e slyly. furiously regular deposi|
-5925|89|10|3|50|49454.00|0.03|0.04|N|O|1996-02-14|1996-01-10|1996-02-15|NONE|TRUCK|es. stealthily express pains print bli|
-5925|54|9|4|30|28621.50|0.02|0.07|N|O|1996-02-21|1996-02-11|1996-03-10|NONE|TRUCK| the packa|
-5925|160|1|5|41|43466.56|0.00|0.06|N|O|1996-02-03|1995-12-24|1996-02-20|NONE|SHIP| across the pending deposits nag caref|
-5925|50|9|6|48|45602.40|0.02|0.00|N|O|1996-02-03|1996-01-19|1996-03-04|DELIVER IN PERSON|REG AIR| haggle after the fo|
-5926|90|1|1|8|7920.72|0.02|0.00|R|F|1994-07-17|1994-07-20|1994-08-11|COLLECT COD|MAIL|gle furiously express foxes. bo|
-5926|50|9|2|27|25651.35|0.09|0.05|A|F|1994-07-05|1994-08-11|1994-08-02|DELIVER IN PERSON|MAIL|ironic requests|
-5926|127|8|3|46|47247.52|0.01|0.03|R|F|1994-09-05|1994-08-12|1994-09-11|COLLECT COD|RAIL|ts integrate. courts haggl|
-5926|190|1|4|23|25074.37|0.01|0.02|A|F|1994-07-23|1994-08-10|1994-07-27|DELIVER IN PERSON|FOB|ickly special packages among |
-5927|90|1|1|44|43563.96|0.04|0.05|N|O|1997-11-29|1997-11-21|1997-12-13|DELIVER IN PERSON|TRUCK|rding to the special, final decoy|
-5927|115|2|2|8|8120.88|0.04|0.05|N|O|1997-09-24|1997-11-15|1997-10-22|TAKE BACK RETURN|SHIP|ilent dependencies nod c|
-5927|167|6|3|32|34149.12|0.10|0.07|N|O|1997-12-26|1997-10-27|1997-12-31|COLLECT COD|AIR|telets. carefully bold accounts was|
-5952|200|2|1|49|53909.80|0.10|0.02|N|O|1997-06-30|1997-07-10|1997-07-02|COLLECT COD|AIR|e furiously regular|
-5952|191|5|2|11|12003.09|0.10|0.05|N|O|1997-05-13|1997-06-04|1997-05-27|DELIVER IN PERSON|FOB|y nag blithely aga|
-5952|71|2|3|43|41756.01|0.01|0.01|N|O|1997-06-29|1997-06-06|1997-07-15|COLLECT COD|MAIL|posits sleep furiously quickly final p|
-5952|158|3|4|23|24337.45|0.00|0.07|N|O|1997-05-13|1997-06-27|1997-05-20|NONE|TRUCK|e blithely packages. eve|
-5953|129|10|1|36|37048.32|0.03|0.00|R|F|1992-05-28|1992-06-24|1992-05-29|DELIVER IN PERSON|FOB| cajole furio|
-5953|13|7|2|34|31042.34|0.03|0.04|A|F|1992-05-04|1992-06-12|1992-06-02|NONE|RAIL|hockey players use furiously against th|
-5953|162|9|3|5|5310.80|0.07|0.06|A|F|1992-04-10|1992-04-27|1992-04-14|NONE|SHIP|s. blithely |
-5953|169|8|4|23|24590.68|0.09|0.02|R|F|1992-06-05|1992-06-03|1992-06-29|TAKE BACK RETURN|FOB|he silent ideas. silent foxes po|
-5954|147|6|1|8|8377.12|0.03|0.00|A|F|1993-03-27|1993-01-22|1993-04-04|TAKE BACK RETURN|AIR|unusual th|
-5954|81|2|2|40|39243.20|0.02|0.01|A|F|1992-12-30|1993-01-16|1993-01-09|COLLECT COD|RAIL|iously ironic deposits after|
-5954|94|8|3|20|19881.80|0.09|0.07|A|F|1992-12-25|1993-02-05|1992-12-31|COLLECT COD|REG AIR| accounts wake carefu|
-5954|145|4|4|20|20902.80|0.00|0.01|R|F|1993-02-27|1993-01-04|1993-03-08|NONE|TRUCK|ke furiously blithely special packa|
-5954|100|4|5|35|35003.50|0.04|0.06|A|F|1993-03-17|1993-02-06|1993-04-10|NONE|SHIP|tions maintain slyly. furious|
-5954|193|5|6|39|42634.41|0.04|0.08|A|F|1993-02-27|1993-02-25|1993-03-29|DELIVER IN PERSON|REG AIR| always regular dolphins. furiously p|
-5955|140|1|1|14|14561.96|0.08|0.08|N|O|1995-06-22|1995-05-23|1995-06-24|DELIVER IN PERSON|TRUCK| unusual, bold theodolit|
-5955|62|7|2|15|14430.90|0.08|0.07|R|F|1995-04-22|1995-05-28|1995-04-27|NONE|FOB|y final accounts above the regu|
-5955|112|9|3|40|40484.40|0.03|0.00|R|F|1995-04-01|1995-06-11|1995-04-27|NONE|FOB|oss the fluffily regular|
-5956|155|3|1|10|10551.50|0.04|0.05|N|O|1998-07-27|1998-07-04|1998-08-21|NONE|MAIL|ic packages am|
-5956|55|7|2|23|21966.15|0.08|0.03|N|O|1998-06-06|1998-07-10|1998-06-15|DELIVER IN PERSON|RAIL|ly slyly special |
-5956|175|5|3|47|50532.99|0.04|0.06|N|O|1998-09-06|1998-06-29|1998-09-18|TAKE BACK RETURN|MAIL|lyly express theodol|
-5956|20|10|4|40|36800.80|0.09|0.05|N|O|1998-06-11|1998-07-19|1998-06-21|NONE|MAIL|final theodolites sleep carefully ironic c|
-5957|15|9|1|37|33855.37|0.07|0.00|A|F|1994-04-18|1994-02-19|1994-05-11|NONE|AIR| ideas use ruthlessly.|
-5957|59|4|2|46|44116.30|0.04|0.08|A|F|1994-01-23|1994-01-30|1994-02-07|NONE|SHIP|platelets. furiously unusual requests |
-5957|2|7|3|17|15334.00|0.01|0.01|A|F|1994-01-24|1994-02-16|1994-02-08|TAKE BACK RETURN|SHIP|. final, pending packages|
-5957|132|3|4|29|29931.77|0.01|0.03|R|F|1994-02-24|1994-03-04|1994-03-08|COLLECT COD|REG AIR|sits. final, even asymptotes cajole quickly|
-5957|88|9|5|40|39523.20|0.04|0.04|R|F|1994-01-07|1994-02-05|1994-01-26|DELIVER IN PERSON|SHIP|ironic asymptotes sleep blithely again|
-5957|6|1|6|41|37146.00|0.10|0.07|R|F|1994-03-25|1994-02-20|1994-03-31|DELIVER IN PERSON|MAIL|es across the regular requests maint|
-5957|159|1|7|32|33892.80|0.10|0.07|A|F|1994-03-05|1994-02-20|1994-03-09|NONE|TRUCK| boost carefully across the |
-5958|149|8|1|33|34621.62|0.02|0.04|N|O|1995-09-24|1995-12-12|1995-10-05|COLLECT COD|MAIL|lar, regular accounts wake furi|
-5958|43|6|2|23|21689.92|0.03|0.04|N|O|1995-09-26|1995-10-19|1995-09-27|COLLECT COD|SHIP|regular requests. bold, bold deposits unwin|
-5958|153|8|3|42|44232.30|0.10|0.00|N|O|1995-12-12|1995-10-19|1996-01-09|NONE|AIR|n accounts. final, ironic packages |
-5958|39|10|4|18|16902.54|0.04|0.05|N|O|1995-12-02|1995-10-17|1995-12-22|COLLECT COD|FOB|regular requests haggle|
-5958|132|8|5|32|33028.16|0.06|0.00|N|O|1995-09-20|1995-12-10|1995-10-14|COLLECT COD|REG AIR|e carefully special theodolites. carefully |
-5959|135|1|1|49|50721.37|0.07|0.03|R|F|1992-07-16|1992-08-09|1992-08-14|DELIVER IN PERSON|SHIP|usual packages haggle slyly pi|
-5959|147|8|2|17|17801.38|0.09|0.07|R|F|1992-06-10|1992-07-06|1992-06-23|COLLECT COD|MAIL|ackages. blithely ex|
-5959|5|6|3|4|3620.00|0.04|0.03|R|F|1992-06-14|1992-07-05|1992-07-01|NONE|MAIL|gular requests ar|
-5959|196|7|4|13|14250.47|0.03|0.00|A|F|1992-07-29|1992-07-13|1992-08-20|COLLECT COD|SHIP|ar forges. deposits det|
-5959|40|6|5|37|34781.48|0.04|0.01|R|F|1992-06-05|1992-07-18|1992-06-29|NONE|TRUCK|endencies. brai|
-5959|119|3|6|35|35668.85|0.03|0.00|A|F|1992-05-27|1992-06-19|1992-06-23|NONE|TRUCK|ely silent deposits. |
-5959|43|10|7|47|44322.88|0.02|0.01|R|F|1992-08-28|1992-07-24|1992-09-09|TAKE BACK RETURN|RAIL|deposits. slyly special cou|
-5984|70|5|1|13|12610.91|0.06|0.07|R|F|1994-10-16|1994-09-06|1994-11-11|NONE|MAIL|lar platelets. f|
-5984|102|3|2|25|25052.50|0.05|0.08|R|F|1994-10-06|1994-07-21|1994-10-28|COLLECT COD|RAIL|gular accounts. even packages nag slyly|
-5984|1|4|3|8|7208.00|0.10|0.00|R|F|1994-09-17|1994-08-28|1994-09-25|COLLECT COD|RAIL|its. express,|
-5984|190|1|4|35|38156.65|0.00|0.01|A|F|1994-08-25|1994-08-05|1994-08-31|DELIVER IN PERSON|SHIP|le fluffily regula|
-5985|86|7|1|4|3944.32|0.02|0.02|A|F|1995-05-04|1995-04-01|1995-05-17|DELIVER IN PERSON|MAIL|ole along the quickly slow d|
-5986|79|7|1|26|25455.82|0.00|0.00|R|F|1992-08-10|1992-05-23|1992-08-24|TAKE BACK RETURN|SHIP|e fluffily ironic ideas. silent |
-5986|196|8|2|25|27404.75|0.03|0.06|A|F|1992-06-16|1992-07-17|1992-06-29|TAKE BACK RETURN|MAIL| instructions. slyly regular de|
-5986|30|5|3|1|930.03|0.07|0.06|A|F|1992-05-21|1992-06-21|1992-05-24|DELIVER IN PERSON|REG AIR|fix quickly quickly final deposits. fluffil|
-5986|90|1|4|31|30692.79|0.00|0.03|A|F|1992-08-21|1992-06-29|1992-09-14|NONE|AIR|structions! furiously pending instructi|
-5986|136|7|5|6|6216.78|0.05|0.02|A|F|1992-07-16|1992-06-10|1992-07-29|DELIVER IN PERSON|RAIL|al foxes within the slyly speci|
-5987|23|2|1|1|923.02|0.01|0.04|N|O|1996-09-13|1996-10-29|1996-09-21|DELIVER IN PERSON|REG AIR|refully final excuses haggle furiously ag|
-5987|176|5|2|20|21523.40|0.10|0.06|N|O|1996-11-28|1996-09-17|1996-12-05|TAKE BACK RETURN|RAIL|ing excuses nag quickly always bold|
-5987|92|3|3|43|42659.87|0.08|0.04|N|O|1996-10-30|1996-10-13|1996-11-12|NONE|AIR|theodolites wake above the furiously b|
-5987|97|1|4|37|36892.33|0.08|0.08|N|O|1996-10-15|1996-10-27|1996-11-09|NONE|MAIL|le furiously carefully special |
-5988|172|1|1|41|43958.97|0.08|0.03|R|F|1994-01-20|1994-02-06|1994-02-10|COLLECT COD|AIR|the pending, express reque|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl
deleted file mode 100644
index ed3fd5b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/nation.tbl
+++ /dev/null
@@ -1,25 +0,0 @@
-0|ALGERIA|0| haggle. carefully final deposits detect slyly agai|
-1|ARGENTINA|1|al foxes promise slyly according to the regular accounts. bold requests alon|
-2|BRAZIL|1|y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special |
-3|CANADA|1|eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold|
-4|EGYPT|4|y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d|
-5|ETHIOPIA|0|ven packages wake quickly. regu|
-6|FRANCE|3|refully final requests. regular, ironi|
-7|GERMANY|3|l platelets. regular accounts x-ray: unusual, regular acco|
-8|INDIA|2|ss excuses cajole slyly across the packages. deposits print aroun|
-9|INDONESIA|2| slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull|
-10|IRAN|4|efully alongside of the slyly final dependencies. |
-11|IRAQ|4|nic deposits boost atop the quickly final requests? quickly regula|
-12|JAPAN|2|ously. final, express gifts cajole a|
-13|JORDAN|4|ic deposits are blithely about the carefully regular pa|
-14|KENYA|0| pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t|
-15|MOROCCO|0|rns. blithely bold courts among the closely regular packages use furiously bold platelets?|
-16|MOZAMBIQUE|0|s. ironic, unusual asymptotes wake blithely r|
-17|PERU|1|platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun|
-18|CHINA|2|c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos|
-19|ROMANIA|3|ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account|
-20|SAUDI ARABIA|4|ts. silent requests haggle. closely express packages sleep across the blithely|
-21|VIETNAM|2|hely enticingly express accounts. even, final |
-22|RUSSIA|3| requests against the platelets use never according to the quickly regular pint|
-23|UNITED KINGDOM|3|eans boost carefully special requests. accounts are. carefull|
-24|UNITED STATES|1|y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl
deleted file mode 100644
index 1ebd663..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/orders.tbl
+++ /dev/null
@@ -1,1500 +0,0 @@
-1|37|O|131251.81|1996-01-02|5-LOW|Clerk#000000951|0|nstructions sleep furiously among |
-2|79|O|40183.29|1996-12-01|1-URGENT|Clerk#000000880|0| foxes. pending accounts at the pending, silent asymptot|
-3|124|F|160882.76|1993-10-14|5-LOW|Clerk#000000955|0|sly final accounts boost. carefully regular ideas cajole carefully. depos|
-4|137|O|31084.79|1995-10-11|5-LOW|Clerk#000000124|0|sits. slyly regular warthogs cajole. regular, regular theodolites acro|
-5|46|F|86615.25|1994-07-30|5-LOW|Clerk#000000925|0|quickly. bold deposits sleep slyly. packages use slyly|
-6|56|F|36468.55|1992-02-21|4-NOT SPECIFIED|Clerk#000000058|0|ggle. special, final requests are against the furiously specia|
-7|40|O|171488.73|1996-01-10|2-HIGH|Clerk#000000470|0|ly special requests |
-32|131|O|116923.00|1995-07-16|2-HIGH|Clerk#000000616|0|ise blithely bold, regular requests. quickly unusual dep|
-33|67|F|99798.76|1993-10-27|3-MEDIUM|Clerk#000000409|0|uriously. furiously final request|
-34|62|O|41670.02|1998-07-21|3-MEDIUM|Clerk#000000223|0|ly final packages. fluffily final deposits wake blithely ideas. spe|
-35|128|O|148789.52|1995-10-23|4-NOT SPECIFIED|Clerk#000000259|0|zzle. carefully enticing deposits nag furio|
-36|116|O|38988.98|1995-11-03|1-URGENT|Clerk#000000358|0| quick packages are blithely. slyly silent accounts wake qu|
-37|88|F|113701.89|1992-06-03|3-MEDIUM|Clerk#000000456|0|kly regular pinto beans. carefully unusual waters cajole never|
-38|125|O|46366.56|1996-08-21|4-NOT SPECIFIED|Clerk#000000604|0|haggle blithely. furiously express ideas haggle blithely furiously regular re|
-39|82|O|219707.84|1996-09-20|3-MEDIUM|Clerk#000000659|0|ole express, ironic requests: ir|
-64|34|F|20065.73|1994-07-16|3-MEDIUM|Clerk#000000661|0|wake fluffily. sometimes ironic pinto beans about the dolphin|
-65|17|P|65883.92|1995-03-18|1-URGENT|Clerk#000000632|0|ular requests are blithely pending orbits-- even requests against the deposit|
-66|130|F|79258.24|1994-01-20|5-LOW|Clerk#000000743|0|y pending requests integrate|
-67|58|O|116227.05|1996-12-19|4-NOT SPECIFIED|Clerk#000000547|0|symptotes haggle slyly around the furiously iron|
-68|29|O|215135.72|1998-04-18|3-MEDIUM|Clerk#000000440|0| pinto beans sleep carefully. blithely ironic deposits haggle furiously acro|
-69|85|F|162176.23|1994-06-04|4-NOT SPECIFIED|Clerk#000000330|0| depths atop the slyly thin deposits detect among the furiously silent accou|
-70|65|F|84651.80|1993-12-18|5-LOW|Clerk#000000322|0| carefully ironic request|
-71|4|O|178821.73|1998-01-24|4-NOT SPECIFIED|Clerk#000000271|0| express deposits along the blithely regul|
-96|109|F|55090.67|1994-04-17|2-HIGH|Clerk#000000395|0|oost furiously. pinto|
-97|22|F|68908.31|1993-01-29|3-MEDIUM|Clerk#000000547|0|hang blithely along the regular accounts. furiously even ideas after the|
-98|106|F|51004.44|1994-09-25|1-URGENT|Clerk#000000448|0|c asymptotes. quickly regular packages should have to nag re|
-99|89|F|92326.79|1994-03-13|4-NOT SPECIFIED|Clerk#000000973|0|e carefully ironic packages. pending|
-100|148|O|141311.01|1998-02-28|4-NOT SPECIFIED|Clerk#000000577|0|heodolites detect slyly alongside of the ent|
-101|28|O|95591.40|1996-03-17|3-MEDIUM|Clerk#000000419|0|ding accounts above the slyly final asymptote|
-102|1|O|113954.89|1997-05-09|2-HIGH|Clerk#000000596|0| slyly according to the asymptotes. carefully final packages integrate furious|
-103|31|O|95563.95|1996-06-20|4-NOT SPECIFIED|Clerk#000000090|0|ges. carefully unusual instructions haggle quickly regular f|
-128|74|F|36333.34|1992-06-15|1-URGENT|Clerk#000000385|0|ns integrate fluffily. ironic asymptotes after the regular excuses nag around |
-129|73|F|188124.55|1992-11-19|5-LOW|Clerk#000000859|0|ing tithes. carefully pending deposits boost about the silently express |
-130|37|F|115717.37|1992-05-08|2-HIGH|Clerk#000000036|0|le slyly unusual, regular packages? express deposits det|
-131|94|F|96596.81|1994-06-08|3-MEDIUM|Clerk#000000625|0|after the fluffily special foxes integrate s|
-132|28|F|118802.62|1993-06-11|3-MEDIUM|Clerk#000000488|0|sits are daringly accounts. carefully regular foxes sleep slyly about the|
-133|44|O|80437.72|1997-11-29|1-URGENT|Clerk#000000738|0|usly final asymptotes |
-134|7|F|154260.84|1992-05-01|4-NOT SPECIFIED|Clerk#000000711|0|lar theodolites boos|
-135|61|O|174569.88|1995-10-21|4-NOT SPECIFIED|Clerk#000000804|0|l platelets use according t|
-160|83|O|86076.86|1996-12-19|4-NOT SPECIFIED|Clerk#000000342|0|thely special sauternes wake slyly of t|
-161|17|F|19056.99|1994-08-31|2-HIGH|Clerk#000000322|0|carefully! special instructions sin|
-162|16|O|2158.13|1995-05-08|3-MEDIUM|Clerk#000000378|0|nts hinder fluffily ironic instructions. express, express excuses |
-163|88|O|125170.86|1997-09-05|3-MEDIUM|Clerk#000000379|0|y final packages. final foxes since the quickly even|
-164|1|F|202660.52|1992-10-21|5-LOW|Clerk#000000209|0|cajole ironic courts. slyly final ideas are slyly. blithely final Tiresias sub|
-165|28|F|141824.23|1993-01-30|4-NOT SPECIFIED|Clerk#000000292|0|across the blithely regular accounts. bold|
-166|109|O|93335.60|1995-09-12|2-HIGH|Clerk#000000440|0|lets. ironic, bold asymptotes kindle|
-167|121|F|52982.23|1993-01-04|4-NOT SPECIFIED|Clerk#000000731|0|s nag furiously bold excuses. fluffily iron|
-192|83|O|133002.55|1997-11-25|5-LOW|Clerk#000000483|0|y unusual platelets among the final instructions integrate rut|
-193|80|F|48053.18|1993-08-08|1-URGENT|Clerk#000000025|0|the furiously final pin|
-194|62|F|114097.63|1992-04-05|3-MEDIUM|Clerk#000000352|0|egular requests haggle slyly regular, regular pinto beans. asymptote|
-195|136|F|120053.52|1993-12-28|3-MEDIUM|Clerk#000000216|0|old forges are furiously sheaves. slyly fi|
-196|65|F|33248.04|1993-03-17|2-HIGH|Clerk#000000988|0|beans boost at the foxes. silent foxes|
-197|34|P|100290.07|1995-04-07|2-HIGH|Clerk#000000969|0|solve quickly about the even braids. carefully express deposits affix care|
-198|112|O|125792.83|1998-01-02|4-NOT SPECIFIED|Clerk#000000331|0|its. carefully ironic requests sleep. furiously express fox|
-199|53|O|80592.44|1996-03-07|2-HIGH|Clerk#000000489|0|g theodolites. special packag|
-224|4|F|155680.60|1994-06-18|4-NOT SPECIFIED|Clerk#000000642|0|r the quickly thin courts. carefully|
-225|34|P|165890.47|1995-05-25|1-URGENT|Clerk#000000177|0|s. blithely ironic accounts wake quickly fluffily special acc|
-226|128|F|180119.22|1993-03-10|2-HIGH|Clerk#000000756|0|s are carefully at the blithely ironic acc|
-227|10|O|46076.46|1995-11-10|5-LOW|Clerk#000000919|0| express instructions. slyly regul|
-228|46|F|2638.98|1993-02-25|1-URGENT|Clerk#000000562|0|es was slyly among the regular foxes. blithely regular dependenci|
-229|112|F|142290.77|1993-12-29|1-URGENT|Clerk#000000628|0|he fluffily even instructions. furiously i|
-230|103|F|107231.60|1993-10-27|1-URGENT|Clerk#000000520|0|odolites. carefully quick requ|
-231|91|F|141554.06|1994-09-29|2-HIGH|Clerk#000000446|0| packages haggle slyly after the carefully ironic instruct|
-256|125|F|106315.25|1993-10-19|4-NOT SPECIFIED|Clerk#000000834|0|he fluffily final ideas might are final accounts. carefully f|
-257|124|O|7102.74|1998-03-28|3-MEDIUM|Clerk#000000680|0|ts against the sly warhorses cajole slyly accounts|
-258|43|F|186669.10|1993-12-29|1-URGENT|Clerk#000000167|0|dencies. blithely quick packages cajole. ruthlessly final accounts|
-259|44|F|75661.70|1993-09-29|4-NOT SPECIFIED|Clerk#000000601|0|ages doubt blithely against the final foxes. carefully express deposits dazzle|
-260|106|O|179292.14|1996-12-10|3-MEDIUM|Clerk#000000960|0|lently regular pinto beans sleep after the slyly e|
-261|47|F|201003.12|1993-06-29|3-MEDIUM|Clerk#000000310|0|ully fluffily brave instructions. furiousl|
-262|31|O|108443.84|1995-11-25|4-NOT SPECIFIED|Clerk#000000551|0|l packages. blithely final pinto beans use carefu|
-263|118|F|79782.56|1994-05-17|2-HIGH|Clerk#000000088|0| pending instructions. blithely un|
-288|8|O|163794.53|1997-02-21|1-URGENT|Clerk#000000109|0|uriously final requests. even, final ideas det|
-289|104|O|131092.67|1997-02-10|3-MEDIUM|Clerk#000000103|0|sily. slyly special excuse|
-290|118|F|62814.89|1994-01-01|4-NOT SPECIFIED|Clerk#000000735|0|efully dogged deposits. furiou|
-291|142|F|66817.05|1994-03-13|1-URGENT|Clerk#000000923|0|dolites. carefully regular pinto beans cajol|
-292|23|F|30783.05|1992-01-13|2-HIGH|Clerk#000000193|0|g pinto beans will have to sleep f|
-293|31|F|37248.78|1992-10-02|2-HIGH|Clerk#000000629|0|re bold, ironic deposits. platelets c|
-294|52|F|30059.47|1993-07-16|3-MEDIUM|Clerk#000000499|0|kly according to the frays. final dolphins affix quickly |
-295|19|F|89345.99|1994-09-29|2-HIGH|Clerk#000000155|0| unusual pinto beans play. regular ideas haggle|
-320|1|O|39835.54|1997-11-21|2-HIGH|Clerk#000000573|0|ar foxes nag blithely|
-321|124|F|62251.15|1993-03-21|3-MEDIUM|Clerk#000000289|0|equests run. blithely final dependencies after the deposits wake caref|
-322|134|F|127068.89|1992-03-19|1-URGENT|Clerk#000000158|0|fully across the slyly bold packages. packages against the quickly regular i|
-323|40|F|79683.42|1994-03-26|1-URGENT|Clerk#000000959|0|arefully pending foxes sleep blithely. slyly express accoun|
-324|106|F|26868.85|1992-03-20|1-URGENT|Clerk#000000352|0| about the ironic, regular deposits run blithely against the excuses|
-325|41|F|71543.41|1993-10-17|5-LOW|Clerk#000000844|0|ly sometimes pending pa|
-326|76|O|229165.17|1995-06-04|2-HIGH|Clerk#000000466|0| requests. furiously ironic asymptotes mold carefully alongside of the blit|
-327|145|P|24468.16|1995-04-17|5-LOW|Clerk#000000992|0|ng the slyly final courts. slyly even escapades eat |
-352|107|F|16003.86|1994-03-08|2-HIGH|Clerk#000000932|0|ke slyly bold pinto beans. blithely regular accounts against the spe|
-353|2|F|179984.42|1993-12-31|5-LOW|Clerk#000000449|0| quiet ideas sleep. even instructions cajole slyly. silently spe|
-354|139|O|157062.70|1996-03-14|2-HIGH|Clerk#000000511|0|ly regular ideas wake across the slyly silent ideas. final deposits eat b|
-355|71|F|69447.25|1994-06-14|5-LOW|Clerk#000000532|0|s. sometimes regular requests cajole. regular, pending accounts a|
-356|148|F|162786.67|1994-06-30|4-NOT SPECIFIED|Clerk#000000944|0|as wake along the bold accounts. even, |
-357|61|O|98723.11|1996-10-09|2-HIGH|Clerk#000000301|0|e blithely about the express, final accounts. quickl|
-358|4|F|226806.66|1993-09-20|2-HIGH|Clerk#000000392|0|l, silent instructions are slyly. silently even de|
-359|79|F|142891.22|1994-12-19|3-MEDIUM|Clerk#000000934|0|n dolphins. special courts above the carefully ironic requests use|
-384|115|F|122785.82|1992-03-03|5-LOW|Clerk#000000206|0|, even accounts use furiously packages. slyly ironic pla|
-385|34|O|50724.06|1996-03-22|5-LOW|Clerk#000000600|0|hless accounts unwind bold pain|
-386|61|F|90380.40|1995-01-25|2-HIGH|Clerk#000000648|0| haggle quickly. stealthily bold asymptotes haggle among the furiously even re|
-387|4|O|130647.18|1997-01-26|4-NOT SPECIFIED|Clerk#000000768|0| are carefully among the quickly even deposits. furiously silent req|
-388|46|F|120533.46|1992-12-16|4-NOT SPECIFIED|Clerk#000000356|0|ar foxes above the furiously ironic deposits nag slyly final reque|
-389|127|F|1984.14|1994-02-17|2-HIGH|Clerk#000000062|0|ing to the regular asymptotes. final, pending foxes about the blithely sil|
-390|103|O|168562.27|1998-04-07|5-LOW|Clerk#000000404|0|xpress asymptotes use among the regular, final pinto b|
-391|112|F|13282.23|1994-11-17|2-HIGH|Clerk#000000256|0|orges thrash fluffil|
-416|41|F|71362.50|1993-09-27|5-LOW|Clerk#000000294|0| the accounts. fluffily bold depo|
-417|55|F|91982.29|1994-02-06|3-MEDIUM|Clerk#000000468|0|ironic, even packages. thinly unusual accounts sleep along the slyly unusual |
-418|95|P|33124.96|1995-04-13|4-NOT SPECIFIED|Clerk#000000643|0|. furiously ironic instruc|
-419|118|O|111597.96|1996-10-01|3-MEDIUM|Clerk#000000376|0|osits. blithely pending theodolites boost carefully|
-420|91|O|198039.23|1995-10-31|4-NOT SPECIFIED|Clerk#000000756|0|leep carefully final excuses. fluffily pending requests unwind carefully above|
-421|40|F|1084.38|1992-02-22|5-LOW|Clerk#000000405|0|egular, even packages according to the final, un|
-422|74|O|106045.89|1997-05-31|4-NOT SPECIFIED|Clerk#000000049|0|aggle carefully across the accounts. regular accounts eat fluffi|
-423|104|O|26981.31|1996-06-01|1-URGENT|Clerk#000000674|0|quests. deposits cajole quickly. furiously bold accounts haggle q|
-448|149|O|114978.03|1995-08-21|3-MEDIUM|Clerk#000000597|0| regular, express foxes use blithely. quic|
-449|97|O|41605.63|1995-07-20|2-HIGH|Clerk#000000841|0|. furiously regular theodolites affix blithely |
-450|49|P|153386.61|1995-03-05|4-NOT SPECIFIED|Clerk#000000293|0|d theodolites. boldly bold foxes since the pack|
-451|100|O|104664.40|1998-05-25|5-LOW|Clerk#000000048|0|nic pinto beans. theodolites poach carefully; |
-452|61|O|2007.48|1997-10-14|1-URGENT|Clerk#000000498|0|t, unusual instructions above the blithely bold pint|
-453|46|O|216826.73|1997-05-26|5-LOW|Clerk#000000504|0|ss foxes. furiously regular ideas sleep according to t|
-454|49|O|23198.24|1995-12-27|5-LOW|Clerk#000000890|0|dolites sleep carefully blithely regular deposits. quickly regul|
-455|13|O|138010.76|1996-12-04|1-URGENT|Clerk#000000796|0| about the final platelets. dependen|
-480|73|F|20530.97|1993-05-08|5-LOW|Clerk#000000004|0|ealthy pinto beans. fluffily regular requests along the special sheaves wake |
-481|31|F|117827.18|1992-10-08|2-HIGH|Clerk#000000230|0|ly final ideas. packages haggle fluffily|
-482|127|O|136634.34|1996-03-26|1-URGENT|Clerk#000000295|0|ts. deposits wake: final acco|
-483|35|O|39793.05|1995-07-11|2-HIGH|Clerk#000000025|0|cross the carefully final e|
-484|55|O|219920.62|1997-01-03|3-MEDIUM|Clerk#000000545|0|grouches use. furiously bold accounts maintain. bold, regular deposits|
-485|101|O|110432.76|1997-03-26|2-HIGH|Clerk#000000105|0| regular ideas nag thinly furiously s|
-486|52|O|185968.15|1996-03-11|4-NOT SPECIFIED|Clerk#000000803|0|riously dolphins. fluffily ironic requ|
-487|109|F|48502.79|1992-08-18|1-URGENT|Clerk#000000086|0|ithely unusual courts eat accordi|
-512|64|P|124661.48|1995-05-20|5-LOW|Clerk#000000814|0|ding requests. carefully express theodolites was quickly. furious|
-513|61|O|63703.92|1995-05-01|2-HIGH|Clerk#000000522|0|regular packages. pinto beans cajole carefully against the even|
-514|76|O|104585.77|1996-04-04|2-HIGH|Clerk#000000094|0| cajole furiously. slyly final excuses cajole. slyly special instructions |
-515|142|F|153720.22|1993-08-29|4-NOT SPECIFIED|Clerk#000000700|0|eposits are furiously furiously silent pinto beans. pending pack|
-516|44|O|10677.86|1998-04-21|2-HIGH|Clerk#000000305|0|lar, unusual platelets are carefully. even courts sleep bold, final pinto bea|
-517|10|O|82197.79|1997-04-07|5-LOW|Clerk#000000359|0|slyly pending deposits cajole quickly packages. furiou|
-518|145|O|223537.09|1998-02-08|2-HIGH|Clerk#000000768|0| the carefully bold accounts. quickly regular excuses are|
-519|64|O|95731.50|1997-10-31|1-URGENT|Clerk#000000985|0|ains doze furiously against the f|
-544|94|F|47627.89|1993-02-17|2-HIGH|Clerk#000000145|0|the special, final accounts. dogged dolphins|
-545|64|O|23476.12|1995-11-07|2-HIGH|Clerk#000000537|0|as. blithely final hockey players about th|
-546|145|O|14790.37|1996-11-01|2-HIGH|Clerk#000000041|0|osits sleep. slyly special dolphins about the q|
-547|100|O|96855.29|1996-06-22|3-MEDIUM|Clerk#000000976|0|ing accounts eat. carefully regular packa|
-548|124|F|99088.75|1994-09-21|1-URGENT|Clerk#000000435|0|arefully express instru|
-549|110|F|141679.41|1992-07-13|1-URGENT|Clerk#000000196|0|ideas alongside of |
-550|25|O|33123.28|1995-08-02|1-URGENT|Clerk#000000204|0|t requests. blithely |
-551|91|O|46355.83|1995-05-30|1-URGENT|Clerk#000000179|0|xpress accounts boost quic|
-576|31|O|18307.45|1997-05-13|3-MEDIUM|Clerk#000000955|0|l requests affix regular requests. final account|
-577|56|F|34768.68|1994-12-19|5-LOW|Clerk#000000154|0| deposits engage stealthil|
-578|94|O|70392.02|1997-01-10|5-LOW|Clerk#000000281|0|e blithely even packages. slyly pending platelets bes|
-579|68|O|120828.12|1998-03-11|2-HIGH|Clerk#000000862|0| regular instructions. blithely even p|
-580|61|O|88219.12|1997-07-05|2-HIGH|Clerk#000000314|0|tegrate fluffily regular accou|
-581|70|O|126066.00|1997-02-23|4-NOT SPECIFIED|Clerk#000000239|0| requests. even requests use slyly. blithely ironic |
-582|50|O|129004.81|1997-10-21|1-URGENT|Clerk#000000378|0|n pinto beans print a|
-583|49|O|127817.38|1997-03-19|3-MEDIUM|Clerk#000000792|0|efully express requests. a|
-608|26|O|62567.99|1996-02-28|3-MEDIUM|Clerk#000000995|0|nic waters wake slyly slyly expre|
-609|127|F|21088.59|1994-06-01|3-MEDIUM|Clerk#000000348|0|- ironic gifts believe furiously ca|
-610|52|O|175142.28|1995-08-02|1-URGENT|Clerk#000000610|0|totes. ironic, unusual packag|
-611|106|F|73907.63|1993-01-27|1-URGENT|Clerk#000000401|0|ounts detect furiously ac|
-612|82|F|145695.42|1992-10-21|3-MEDIUM|Clerk#000000759|0|boost quickly quickly final excuses. final foxes use bravely afte|
-613|139|O|33396.35|1995-06-18|2-HIGH|Clerk#000000172|0|ts hinder among the deposits. fluffily ironic depos|
-614|134|F|218116.21|1992-12-01|2-HIGH|Clerk#000000388|0| deposits! even, daring theodol|
-615|67|F|32890.89|1992-05-09|5-LOW|Clerk#000000388|0|t to promise asymptotes. packages haggle alongside of the fluffil|
-640|97|F|145495.62|1993-01-23|2-HIGH|Clerk#000000433|0|r, unusual accounts boost carefully final ideas. slyly silent theod|
-641|133|F|120626.49|1993-08-30|5-LOW|Clerk#000000175|0|ents cajole furiously about the quickly silent pac|
-642|40|F|22994.51|1993-12-16|3-MEDIUM|Clerk#000000357|0| among the requests wake slyly alongside of th|
-643|58|P|180396.95|1995-03-25|2-HIGH|Clerk#000000354|0|g dependencies. regular accounts |
-644|8|F|201268.06|1992-05-01|1-URGENT|Clerk#000000550|0| blithely unusual platelets haggle ironic, special excuses. excuses unwi|
-645|115|F|234763.73|1994-12-03|2-HIGH|Clerk#000000090|0|quickly daring theodolites across the regu|
-646|52|F|142070.65|1994-11-22|2-HIGH|Clerk#000000203|0|carefully even foxes. fina|
-647|143|O|56449.23|1997-08-07|1-URGENT|Clerk#000000270|0|egular pearls. carefully express asymptotes are. even account|
-672|109|F|89877.09|1994-04-14|5-LOW|Clerk#000000106|0|egular requests are furiously according to |
-673|80|F|21137.08|1994-03-10|1-URGENT|Clerk#000000448|0| special pinto beans use quickly furiously even depende|
-674|34|F|27204.60|1992-08-29|5-LOW|Clerk#000000448|0|ully special deposits. furiously final warhorses affix carefully. fluffily f|
-675|13|O|125188.72|1997-07-31|2-HIGH|Clerk#000000168|0|ffily between the careful|
-676|38|O|163966.67|1996-12-13|2-HIGH|Clerk#000000248|0|the final deposits. special, pending|
-677|124|F|147915.68|1993-11-24|3-MEDIUM|Clerk#000000824|0|uriously special pinto beans cajole carefully. fi|
-678|131|F|135761.05|1993-02-27|5-LOW|Clerk#000000530|0|. blithely final somas about the|
-679|49|O|8945.03|1995-12-15|2-HIGH|Clerk#000000853|0|tealthy, final pinto beans haggle slyly. pending platelets about the special, |
-704|85|O|56210.26|1996-11-21|3-MEDIUM|Clerk#000000682|0|blithely pending platelets wake alongside of the final, iron|
-705|43|O|83773.49|1997-02-13|4-NOT SPECIFIED|Clerk#000000294|0|ithely regular dependencies. express, even packages sleep slyly pending t|
-706|148|O|23973.60|1995-09-09|1-URGENT|Clerk#000000448|0|g the packages. deposits caj|
-707|118|F|58218.35|1994-11-20|3-MEDIUM|Clerk#000000199|0| ideas about the silent, bold deposits nag dolphins|
-708|32|O|100445.59|1998-07-03|3-MEDIUM|Clerk#000000101|0|lphins cajole about t|
-709|37|O|72055.87|1998-04-21|1-URGENT|Clerk#000000461|0|ons alongside of the carefully bold pinto bea|
-710|133|F|208974.42|1993-01-02|5-LOW|Clerk#000000026|0| regular, regular requests boost. fluffily re|
-711|64|F|92484.70|1993-09-23|4-NOT SPECIFIED|Clerk#000000856|0|its. fluffily regular gifts are furi|
-736|47|O|130204.17|1998-06-21|5-LOW|Clerk#000000881|0|refully of the final pi|
-737|121|F|12984.85|1992-04-26|5-LOW|Clerk#000000233|0|ake blithely express, ironic theodolites. blithely special accounts wa|
-738|22|F|114145.18|1993-03-02|4-NOT SPECIFIED|Clerk#000000669|0|ly even foxes. furiously regular accounts cajole ca|
-739|1|O|159171.69|1998-05-31|5-LOW|Clerk#000000900|0| against the slyly ironic packages nag slyly ironic|
-740|44|O|83490.99|1995-07-16|3-MEDIUM|Clerk#000000583|0|courts haggle furiously across the final, regul|
-741|106|O|47985.98|1998-07-07|2-HIGH|Clerk#000000295|0|ic instructions. slyly express instructions solv|
-742|103|F|207632.55|1994-12-23|5-LOW|Clerk#000000543|0|equests? slyly ironic dolphins boost carefully above the blithely|
-743|79|O|23614.89|1996-10-04|4-NOT SPECIFIED|Clerk#000000933|0|eans. furiously ironic deposits sleep carefully carefully qui|
-768|98|O|220636.82|1996-08-20|3-MEDIUM|Clerk#000000411|0|jole slyly ironic packages. slyly even idea|
-769|80|F|43092.76|1993-06-02|3-MEDIUM|Clerk#000000172|0|ggle furiously. ironic packages haggle slyly. bold platelets affix s|
-770|32|O|64271.75|1998-05-23|5-LOW|Clerk#000000572|0|heodolites. furiously special pinto beans cajole pac|
-771|46|O|105302.05|1995-06-17|1-URGENT|Clerk#000000105|0|s. furiously final instructions across the deposit|
-772|97|F|128234.96|1993-04-17|2-HIGH|Clerk#000000430|0|s boost blithely fluffily idle ideas? fluffily even pin|
-773|133|F|146862.27|1993-09-26|3-MEDIUM|Clerk#000000307|0|tions are quickly accounts. accounts use bold, even pinto beans. gifts ag|
-774|80|O|145857.60|1995-12-04|1-URGENT|Clerk#000000883|0|tealthily even depths|
-775|134|F|59455.61|1995-03-18|1-URGENT|Clerk#000000191|0|kly express requests. fluffily silent accounts poach furiously|
-800|56|O|87892.38|1998-07-14|2-HIGH|Clerk#000000213|0|y alongside of the pending packages? final platelets nag fluffily carefu|
-801|118|F|127717.72|1992-02-18|1-URGENT|Clerk#000000186|0|iously from the furiously enticing reques|
-802|137|F|156381.95|1995-01-05|1-URGENT|Clerk#000000516|0|posits. ironic, pending requests cajole. even theodol|
-803|16|O|27629.66|1997-04-29|5-LOW|Clerk#000000260|0|ic instructions. even deposits haggle furiously at the deposits-- regular de|
-804|50|F|94400.43|1993-03-12|3-MEDIUM|Clerk#000000931|0|s. blithely final foxes are about the packag|
-805|127|O|90042.41|1995-07-05|4-NOT SPECIFIED|Clerk#000000856|0|y according to the fluffily |
-806|131|O|26839.16|1996-06-20|2-HIGH|Clerk#000000240|0| the ironic packages wake carefully fina|
-807|145|F|222392.53|1993-11-24|3-MEDIUM|Clerk#000000012|0|refully special tithes. blithely regular accoun|
-832|29|F|68494.08|1992-04-19|5-LOW|Clerk#000000495|0|xes. bravely regular packages sleep up the furiously bold accou|
-833|56|F|49033.69|1994-02-13|3-MEDIUM|Clerk#000000437|0|ts haggle quickly across the slyl|
-834|43|F|46459.92|1994-05-23|3-MEDIUM|Clerk#000000805|0| sleep. quickly even foxes are boldly. slyly express requests use slyly|
-835|65|O|62430.67|1995-10-08|4-NOT SPECIFIED|Clerk#000000416|0|s about the carefully special foxes haggle quickly about the|
-836|70|O|72843.48|1996-11-25|4-NOT SPECIFIED|Clerk#000000729|0|ely bold excuses sleep regular ideas. furiously unusual ideas wake furiou|
-837|116|F|60918.41|1994-06-15|4-NOT SPECIFIED|Clerk#000000563|0|kages sleep slyly above the ironic, final orbits|
-838|17|O|82918.36|1998-01-29|5-LOW|Clerk#000000213|0| slyly around the slyly even|
-839|28|O|70182.63|1995-08-08|1-URGENT|Clerk#000000951|0|the carefully even platelets. furiously unusual fo|
-864|139|O|74710.74|1997-08-17|1-URGENT|Clerk#000000036|0|ly after the slyly regular deposits. express, regular asymptotes nag ca|
-865|4|F|70430.54|1993-05-04|3-MEDIUM|Clerk#000000337|0|. special packages wake after the carefully final accounts. express pinto be|
-866|40|F|4766.19|1992-11-28|3-MEDIUM|Clerk#000000718|0|ins after the even, even accounts nod blithel|
-867|26|F|7471.75|1993-11-16|3-MEDIUM|Clerk#000000877|0|pades nag quickly final, |
-868|104|F|127345.45|1992-06-09|4-NOT SPECIFIED|Clerk#000000782|0|onic theodolites print carefully. blithely dogge|
-869|136|O|58932.19|1997-01-12|2-HIGH|Clerk#000000245|0|ar sheaves are slowly. slyly even attainments boost theodolites. furiously|
-870|34|F|40492.37|1993-06-20|4-NOT SPECIFIED|Clerk#000000123|0|blithely ironic ideas nod. sly, r|
-871|16|O|172861.58|1995-11-15|5-LOW|Clerk#000000882|0|oss the ironic theodolites.|
-896|2|F|169847.63|1993-03-09|1-URGENT|Clerk#000000187|0|inal packages eat blithely according to the warhorses. furiously quiet de|
-897|49|P|57697.44|1995-03-20|1-URGENT|Clerk#000000316|0| wake quickly against |
-898|55|F|101020.75|1993-06-03|2-HIGH|Clerk#000000611|0|. unusual pinto beans haggle quickly across |
-899|109|O|125562.09|1998-04-08|5-LOW|Clerk#000000575|0|rts engage carefully final theodolites.|
-900|46|F|120073.51|1994-10-01|4-NOT SPECIFIED|Clerk#000000060|0| fluffily express deposits nag furiousl|
-901|13|O|81826.12|1998-07-21|4-NOT SPECIFIED|Clerk#000000929|0|lyly even foxes are furious, silent requests. requests about the quickly |
-902|10|F|37348.62|1994-07-27|4-NOT SPECIFIED|Clerk#000000811|0|yly final requests over the furiously regula|
-903|11|O|109351.87|1995-07-07|4-NOT SPECIFIED|Clerk#000000793|0|e slyly about the final pl|
-928|67|F|228136.49|1995-03-02|5-LOW|Clerk#000000450|0|ithely express pinto beans. |
-929|83|F|109301.02|1992-10-02|2-HIGH|Clerk#000000160|0|its. furiously even foxes affix carefully finally silent accounts. express req|
-930|131|F|199102.23|1994-12-17|1-URGENT|Clerk#000000004|0| accounts nag slyly. ironic, ironic accounts wake blithel|
-931|103|F|117909.23|1992-12-07|1-URGENT|Clerk#000000881|0|ss packages haggle furiously express, regular deposits. even, e|
-932|41|O|40234.50|1997-05-16|2-HIGH|Clerk#000000218|0|ly express instructions boost furiously reg|
-933|97|F|71349.30|1992-08-05|4-NOT SPECIFIED|Clerk#000000752|0|ial courts wake permanently against the furiously regular ideas. unusual |
-934|52|O|17213.59|1996-07-03|1-URGENT|Clerk#000000229|0|ts integrate carefully. sly, regular deposits af|
-935|50|O|97733.87|1997-09-24|5-LOW|Clerk#000000180|0|iously final deposits cajole. blithely even packages |
-960|35|F|63537.13|1994-09-21|3-MEDIUM|Clerk#000000120|0|regular accounts. requests|
-961|56|P|158893.16|1995-06-04|4-NOT SPECIFIED|Clerk#000000720|0|ons nag furiously among the quickl|
-962|37|F|98258.73|1994-05-06|5-LOW|Clerk#000000463|0|ments nag deposits. fluffily ironic a|
-963|26|F|53287.25|1994-05-26|3-MEDIUM|Clerk#000000497|0|uses haggle carefully. slyly even dependencies after the packages ha|
-964|76|O|131146.47|1995-05-20|3-MEDIUM|Clerk#000000657|0|print blithely ironic, careful theodolit|
-965|70|P|41758.44|1995-05-15|5-LOW|Clerk#000000218|0|iously special packages. slyly pending requests are carefully |
-966|14|O|120516.93|1998-04-30|2-HIGH|Clerk#000000239|0|special deposits. furious|
-967|110|F|179287.95|1992-06-21|3-MEDIUM|Clerk#000000167|0|excuses engage quickly bold dep|
-992|55|O|133665.12|1997-11-11|3-MEDIUM|Clerk#000000875|0|ts. regular pinto beans thrash carefully sl|
-993|80|O|198238.65|1995-09-10|3-MEDIUM|Clerk#000000894|0|quickly express accounts among the furiously bol|
-994|2|F|41433.48|1994-04-20|5-LOW|Clerk#000000497|0|ole. slyly bold excuses nag caref|
-995|116|P|135157.92|1995-05-31|3-MEDIUM|Clerk#000000439|0|deas. blithely final deposits play. express accounts wake blithely caref|
-996|71|O|47447.63|1997-12-29|1-URGENT|Clerk#000000497|0|arefully final packages into the slyly final requests affix blit|
-997|109|O|27561.82|1997-05-19|2-HIGH|Clerk#000000651|0|ly express depths. furiously final requests haggle furiously. carefu|
-998|32|F|65269.38|1994-11-26|4-NOT SPECIFIED|Clerk#000000956|0|ronic dolphins. ironic, bold ideas haggle furiously furious|
-999|61|F|145249.13|1993-09-05|5-LOW|Clerk#000000464|0|pitaphs sleep. regular accounts use. f|
-1024|4|O|176084.63|1997-12-23|5-LOW|Clerk#000000903|0| blithely. even, express theodolites cajole slyly across|
-1025|103|F|82034.03|1995-05-05|2-HIGH|Clerk#000000376|0|ross the slyly final pa|
-1026|73|O|36464.76|1997-06-04|5-LOW|Clerk#000000223|0|s wake blithely. special acco|
-1027|128|F|112770.89|1992-06-03|3-MEDIUM|Clerk#000000241|0|equests cajole. slyly final pinto bean|
-1028|70|F|153864.67|1994-01-01|2-HIGH|Clerk#000000131|0|ts are. final, silent deposits are among the fl|
-1029|130|F|47440.91|1994-06-21|2-HIGH|Clerk#000000700|0|quests sleep. slyly even foxes wake quickly final theodolites. clo|
-1030|134|F|16346.94|1994-06-15|5-LOW|Clerk#000000422|0|ully ironic accounts sleep carefully. requests are carefully alongside of the |
-1031|4|F|128024.71|1994-09-01|3-MEDIUM|Clerk#000000448|0|s; ironic theodolites along the carefully ex|
-1056|28|F|38446.39|1995-02-11|1-URGENT|Clerk#000000125|0|t, even deposits hang about the slyly special i|
-1057|76|F|108107.42|1992-02-20|1-URGENT|Clerk#000000124|0|cuses dazzle carefully careful, ironic pinto beans. carefully even theod|
-1058|53|F|89359.11|1993-04-26|3-MEDIUM|Clerk#000000373|0|kly pending courts haggle. blithely regular sheaves integrate carefully fi|
-1059|127|F|198360.22|1994-02-27|1-URGENT|Clerk#000000104|0|en accounts. carefully bold packages cajole daringly special depende|
-1060|140|F|121994.04|1993-02-21|3-MEDIUM|Clerk#000000989|0|l platelets sleep quickly slyly special requests. furiously |
-1061|103|O|166947.75|1998-05-15|5-LOW|Clerk#000000576|0|uests sleep at the packages. fur|
-1062|106|O|39805.04|1997-01-15|1-URGENT|Clerk#000000152|0|eposits use blithely |
-1063|37|F|41392.31|1994-04-02|2-HIGH|Clerk#000000024|0|deposits nag quickly regular deposits. quickl|
-1088|148|F|47120.41|1992-05-21|5-LOW|Clerk#000000347|0|counts are blithely. platelets print. carefully |
-1089|49|O|103192.74|1996-05-04|4-NOT SPECIFIED|Clerk#000000226|0|ns haggle ruthlessly. even requests are quickly abov|
-1090|19|O|32929.30|1997-11-15|2-HIGH|Clerk#000000300|0| furiously regular platelets haggle along the slyly unusual foxes! |
-1091|83|O|35795.22|1996-08-27|1-URGENT|Clerk#000000549|0| even pinto beans haggle quickly alongside of the eve|
-1092|124|P|85552.21|1995-03-04|3-MEDIUM|Clerk#000000006|0|re quickly along the blithe|
-1093|101|O|79189.58|1997-07-31|4-NOT SPECIFIED|Clerk#000000159|0| after the carefully ironic requests. carefully ironic packages wake fluffil|
-1094|145|O|9006.25|1997-12-24|3-MEDIUM|Clerk#000000570|0|beans affix furiously about the pending, even deposits. finally pendi|
-1095|145|O|178491.24|1995-08-22|3-MEDIUM|Clerk#000000709|0|sly bold requests cajole carefully according to|
-1120|140|O|107958.62|1997-11-07|3-MEDIUM|Clerk#000000319|0|lly special requests. slyly pending platelets are quickly pending requ|
-1121|29|O|241837.88|1997-01-13|3-MEDIUM|Clerk#000000541|0|r escapades. deposits above the fluffily bold requests hag|
-1122|121|O|179747.47|1997-01-10|1-URGENT|Clerk#000000083|0|uffily carefully final theodolites. furiously express packages affix|
-1123|73|O|93259.93|1996-08-03|3-MEDIUM|Clerk#000000929|0|uriously pending requests. slyly regular instruction|
-1124|80|O|141858.97|1998-07-30|5-LOW|Clerk#000000326|0|regular pinto beans along the fluffily silent packages|
-1125|25|F|80438.38|1994-10-27|2-HIGH|Clerk#000000510|0|ithely final requests. i|
-1126|145|O|59982.31|1998-01-28|4-NOT SPECIFIED|Clerk#000000928|0|d slyly regular ideas: special ideas believe slyly. slyly ironic sheaves w|
-1127|58|O|103320.91|1995-09-19|4-NOT SPECIFIED|Clerk#000000397|0|usly silent, regular pinto beans. blithely express requests boos|
-1152|49|F|51775.54|1994-08-14|4-NOT SPECIFIED|Clerk#000000496|0|equests. deposits ab|
-1153|121|O|220727.97|1996-04-18|5-LOW|Clerk#000000059|0| across the pending deposi|
-1154|37|F|192417.85|1992-02-15|1-URGENT|Clerk#000000268|0|old asymptotes are special requests. blithely even deposits sleep furiously|
-1155|149|O|126902.81|1997-10-06|2-HIGH|Clerk#000000164|0|c deposits haggle among the ironic, even requests. carefully ironic sheaves n|
-1156|133|O|217682.81|1996-10-19|1-URGENT|Clerk#000000200|0| blithely ironic dolphins. furiously pendi|
-1157|97|O|85394.06|1998-01-14|4-NOT SPECIFIED|Clerk#000000207|0|out the regular excuses boost carefully against the furio|
-1158|142|O|31075.51|1996-06-30|2-HIGH|Clerk#000000549|0|integrate slyly furiously ironic deposit|
-1159|70|F|55553.68|1992-09-18|3-MEDIUM|Clerk#000000992|0|ts may sleep. requests according to the|
-1184|89|O|39700.29|1997-10-26|5-LOW|Clerk#000000777|0|iously even packages haggle fluffily care|
-1185|74|F|47033.21|1992-08-24|5-LOW|Clerk#000000344|0| even escapades are. package|
-1186|59|O|82026.18|1996-08-15|4-NOT SPECIFIED|Clerk#000000798|0|ingly regular pinto beans: instructi|
-1187|134|F|85948.02|1992-11-20|3-MEDIUM|Clerk#000000047|0|s after the furiously final deposits boost slyly under the|
-1188|20|O|54655.07|1996-04-11|2-HIGH|Clerk#000000256|0|ully ironic deposits. slyl|
-1189|46|F|71017.99|1994-04-09|1-URGENT|Clerk#000000243|0|f the even accounts. courts print blithely ironic accounts. sile|
-1190|13|O|31043.39|1997-03-16|5-LOW|Clerk#000000575|0|ccounts above the foxes integrate carefully after the |
-1191|112|O|28623.04|1995-11-07|3-MEDIUM|Clerk#000000011|0|uests nag furiously. carefully even requests|
-1216|122|F|68056.57|1992-12-07|5-LOW|Clerk#000000918|0|nal foxes around the e|
-1217|7|F|40982.08|1992-04-26|4-NOT SPECIFIED|Clerk#000000538|0| foxes nag quickly. ironic excuses nod. blithely pending|
-1218|10|F|99834.47|1994-06-20|4-NOT SPECIFIED|Clerk#000000994|0|s cajole. special, silent deposits about the theo|
-1219|28|O|10163.56|1995-10-05|3-MEDIUM|Clerk#000000800|0|od carefully. slyly final dependencies across the even fray|
-1220|49|O|122157.14|1996-08-29|1-URGENT|Clerk#000000712|0|inal theodolites wake. fluffily ironic asymptotes cajol|
-1221|14|F|117397.16|1992-04-19|4-NOT SPECIFIED|Clerk#000000852|0| detect against the silent, even deposits. carefully ironic|
-1222|10|F|47623.94|1993-02-05|3-MEDIUM|Clerk#000000811|0|theodolites use quickly even accounts. carefully final asympto|
-1223|10|O|26714.67|1996-05-25|4-NOT SPECIFIED|Clerk#000000238|0|posits was blithely fr|
-1248|49|F|210713.88|1992-01-02|1-URGENT|Clerk#000000890|0|t the carefully regular dugouts. s|
-1249|149|F|45889.09|1994-01-05|1-URGENT|Clerk#000000095|0|al ideas sleep above the pending pin|
-1250|37|F|12907.62|1992-09-29|4-NOT SPECIFIED|Clerk#000000652|0|ts after the fluffily pending instructions use slyly about the s|
-1251|38|O|109536.55|1997-10-30|1-URGENT|Clerk#000000276|0|, brave sauternes. deposits boost fluffily.|
-1252|149|O|93403.05|1997-08-04|5-LOW|Clerk#000000348|0|ng the slyly regular excuses. special courts nag furiously blithely e|
-1253|115|F|92730.74|1993-01-26|1-URGENT|Clerk#000000775|0| requests sleep furiously even foxes. ruthless packag|
-1254|70|O|94649.25|1995-12-22|1-URGENT|Clerk#000000607|0| pinto beans. carefully regular request|
-1255|122|F|62518.31|1994-05-30|4-NOT SPECIFIED|Clerk#000000798|0|ct slyly regular accounts. quick|
-1280|97|F|91664.85|1993-01-11|5-LOW|Clerk#000000160|0|posits thrash quickly after the theodolites. furiously iro|
-1281|62|F|165454.51|1994-12-11|1-URGENT|Clerk#000000430|0|counts. carefully pending accounts eat |
-1282|116|F|61297.42|1992-02-29|4-NOT SPECIFIED|Clerk#000000168|0|he quickly special packages. furiously final re|
-1283|118|O|202623.92|1996-08-30|4-NOT SPECIFIED|Clerk#000000260|0| pinto beans boost slyly ac|
-1284|134|O|106122.38|1996-01-07|2-HIGH|Clerk#000000492|0|s. blithely silent deposits s|
-1285|11|F|139124.72|1992-06-01|1-URGENT|Clerk#000000423|0|cial deposits cajole after the ironic requests. p|
-1286|109|F|207291.83|1993-05-14|4-NOT SPECIFIED|Clerk#000000939|0| deposits use carefully from the excuses. slyly bold p|
-1287|19|F|131432.42|1994-07-05|2-HIGH|Clerk#000000288|0|ly ironic dolphins integrate furiously among the final packages. st|
-1312|112|F|58111.00|1994-05-19|3-MEDIUM|Clerk#000000538|0|n, express accounts across the ironic|
-1313|148|F|46598.65|1994-09-13|1-URGENT|Clerk#000000774|0|ld accounts. regular deposits cajole. ironically pending theodolites use car|
-1314|143|F|56207.66|1994-05-13|3-MEDIUM|Clerk#000000485|0|ickly blithe packages nod ideas. furiously bold braids boost around the car|
-1315|22|O|121935.23|1998-03-22|5-LOW|Clerk#000000840|0|final theodolites alongside of the carefu|
-1316|16|F|163746.47|1993-12-03|1-URGENT|Clerk#000000857|0|ully bold theodolites? pending, bold pin|
-1317|100|P|139714.71|1995-05-19|2-HIGH|Clerk#000000373|0|sts. furiously special deposits lose fur|
-1318|128|O|81663.65|1998-06-27|3-MEDIUM|Clerk#000000581|0|s hang bold requests. pending, re|
-1319|32|O|31103.83|1996-09-27|2-HIGH|Clerk#000000257|0|y across the ruthlessly ironic accounts. unusu|
-1344|17|F|43809.37|1992-04-16|5-LOW|Clerk#000000178|0|omise close, silent requests. pending theodolites boost pending |
-1345|95|F|111207.93|1992-10-28|5-LOW|Clerk#000000447|0| regular tithes. quickly fluffy de|
-1346|76|F|171975.62|1992-06-18|2-HIGH|Clerk#000000374|0|ges sleep quickly-- even pint|
-1347|41|O|173444.60|1997-06-20|5-LOW|Clerk#000000977|0|he furiously even foxes use carefully express req|
-1348|19|O|94135.77|1998-04-18|5-LOW|Clerk#000000206|0|tly. quickly even deposi|
-1349|64|O|46376.09|1997-10-26|1-URGENT|Clerk#000000543|0|yly! blithely special theodolites cajole. unusual, reg|
-1350|52|F|49305.98|1993-08-24|1-URGENT|Clerk#000000635|0|iously about the blithely special a|
-1351|106|O|24637.96|1998-04-20|1-URGENT|Clerk#000000012|0| cajole. regular, special re|
-1376|47|O|23984.88|1997-05-04|4-NOT SPECIFIED|Clerk#000000730|0|der furiously final, final frets. carefull|
-1377|20|O|108334.30|1998-04-24|4-NOT SPECIFIED|Clerk#000000625|0|lly across the blithely express accounts. ironic excuses promise carefully de|
-1378|20|O|118495.12|1996-03-09|4-NOT SPECIFIED|Clerk#000000705|0| furiously even tithes cajole slyly among the quick|
-1379|65|O|84627.76|1998-05-25|5-LOW|Clerk#000000861|0|y deposits are caref|
-1380|137|O|94969.41|1996-07-07|3-MEDIUM|Clerk#000000969|0|inal deposits wake slyly daringly even requests. bold, even foxe|
-1381|127|O|58212.22|1998-05-25|3-MEDIUM|Clerk#000000107|0|even requests breach after the bold, ironic instructions. slyly even|
-1382|133|F|173522.71|1993-08-17|5-LOW|Clerk#000000241|0|fully final packages sl|
-1383|121|F|34797.72|1993-04-27|2-HIGH|Clerk#000000785|0|ts. express requests sleep blithel|
-1408|55|O|183965.61|1997-12-26|4-NOT SPECIFIED|Clerk#000000942|0|t the quickly final asymptotes. unusual|
-1409|143|F|72440.52|1992-12-31|4-NOT SPECIFIED|Clerk#000000065|0|ructions. furiously unusual excuses are regular, unusual theodolites. fin|
-1410|113|O|114879.19|1997-04-12|5-LOW|Clerk#000000123|0|iously along the bravely regular dolphins. pinto beans cajole furiously sp|
-1411|95|F|164462.61|1994-12-21|2-HIGH|Clerk#000000566|0|s. furiously special excuses across the pending pinto beans haggle sp|
-1412|53|F|78676.54|1993-03-13|4-NOT SPECIFIED|Clerk#000000083|0|uffily daring theodolit|
-1413|91|O|75733.58|1997-06-14|3-MEDIUM|Clerk#000000342|0|, ironic instructions. carefully even packages dazzle|
-1414|77|O|38057.81|1995-08-16|1-URGENT|Clerk#000000883|0|ccounts. ironic foxes haggle car|
-1415|79|F|24654.79|1994-05-29|4-NOT SPECIFIED|Clerk#000000601|0|rays. blithely final ideas affix quickl|
-1440|98|O|50201.16|1995-08-10|5-LOW|Clerk#000000956|0| pending requests. closely s|
-1441|122|O|156477.94|1997-03-06|4-NOT SPECIFIED|Clerk#000000156|0|ter the excuses. ironic dependencies m|
-1442|112|F|7108.12|1994-07-05|4-NOT SPECIFIED|Clerk#000000935|0|nal pinto beans. slyly ironic ideas cajol|
-1443|44|O|44672.03|1996-12-16|5-LOW|Clerk#000000185|0|x blithely against the carefully final somas. even asymptotes are. quickly spe|
-1444|134|F|207907.60|1994-12-06|3-MEDIUM|Clerk#000000783|0|ove the bold accounts cajole fluffily about|
-1445|115|F|154653.32|1995-01-10|3-MEDIUM|Clerk#000000211|0|even packages wake fluffily |
-1446|41|O|27663.16|1998-02-16|5-LOW|Clerk#000000274|0|lly regular notornis above the requests sleep final accounts! |
-1447|91|F|108171.38|1992-10-15|2-HIGH|Clerk#000000880|0|inly against the blithely pending excuses. regular, pe|
-1472|149|O|65331.05|1996-10-06|5-LOW|Clerk#000000303|0|y special dolphins around the final dependencies wake quick|
-1473|94|O|80624.38|1997-03-17|3-MEDIUM|Clerk#000000960|0|furiously close accoun|
-1474|70|F|51697.18|1995-01-09|1-URGENT|Clerk#000000438|0|detect quickly above the carefully even |
-1475|5|O|185496.66|1997-11-12|2-HIGH|Clerk#000000972|0|cally final packages boost. blithely ironic packa|
-1476|145|O|18795.62|1996-06-27|2-HIGH|Clerk#000000673|0|ding accounts hinder alongside of the quickly pending requests. fluf|
-1477|76|O|231831.35|1997-08-24|5-LOW|Clerk#000000612|0|ly bold foxes. final ideas would cajo|
-1478|50|O|20791.50|1997-08-03|2-HIGH|Clerk#000000827|0|lessly. carefully express|
-1479|16|O|31471.04|1995-12-16|4-NOT SPECIFIED|Clerk#000000697|0|he furiously even foxes. thinly bold deposits|
-1504|2|F|89399.40|1992-08-28|3-MEDIUM|Clerk#000000381|0|, brave deposits. bold de|
-1505|37|F|55892.35|1992-08-21|2-HIGH|Clerk#000000544|0|s. slyly ironic packages cajole. carefully regular packages haggle |
-1506|148|F|195844.84|1992-09-21|3-MEDIUM|Clerk#000000620|0| dependencies. accounts affix blithely slowly unusual deposits. slyly regular |
-1507|121|F|96166.92|1993-10-14|3-MEDIUM|Clerk#000000305|0|stealthy, ironic de|
-1508|103|O|151282.65|1998-04-10|5-LOW|Clerk#000000117|0| after the furiously regular pinto beans hang slyly quickly ironi|
-1509|64|F|180455.98|1993-07-08|5-LOW|Clerk#000000770|0|the regular ideas. regul|
-1510|53|O|154590.05|1996-09-17|5-LOW|Clerk#000000128|0|ld carefully. furiously final asymptotes haggle furiously|
-1511|79|O|59651.38|1996-12-22|4-NOT SPECIFIED|Clerk#000000386|0|ts above the depend|
-1536|94|O|5184.26|1997-01-26|3-MEDIUM|Clerk#000000117|0|ges are! furiously final deposits cajole iron|
-1537|109|F|108317.51|1992-02-15|4-NOT SPECIFIED|Clerk#000000862|0|g to the even deposits. ironic, final packages |
-1538|29|O|179554.41|1995-06-18|4-NOT SPECIFIED|Clerk#000000258|0| instructions. regular theod|
-1539|112|F|39612.63|1995-03-10|5-LOW|Clerk#000000840|0|nstructions boost pa|
-1540|16|F|128014.15|1992-08-05|2-HIGH|Clerk#000000927|0|r ideas hinder blithe|
-1541|94|P|47286.32|1995-05-18|1-URGENT|Clerk#000000906|0|y. slyly ironic warhorses around the furiously regul|
-1542|143|F|132972.24|1993-09-15|3-MEDIUM|Clerk#000000435|0|t the furiously close deposits do was f|
-1543|52|O|139047.22|1997-02-20|1-URGENT|Clerk#000000398|0|unts. furiously pend|
-1568|17|O|76119.72|1997-01-30|4-NOT SPECIFIED|Clerk#000000554|0|d notornis. carefully |
-1569|104|O|87803.55|1998-04-02|5-LOW|Clerk#000000786|0|orbits. fluffily even decoys serve blithely. furiously furious realms nag acro|
-1570|124|O|35589.57|1998-03-16|1-URGENT|Clerk#000000745|0|pinto beans haggle furiousl|
-1571|103|F|151404.78|1992-12-05|2-HIGH|Clerk#000000565|0|ously furiously bold warthogs. slyly ironic instructions are quickly a|
-1572|11|O|47232.79|1996-02-24|2-HIGH|Clerk#000000994|0|fluffily ironic accounts haggle blithely final platelets! slyly regular foxes|
-1573|148|F|86918.57|1992-12-28|2-HIGH|Clerk#000000940|0|ess, ironic deposits use along the carefu|
-1574|134|O|179923.54|1996-12-12|3-MEDIUM|Clerk#000000809|0| ideas hinder after the carefully unusual |
-1575|145|O|197031.52|1995-09-13|3-MEDIUM|Clerk#000000497|0|. furiously regular dep|
-1600|94|F|130515.61|1993-03-03|3-MEDIUM|Clerk#000000627|0|tions cajole quietly above the regular, silent requests. slyly fin|
-1601|53|F|73962.95|1994-08-27|5-LOW|Clerk#000000469|0|ent deposits are ca|
-1602|1|F|4225.26|1993-08-05|5-LOW|Clerk#000000660|0|deposits. busily silent instructions haggle furiously. fin|
-1603|2|F|29305.47|1993-07-31|4-NOT SPECIFIED|Clerk#000000869|0|s. slyly silent deposits boo|
-1604|113|F|107139.29|1993-07-17|5-LOW|Clerk#000000512|0|lithely silent waters. blithely unusual packages alongside |
-1605|58|O|130687.64|1998-04-24|4-NOT SPECIFIED|Clerk#000000616|0|sleep furiously? ruthless, even pinto beans |
-1606|53|O|115877.40|1997-04-17|4-NOT SPECIFIED|Clerk#000000550|0|r requests. quickly even platelets breach before the ironically|
-1607|149|O|166335.03|1995-12-16|2-HIGH|Clerk#000000498|0| bold, pending foxes haggle. slyly silent |
-1632|67|O|183286.33|1997-01-08|3-MEDIUM|Clerk#000000351|0|onic requests are accounts. bold a|
-1633|16|O|52359.51|1995-10-14|2-HIGH|Clerk#000000666|0|y silent accounts sl|
-1634|70|O|145898.47|1996-09-10|1-URGENT|Clerk#000000360|0|arefully blithely ironic requests. slyly unusual instructions alongside|
-1635|4|O|70232.26|1997-02-13|3-MEDIUM|Clerk#000000958|0|s. slyly ironic requests affix slyly |
-1636|79|O|172021.87|1997-06-17|3-MEDIUM|Clerk#000000457|0|ding requests. slyly ironic courts wake quickl|
-1637|73|F|180912.15|1995-02-08|4-NOT SPECIFIED|Clerk#000000189|0| final accounts. blithely silent ideas cajole bravely. carefully express |
-1638|139|O|172436.30|1997-08-13|2-HIGH|Clerk#000000643|0|he fluffily regular asymp|
-1639|5|O|104166.56|1995-08-20|4-NOT SPECIFIED|Clerk#000000939|0|haggle furiously. final requests detect furious|
-1664|64|O|178060.22|1996-03-03|1-URGENT|Clerk#000000090|0|y quickly even asymptotes. furiously regular packages haggle quickly fin|
-1665|76|F|4819.91|1994-05-08|2-HIGH|Clerk#000000920|0|ly regular packages are fluffily even ideas. fluffily final|
-1666|95|O|128367.97|1995-10-18|1-URGENT|Clerk#000000849|0|ffily pending dependencies wake fluffily. pending, final accounts |
-1667|5|O|125030.37|1997-10-10|2-HIGH|Clerk#000000103|0|e accounts. slyly express accounts must are a|
-1668|142|O|137576.19|1997-07-12|4-NOT SPECIFIED|Clerk#000000148|0|eodolites. carefully dogged dolphins haggle q|
-1669|2|O|24362.39|1997-06-09|3-MEDIUM|Clerk#000000663|0|er ironic requests detect furiously blithely sp|
-1670|25|O|89999.72|1997-05-24|2-HIGH|Clerk#000000320|0|unusual dependencies. furiously special platelets main|
-1671|35|O|104391.11|1996-07-27|4-NOT SPECIFIED|Clerk#000000275|0|ly. slyly pending requests was above the |
-1696|4|O|102665.03|1998-01-08|4-NOT SPECIFIED|Clerk#000000041|0|bravely bold accounts above the quickly bold|
-1697|76|O|122621.31|1996-10-07|1-URGENT|Clerk#000000815|0|o x-ray blithely. pl|
-1698|40|O|141118.87|1997-04-23|2-HIGH|Clerk#000000432|0|slyly. carefully express deposit|
-1699|85|F|66408.29|1993-12-30|1-URGENT|Clerk#000000125|0|jole blithely. furiously un|
-1700|65|O|89143.36|1996-06-15|3-MEDIUM|Clerk#000000328|0|ely final dolphins wake sometimes above the quietly regular deposits. fur|
-1701|130|F|72835.95|1992-05-19|2-HIGH|Clerk#000000395|0|furiously. regular, close theodoli|
-1702|67|P|194119.31|1995-05-07|2-HIGH|Clerk#000000300|0|around the carefully final deposits cajole carefully according to the b|
-1703|134|F|121220.59|1993-01-28|3-MEDIUM|Clerk#000000463|0| pinto beans poach. bold courts boost. regular, express deposits at|
-1728|64|O|131604.34|1996-05-22|2-HIGH|Clerk#000000711|0|beans. slyly regular instructions sleep! slyly final packages|
-1729|133|F|12137.76|1992-05-19|2-HIGH|Clerk#000000158|0|pending foxes wake. accounts|
-1730|124|O|150886.49|1998-07-24|5-LOW|Clerk#000000794|0| fluffily pending deposits serve. furiously even requests wake furiou|
-1731|128|O|190490.78|1996-01-06|1-URGENT|Clerk#000000268|0|lithely regular, final instructions. ironic, express packages are above|
-1732|146|F|179854.51|1993-11-29|5-LOW|Clerk#000000903|0|inal requests integrate dolph|
-1733|148|O|165489.52|1996-05-12|2-HIGH|Clerk#000000789|0|e carefully according to the accounts. furiously pending instructions sleep|
-1734|7|F|44002.53|1994-06-11|2-HIGH|Clerk#000000722|0| final ideas haggle. blithely quick foxes sleep busily bold ideas. i|
-1735|22|F|98541.95|1992-12-27|1-URGENT|Clerk#000000458|0|ully idle requests wake qu|
-1760|115|O|82151.12|1996-05-17|5-LOW|Clerk#000000917|0| deposits. busily regular deposits wake blithely along the furiously even re|
-1761|106|F|211925.95|1993-12-24|2-HIGH|Clerk#000000817|0|efully slyly bold frets. packages boost b|
-1762|77|F|202227.17|1994-08-20|4-NOT SPECIFIED|Clerk#000000653|0|ly ironic packages. furi|
-1763|121|O|140685.01|1996-10-29|2-HIGH|Clerk#000000321|0|es. bold dependencies haggle furiously along |
-1764|29|F|47384.71|1992-03-25|1-URGENT|Clerk#000000182|0|. slyly final packages integrate carefully acro|
-1765|73|O|36551.43|1995-12-03|4-NOT SPECIFIED|Clerk#000000490|0| regular excuses wake slyly|
-1766|139|O|41032.81|1996-10-12|2-HIGH|Clerk#000000983|0|unusual deposits affix quickly beyond the carefully s|
-1767|25|P|136582.60|1995-03-14|2-HIGH|Clerk#000000327|0|eposits use carefully carefully regular platelets. quickly regular packages al|
-1792|49|F|107919.86|1993-11-09|5-LOW|Clerk#000000102|0|ructions haggle along the pending packages. carefully speci|
-1793|19|F|82504.56|1992-07-12|4-NOT SPECIFIED|Clerk#000000291|0|regular packages cajole. blithely special packages according to the final d|
-1794|140|O|179462.21|1997-09-28|1-URGENT|Clerk#000000686|0|ally silent pinto beans. regular package|
-1795|94|F|146849.33|1994-03-19|2-HIGH|Clerk#000000815|0| quickly final packages! blithely dogged accounts c|
-1796|47|F|33755.47|1992-11-21|2-HIGH|Clerk#000000245|0|eans use furiously around th|
-1797|125|O|51494.47|1996-05-07|3-MEDIUM|Clerk#000000508|0|quiet platelets haggle since the quickly ironic instructi|
-1798|52|O|46393.97|1997-07-28|1-URGENT|Clerk#000000741|0|al foxes are blithe|
-1799|61|F|46815.93|1994-03-07|4-NOT SPECIFIED|Clerk#000000339|0|ns sleep furiously final waters. blithely regular instructions h|
-1824|49|F|81351.53|1994-05-05|1-URGENT|Clerk#000000972|0|e blithely fluffily|
-1825|148|F|150582.77|1993-12-05|3-MEDIUM|Clerk#000000345|0|ironic, final accou|
-1826|82|F|124719.97|1992-04-16|4-NOT SPECIFIED|Clerk#000000718|0|the even asymptotes dazzle fluffily slyly regular asymptotes. final, unu|
-1827|106|O|210113.88|1996-06-22|4-NOT SPECIFIED|Clerk#000000369|0|luffily even requests haggle sly|
-1828|32|F|137369.50|1994-04-18|3-MEDIUM|Clerk#000000840|0|y quickly bold packag|
-1829|112|F|127532.20|1994-05-08|2-HIGH|Clerk#000000537|0| accounts wake above the furiously unusual requests. pending package|
-1830|133|F|85122.24|1995-02-23|1-URGENT|Clerk#000000045|0|according to the even,|
-1831|71|F|58032.77|1993-12-02|1-URGENT|Clerk#000000854|0| accounts. carefully even accounts boost furiously. regular ideas engage. |
-1856|106|F|189361.42|1992-03-20|4-NOT SPECIFIED|Clerk#000000952|0|. special pinto beans run acr|
-1857|133|F|102793.59|1993-01-13|2-HIGH|Clerk#000000083|0|hely final ideas slee|
-1858|143|O|30457.91|1997-12-13|1-URGENT|Clerk#000000389|0|thely. slyly final deposits sleep|
-1859|61|O|105094.09|1997-04-11|4-NOT SPECIFIED|Clerk#000000949|0| the foxes. bravely special excuses nag carefully special r|
-1860|10|O|9103.40|1996-04-04|3-MEDIUM|Clerk#000000556|0|osits. quickly bold deposits according to |
-1861|70|F|95063.41|1994-01-03|3-MEDIUM|Clerk#000000847|0|r the fluffily close sauternes. furio|
-1862|34|O|97981.06|1998-02-24|5-LOW|Clerk#000000348|0|ts snooze ironically abou|
-1863|74|F|96359.65|1993-09-23|4-NOT SPECIFIED|Clerk#000000658|0|old sentiments. careful, |
-1888|121|F|224724.11|1993-10-31|4-NOT SPECIFIED|Clerk#000000659|0|olites. pinto beans cajole. regular deposits affix. slyly regular|
-1889|25|O|96431.77|1997-03-16|1-URGENT|Clerk#000000854|0|p around the regular notornis. unusual deposits|
-1890|10|O|202364.58|1996-12-18|4-NOT SPECIFIED|Clerk#000000627|0|romise final, regular deposits. regular fox|
-1891|61|F|76848.96|1994-12-15|5-LOW|Clerk#000000495|0|unusual foxes sleep regular deposits. requests wake special pac|
-1892|25|F|133273.64|1994-03-26|5-LOW|Clerk#000000733|0|sts. slyly regular dependencies use slyly. ironic, spec|
-1893|125|O|116792.13|1997-10-30|2-HIGH|Clerk#000000111|0|olites. silent, special deposits eat slyly quickly express packages; hockey p|
-1894|76|F|44387.23|1992-03-30|1-URGENT|Clerk#000000626|0|e furiously. furiously even accounts are slyly final accounts. closely speci|
-1895|7|F|44429.81|1994-05-30|3-MEDIUM|Clerk#000000878|0|ress accounts. bold accounts cajole. slyly final pinto beans poach regul|
-1920|110|O|119605.91|1998-06-24|5-LOW|Clerk#000000018|0|hely; furiously regular excuses|
-1921|88|F|57584.12|1994-01-18|3-MEDIUM|Clerk#000000293|0|counts. slyly quiet requests along the ruthlessly regular accounts are |
-1922|56|O|11575.77|1996-07-13|3-MEDIUM|Clerk#000000984|0|side of the blithely final re|
-1923|136|O|171128.10|1997-07-07|1-URGENT|Clerk#000000471|0| express dolphins. |
-1924|76|O|169756.19|1996-09-07|4-NOT SPECIFIED|Clerk#000000823|0| of the ironic accounts. instructions near the final instr|
-1925|17|F|146382.71|1992-03-05|1-URGENT|Clerk#000000986|0|e slyly regular deposits. furiously |
-1926|94|O|100035.03|1996-01-31|2-HIGH|Clerk#000000568|0|cajole. even warhorses sleep carefully. |
-1927|140|O|23327.88|1995-09-30|3-MEDIUM|Clerk#000000616|0|riously special packages. permanent pearls wake furiously. even packages alo|
-1952|67|F|12896.25|1994-03-16|2-HIGH|Clerk#000000254|0| silent accounts boost |
-1953|149|F|57213.18|1993-11-30|3-MEDIUM|Clerk#000000891|0| fluffily along the quickly even packages. |
-1954|56|O|158853.63|1997-05-31|4-NOT SPECIFIED|Clerk#000000104|0| unusual excuses cajole according to the blithely regular theodolites.|
-1955|13|F|103085.13|1992-04-20|1-URGENT|Clerk#000000792|0|ly special ideas. sometimes final |
-1956|127|F|88704.26|1992-09-20|4-NOT SPECIFIED|Clerk#000000600|0|ironic ideas are silent ideas. furiously final deposits sleep slyly carefu|
-1957|31|O|77482.87|1998-07-21|2-HIGH|Clerk#000000639|0|nding excuses about the |
-1958|53|O|176294.34|1995-09-22|5-LOW|Clerk#000000343|0| haggle blithely. flu|
-1959|43|O|62277.18|1997-01-13|4-NOT SPECIFIED|Clerk#000000631|0| cajole about the blithely express requests. even excuses mold bl|
-1984|52|O|79230.47|1998-04-01|1-URGENT|Clerk#000000416|0| slyly special instructions. unusual foxes use packages. carefully regular req|
-1985|7|F|171522.54|1994-09-02|4-NOT SPECIFIED|Clerk#000000741|0|slyly slyly even pains. slyly reg|
-1986|149|F|34269.96|1994-05-05|2-HIGH|Clerk#000000609|0|across the theodolites. quick|
-1987|100|F|6406.29|1994-04-30|2-HIGH|Clerk#000000652|0|gular platelets alongside |
-1988|109|O|117132.72|1995-10-06|4-NOT SPECIFIED|Clerk#000000011|0|ly ironic dolphins serve quickly busy accounts. bu|
-1989|118|F|39263.28|1994-03-16|4-NOT SPECIFIED|Clerk#000000747|0|ely bold pinto beans ha|
-1990|119|F|48781.39|1994-12-16|2-HIGH|Clerk#000000114|0|e bold patterns. always regul|
-1991|19|F|139854.41|1992-09-07|4-NOT SPECIFIED|Clerk#000000854|0|ing accounts can haggle at the carefully final Tiresias-- pending, regular|
-2016|8|O|24347.36|1996-08-16|3-MEDIUM|Clerk#000000641|0|the carefully ironic foxes. requests nag bold, r|
-2017|101|O|70529.27|1998-05-13|3-MEDIUM|Clerk#000000427|0|nusual requests. blit|
-2018|19|P|25007.95|1995-04-05|4-NOT SPECIFIED|Clerk#000000920|0|gular accounts wake fur|
-2019|136|F|43789.14|1992-10-23|1-URGENT|Clerk#000000565|0| furiously bold packages. fluffily fi|
-2020|73|F|136162.13|1993-06-21|3-MEDIUM|Clerk#000000192|0|es. furiously regular packages above the furiously special theodolites are a|
-2021|70|O|27016.74|1995-07-15|1-URGENT|Clerk#000000155|0|ong the furiously regular requests. unusual deposits wake fluffily inside|
-2022|62|F|206742.11|1992-03-15|1-URGENT|Clerk#000000268|0| dependencies sleep fluffily even, ironic deposits. express, silen|
-2023|118|F|144123.37|1992-05-06|5-LOW|Clerk#000000137|0|ular courts engage according to the|
-2048|17|F|33401.77|1993-11-15|1-URGENT|Clerk#000000934|0|s cajole after the blithely final accounts. f|
-2049|31|O|153048.74|1995-12-07|2-HIGH|Clerk#000000859|0|ly regular requests thrash blithely about the fluffily even theodolites. r|
-2050|28|F|208517.98|1994-06-02|4-NOT SPECIFIED|Clerk#000000821|0|d accounts against the furiously regular packages use bli|
-2051|40|O|87988.34|1996-03-18|4-NOT SPECIFIED|Clerk#000000333|0|ctions sleep blithely. blithely regu|
-2052|91|F|141822.19|1992-04-13|2-HIGH|Clerk#000000767|0| requests sleep around the even, even courts. ironic theodolites affix furious|
-2053|142|F|125125.57|1995-02-07|1-URGENT|Clerk#000000717|0|ar requests: blithely sly accounts boost carefully across t|
-2054|41|F|144335.16|1992-06-08|4-NOT SPECIFIED|Clerk#000000103|0|l requests affix carefully about the furiously special|
-2055|97|F|57092.26|1993-09-04|1-URGENT|Clerk#000000067|0|. warhorses affix slyly blithely express instructions? fur|
-2080|95|F|45767.69|1993-06-18|5-LOW|Clerk#000000190|0|ironic, pending theodolites are carefully about the quickly regular theodolite|
-2081|121|O|145654.97|1997-07-05|2-HIGH|Clerk#000000136|0|ong the regular theo|
-2082|49|F|46753.63|1995-01-10|2-HIGH|Clerk#000000354|0|cial accounts. ironic, express dolphins nod slyly sometimes final reques|
-2083|101|F|31795.52|1993-07-14|3-MEDIUM|Clerk#000000361|0|al patterns. bold, final foxes nag bravely about the furiously express|
-2084|80|F|190652.53|1993-03-17|2-HIGH|Clerk#000000048|0|zle furiously final, careful packages. slyly ironic ideas amo|
-2085|49|F|45311.07|1993-11-21|3-MEDIUM|Clerk#000000818|0|ress, express ideas haggle|
-2086|142|F|188985.18|1994-10-19|1-URGENT|Clerk#000000046|0| permanently regular|
-2087|50|O|53581.41|1998-01-31|2-HIGH|Clerk#000000626|0|e always regular packages nod against the furiously spec|
-2112|64|O|17986.15|1997-02-05|2-HIGH|Clerk#000000351|0|against the slyly even id|
-2113|32|O|65678.21|1997-11-08|2-HIGH|Clerk#000000527|0|slyly regular instruct|
-2114|79|F|106446.02|1995-01-16|5-LOW|Clerk#000000751|0|r, unusual accounts haggle across the busy platelets. carefully |
-2115|106|O|134814.65|1998-05-23|4-NOT SPECIFIED|Clerk#000000101|0|odolites boost. carefully regular excuses cajole. quickly ironic pinto be|
-2116|23|F|60887.90|1994-08-26|1-URGENT|Clerk#000000197|0|efully after the asymptotes. furiously sp|
-2117|22|O|145713.03|1997-04-26|2-HIGH|Clerk#000000887|0|ely even dependencies. regular foxes use blithely.|
-2118|134|O|38974.67|1996-10-09|1-URGENT|Clerk#000000196|0|ial requests wake carefully special packages. f|
-2119|64|O|34632.57|1996-08-20|2-HIGH|Clerk#000000434|0|uickly pending escapades. fluffily ir|
-2144|136|F|119917.28|1994-03-29|3-MEDIUM|Clerk#000000546|0|t. carefully quick requests across the deposits wake regu|
-2145|134|F|18885.35|1992-10-03|1-URGENT|Clerk#000000886|0|sts would snooze blithely alongside of th|
-2146|118|F|179686.07|1992-09-14|4-NOT SPECIFIED|Clerk#000000476|0|ven packages. dependencies wake slyl|
-2147|100|F|91513.79|1992-09-06|4-NOT SPECIFIED|Clerk#000000424|0| haggle carefully furiously final foxes. pending escapades thrash. bold theod|
-2148|130|F|19612.03|1995-04-19|4-NOT SPECIFIED|Clerk#000000517|0|ross the furiously unusual theodolites. always expre|
-2149|101|F|105145.40|1993-03-13|5-LOW|Clerk#000000555|0|nusual accounts nag furiously special reques|
-2150|82|F|166961.06|1994-06-03|3-MEDIUM|Clerk#000000154|0|ect slyly against the even, final packages. quickly regular pinto beans wake c|
-2151|58|O|124608.69|1996-11-11|3-MEDIUM|Clerk#000000996|0|c requests. ironic platelets cajole across the quickly fluffy deposits.|
-2176|104|F|87248.17|1992-11-10|1-URGENT|Clerk#000000195|0|s haggle regularly accor|
-2177|136|O|183493.42|1997-01-20|3-MEDIUM|Clerk#000000161|0|ove the blithely unusual packages cajole carefully fluffily special request|
-2178|8|O|79594.68|1996-12-12|3-MEDIUM|Clerk#000000656|0|thely according to the instructions. furious|
-2179|41|O|77487.09|1996-09-07|2-HIGH|Clerk#000000935|0|ounts alongside of the furiously unusual braids cajol|
-2180|76|O|208481.57|1996-09-14|4-NOT SPECIFIED|Clerk#000000650|0|xpress, unusual pains. furiously ironic excu|
-2181|76|O|100954.64|1995-09-13|3-MEDIUM|Clerk#000000814|0|y against the ironic, even|
-2182|23|F|116003.11|1994-04-05|2-HIGH|Clerk#000000071|0|ccounts. quickly bold deposits across the excuses sl|
-2183|113|O|49841.12|1996-06-22|1-URGENT|Clerk#000000287|0| among the express, ironic packages. slyly ironic platelets integrat|
-2208|68|P|245388.06|1995-05-01|4-NOT SPECIFIED|Clerk#000000900|0|symptotes wake slyly blithely unusual packages.|
-2209|91|F|129086.93|1992-07-10|2-HIGH|Clerk#000000056|0|er above the slyly silent requests. furiously reg|
-2210|32|F|31689.46|1992-01-16|2-HIGH|Clerk#000000941|0| believe carefully quickly express pinto beans. deposi|
-2211|92|F|140031.23|1994-06-30|2-HIGH|Clerk#000000464|0|ffily bold courts e|
-2212|118|F|17231.05|1994-03-23|3-MEDIUM|Clerk#000000954|0|structions above the unusual requests use fur|
-2213|122|F|146136.10|1993-01-15|4-NOT SPECIFIED|Clerk#000000598|0|osits are carefully reg|
-2214|115|O|150345.63|1998-05-05|3-MEDIUM|Clerk#000000253|0|packages. fluffily even accounts haggle blithely. carefully ironic depen|
-2215|40|O|108239.46|1996-06-16|4-NOT SPECIFIED|Clerk#000000817|0|le final, final foxes. quickly regular gifts are carefully deposit|
-2240|56|F|174090.30|1992-03-06|4-NOT SPECIFIED|Clerk#000000622|0|accounts against the slyly express foxes are after the slyly regular |
-2241|103|F|165219.08|1993-05-11|1-URGENT|Clerk#000000081|0|y about the silent excuses. furiously ironic instructions along the sil|
-2242|82|O|15082.82|1997-07-20|4-NOT SPECIFIED|Clerk#000000360|0| pending multipliers. carefully express asymptotes use quickl|
-2243|49|O|10451.97|1995-06-10|2-HIGH|Clerk#000000813|0|ously regular deposits integrate s|
-2244|127|F|21207.08|1993-01-09|1-URGENT|Clerk#000001000|0|ckages. ironic, ironic accounts haggle blithely express excuses. |
-2245|58|F|150585.73|1993-04-28|3-MEDIUM|Clerk#000000528|0|ake carefully. braids haggle slyly quickly b|
-2246|113|O|85755.84|1996-05-27|4-NOT SPECIFIED|Clerk#000000739|0| final gifts sleep |
-2247|95|F|13491.31|1992-08-02|4-NOT SPECIFIED|Clerk#000000947|0|furiously regular packages. final brai|
-2272|139|F|127934.71|1993-04-13|2-HIGH|Clerk#000000449|0|s. bold, ironic pinto beans wake. silently specia|
-2273|136|O|142291.79|1996-12-14|5-LOW|Clerk#000000155|0|uickly express foxes haggle quickly against|
-2274|104|F|58273.89|1993-09-04|4-NOT SPECIFIED|Clerk#000000258|0|nstructions try to hag|
-2275|149|F|37398.90|1992-10-22|4-NOT SPECIFIED|Clerk#000000206|0| furiously furious platelets. slyly final packa|
-2276|43|O|141159.63|1996-04-29|4-NOT SPECIFIED|Clerk#000000821|0|ecial requests. fox|
-2277|89|F|79270.23|1995-01-02|4-NOT SPECIFIED|Clerk#000000385|0|accounts cajole. even i|
-2278|142|O|101878.46|1998-04-25|3-MEDIUM|Clerk#000000186|0|r pinto beans integrate after the carefully even deposits. blit|
-2279|80|F|142322.33|1993-02-23|3-MEDIUM|Clerk#000000898|0|de of the quickly unusual instructio|
-2304|46|F|93769.28|1994-01-07|4-NOT SPECIFIED|Clerk#000000415|0|onic platelets. ironic packages haggle. packages nag doggedly according to|
-2305|43|F|122964.66|1993-01-26|2-HIGH|Clerk#000000440|0|ove the furiously even acco|
-2306|28|O|244704.23|1995-07-26|2-HIGH|Clerk#000000975|0| wake furiously requests. permanent requests affix. final packages caj|
-2307|106|F|59417.76|1993-06-29|5-LOW|Clerk#000000952|0|furiously even asymptotes? carefully regular accounts|
-2308|25|F|58546.02|1992-10-25|4-NOT SPECIFIED|Clerk#000000609|0|ts. slyly final depo|
-2309|100|O|146933.07|1995-09-04|5-LOW|Clerk#000000803|0|he carefully pending packages. fluffily stealthy foxes engage carefully|
-2310|31|O|82928.12|1996-09-20|5-LOW|Clerk#000000917|0|wake carefully. unusual instructions nag ironic, regular excuse|
-2311|73|P|153233.93|1995-05-02|2-HIGH|Clerk#000000761|0|ly pending asymptotes-- furiously bold excus|
-2336|142|O|22294.51|1996-01-07|4-NOT SPECIFIED|Clerk#000000902|0|c, final excuses sleep furiously among the even theodolites. f|
-2337|142|O|45704.96|1997-06-18|4-NOT SPECIFIED|Clerk#000000754|0| quickly. final accounts haggle. carefully final acco|
-2338|140|O|28155.92|1997-09-15|2-HIGH|Clerk#000000951|0|riously final dugouts. final, ironic packages wake express, ironic id|
-2339|109|F|63470.78|1993-12-15|5-LOW|Clerk#000000847|0| against the regular |
-2340|65|O|30778.78|1996-01-12|1-URGENT|Clerk#000000964|0|ter the deposits sleep according to the slyly regular packages. carefully |
-2341|82|F|55950.21|1993-05-30|5-LOW|Clerk#000000443|0|sts-- blithely bold dolphins through the deposits nag blithely carefully re|
-2342|37|O|104038.78|1996-06-09|1-URGENT|Clerk#000000615|0|oost carefully across the regular accounts. blithely final d|
-2343|73|O|85381.00|1995-08-21|3-MEDIUM|Clerk#000000170|0|fluffily over the slyly special deposits. quickl|
-2368|13|F|101240.96|1993-08-20|1-URGENT|Clerk#000000830|0|t the bold instructions. carefully unusual |
-2369|110|O|73517.91|1996-12-24|2-HIGH|Clerk#000000752|0|iously even requests are dogged, express |
-2370|142|F|73924.21|1994-01-17|1-URGENT|Clerk#000000231|0|lyly final packages. quickly final deposits haggl|
-2371|19|O|193857.67|1998-01-07|1-URGENT|Clerk#000000028|0|ckages haggle at th|
-2372|31|O|104927.66|1997-11-21|5-LOW|Clerk#000000342|0|s: deposits haggle along the final ideas. careful|
-2373|28|F|55211.04|1994-03-12|4-NOT SPECIFIED|Clerk#000000306|0| even, special courts grow quickly. pending,|
-2374|4|F|115219.88|1993-10-29|4-NOT SPECIFIED|Clerk#000000081|0| blithely regular packages. blithely unusua|
-2375|5|O|106612.48|1996-11-20|3-MEDIUM|Clerk#000000197|0|unusual, pending theodolites cajole carefully |
-2400|37|O|92798.66|1998-07-25|5-LOW|Clerk#000000782|0|nusual courts nag against the carefully unusual pinto b|
-2401|148|O|88448.24|1997-07-29|4-NOT SPECIFIED|Clerk#000000531|0|ully unusual instructions boost carefully silently regular requests. |
-2402|67|O|70403.62|1996-09-06|4-NOT SPECIFIED|Clerk#000000162|0|slyly final sheaves sleep slyly. q|
-2403|55|O|111020.79|1998-04-11|3-MEDIUM|Clerk#000000820|0|furiously regular deposits use. furiously unusual accounts wake along the |
-2404|77|O|109077.69|1997-03-13|4-NOT SPECIFIED|Clerk#000000409|0|deposits breach furiously. ironic foxes haggle carefully bold packag|
-2405|73|O|115929.14|1996-12-23|3-MEDIUM|Clerk#000000535|0|ular, regular asympto|
-2406|7|O|182516.77|1996-10-28|5-LOW|Clerk#000000561|0|blithely regular accounts u|
-2407|55|O|112843.52|1998-06-19|2-HIGH|Clerk#000000068|0|uests affix slyly among the slyly regular depos|
-2432|103|O|62661.93|1996-07-13|1-URGENT|Clerk#000000115|0|re. slyly even deposits wake bra|
-2433|31|F|147071.86|1994-08-22|4-NOT SPECIFIED|Clerk#000000324|0|ess patterns are slyly. packages haggle carefu|
-2434|25|O|123956.25|1997-04-27|3-MEDIUM|Clerk#000000190|0|s. quickly ironic dolphins impress final deposits. blithel|
-2435|73|F|122490.66|1993-02-21|5-LOW|Clerk#000000112|0|es are carefully along the carefully final instructions. pe|
-2436|125|O|73990.08|1995-09-11|4-NOT SPECIFIED|Clerk#000000549|0|arefully. blithely bold deposits affix special accounts. final foxes nag. spe|
-2437|85|F|143411.69|1993-04-21|4-NOT SPECIFIED|Clerk#000000578|0|. theodolites wake slyly-- ironic, pending platelets above the carefully exp|
-2438|13|F|214494.39|1993-07-15|2-HIGH|Clerk#000000744|0|the final, regular warhorses. regularly |
-2439|55|O|41811.12|1997-03-15|2-HIGH|Clerk#000000819|0|lithely after the car|
-2464|145|O|30495.65|1997-11-23|5-LOW|Clerk#000000633|0|le about the instructions. courts wake carefully even|
-2465|34|O|180737.75|1995-06-24|1-URGENT|Clerk#000000078|0|al pinto beans. final, bold packages wake quickly|
-2466|19|F|161625.50|1994-03-06|1-URGENT|Clerk#000000424|0|c pinto beans. express deposits wake quickly. even, final courts nag. package|
-2467|35|O|7231.91|1995-07-16|4-NOT SPECIFIED|Clerk#000000914|0|pades sleep furiously. sometimes regular packages again|
-2468|112|O|160627.01|1997-06-09|4-NOT SPECIFIED|Clerk#000000260|0|ickly regular packages. slyly ruthless requests snooze quickly blithe|
-2469|124|O|192074.23|1996-11-26|5-LOW|Clerk#000000730|0| sleep closely regular instructions. furiously ironic instructi|
-2470|58|O|104966.33|1997-04-19|3-MEDIUM|Clerk#000000452|0|to the furiously final packages? pa|
-2471|89|O|34936.31|1998-03-12|4-NOT SPECIFIED|Clerk#000000860|0|carefully blithely regular pac|
-2496|136|F|140390.60|1994-01-09|2-HIGH|Clerk#000000142|0|slyly. pending instructions sleep. quic|
-2497|47|F|171326.48|1992-08-27|1-URGENT|Clerk#000000977|0|ily ironic pinto beans. furiously final platelets alongside of t|
-2498|97|F|45514.27|1993-11-08|5-LOW|Clerk#000000373|0|g the slyly special pinto beans. |
-2499|121|O|147243.86|1995-09-24|1-URGENT|Clerk#000000277|0|r the quickly bold foxes. bold instructi|
-2500|133|F|131122.82|1992-08-15|2-HIGH|Clerk#000000447|0|integrate slyly pending deposits. furiously ironic accounts across the s|
-2501|67|O|79380.51|1997-05-25|5-LOW|Clerk#000000144|0|ickly special theodolite|
-2502|70|F|33470.40|1993-05-28|4-NOT SPECIFIED|Clerk#000000914|0|lyly: carefully pending ideas affix again|
-2503|7|F|183671.08|1993-06-20|3-MEDIUM|Clerk#000000294|0|ly even packages was. ironic, regular deposits unwind furiously across the p|
-2528|55|F|92069.62|1994-11-20|1-URGENT|Clerk#000000789|0|ular dependencies? regular frays kindle according to the blith|
-2529|136|O|4104.30|1996-08-20|2-HIGH|Clerk#000000511|0|posits across the silent instructions wake blithely across |
-2530|128|F|58853.11|1994-03-21|3-MEDIUM|Clerk#000000291|0|ular instructions about the quic|
-2531|44|O|143212.85|1996-05-06|4-NOT SPECIFIED|Clerk#000000095|0|even accounts. furiously ironic excuses sleep fluffily. carefully silen|
-2532|94|O|116093.49|1995-10-11|2-HIGH|Clerk#000000498|0|the blithely pending accounts. regular, regular excuses boost aro|
-2533|50|O|168495.03|1997-03-24|1-URGENT|Clerk#000000594|0|ecial instructions. spec|
-2534|76|O|202784.54|1996-07-17|3-MEDIUM|Clerk#000000332|0|packages cajole ironic requests. furiously regular|
-2535|121|F|67018.30|1993-05-25|5-LOW|Clerk#000000296|0|phins cajole beneath the fluffily express asymptotes. c|
-2560|131|F|153426.79|1992-09-05|1-URGENT|Clerk#000000538|0|atelets; quickly sly requests|
-2561|58|O|137473.58|1997-11-14|1-URGENT|Clerk#000000861|0|ual requests. unusual deposits cajole furiously pending, regular platelets. |
-2562|10|F|136360.37|1992-08-01|1-URGENT|Clerk#000000467|0|elets. pending dolphins promise slyly. bo|
-2563|62|F|168952.10|1993-11-19|4-NOT SPECIFIED|Clerk#000000150|0|sly even packages after the furio|
-2564|77|F|3967.47|1994-09-09|2-HIGH|Clerk#000000718|0|usly regular pinto beans. orbits wake carefully. slyly e|
-2565|56|O|204438.57|1998-02-28|3-MEDIUM|Clerk#000000032|0|x-ray blithely along|
-2566|86|F|89992.48|1992-10-10|3-MEDIUM|Clerk#000000414|0|ructions boost bold ideas. idly ironic accounts use according to th|
-2567|70|O|263411.29|1998-02-27|2-HIGH|Clerk#000000031|0|detect. furiously ironic requests|
-2592|101|F|8225.96|1993-03-05|4-NOT SPECIFIED|Clerk#000000524|0|ts nag fluffily. quickly stealthy theodolite|
-2593|92|F|134726.09|1993-09-04|2-HIGH|Clerk#000000468|0|r the carefully final|
-2594|79|F|94866.39|1992-12-17|1-URGENT|Clerk#000000550|0|ests. theodolites above the blithely even accounts detect furio|
-2595|74|O|173130.20|1995-12-14|4-NOT SPECIFIED|Clerk#000000222|0|arefully ironic requests nag carefully ideas. |
-2596|43|O|74940.13|1996-08-17|1-URGENT|Clerk#000000242|0|requests. ironic, bold theodolites wak|
-2597|104|F|21964.66|1993-02-04|2-HIGH|Clerk#000000757|0|iously ruthless exc|
-2598|112|O|84871.50|1996-03-05|3-MEDIUM|Clerk#000000391|0| ironic notornis according to the blithely final requests should |
-2599|149|O|62807.13|1996-11-07|2-HIGH|Clerk#000000722|0|ts. slyly regular theodolites wake sil|
-2624|52|O|27148.63|1996-11-28|5-LOW|Clerk#000000930|0|ic, regular packages|
-2625|40|F|39382.74|1992-10-14|4-NOT SPECIFIED|Clerk#000000386|0| final deposits. blithely ironic ideas |
-2626|139|O|84314.51|1995-09-08|4-NOT SPECIFIED|Clerk#000000289|0|gside of the carefully special packages are furiously after the slyly express |
-2627|149|F|26798.65|1992-03-24|3-MEDIUM|Clerk#000000181|0|s. silent, ruthless requests|
-2628|56|F|165655.99|1993-10-22|5-LOW|Clerk#000000836|0|ajole across the blithely careful accounts. blithely silent deposits sl|
-2629|139|O|96458.03|1998-04-06|5-LOW|Clerk#000000680|0|uches dazzle carefully even, express excuses. ac|
-2630|85|F|127132.51|1992-10-24|5-LOW|Clerk#000000712|0|inal theodolites. ironic instructions s|
-2631|37|F|63103.32|1993-09-24|5-LOW|Clerk#000000833|0| quickly unusual deposits doubt around |
-2656|77|F|105492.37|1993-05-04|1-URGENT|Clerk#000000307|0|elets. slyly final accou|
-2657|25|O|148176.06|1995-10-17|2-HIGH|Clerk#000000160|0| foxes-- slyly final dependencies around the slyly final theodo|
-2658|14|O|163834.46|1995-09-23|3-MEDIUM|Clerk#000000400|0|bout the slyly regular accounts. ironic, |
-2659|83|F|79785.52|1993-12-18|4-NOT SPECIFIED|Clerk#000000758|0|cross the pending requests maintain |
-2660|127|O|16922.51|1995-08-05|5-LOW|Clerk#000000480|0|ly finally regular deposits. ironic theodolites cajole|
-2661|74|O|106036.84|1997-01-04|3-MEDIUM|Clerk#000000217|0|al, regular pinto beans. silently final deposits should have t|
-2662|37|O|87689.88|1996-08-21|3-MEDIUM|Clerk#000000589|0|bold pinto beans above the slyly final accounts affix furiously deposits. pac|
-2663|95|O|35131.80|1995-09-06|1-URGENT|Clerk#000000950|0|ar requests. furiously final dolphins along the fluffily spe|
-2688|98|F|181077.36|1992-01-24|2-HIGH|Clerk#000000720|0|have to nag according to the pending theodolites. sly|
-2689|103|F|41552.78|1992-04-09|4-NOT SPECIFIED|Clerk#000000698|0|press pains wake. furiously express theodolites alongsid|
-2690|94|O|224674.27|1996-03-31|3-MEDIUM|Clerk#000000760|0|ravely even theodolites |
-2691|7|F|30137.17|1992-04-30|5-LOW|Clerk#000000439|0|es at the regular deposits sleep slyly by the fluffy requests. eve|
-2692|62|O|24265.24|1997-12-02|3-MEDIUM|Clerk#000000878|0|es. regular asymptotes cajole above t|
-2693|19|O|66158.13|1996-09-04|1-URGENT|Clerk#000000370|0|ndle never. blithely regular packages nag carefully enticing platelets. ca|
-2694|121|O|102807.59|1996-03-14|5-LOW|Clerk#000000722|0| requests. bold deposits above the theodol|
-2695|58|O|138584.20|1996-08-20|1-URGENT|Clerk#000000697|0|ven deposits around the quickly regular packa|
-2720|31|F|161307.05|1993-06-08|1-URGENT|Clerk#000000948|0|quickly. special asymptotes are fluffily ironi|
-2721|79|O|59180.25|1996-01-27|2-HIGH|Clerk#000000401|0| ideas eat even, unusual ideas. theodolites are carefully|
-2722|35|F|50328.84|1994-04-09|5-LOW|Clerk#000000638|0|rding to the carefully quick deposits. bli|
-2723|61|O|104759.25|1995-10-06|5-LOW|Clerk#000000836|0|nts must have to cajo|
-2724|137|F|116069.66|1994-09-14|2-HIGH|Clerk#000000217|0| sleep blithely. blithely idle |
-2725|89|F|75144.68|1994-05-21|4-NOT SPECIFIED|Clerk#000000835|0|ular deposits. spec|
-2726|7|F|47753.00|1992-11-27|5-LOW|Clerk#000000470|0| blithely even dinos sleep care|
-2727|74|O|3089.42|1998-04-19|4-NOT SPECIFIED|Clerk#000000879|0|sual theodolites cajole enticingly above the furiously fin|
-2752|59|F|187932.30|1993-11-19|2-HIGH|Clerk#000000648|0| carefully regular foxes are quickly quickl|
-2753|16|F|159720.39|1993-11-30|2-HIGH|Clerk#000000380|0|ending instructions. unusual deposits|
-2754|145|F|25985.52|1994-04-03|2-HIGH|Clerk#000000960|0|cies detect slyly. |
-2755|118|F|101202.18|1992-02-07|4-NOT SPECIFIED|Clerk#000000177|0|ously according to the sly foxes. blithely regular pinto bean|
-2756|118|F|142323.38|1994-04-18|1-URGENT|Clerk#000000537|0|arefully special warho|
-2757|76|O|89792.48|1995-07-20|2-HIGH|Clerk#000000216|0| regular requests subl|
-2758|43|O|36671.88|1998-07-12|5-LOW|Clerk#000000863|0|s cajole according to the carefully special |
-2759|116|F|89731.10|1993-11-25|4-NOT SPECIFIED|Clerk#000000071|0|ts. regular, pending pinto beans sleep ab|
-2784|95|O|106635.21|1998-01-07|1-URGENT|Clerk#000000540|0|g deposits alongside of the silent requests s|
-2785|148|O|132854.79|1995-07-21|2-HIGH|Clerk#000000098|0|iously pending packages sleep according to the blithely unusual foxe|
-2786|79|F|178254.66|1992-03-22|2-HIGH|Clerk#000000976|0|al platelets cajole blithely ironic requests. ironic re|
-2787|103|O|3726.14|1995-09-30|1-URGENT|Clerk#000000906|0|he ironic, regular |
-2788|124|F|17172.66|1994-09-22|1-URGENT|Clerk#000000641|0|nts wake across the fluffily bold accoun|
-2789|37|O|219123.27|1998-03-14|2-HIGH|Clerk#000000972|0|gular patterns boost. carefully even re|
-2790|25|F|177458.97|1994-08-19|2-HIGH|Clerk#000000679|0| the carefully express deposits sleep slyly |
-2791|121|F|156697.55|1994-10-10|2-HIGH|Clerk#000000662|0|as. slyly ironic accounts play furiously bl|
-2816|58|F|42225.53|1994-09-20|2-HIGH|Clerk#000000289|0|kages at the final deposits cajole furious foxes. quickly |
-2817|40|F|71453.85|1994-04-19|3-MEDIUM|Clerk#000000982|0|ic foxes haggle upon the daringly even pinto beans. slyly|
-2818|49|F|120086.84|1994-12-12|3-MEDIUM|Clerk#000000413|0|eep furiously special ideas. express |
-2819|103|F|66927.16|1994-05-05|1-URGENT|Clerk#000000769|0|ngside of the blithely ironic dolphins. furio|
-2820|19|F|143813.39|1994-05-20|3-MEDIUM|Clerk#000000807|0|equests are furiously. carefu|
-2821|118|F|36592.48|1993-08-09|3-MEDIUM|Clerk#000000323|0|ng requests. even instructions are quickly express, silent instructi|
-2822|79|F|40142.15|1993-07-26|2-HIGH|Clerk#000000510|0|furiously against the accounts. unusual accounts aft|
-2823|79|O|171894.45|1995-09-09|2-HIGH|Clerk#000000567|0|encies. carefully fluffy accounts m|
-2848|70|F|116258.53|1992-03-10|1-URGENT|Clerk#000000256|0|ly fluffy foxes sleep furiously across the slyly regu|
-2849|46|O|180054.29|1996-04-30|2-HIGH|Clerk#000000659|0|al packages are after the quickly bold requests. carefully special |
-2850|100|O|122969.79|1996-10-02|2-HIGH|Clerk#000000392|0|, regular deposits. furiously pending packages hinder carefully carefully u|
-2851|145|O|7859.36|1997-09-07|5-LOW|Clerk#000000566|0|Tiresias wake quickly quickly even|
-2852|91|F|99050.81|1993-01-16|1-URGENT|Clerk#000000740|0|ruthless deposits against the final instructions use quickly al|
-2853|94|F|103641.15|1994-05-05|2-HIGH|Clerk#000000878|0|the carefully even packages.|
-2854|139|F|153568.02|1994-06-27|1-URGENT|Clerk#000000010|0| furiously ironic tithes use furiously |
-2855|49|F|48419.58|1993-04-04|4-NOT SPECIFIED|Clerk#000000973|0| silent, regular packages sleep |
-2880|8|F|145761.99|1992-03-15|2-HIGH|Clerk#000000756|0|ves maintain doggedly spec|
-2881|100|F|45695.84|1992-05-10|5-LOW|Clerk#000000864|0|uriously. slyly express requests according to the silent dol|
-2882|121|O|172872.37|1995-08-22|2-HIGH|Clerk#000000891|0|pending deposits. carefully eve|
-2883|121|F|170360.27|1995-01-23|5-LOW|Clerk#000000180|0|uses. carefully ironic accounts lose fluffil|
-2884|92|O|71683.84|1997-10-12|3-MEDIUM|Clerk#000000780|0|efully express instructions sleep against|
-2885|7|F|146896.72|1992-09-19|4-NOT SPECIFIED|Clerk#000000280|0|ly sometimes special excuses. final requests are |
-2886|109|F|94527.23|1994-11-13|4-NOT SPECIFIED|Clerk#000000619|0|uctions. ironic packages sle|
-2887|109|O|28571.39|1997-05-26|5-LOW|Clerk#000000566|0|slyly even pinto beans. slyly bold epitaphs cajole blithely above t|
-2912|94|F|27727.52|1992-03-12|5-LOW|Clerk#000000186|0|jole blithely above the quickly regular packages. carefully regular pinto bean|
-2913|43|O|130702.19|1997-07-12|3-MEDIUM|Clerk#000000118|0|mptotes doubt furiously slyly regu|
-2914|109|F|60867.14|1993-03-03|3-MEDIUM|Clerk#000000543|0|he slyly regular theodolites are furiously sile|
-2915|94|F|96015.13|1994-03-31|5-LOW|Clerk#000000410|0|ld packages. bold deposits boost blithely. ironic, unusual theodoli|
-2916|8|O|20182.22|1995-12-27|2-HIGH|Clerk#000000681|0|ithely blithe deposits sleep beyond the|
-2917|91|O|100714.13|1997-12-09|4-NOT SPECIFIED|Clerk#000000061|0| special dugouts among the special deposi|
-2918|118|O|21760.09|1996-09-08|3-MEDIUM|Clerk#000000439|0|ular deposits across th|
-2919|53|F|137223.14|1993-12-10|2-HIGH|Clerk#000000209|0|es. pearls wake quietly slyly ironic instructions--|
-2944|14|O|146581.14|1997-09-24|4-NOT SPECIFIED|Clerk#000000740|0|deas. permanently special foxes haggle carefully ab|
-2945|29|O|223507.72|1996-01-03|2-HIGH|Clerk#000000499|0|ons are carefully toward the permanent, bold pinto beans. regu|
-2946|125|O|102226.59|1996-02-05|5-LOW|Clerk#000000329|0|g instructions about the regular accounts sleep carefully along the pen|
-2947|70|P|43360.95|1995-04-26|1-URGENT|Clerk#000000464|0|ronic accounts. accounts run furiously d|
-2948|44|F|100758.71|1994-08-23|5-LOW|Clerk#000000701|0| deposits according to the blithely pending |
-2949|137|F|94231.71|1994-04-12|2-HIGH|Clerk#000000184|0|y ironic accounts use. quickly blithe accou|
-2950|136|O|183620.33|1997-07-06|1-URGENT|Clerk#000000833|0| dolphins around the furiously |
-2951|74|O|125509.17|1996-02-06|2-HIGH|Clerk#000000680|0|gular deposits above the finally regular ideas integrate idly stealthil|
-2976|29|F|145768.47|1993-12-10|4-NOT SPECIFIED|Clerk#000000159|0|. furiously ironic asymptotes haggle ruthlessly silently regular r|
-2977|73|O|25170.88|1996-08-27|3-MEDIUM|Clerk#000000252|0|quickly special platelets are furio|
-2978|44|P|139542.14|1995-05-03|1-URGENT|Clerk#000000135|0|d. even platelets are. ironic dependencies cajole slow, e|
-2979|133|O|116789.98|1996-03-23|3-MEDIUM|Clerk#000000820|0|even, ironic foxes sleep along|
-2980|4|O|187514.11|1996-09-14|3-MEDIUM|Clerk#000000661|0|y quick pinto beans wake. slyly re|
-2981|49|O|37776.79|1998-07-29|5-LOW|Clerk#000000299|0|hely among the express foxes. blithely stealthy requests cajole boldly. regu|
-2982|85|F|55582.94|1995-03-19|2-HIGH|Clerk#000000402|0|lyly. express theodolites affix slyly after the slyly speci|
-2983|62|F|58168.07|1992-01-07|1-URGENT|Clerk#000000278|0|r the even requests. accounts maintain. regular accounts|
-3008|40|O|156018.74|1995-11-08|3-MEDIUM|Clerk#000000701|0|ze quickly. blithely regular packages above the slyly bold foxes shall|
-3009|55|O|108424.94|1997-02-28|1-URGENT|Clerk#000000205|0|r ideas. carefully pe|
-3010|8|O|141647.08|1996-01-26|2-HIGH|Clerk#000000931|0| blithely final requests. special deposits are slyl|
-3011|91|F|46418.85|1992-01-14|5-LOW|Clerk#000000515|0|onic deposits kindle slyly. dependencies around the quickly iro|
-3012|32|F|91678.66|1993-05-05|1-URGENT|Clerk#000000414|0|ts after the regular pinto beans impress blithely s|
-3013|143|O|156407.40|1997-02-05|5-LOW|Clerk#000000591|0|the furiously pendin|
-3014|29|F|194159.59|1992-10-30|4-NOT SPECIFIED|Clerk#000000476|0|ep blithely according to the blith|
-3015|103|F|110826.83|1992-09-27|5-LOW|Clerk#000000013|0|ously regular deposits affix carefully. furiousl|
-3040|112|F|119201.64|1993-04-12|3-MEDIUM|Clerk#000000544|0|carefully special packages. blithe|
-3041|113|O|23039.46|1997-06-03|5-LOW|Clerk#000000092|0|s. unusual, pending deposits use carefully. thinly final|
-3042|20|F|104523.03|1994-11-21|3-MEDIUM|Clerk#000000573|0| the slyly ironic depo|
-3043|44|F|78221.69|1992-04-25|5-LOW|Clerk#000000137|0|cajole blithely furiously fina|
-3044|53|O|52433.54|1996-04-03|2-HIGH|Clerk#000000008|0|cajole final courts. ironic deposits about the quickly final re|
-3045|50|O|85822.67|1995-09-27|1-URGENT|Clerk#000000405|0| express courts sleep quickly special asymptotes. |
-3046|32|O|117817.52|1995-11-30|2-HIGH|Clerk#000000522|0|r deposits. platelets use furi|
-3047|25|O|37881.31|1997-03-21|1-URGENT|Clerk#000000962|0|as. slyly express deposits are dogged pearls. silent ide|
-3072|23|F|87475.82|1994-01-30|4-NOT SPECIFIED|Clerk#000000370|0|ely final deposits cajole carefully. ironic, re|
-3073|136|F|151419.50|1994-01-08|3-MEDIUM|Clerk#000000404|0|kly slyly bold accounts. express courts near the regular ideas sleep bli|
-3074|67|F|85861.93|1992-11-01|5-LOW|Clerk#000000546|0|yly even asymptotes shall have to haggle fluffily. deposits are|
-3075|127|F|37696.70|1994-05-07|3-MEDIUM|Clerk#000000433|0|ackages: carefully unusual reques|
-3076|92|F|93828.15|1993-07-23|2-HIGH|Clerk#000000099|0|busy foxes. deposits affix quickly ironic, pending pint|
-3077|121|O|99290.01|1997-08-06|2-HIGH|Clerk#000000228|0|kly. fluffily ironic requests use qui|
-3078|49|F|46310.83|1993-02-12|2-HIGH|Clerk#000000110|0|ounts are alongside of the blith|
-3079|100|O|148299.05|1997-09-12|5-LOW|Clerk#000000505|0|lly ironic accounts|
-3104|70|F|102693.61|1993-09-16|3-MEDIUM|Clerk#000000871|0|ges boost-- regular accounts are furiousl|
-3105|137|O|125396.80|1996-11-13|4-NOT SPECIFIED|Clerk#000000772|0|s. blithely final ins|
-3106|145|O|132494.97|1997-01-12|3-MEDIUM|Clerk#000000729|0|its use slyly final theodolites; regular dolphins hang above t|
-3107|26|O|107406.26|1997-08-21|1-URGENT|Clerk#000000669|0|ously even deposits acr|
-3108|85|F|63278.00|1993-08-05|1-URGENT|Clerk#000000574|0|s packages haggle furiously am|
-3109|124|F|216104.85|1993-07-24|5-LOW|Clerk#000000936|0|bold requests sleep quickly according to the slyly final|
-3110|88|F|115161.29|1994-12-17|2-HIGH|Clerk#000000564|0|round the fluffy instructions. carefully silent packages cajol|
-3111|133|O|154383.37|1995-08-25|5-LOW|Clerk#000000922|0|slyly regular theodolites. furious deposits cajole deposits. ironic theodoli|
-3136|23|F|145426.11|1994-08-10|4-NOT SPECIFIED|Clerk#000000891|0|tructions sleep slyly. pending di|
-3137|136|O|8958.65|1995-07-26|3-MEDIUM|Clerk#000000063|0|ymptotes wake carefully above t|
-3138|139|F|139579.18|1994-02-09|4-NOT SPECIFIED|Clerk#000000650|0|e fluffily final theodolites. even dependencies wake along the quickly ir|
-3139|17|F|40975.96|1992-01-02|3-MEDIUM|Clerk#000000855|0|ounts against the ruthlessly unusual dolphins|
-3140|145|F|54356.10|1992-04-09|1-URGENT|Clerk#000000670|0|carefully ironic deposits use furiously. blith|
-3141|26|O|115959.96|1995-11-10|1-URGENT|Clerk#000000475|0|es. furiously bold instructions after the carefully final p|
-3142|8|F|16030.15|1992-06-28|3-MEDIUM|Clerk#000000043|0|usual accounts about the carefully special requests sleep slyly quickly regul|
-3143|107|F|135647.68|1993-02-17|1-URGENT|Clerk#000000519|0| are final, ironic accounts. ironic |
-3168|136|F|69412.71|1992-01-30|5-LOW|Clerk#000000352|0|s sleep slyly? ironic, furious instructions detect. quickly final i|
-3169|19|F|126804.90|1993-12-21|3-MEDIUM|Clerk#000000252|0| even pinto beans are blithely special, special multip|
-3170|5|O|190142.17|1997-11-09|1-URGENT|Clerk#000000288|0|requests. furiously bold|
-3171|47|F|84405.78|1993-04-06|5-LOW|Clerk#000000940|0|ar deposits. idly r|
-3172|89|F|121360.83|1992-06-03|4-NOT SPECIFIED|Clerk#000000771|0|es. slyly ironic packages x-ra|
-3173|148|O|64892.73|1996-08-10|5-LOW|Clerk#000000516|0|ial requests lose along t|
-3174|127|O|92856.91|1995-11-15|5-LOW|Clerk#000000663|0|rts. silent, regular pinto beans are blithely regular packages. furiousl|
-3175|44|F|205282.63|1994-07-15|5-LOW|Clerk#000000629|0| across the slyly even realms use carefully ironic deposits: sl|
-3200|13|O|131103.31|1996-02-07|1-URGENT|Clerk#000000020|0| regular dependencies impress evenly even excuses. blithely |
-3201|97|F|90755.31|1993-07-02|4-NOT SPECIFIED|Clerk#000000738|0|. busy, express instruction|
-3202|88|F|50601.01|1992-12-24|5-LOW|Clerk#000000067|0|fluffily express requests affix carefully around th|
-3203|127|O|49357.72|1997-11-05|2-HIGH|Clerk#000000493|0|e furiously silent warhorses. slyly silent deposits wake bli|
-3204|10|F|41573.42|1992-12-26|1-URGENT|Clerk#000000693|0|ess somas cajole slyly. pending accounts cajole|
-3205|148|F|153637.79|1992-04-11|5-LOW|Clerk#000000803|0|e furiously. quickly regular dinos about the final pinto be|
-3206|122|O|64344.86|1996-08-09|1-URGENT|Clerk#000000755|0|ntegrate furiously final, express |
-3207|22|O|133038.59|1998-02-16|1-URGENT|Clerk#000000695|0|uriously accounts. fluffily i|
-3232|82|F|55619.01|1992-10-09|1-URGENT|Clerk#000000314|0|yly final accounts. packages agains|
-3233|140|F|54121.92|1994-10-24|5-LOW|Clerk#000000470|0|ly ironic epitaphs use stealthy, express deposits. quickly regular instruct|
-3234|14|O|147343.68|1996-04-05|4-NOT SPECIFIED|Clerk#000000367|0|ents according to the dependencies will sleep after the blithely even p|
-3235|46|O|104695.09|1995-11-15|5-LOW|Clerk#000000349|0| quickly pinto beans. ironi|
-3236|142|O|39470.39|1996-11-06|4-NOT SPECIFIED|Clerk#000000553|0|ithely slyly pending req|
-3237|19|F|10508.12|1992-06-03|1-URGENT|Clerk#000000606|0|inal requests. slyly even foxes detect about the furiously exp|
-3238|61|F|41375.69|1993-02-21|5-LOW|Clerk#000000818|0|lly express deposits are. furiously unusual ideas wake carefully somas. instr|
-3239|35|O|156802.80|1998-01-12|4-NOT SPECIFIED|Clerk#000000619|0| cajole carefully along the furiously pending deposits. |
-3264|94|O|162634.53|1996-11-02|5-LOW|Clerk#000000244|0|carefully. express, bold|
-3265|53|F|43315.15|1992-06-27|1-URGENT|Clerk#000000265|0|re quickly quickly pe|
-3266|4|P|68309.28|1995-03-17|5-LOW|Clerk#000000545|0|refully ironic instructions. slyly final pi|
-3267|112|O|33998.90|1997-01-07|5-LOW|Clerk#000000484|0| the packages. regular decoys about the bold dependencies grow fi|
-3268|142|F|36024.96|1994-06-25|5-LOW|Clerk#000000746|0|y brave requests unwind furiously accordin|
-3269|17|O|218697.85|1996-03-01|3-MEDIUM|Clerk#000000378|0|ts. accounts wake carefully. carefully dogged accounts wake slyly slyly i|
-3270|38|O|166669.86|1997-05-28|1-URGENT|Clerk#000000375|0|uffily pending courts ca|
-3271|34|F|86534.05|1992-01-01|1-URGENT|Clerk#000000421|0|s. furiously regular requests|
-3296|148|F|187553.35|1994-10-19|3-MEDIUM|Clerk#000000991|0|as! carefully final requests wake. furiously even|
-3297|139|F|9679.45|1992-11-03|2-HIGH|Clerk#000000220|0| after the theodolites cajole carefully according to the finally|
-3298|116|O|62716.67|1996-04-17|5-LOW|Clerk#000000241|0|even accounts boost |
-3299|91|F|42867.92|1993-12-26|3-MEDIUM|Clerk#000000853|0|bold deposits. special instructions sleep care|
-3300|118|O|27049.22|1995-07-15|5-LOW|Clerk#000000198|0|ses. carefully unusual instructions must have to detect about the blithel|
-3301|133|F|48497.09|1994-09-04|4-NOT SPECIFIED|Clerk#000000325|0|ular gifts impress enticingly carefully express deposits; instructions boo|
-3302|34|O|38330.42|1995-11-14|2-HIGH|Clerk#000000367|0|eep blithely ironic requests. quickly even courts haggle slyly|
-3303|145|O|97758.28|1997-12-14|4-NOT SPECIFIED|Clerk#000000661|0|nto beans sleep furiously above the carefully ironic |
-3328|7|F|139580.85|1992-11-19|5-LOW|Clerk#000000384|0|ake among the express accounts? carefully ironic packages cajole never.|
-3329|4|O|46107.70|1995-07-03|2-HIGH|Clerk#000000236|0|old deposits. special accounts haggle furiousl|
-3330|7|F|43255.19|1994-12-19|1-URGENT|Clerk#000000124|0|kages use. carefully regular deposits cajole carefully about |
-3331|91|F|65189.17|1993-05-21|2-HIGH|Clerk#000000901|0|uffily carefully sly accounts. blithely unu|
-3332|143|F|73739.06|1994-11-05|1-URGENT|Clerk#000000840|0|ans detect carefully furiously final deposits: regular accoun|
-3333|92|F|197973.22|1992-09-16|4-NOT SPECIFIED|Clerk#000000157|0|ctions boost slyly quickly even accounts. deposits along|
-3334|76|O|28930.68|1996-02-18|5-LOW|Clerk#000000532|0|ounts maintain carefully. furiously close request|
-3335|49|O|112603.34|1995-10-15|3-MEDIUM|Clerk#000000694|0| deposits poach. ironic ideas about the carefully ironi|
-3360|103|O|168750.48|1998-01-23|5-LOW|Clerk#000000254|0| the deposits. fluffily bold requests cajole regula|
-3361|49|F|75026.51|1992-08-23|4-NOT SPECIFIED|Clerk#000000577|0|unts detect furiously instructions. slow deposi|
-3362|140|O|183176.60|1995-07-29|5-LOW|Clerk#000000011|0|the quickly pending deposits. silent, ev|
-3363|52|O|91017.61|1995-09-23|2-HIGH|Clerk#000000615|0|posits. ironic, final deposits are furiously slyly pending |
-3364|46|O|108412.57|1997-06-21|1-URGENT|Clerk#000000280|0|y even foxes? blithely stea|
-3365|82|F|174634.12|1994-11-09|2-HIGH|Clerk#000000126|0|he slyly regular foxes nag about the accounts. fluffily |
-3366|52|O|13603.08|1997-05-18|1-URGENT|Clerk#000000160|0| pinto beans upon the quickly expres|
-3367|73|F|101339.68|1992-12-31|4-NOT SPECIFIED|Clerk#000000029|0|efully blithely ironic pinto beans. carefully close |
-3392|74|O|96057.42|1995-10-28|1-URGENT|Clerk#000000325|0|es thrash blithely depths. bold multipliers wake f|
-3393|98|O|183104.71|1995-07-04|2-HIGH|Clerk#000000076|0|even requests. excuses are carefully deposits. fluf|
-3394|149|O|162165.94|1996-05-05|4-NOT SPECIFIED|Clerk#000000105|0| blithely among the attainments. carefully final accounts nag blit|
-3395|149|F|141486.77|1994-10-30|4-NOT SPECIFIED|Clerk#000000682|0|ideas haggle beside the ev|
-3396|149|F|196443.16|1994-05-21|3-MEDIUM|Clerk#000000868|0|uffily regular platelet|
-3397|130|F|80084.61|1994-06-23|3-MEDIUM|Clerk#000000048|0|yly. final deposits wake f|
-3398|67|O|1147.42|1996-09-23|1-URGENT|Clerk#000000818|0|uthless, special courts atop the unusual accounts grow fur|
-3399|122|P|56938.16|1995-02-28|4-NOT SPECIFIED|Clerk#000000575|0|the carefully sly accounts. regular, pending theodolites wa|
-3424|103|O|42410.57|1996-08-21|1-URGENT|Clerk#000000190|0|ven requests are quickly pending accounts. blithely furious requests |
-3425|115|O|157040.57|1996-03-31|4-NOT SPECIFIED|Clerk#000000188|0|ions. deposits nag blithely alongside of the carefully f|
-3426|53|O|91929.93|1996-10-16|3-MEDIUM|Clerk#000000283|0|alongside of the slyly|
-3427|4|O|133451.14|1997-05-29|4-NOT SPECIFIED|Clerk#000000404|0|y final pinto beans snooze fluffily bold asymptot|
-3428|10|O|88047.04|1996-04-07|5-LOW|Clerk#000000953|0|lar excuses. slyly pending ideas detect p|
-3429|146|O|141902.54|1997-01-06|4-NOT SPECIFIED|Clerk#000000737|0|l deposits cajole furiously enticing deposits. blithe packages haggle careful|
-3430|113|F|161066.22|1994-12-12|4-NOT SPECIFIED|Clerk#000000664|0| regular attainments are at the final foxes. final packages along the blithe|
-3431|47|F|45536.27|1993-08-22|1-URGENT|Clerk#000000439|0| sleep. slyly busy Tiresias a|
-3456|46|F|32796.35|1993-06-01|5-LOW|Clerk#000000924|0|es promise slyly. ironicall|
-3457|25|P|174223.20|1995-04-27|4-NOT SPECIFIED|Clerk#000000849|0|ely thin asymptotes. deposits kindle. pending|
-3458|95|F|153069.14|1994-12-22|2-HIGH|Clerk#000000392|0|rges snooze. slyly unusua|
-3459|119|F|127134.05|1994-07-28|4-NOT SPECIFIED|Clerk#000000777|0|n instructions? carefully regular excuses are blithely. silent, ironi|
-3460|82|O|245976.74|1995-10-03|2-HIGH|Clerk#000000078|0|ans integrate carefu|
-3461|100|F|190960.69|1993-01-31|1-URGENT|Clerk#000000504|0|al, bold deposits cajole fluffily fluffily final foxes. pending ideas beli|
-3462|133|O|63590.17|1997-05-17|3-MEDIUM|Clerk#000000657|0|uriously express asympto|
-3463|89|F|85255.56|1993-08-18|1-URGENT|Clerk#000000545|0|ding to the carefully ironic deposits|
-3488|148|F|92716.17|1995-01-08|3-MEDIUM|Clerk#000000694|0|cording to the carefully regular deposits. re|
-3489|109|F|62453.97|1993-07-29|3-MEDIUM|Clerk#000000307|0|s detect. carefully even platelets across the fur|
-3490|91|O|100106.96|1997-05-26|5-LOW|Clerk#000000703|0|gular ideas. furiously silent deposits across the unusual accounts boost i|
-3491|83|O|50287.06|1998-06-24|1-URGENT|Clerk#000000560|0|nic orbits believe carefully across the |
-3492|103|F|168721.45|1994-11-24|5-LOW|Clerk#000000066|0|packages along the regular foxes lose final dependencie|
-3493|82|F|41686.10|1993-08-24|2-HIGH|Clerk#000000887|0|lyly special accounts use blithely across the furiously sil|
-3494|49|F|136058.70|1993-04-04|5-LOW|Clerk#000000559|0|r instructions haggle. accounts cajole. carefully final requests at the |
-3495|31|O|58666.79|1996-02-26|2-HIGH|Clerk#000000441|0|nticing excuses are carefully|
-3520|125|O|151233.65|1997-08-04|1-URGENT|Clerk#000000023|0|hely. ideas nag; even, even fo|
-3521|7|F|142029.67|1992-10-26|5-LOW|Clerk#000000812|0|y even instructions cajole carefully above the bli|
-3522|26|F|151515.08|1994-09-26|5-LOW|Clerk#000000250|0|deposits-- slyly stealthy requests boost caref|
-3523|149|O|129657.08|1998-04-07|2-HIGH|Clerk#000000688|0|are on the carefully even depe|
-3524|94|F|22767.49|1992-05-03|2-HIGH|Clerk#000000607|0|efully unusual tithes among the foxes use blithely daringly bold deposits. re|
-3525|109|O|100749.60|1995-12-22|4-NOT SPECIFIED|Clerk#000000084|0|s nag among the blithely e|
-3526|56|F|53827.34|1995-03-16|5-LOW|Clerk#000000364|0|to the quickly special deposits print agai|
-3527|56|O|145232.09|1997-06-21|5-LOW|Clerk#000000874|0|regular ideas across the quickly bold theodo|
-3552|35|O|103656.44|1997-04-23|2-HIGH|Clerk#000000973|0| the ironic packages. furiously |
-3553|91|F|119838.14|1994-05-18|3-MEDIUM|Clerk#000000270|0|counts mold furiously. slyly i|
-3554|44|O|98335.61|1995-06-17|5-LOW|Clerk#000000931|0|hely ironic requests haggl|
-3555|46|O|134442.37|1996-07-07|5-LOW|Clerk#000000585|0|s nag carefully regular, even pinto be|
-3556|16|F|114681.55|1992-09-23|4-NOT SPECIFIED|Clerk#000000140|0|e. dependencies need to haggle alongs|
-3557|121|F|85477.89|1992-11-09|2-HIGH|Clerk#000000291|0|ithely courts. furi|
-3558|28|O|112912.00|1996-02-29|1-URGENT|Clerk#000000841|0|around the furiously even requests. quickl|
-3559|106|F|30722.49|1992-10-24|3-MEDIUM|Clerk#000000634|0|sly deposits. fluffily final ideas cajole careful|
-3584|13|O|80487.97|1997-08-11|1-URGENT|Clerk#000000760|0|fully bold packages. fluffily final braids haggle final, ironic dolphins. b|
-3585|139|F|159015.39|1994-11-23|2-HIGH|Clerk#000000988|0|regular asymptotes. bold pains above the carefully pending asymptot|
-3586|121|F|112845.04|1993-12-05|2-HIGH|Clerk#000000438|0|he quickly final courts. carefully regular requests nag unusua|
-3587|79|O|174798.97|1996-05-10|4-NOT SPECIFIED|Clerk#000000443|0|ular patterns detect |
-3588|119|F|207925.83|1995-03-19|4-NOT SPECIFIED|Clerk#000000316|0|ong the pains. evenly unusual |
-3589|31|F|39103.37|1994-05-26|2-HIGH|Clerk#000000023|0|ithe deposits nag furiously. furiously pending packages sleep f|
-3590|149|P|218482.70|1995-05-13|5-LOW|Clerk#000000986|0|lyly final deposits.|
-3591|136|F|98140.86|1993-12-08|3-MEDIUM|Clerk#000000144|0|ual foxes haggle! unusual request|
-3616|128|F|60933.29|1994-02-16|4-NOT SPECIFIED|Clerk#000000268|0|uickly about the quickly final requests. fluffily final packages wake evenly|
-3617|40|O|126205.42|1996-03-19|3-MEDIUM|Clerk#000000886|0|the carefully regular platelets ha|
-3618|10|O|136954.81|1997-12-13|3-MEDIUM|Clerk#000000894|0|. ideas run carefully. thin, pending |
-3619|149|O|222274.54|1996-11-20|2-HIGH|Clerk#000000211|0|uests mold after the blithely ironic excuses. slyly pending pa|
-3620|44|O|59291.75|1997-03-07|5-LOW|Clerk#000000124|0|le quickly against the epitaphs. requests sleep slyly according to the|
-3621|142|F|106150.05|1993-05-06|3-MEDIUM|Clerk#000000643|0|kly unusual deposits. qu|
-3622|91|O|109202.90|1995-11-27|5-LOW|Clerk#000000012|0|c deposits are fluffily about the blithely final theo|
-3623|4|O|175017.68|1996-12-26|1-URGENT|Clerk#000000184|0|- ironic excuses boost quickly in place |
-3648|125|F|180417.11|1993-06-17|5-LOW|Clerk#000000717|0|foxes. unusual deposits boost quickly. slyly regular asymptotes across t|
-3649|40|F|124470.32|1994-07-06|5-LOW|Clerk#000000349|0|taphs boost above the final p|
-3650|46|F|189547.57|1992-05-28|4-NOT SPECIFIED|Clerk#000000454|0|kages sleep fluffily slyly|
-3651|100|O|113191.45|1998-04-27|1-URGENT|Clerk#000000222|0|ly unusual deposits thrash quickly after the ideas.|
-3652|107|O|107732.23|1997-02-25|4-NOT SPECIFIED|Clerk#000000024|0|sly even requests after the |
-3653|40|F|142866.39|1994-03-27|1-URGENT|Clerk#000000402|0| pearls. bold accounts are along the ironic,|
-3654|7|F|222653.54|1992-06-03|5-LOW|Clerk#000000475|0|s cajole slyly carefully special theodolites. even deposits haggl|
-3655|49|F|74882.22|1992-10-06|1-URGENT|Clerk#000000815|0|er the carefully unusual deposits sleep quickly according to|
-3680|127|F|124402.59|1992-12-10|4-NOT SPECIFIED|Clerk#000000793|0|ular platelets. carefully regular packages cajole blithely al|
-3681|52|F|36889.65|1992-04-04|1-URGENT|Clerk#000000566|0|. ironic deposits against the ironic, regular frets use pending plat|
-3682|32|O|67525.43|1997-01-22|2-HIGH|Clerk#000000001|0|es haggle carefully. decoys nag |
-3683|88|F|99960.46|1993-03-04|2-HIGH|Clerk#000000248|0|ze across the express foxes. carefully special acco|
-3684|23|F|89509.91|1993-07-20|2-HIGH|Clerk#000000835|0|bold accounts affix along the carefully ironic requ|
-3685|16|F|154958.89|1992-01-17|3-MEDIUM|Clerk#000000954|0| sleep fluffily special ide|
-3686|40|O|82190.77|1998-07-07|2-HIGH|Clerk#000000175|0|s. furiously final pinto beans poach carefully among |
-3687|43|F|99851.38|1993-02-03|1-URGENT|Clerk#000000585|0|gular accounts. slyly regular instructions can are final ide|
-3712|64|F|127527.05|1992-01-02|2-HIGH|Clerk#000000032|0| promise according |
-3713|149|O|215342.63|1998-05-07|3-MEDIUM|Clerk#000000325|0|s haggle quickly. ironic, regular Tiresi|
-3714|40|O|84493.55|1998-05-01|3-MEDIUM|Clerk#000000595|0|nding accounts. ironic pinto beans wake slyly. furiously pendin|
-3715|65|O|64000.93|1996-03-18|1-URGENT|Clerk#000000463|0| always silent requests wake pinto beans. slyly pending foxes are aga|
-3716|43|O|146221.66|1997-08-19|4-NOT SPECIFIED|Clerk#000000748|0| pending ideas haggle. ironic,|
-3717|28|O|176525.53|1998-06-03|4-NOT SPECIFIED|Clerk#000000974|0|t the carefully even ideas use sp|
-3718|31|O|63195.54|1996-10-23|2-HIGH|Clerk#000000016|0|refully. furiously final packages use carefully slyly pending deposits! final,|
-3719|118|O|139902.71|1997-02-16|2-HIGH|Clerk#000000034|0|, enticing accounts are blithely among the daringly final asymptotes. furious|
-3744|65|F|33085.68|1992-01-10|3-MEDIUM|Clerk#000000765|0|osits sublate about the regular requests. fluffily unusual accou|
-3745|112|F|19405.73|1993-09-29|5-LOW|Clerk#000000181|0|ckages poach slyly against the foxes. slyly ironic instructi|
-3746|74|F|80018.54|1994-09-11|4-NOT SPECIFIED|Clerk#000000188|0|. express, special requests nag quic|
-3747|149|O|204355.65|1996-08-20|1-URGENT|Clerk#000000226|0|refully across the final theodolites. carefully bold accounts cajol|
-3748|53|O|83804.38|1998-02-28|1-URGENT|Clerk#000000156|0|slyly special packages|
-3749|38|P|87073.89|1995-02-24|3-MEDIUM|Clerk#000000639|0|y regular instructions haggle blithel|
-3750|97|P|177181.67|1995-04-30|3-MEDIUM|Clerk#000000885|0|y. express, even packages wake after the ide|
-3751|10|F|202917.72|1994-04-27|4-NOT SPECIFIED|Clerk#000000925|0|sheaves. express, unusual t|
-3776|85|F|150349.92|1992-11-20|2-HIGH|Clerk#000000698|0|efully even platelets slee|
-3777|28|F|82467.29|1994-04-08|3-MEDIUM|Clerk#000000941|0| regular, special dolphins cajole enticingly ca|
-3778|106|F|221036.31|1993-05-26|1-URGENT|Clerk#000000187|0| above the express requests. packages maintain fluffily according to|
-3779|74|O|31538.94|1997-01-05|4-NOT SPECIFIED|Clerk#000000670|0| against the deposits. quickly bold instructions x-ray. pending fox|
-3780|41|O|65385.42|1996-04-13|5-LOW|Clerk#000000967|0| around the brave, pendin|
-3781|139|O|133864.82|1996-06-20|1-URGENT|Clerk#000000394|0|yly after the ruthless packages. pinto beans use slyly: never ironic dependenc|
-3782|65|O|145096.17|1996-08-24|1-URGENT|Clerk#000000121|0|counts are. pending, regular asym|
-3783|44|F|155017.92|1993-12-06|4-NOT SPECIFIED|Clerk#000000614|0| along the pinto beans. special packages use. regular theo|
-3808|79|F|228054.01|1994-04-24|1-URGENT|Clerk#000000717|0|odolites. blithely ironic cour|
-3809|148|O|143070.70|1996-05-01|5-LOW|Clerk#000000646|0| regular excuses. even theodolites are fluffily according to t|
-3810|100|F|124675.27|1992-09-17|1-URGENT|Clerk#000000660|0|ters sleep across the carefully final |
-3811|80|O|154967.89|1998-04-16|3-MEDIUM|Clerk#000000290|0|sits wake slyly abo|
-3812|41|O|70502.52|1996-08-13|3-MEDIUM|Clerk#000000727|0|al, final requests cajole|
-3813|146|O|77247.05|1998-06-29|1-URGENT|Clerk#000000531|0|g the furiously regular instructions|
-3814|118|P|149451.88|1995-02-22|5-LOW|Clerk#000000669|0| the furiously pending theodo|
-3815|104|O|14275.01|1997-08-26|1-URGENT|Clerk#000000249|0|es snooze carefully stealth|
-3840|100|O|187156.38|1998-07-17|4-NOT SPECIFIED|Clerk#000000713|0|yly slow theodolites. enticingly |
-3841|58|F|129033.13|1994-10-05|4-NOT SPECIFIED|Clerk#000000018|0| bold requests sleep quickly ironic packages. sometimes regular deposits nag |
-3842|28|F|131447.03|1992-04-09|5-LOW|Clerk#000000418|0|silent ideas. final deposits use furiously. blithely express excuses cajole fu|
-3843|10|O|34035.17|1997-01-04|4-NOT SPECIFIED|Clerk#000000693|0|eodolites; slyly unusual accounts nag boldly |
-3844|79|F|6793.45|1994-12-29|1-URGENT|Clerk#000000686|0|r dolphins. slyly ironic theodolites ag|
-3845|89|F|134333.33|1992-04-26|1-URGENT|Clerk#000000404|0|es among the pending, regular accounts sleep blithely blithely even de|
-3846|49|O|123120.06|1998-02-05|2-HIGH|Clerk#000000877|0|y alongside of the slyl|
-3847|34|F|7014.31|1993-03-12|5-LOW|Clerk#000000338|0|uriously even deposits. furiously pe|
-3872|134|O|198538.68|1996-09-06|5-LOW|Clerk#000000943|0|counts boost slyly against the ironic platelets-- blithely p|
-3873|55|O|95291.79|1998-03-30|4-NOT SPECIFIED|Clerk#000000791|0|express deposits-- even ideas |
-3874|119|F|66455.34|1993-06-09|3-MEDIUM|Clerk#000000208|0|ular asymptotes sleep blithely ironic ideas. blithel|
-3875|118|O|74483.95|1997-09-10|1-URGENT|Clerk#000000587|0| solve among the fluffily even |
-3876|29|O|95126.32|1996-08-02|5-LOW|Clerk#000000708|0|into beans. blithely|
-3877|17|F|178492.01|1993-05-21|5-LOW|Clerk#000000652|0|foxes. thinly bold reques|
-3878|88|O|59989.66|1997-03-23|1-URGENT|Clerk#000000314|0|e carefully regular platelets. special, express dependencies slee|
-3879|142|O|80274.22|1995-11-23|1-URGENT|Clerk#000000231|0|sts along the quickly ironic sentiments cajole carefully according to t|
-3904|149|O|39338.44|1997-11-15|4-NOT SPECIFIED|Clerk#000000883|0|sits haggle furiously across the requests. theodolites ha|
-3905|22|F|56227.04|1993-12-21|4-NOT SPECIFIED|Clerk#000000573|0|usly even accounts lose quietly above the slyly express p|
-3906|46|F|145630.76|1992-05-28|3-MEDIUM|Clerk#000000867|0|ironic theodolites haggle blithely above the final re|
-3907|67|F|240457.56|1992-08-19|3-MEDIUM|Clerk#000000084|0|gular pinto beans sleep f|
-3908|43|F|57127.71|1993-03-09|3-MEDIUM|Clerk#000000490|0|ounts cajole. regularly|
-3909|22|O|82746.74|1998-07-27|1-URGENT|Clerk#000000980|0|nic, special theodolites sleep furiously! furiously |
-3910|64|O|47272.67|1996-08-26|3-MEDIUM|Clerk#000000270|0|ickly. furiously final packag|
-3911|10|P|35019.95|1995-03-17|4-NOT SPECIFIED|Clerk#000000818|0|he fluffily final forges haggle slyly according to the blithely|
-3936|32|O|168618.39|1996-11-07|2-HIGH|Clerk#000000200|0|iously express packages engage slyly fina|
-3937|94|O|187516.29|1997-11-30|4-NOT SPECIFIED|Clerk#000000189|0|ckages boost carefully blithely q|
-3938|31|F|46918.22|1993-03-03|1-URGENT|Clerk#000000199|0|. unusual, final foxes haggle|
-3939|70|O|8720.45|1996-01-11|5-LOW|Clerk#000000647|0|ly ruthlessly silent requests. blithely regular requests haggle blithely wh|
-3940|149|O|129012.84|1996-02-14|5-LOW|Clerk#000000363|0|e above the ideas. quickly even dependencies along the blithely ir|
-3941|136|O|95453.80|1996-08-29|2-HIGH|Clerk#000000503|0|gular theodolites integrate quickly |
-3942|76|F|38596.81|1993-06-28|4-NOT SPECIFIED|Clerk#000000608|0|eas cajole bold requests. idly silent instructions |
-3943|40|O|60314.97|1996-10-09|5-LOW|Clerk#000000482|0|se alongside of the final pinto beans. regular packages boost across the ca|
-3968|25|O|121704.45|1997-02-17|4-NOT SPECIFIED|Clerk#000000431|0| the slyly special accounts; |
-3969|52|O|169797.40|1997-05-14|2-HIGH|Clerk#000000731|0|uriously final dependencies slee|
-3970|76|F|163709.85|1992-03-27|3-MEDIUM|Clerk#000000190|0|luffily furiously regular deposits. blithely special requests cajole blithely|
-3971|104|O|47925.47|1996-06-28|5-LOW|Clerk#000000287|0|alongside of the instructions ought to are |
-3972|124|F|1861.19|1994-04-21|3-MEDIUM|Clerk#000000049|0|y regular requests haggle quickly. pending, express acco|
-3973|103|F|91541.48|1992-03-24|4-NOT SPECIFIED|Clerk#000000114|0|somas according to the quickly even instructions wake fu|
-3974|94|O|56779.06|1996-03-05|4-NOT SPECIFIED|Clerk#000000938|0|deposits are furiously beneath the bl|
-3975|118|O|37804.43|1995-04-11|3-MEDIUM|Clerk#000000016|0|ts. regular, regular Tiresias play furiously. ironi|
-4000|70|F|84053.93|1992-01-04|5-LOW|Clerk#000000339|0|le carefully closely even pinto beans. regular, ironic foxes against the|
-4001|115|O|95929.46|1997-05-15|3-MEDIUM|Clerk#000000878|0|detect. asymptotes sleep furio|
-4002|104|O|76518.11|1997-04-08|5-LOW|Clerk#000000097|0| regular braids are. furiously even patterns agains|
-4003|112|F|17603.01|1993-01-27|1-URGENT|Clerk#000000177|0| blithe theodolites are slyly. slyly silent accounts toward|
-4004|70|F|220715.14|1993-05-07|3-MEDIUM|Clerk#000000273|0|accounts among the blithely regular sentiments |
-4005|140|O|129062.13|1996-11-20|2-HIGH|Clerk#000000341|0|ily according to the slyly iron|
-4006|35|F|70557.05|1995-01-04|3-MEDIUM|Clerk#000000765|0|ly ironic packages integrate. regular requests alongside of |
-4007|8|F|116193.97|1993-06-18|2-HIGH|Clerk#000000623|0|ecial packages. slyly regular accounts integrate |
-4032|10|O|62497.51|1998-02-26|3-MEDIUM|Clerk#000000686|0|iresias sleep slyly regular ideas. quickly unusual|
-4033|83|F|57740.74|1993-06-02|5-LOW|Clerk#000000181|0|ously bold instructions haggle furiously above the fluf|
-4034|94|F|186912.51|1993-11-14|4-NOT SPECIFIED|Clerk#000000548|0|ts x-ray. express requests affix fluffily regular theodolites. pending, fina|
-4035|118|F|22840.21|1992-02-19|5-LOW|Clerk#000000097|0|he ironic deposits sleep blith|
-4036|47|O|82563.10|1997-04-26|3-MEDIUM|Clerk#000000398|0|ly express deposits nag slyly. ironic, final asymptotes boost bra|
-4037|121|F|36389.43|1993-03-24|2-HIGH|Clerk#000000384|0|t carefully above the unusual the|
-4038|94|O|155045.39|1996-01-06|1-URGENT|Clerk#000000272|0|re slyly. silent requests wake quickly. regular packages play quickly |
-4039|29|O|143753.01|1997-11-16|1-URGENT|Clerk#000000358|0|ly ironic deposits. ironic reques|
-4064|130|O|148500.71|1996-10-10|4-NOT SPECIFIED|Clerk#000000598|0|ccounts. furiously unusual theodolites wake carefully about|
-4065|80|F|156345.64|1994-06-09|1-URGENT|Clerk#000000131|0|even foxes! slyly final deposits agai|
-4066|32|O|176911.21|1997-01-27|4-NOT SPECIFIED|Clerk#000000286|0|yly ironic dinos. quickly regular accounts haggle. requests wa|
-4067|16|F|136517.34|1992-10-07|2-HIGH|Clerk#000000027|0|tes boost furiously quick asymptotes. final deposits of the dolphins solv|
-4068|125|O|71852.67|1996-09-18|3-MEDIUM|Clerk#000000203|0|lly even accounts wake furiously across the unusual platelets. unusu|
-4069|73|F|198816.13|1992-05-13|3-MEDIUM|Clerk#000000359|0|deposits: slyly bold ideas detect furiously. f|
-4070|29|O|98275.37|1995-06-12|2-HIGH|Clerk#000000713|0|xpress ideas poach ab|
-4071|148|O|67789.42|1996-09-15|4-NOT SPECIFIED|Clerk#000000486|0|nal deposits. pending deposits d|
-4096|139|F|81089.61|1992-07-03|4-NOT SPECIFIED|Clerk#000000706|0|sits. quickly thin deposits x-ray blith|
-4097|10|O|134308.04|1996-05-24|1-URGENT|Clerk#000000475|0|ickly under the even accounts. even packages after the furiously express|
-4098|23|O|48478.54|1996-11-05|4-NOT SPECIFIED|Clerk#000000491|0|otes. quickly final requests after the stealthily ironic pinto bean|
-4099|17|F|207364.80|1992-08-21|1-URGENT|Clerk#000000379|0|r platelets. slyly regular requests cajole carefully against the|
-4100|4|O|3892.77|1996-03-12|3-MEDIUM|Clerk#000000429|0|posits. carefully unusual packages use pending deposits. regular she|
-4101|142|F|21640.10|1993-11-22|4-NOT SPECIFIED|Clerk#000000704|0|y around the express, careful epitaphs. accounts use fluffily. quickly p|
-4102|22|O|128786.57|1996-03-17|1-URGENT|Clerk#000000675|0|nding dependencies was slyly about the bl|
-4103|106|F|38164.23|1992-07-03|5-LOW|Clerk#000000679|0|fully ironic dependencies.|
-4128|139|O|5472.17|1995-10-07|4-NOT SPECIFIED|Clerk#000000635|0|ctions. dependencies from the slyly regular accounts nag slyly fu|
-4129|32|F|67226.28|1993-06-26|3-MEDIUM|Clerk#000000541|0|nwind. quickly final theodolites use packages. accounts|
-4130|104|O|47823.04|1996-03-10|5-LOW|Clerk#000000609|0|omise alongside of the carefully final foxes. blithel|
-4131|44|O|145971.60|1998-01-30|1-URGENT|Clerk#000000612|0| above the foxes hang |
-4132|19|P|65601.08|1995-05-29|4-NOT SPECIFIED|Clerk#000000158|0|ld asymptotes solve alongside of the express, final packages. fluffily fi|
-4133|101|F|31693.88|1992-08-07|4-NOT SPECIFIED|Clerk#000000268|0|al, express foxes. quickly pending deposits might cajole alongsi|
-4134|97|F|125191.12|1995-01-12|1-URGENT|Clerk#000000171|0|fully even deposits. regular de|
-4135|37|O|99577.55|1997-03-10|3-MEDIUM|Clerk#000000627|0|ly quietly even ideas. deposits haggle blithely|
-4160|55|O|82493.07|1996-08-20|5-LOW|Clerk#000000283|0|the carefully special accounts. furiously regular dugouts alongs|
-4161|118|F|198995.21|1993-08-21|5-LOW|Clerk#000000047|0|nts. fluffily regular foxes above the quickly daring reques|
-4162|22|F|72359.55|1992-02-10|5-LOW|Clerk#000000179|0|r packages are slyly accounts. furiously special foxes detect carefully re|
-4163|64|F|11493.80|1992-12-21|2-HIGH|Clerk#000000268|0| integrate furiously slyly regular depende|
-4164|94|O|8709.16|1998-07-03|2-HIGH|Clerk#000000720|0| regularly busy theodolites boost furiously quickly bold packages. express, s|
-4165|4|O|11405.40|1997-07-25|3-MEDIUM|Clerk#000000621|0|special foxes affix never blithely ironic pinto beans; blithely |
-4166|43|F|100671.06|1993-02-28|5-LOW|Clerk#000000757|0|quickly sly forges impress. careful foxes across the blithely even a|
-4167|28|O|62108.45|1998-06-17|1-URGENT|Clerk#000000917|0|kly furiously even deposits. unu|
-4192|146|O|197192.95|1998-04-19|1-URGENT|Clerk#000000369|0|equests above the slyly regular pinto beans unwi|
-4193|4|F|143191.54|1994-01-09|2-HIGH|Clerk#000000201|0|ng accounts haggle quickly. packages use fluffily ironic excu|
-4194|106|F|62972.29|1994-10-16|3-MEDIUM|Clerk#000000385|0| instructions are quickly even pinto beans. courts boost furiously regular, ev|
-4195|104|F|54478.95|1993-05-29|4-NOT SPECIFIED|Clerk#000000777|0| pinto beans cajole furiously theodolites-- slyly regular deposits doub|
-4196|106|O|201455.98|1998-05-15|3-MEDIUM|Clerk#000000532|0|affix carefully. quickly final requests |
-4197|92|O|217709.03|1996-08-13|4-NOT SPECIFIED|Clerk#000000264|0| pinto beans according|
-4198|143|O|105789.01|1997-06-16|3-MEDIUM|Clerk#000000583|0|g the special packages haggle pen|
-4199|5|F|30494.62|1992-02-13|1-URGENT|Clerk#000000309|0|e blithely. special deposits haggle slyly final foxes. carefully even|
-4224|70|O|150655.44|1997-07-14|1-URGENT|Clerk#000000034|0|jole quickly final dolphins. slyly pending foxes wake furiously bold pl|
-4225|128|O|72533.07|1997-06-03|3-MEDIUM|Clerk#000000992|0|r the platelets nag among the special deposits. ironic, ironic re|
-4226|92|F|29827.44|1993-03-09|5-LOW|Clerk#000000203|0|phins wake slyly regular packages. deposits haggle slowl|
-4227|133|F|92261.08|1995-02-24|1-URGENT|Clerk#000000063|0|ng the requests; ideas haggle fluffily. slyly unusual ideas c|
-4228|110|O|22072.16|1997-03-28|5-LOW|Clerk#000000309|0|pecial requests aft|
-4229|14|O|75145.87|1998-03-03|1-URGENT|Clerk#000000301|0|p furiously: final excuses hagg|
-4230|140|F|219709.60|1992-03-04|1-URGENT|Clerk#000000364|0|lly ironic deposits integrate carefully about the fu|
-4231|86|O|111403.66|1997-11-20|4-NOT SPECIFIED|Clerk#000000630|0|ly final accounts cajole furiously accounts. bravely ironic platelets am|
-4256|118|F|23067.48|1992-04-05|4-NOT SPECIFIED|Clerk#000000043|0|y alongside of the fluffily iro|
-4257|17|P|41723.86|1995-03-25|3-MEDIUM|Clerk#000000682|0|r ideas cajole along the blithely regular gifts.|
-4258|92|O|133829.35|1996-10-27|4-NOT SPECIFIED|Clerk#000000364|0|efully final platelets around the blit|
-4259|104|O|12918.70|1997-10-09|5-LOW|Clerk#000000781|0|es snooze slyly against the furiously unusual ideas. furious|
-4260|142|F|18566.14|1992-05-16|4-NOT SPECIFIED|Clerk#000000919|0|e among the fluffily bold accounts.|
-4261|118|F|83665.20|1992-10-03|1-URGENT|Clerk#000000662|0| about the even, pending packages. slyly bold deposits boost|
-4262|88|O|176278.57|1996-08-04|3-MEDIUM|Clerk#000000239|0| of the furious accounts. furiously regular accounts w|
-4263|4|O|158885.83|1998-03-16|1-URGENT|Clerk#000000265|0|sly ruthless deposits. final packages are instructions. fu|
-4288|34|F|75030.81|1992-12-04|4-NOT SPECIFIED|Clerk#000000823|0|usly carefully even theodolites: slyly express pac|
-4289|125|F|20752.62|1993-10-07|3-MEDIUM|Clerk#000000912|0|e carefully close instructions. slyly special reques|
-4290|41|F|26128.99|1995-01-15|3-MEDIUM|Clerk#000000688|0| slyly quickly bold requests. final deposits haggle pending ideas! som|
-4291|89|F|71822.86|1993-11-29|3-MEDIUM|Clerk#000000655|0| sleep fluffily between the bold packages. bold|
-4292|25|F|145906.24|1992-01-09|3-MEDIUM|Clerk#000000794|0| ruthlessly. slyly bo|
-4293|103|O|198322.91|1996-08-20|2-HIGH|Clerk#000000750|0|ly packages. regular packages nag according to t|
-4294|49|F|232194.74|1992-08-15|3-MEDIUM|Clerk#000000407|0|ng pinto beans breach. slyly express requests bo|
-4295|5|O|77754.62|1996-02-10|3-MEDIUM|Clerk#000000023|0|e boldly bold dependencies|
-4320|115|O|67049.37|1996-12-08|4-NOT SPECIFIED|Clerk#000000223|0|ages haggle after the slowly bold se|
-4321|16|F|118896.95|1994-07-18|3-MEDIUM|Clerk#000000041|0|ending deposits are carefully carefully regular packa|
-4322|142|O|149671.92|1998-03-13|3-MEDIUM|Clerk#000000433|0|totes nag across the fluffily special instructions. quickly silent hockey |
-4323|104|F|27598.17|1994-01-23|2-HIGH|Clerk#000000282|0|lve after the slyly regular multipliers. even, regular excus|
-4324|73|O|178249.05|1995-07-17|1-URGENT|Clerk#000000800|0|ccounts. slyly stealthy requests shall have t|
-4325|130|O|20214.49|1996-07-18|2-HIGH|Clerk#000000591|0|y around the always ev|
-4326|29|O|39048.94|1996-10-27|4-NOT SPECIFIED|Clerk#000000869|0|packages. carefully express deposit|
-4327|146|P|126235.35|1995-03-16|2-HIGH|Clerk#000000571|0|yly pending braids. final requests abo|
-4352|14|O|18653.09|1997-11-26|2-HIGH|Clerk#000000620|0|ly final platelets integrate carefully even requ|
-4353|73|O|21815.30|1997-12-12|2-HIGH|Clerk#000000790|0|uickly even ideas cajole|
-4354|145|F|179827.12|1994-09-30|4-NOT SPECIFIED|Clerk#000000046|0|pending notornis. requests serve |
-4355|4|O|186370.23|1996-11-16|1-URGENT|Clerk#000000362|0|ndencies use furiously across the regular |
-4356|97|F|39828.51|1994-04-11|5-LOW|Clerk#000000956|0| asymptotes sleep blithely. asymptotes sleep. blithely regul|
-4357|47|O|67045.94|1997-10-23|4-NOT SPECIFIED|Clerk#000000031|0|ages nag between the|
-4358|25|O|46298.53|1997-08-12|1-URGENT|Clerk#000000692|0|according to the fluffily special asymptotes |
-4359|16|F|107824.40|1993-03-03|1-URGENT|Clerk#000000393|0|sts. special, unusual deposits across the ironic theodo|
-4384|25|F|52562.16|1992-07-13|1-URGENT|Clerk#000000192|0|onic platelets. furiously regular asymptotes according to the special pac|
-4385|122|O|39190.62|1996-08-06|2-HIGH|Clerk#000000597|0|ully final requests. ironic, even dolphins above the regular |
-4386|61|O|134413.58|1998-02-06|5-LOW|Clerk#000000070|0| dolphins. silent, idle pinto beans |
-4387|110|O|116740.67|1995-10-23|1-URGENT|Clerk#000000025|0|ter the regular pinto beans. special, final gifts above the requests wi|
-4388|10|O|69668.22|1996-03-28|2-HIGH|Clerk#000000715|0|ts wake against the carefully final accounts. sly|
-4389|55|F|120324.82|1994-05-05|3-MEDIUM|Clerk#000000403|0|wly express excuses after the permanently even instructions are|
-4390|7|P|140608.69|1995-05-23|1-URGENT|Clerk#000000691|0|inal pinto beans. exp|
-4391|38|F|48284.06|1992-02-18|2-HIGH|Clerk#000000880|0|regular accounts. even depo|
-4416|149|F|76067.10|1992-06-30|5-LOW|Clerk#000000391|0| deposits. ideas cajole express theodolites: |
-4417|67|O|60868.39|1998-07-09|1-URGENT|Clerk#000000365|0|ideas are alongside of the blithely final reque|
-4418|61|F|47099.71|1993-03-25|3-MEDIUM|Clerk#000000731|0|pecial pinto beans. close foxes affix iron|
-4419|104|O|94030.43|1996-06-12|4-NOT SPECIFIED|Clerk#000000410|0|ages wake furiously slyly thin theodolit|
-4420|109|F|6088.41|1994-06-18|1-URGENT|Clerk#000000706|0|lly bold deposits along the bold, pending foxes detect blithely after the acco|
-4421|10|O|258779.02|1997-04-04|3-MEDIUM|Clerk#000000246|0|t the pending warhorses. express waters a|
-4422|70|P|107140.22|1995-05-22|3-MEDIUM|Clerk#000000938|0|ly bold accounts sleep special, regular foxes. doggedly regular in|
-4423|64|F|4913.06|1995-02-17|5-LOW|Clerk#000000888|0|excuses are ruthless|
-4448|70|O|127191.47|1998-05-21|2-HIGH|Clerk#000000428|0|. deposits haggle around the silent packages; slyly unusual packages|
-4449|10|O|48206.14|1998-02-08|5-LOW|Clerk#000000035|0|ourts are carefully even deposits. pending |
-4450|106|O|110194.31|1997-07-15|1-URGENT|Clerk#000000867|0|quests boost. furiously even realms are blithely bold requests. bl|
-4451|4|F|92851.80|1994-10-01|1-URGENT|Clerk#000000181|0|. carefully final foxes along the quickly express T|
-4452|13|F|64838.66|1994-06-21|5-LOW|Clerk#000000985|0|oxes are slyly. express, ironic pinto beans wake after the quickly pending re|
-4453|65|O|137030.40|1997-04-01|3-MEDIUM|Clerk#000000603|0|ages could have to nag slyly furiously even asymptotes! slowly regular |
-4454|142|F|159578.94|1994-02-02|5-LOW|Clerk#000000411|0|uriously regular pint|
-4455|19|F|102534.63|1993-10-11|3-MEDIUM|Clerk#000000924|0|even requests. bravely regular foxes according to the carefully unusual |
-4480|85|F|28658.26|1994-03-31|4-NOT SPECIFIED|Clerk#000000534|0|press, bold deposits boost blit|
-4481|148|O|77705.40|1996-03-30|5-LOW|Clerk#000000443|0|press sheaves cajole furio|
-4482|82|P|63535.56|1995-05-15|4-NOT SPECIFIED|Clerk#000000534|0|ravely bold accounts. furiously ironic instructions affix quickly. pend|
-4483|52|F|126597.21|1992-03-07|3-MEDIUM|Clerk#000000615|0|its. blithely idle accounts run; theodolites wake carefully around the fi|
-4484|131|O|237947.61|1996-12-24|1-URGENT|Clerk#000000392|0|ct across the pinto beans. quickly pending excuses engage furiously.|
-4485|53|F|182432.17|1994-11-13|3-MEDIUM|Clerk#000000038|0|es wake slyly even packages. blithely brave requests nag above the regul|
-4486|37|O|135613.18|1998-03-03|2-HIGH|Clerk#000000656|0|ffily according to the carefully pending acc|
-4487|46|F|109469.90|1993-02-23|3-MEDIUM|Clerk#000000017|0|s up the never pending excuses wake furiously special pinto beans. furiously i|
-4512|70|O|148682.82|1995-10-25|5-LOW|Clerk#000000393|0|ending instructions maintain fu|
-4513|85|O|119820.38|1996-03-15|5-LOW|Clerk#000000154|0|ests. final, final ideas|
-4514|97|F|143899.85|1994-04-30|3-MEDIUM|Clerk#000000074|0|deposits according to the carefull|
-4515|140|F|161745.44|1992-03-17|1-URGENT|Clerk#000000191|0|quests among the accounts sleep boldly about the regular f|
-4516|130|F|35949.14|1994-03-29|3-MEDIUM|Clerk#000000739|0|ing packages sleep slyly regular attainments|
-4517|113|O|47614.08|1998-03-07|4-NOT SPECIFIED|Clerk#000000231|0|uriously final deposits doze furiously furiously reg|
-4518|125|O|25861.74|1997-05-01|3-MEDIUM|Clerk#000000187|0|luffily against the spec|
-4519|136|F|68885.66|1993-03-30|4-NOT SPECIFIED|Clerk#000000938|0|ccording to the final |
-4544|112|O|151148.81|1997-08-07|3-MEDIUM|Clerk#000000435|0|g dependencies dazzle slyly ironic somas. carefu|
-4545|59|F|143276.28|1993-01-17|4-NOT SPECIFIED|Clerk#000000303|0|ep. requests use sly|
-4546|43|O|39906.87|1995-07-29|5-LOW|Clerk#000000373|0|ns sleep. regular, regular instructions maintai|
-4547|109|F|52114.01|1993-08-23|3-MEDIUM|Clerk#000000519|0|uctions thrash platelets. slyly final foxes wake slyly against th|
-4548|127|O|139915.23|1996-06-28|5-LOW|Clerk#000000798|0| in place of the blithely express sentiments haggle slyly r|
-4549|64|O|43889.17|1998-03-05|4-NOT SPECIFIED|Clerk#000000965|0|ully even deposits dazzle. fluffily pending ideas against the requests|
-4550|118|F|27461.48|1994-12-29|2-HIGH|Clerk#000000748|0|s haggle carefully acco|
-4551|109|O|82824.14|1996-02-09|2-HIGH|Clerk#000000462|0|ts. slyly quick theodolite|
-4576|139|O|56936.10|1996-08-14|5-LOW|Clerk#000000798|0|e pending deposits. |
-4577|79|O|104259.88|1998-05-02|5-LOW|Clerk#000000409|0|ly. unusual platelets are alw|
-4578|91|F|95761.93|1992-09-13|5-LOW|Clerk#000000121|0| to the furiously ironic instructions? furiou|
-4579|106|O|85927.85|1995-12-01|2-HIGH|Clerk#000000951|0|its wake quickly blithely specia|
-4580|82|F|118464.65|1993-11-15|4-NOT SPECIFIED|Clerk#000000086|0|rs wake blithely regular requests. fluffily ev|
-4581|79|F|89592.11|1992-09-04|4-NOT SPECIFIED|Clerk#000000687|0|ges. carefully pending accounts use furiously abo|
-4582|19|O|18247.86|1996-07-04|1-URGENT|Clerk#000000638|0|g the furiously regular pac|
-4583|22|F|206495.43|1994-09-25|3-MEDIUM|Clerk#000000240|0|equests. slyly even platelets was qui|
-4608|80|F|157767.86|1994-06-17|1-URGENT|Clerk#000000259|0|y even instructions detect slyly asymptotes. blithely final packa|
-4609|133|O|70462.84|1996-12-05|3-MEDIUM|Clerk#000000239|0|hang slyly slyly expre|
-4610|26|F|135934.60|1993-06-18|5-LOW|Clerk#000000616|0|e carefully express pinto|
-4611|29|F|166506.22|1993-01-10|2-HIGH|Clerk#000000152|0|. furiously regular instructions haggle dolphins. even instructions det|
-4612|61|F|82598.87|1993-09-20|3-MEDIUM|Clerk#000000397|0|bove the deposits. even deposits dazzle. slyly express packages haggle sl|
-4613|133|O|212339.55|1998-03-05|3-MEDIUM|Clerk#000000541|0|furiously blithely pending dependen|
-4614|61|O|151801.06|1996-04-22|1-URGENT|Clerk#000000974|0| sauternes wake thinly special accounts. fur|
-4615|29|F|10500.27|1993-08-27|3-MEDIUM|Clerk#000000982|0|jole after the fluffily pending foxes. packages affix carefully acco|
-4640|97|O|81138.17|1996-01-01|5-LOW|Clerk#000000902|0|requests. deposits do detect above the blithely iron|
-4641|134|F|98485.21|1993-01-20|4-NOT SPECIFIED|Clerk#000000755|0|ronic, final requests integrate slyly: specia|
-4642|148|F|117537.87|1995-02-27|1-URGENT|Clerk#000000295|0|cial requests wake carefully around the regular, unusual ideas. furi|
-4643|67|O|52414.19|1995-06-30|2-HIGH|Clerk#000000292|0|ously regular packages. unusual, special platel|
-4644|94|O|85901.70|1998-01-17|5-LOW|Clerk#000000961|0|requests. fluffily even ideas bo|
-4645|44|F|231012.22|1994-09-20|1-URGENT|Clerk#000000764|0|fully even instructions. final gifts sublate quickly final requests. bl|
-4646|83|O|124637.19|1996-06-18|1-URGENT|Clerk#000000036|0|n place of the blithely qu|
-4647|28|F|110958.36|1994-05-14|3-MEDIUM|Clerk#000000626|0|out the deposits. slyly final pinto beans haggle idly. slyly s|
-4672|79|O|199593.71|1995-11-07|1-URGENT|Clerk#000000475|0|lyly final dependencies caj|
-4673|82|O|58094.75|1996-08-13|4-NOT SPECIFIED|Clerk#000000914|0|c deposits are slyly. bravely ironic deposits cajole carefully after the |
-4674|37|F|115411.37|1994-04-19|1-URGENT|Clerk#000000122|0|careful hockey players. carefully pending deposits caj|
-4675|86|F|68817.08|1993-11-25|4-NOT SPECIFIED|Clerk#000000741|0|al deposits haggle slyly final|
-4676|14|O|182025.95|1995-09-01|2-HIGH|Clerk#000000407|0|s. slyly bold accounts sleep furiously special|
-4677|40|O|25661.87|1998-02-21|3-MEDIUM|Clerk#000000245|0|ly pending deposits after the carefully regular foxes sleep blithely after t|
-4678|88|O|131752.07|1998-08-02|4-NOT SPECIFIED|Clerk#000000175|0|side of the bold platelets detect slyly blithely ironic e|
-4679|88|F|7211.59|1993-01-20|2-HIGH|Clerk#000000905|0|ely regular accounts affix slyly. final dolphins are. furiously final de|
-4704|2|O|63873.14|1996-08-16|4-NOT SPECIFIED|Clerk#000000256|0|lithely final requests about the fluffily regular |
-4705|98|F|173340.09|1992-03-22|4-NOT SPECIFIED|Clerk#000000522|0| special instructions poa|
-4706|25|F|101709.52|1992-12-29|4-NOT SPECIFIED|Clerk#000000722|0| packages above the never regular packages nag packages. deposits c|
-4707|91|F|61052.10|1995-02-27|2-HIGH|Clerk#000000943|0|ully enticing accounts behind the regular|
-4708|85|F|56998.36|1994-10-01|1-URGENT|Clerk#000000383|0|ly thinly even accounts. unusu|
-4709|26|O|49903.57|1996-01-08|3-MEDIUM|Clerk#000000785|0|he furiously even deposits! ironic theodolites haggle blithely. r|
-4710|100|F|88966.68|1994-12-08|4-NOT SPECIFIED|Clerk#000000734|0|the final, regular foxes. carefully ironic pattern|
-4711|142|O|129546.56|1998-05-06|1-URGENT|Clerk#000000818|0|mptotes. unusual packages wake furiously qui|
-4736|139|O|67572.73|1995-11-20|2-HIGH|Clerk#000000563|0|blithely regular courts affix into the carefully ironic deposits. slyly exp|
-4737|79|F|62014.51|1993-03-11|4-NOT SPECIFIED|Clerk#000000275|0|ents use slyly among the unusual, ironic pearls. furiously pending |
-4738|5|F|149466.62|1992-04-08|2-HIGH|Clerk#000000150|0|deposits. thin acco|
-4739|148|F|68255.82|1993-02-21|5-LOW|Clerk#000000872|0|ing to the pending attainments: pending, express account|
-4740|68|O|42579.40|1996-07-05|2-HIGH|Clerk#000000420|0| dependencies haggle about the|
-4741|127|F|180692.90|1992-07-07|4-NOT SPECIFIED|Clerk#000000983|0|ly bold deposits are slyly about the r|
-4742|64|P|155356.80|1995-03-23|3-MEDIUM|Clerk#000000058|0|n packages. quickly regular ideas cajole blithely|
-4743|97|F|65702.39|1993-03-31|5-LOW|Clerk#000000048|0|pinto beans above the bold, even idea|
-4768|136|F|4820.55|1993-11-22|2-HIGH|Clerk#000000875|0|ctions snooze idly beneath the quick waters. fluffily u|
-4769|121|P|136765.03|1995-04-14|4-NOT SPECIFIED|Clerk#000000116|0|pon the asymptotes. idle, final account|
-4770|59|O|72150.68|1995-06-20|2-HIGH|Clerk#000000461|0|cial instructions believe carefully. |
-4771|95|F|49625.21|1992-12-14|1-URGENT|Clerk#000000571|0|lly express deposits serve furiously along the f|
-4772|28|F|64102.93|1994-09-14|1-URGENT|Clerk#000000708|0|es sleep. regular requests haggle furiously slyly |
-4773|122|O|196080.26|1995-12-23|1-URGENT|Clerk#000000327|0|ptotes was slyly along the|
-4774|52|F|124380.73|1993-04-20|3-MEDIUM|Clerk#000000299|0|eposits use blithely bold deposits. carefully regular gifts about the fin|
-4775|128|O|112444.42|1995-08-13|4-NOT SPECIFIED|Clerk#000000609|0|s integrate slyly slyly final instructions. carefully bold pack|
-4800|37|F|91795.13|1992-01-06|5-LOW|Clerk#000000625|0|ggle furiously along the pending pinto beans. deposits use: final foxe|
-4801|88|O|108353.08|1996-01-25|1-URGENT|Clerk#000000553|0|r the final sentiments. pending theodolites sleep doggedly across t|
-4802|130|O|5978.65|1997-01-23|3-MEDIUM|Clerk#000000400|0| ironic, thin packages wake furiously ironic, ironic deposits. the|
-4803|124|O|158776.68|1996-02-08|5-LOW|Clerk#000000892|0|lly unusual courts are ironic|
-4804|37|F|111547.31|1992-01-28|2-HIGH|Clerk#000000614|0|ly final accounts. blithely unusual theodolite|
-4805|16|F|172102.96|1992-04-25|4-NOT SPECIFIED|Clerk#000000514|0|even accounts wake furiously slyly final accounts; blithel|
-4806|7|F|35390.15|1993-04-21|5-LOW|Clerk#000000625|0|ave accounts. furiously pending wa|
-4807|53|O|138902.23|1997-01-09|3-MEDIUM|Clerk#000000310|0|kly. slyly special accounts|
-4832|34|O|84954.79|1997-12-04|3-MEDIUM|Clerk#000000548|0|final accounts sleep among the blithe|
-4833|133|O|84800.44|1996-05-12|3-MEDIUM|Clerk#000000256|0|r deposits against the slyly final excuses slee|
-4834|19|O|124539.00|1996-09-12|2-HIGH|Clerk#000000284|0|lar accounts. furiously ironic accounts haggle slyly |
-4835|146|F|70857.51|1994-10-25|1-URGENT|Clerk#000000250|0|s integrate furiously blithely expr|
-4836|65|O|78711.40|1996-12-18|1-URGENT|Clerk#000000691|0|c packages cajole carefully through the accounts. careful|
-4837|130|O|68519.84|1998-04-24|4-NOT SPECIFIED|Clerk#000000517|0|n accounts are regular, bold accounts. even instructions use request|
-4838|44|F|61811.33|1992-08-02|1-URGENT|Clerk#000000569|0|ffily bold sentiments. carefully close dolphins cajole across the |
-4839|25|F|71241.63|1994-05-10|1-URGENT|Clerk#000000925|0| even somas. slyly express ideas lose carefully. blithely unusu|
-4864|88|F|149614.34|1992-11-11|5-LOW|Clerk#000000423|0|ests nag within the quickly ironic asymptotes. ironic|
-4865|85|O|162113.46|1997-06-07|3-MEDIUM|Clerk#000000418|0|sits boost stealthily above the bl|
-4866|53|O|25767.07|1997-08-07|2-HIGH|Clerk#000000663|0|kages. unusual packages nag fluffily. qui|
-4867|10|F|9741.03|1992-05-21|1-URGENT|Clerk#000000891|0|ss the slyly regular dependencies. fluffily regular deposits within the car|
-4868|76|O|159005.35|1997-03-02|5-LOW|Clerk#000000729|0|regular asymptotes. regular packages sublate carefully al|
-4869|58|F|175422.13|1994-09-26|5-LOW|Clerk#000000802|0|boost! ironic packages un|
-4870|103|F|94534.07|1994-08-06|3-MEDIUM|Clerk#000000911|0|nto beans about the blithely regular d|
-4871|46|O|129636.99|1995-06-12|1-URGENT|Clerk#000000531|0|ven, special instructions across t|
-4896|85|F|93206.35|1992-08-22|1-URGENT|Clerk#000000622|0|sly pending deposits. final accounts boost above the sly, even|
-4897|80|F|115688.85|1992-09-17|5-LOW|Clerk#000000184|0|s. bold pinto beans sleep. evenly final accounts daz|
-4898|14|F|40572.64|1994-07-11|4-NOT SPECIFIED|Clerk#000000841|0|final patterns. special theodolites haggle ruthlessly at the blithely spec|
-4899|61|F|12291.83|1993-10-18|4-NOT SPECIFIED|Clerk#000000348|0| instructions. furiously even packages are furiously speci|
-4900|137|F|221320.76|1992-06-30|4-NOT SPECIFIED|Clerk#000000878|0|sleep quickly unusual |
-4901|79|O|146298.28|1997-12-31|4-NOT SPECIFIED|Clerk#000000980|0|inal dependencies cajole furiously. carefully express accounts na|
-4902|139|O|26011.20|1998-07-04|3-MEDIUM|Clerk#000000874|0| the slyly express dolphins. |
-4903|92|F|34363.63|1992-03-22|4-NOT SPECIFIED|Clerk#000000907|0|yly. multipliers within the fo|
-4928|4|F|59931.42|1993-10-04|4-NOT SPECIFIED|Clerk#000000952|0|slyly brave instructions after the ironic excuses haggle ruthlessly about|
-4929|149|O|135187.33|1996-02-29|3-MEDIUM|Clerk#000000109|0|uests. furiously special ideas poach. pending |
-4930|149|F|176867.34|1994-05-06|5-LOW|Clerk#000000593|0| haggle slyly quietly final theodolites. packages are furious|
-4931|50|F|115759.13|1994-11-17|1-URGENT|Clerk#000000356|0|leep. slyly express dolphins nag slyly. furiously regular s|
-4932|122|F|42927.07|1993-08-10|1-URGENT|Clerk#000000830|0|onic foxes. enticingly reg|
-4933|94|O|42945.82|1995-07-14|3-MEDIUM|Clerk#000000848|0|y special sauternes integr|
-4934|40|O|180478.16|1997-02-17|1-URGENT|Clerk#000000372|0|nes cajole; carefully special accounts haggle. special pinto beans nag |
-4935|40|F|162088.30|1993-05-25|4-NOT SPECIFIED|Clerk#000000601|0|c foxes. fluffily pendin|
-4960|124|F|153259.41|1995-02-26|5-LOW|Clerk#000000229|0|uriously even excuses. fluffily regular instructions along the furiously ironi|
-4961|58|O|89224.24|1998-04-06|3-MEDIUM|Clerk#000000731|0| braids. furiously even theodolites |
-4962|104|F|44781.32|1993-07-28|3-MEDIUM|Clerk#000000008|0| breach never ironic |
-4963|34|O|54175.35|1996-11-07|3-MEDIUM|Clerk#000000754|0|ully unusual epitaphs nod s|
-4964|101|O|204163.10|1997-07-28|4-NOT SPECIFIED|Clerk#000000144|0|ithely final theodolites. blithely regu|
-4965|52|F|110626.82|1993-10-21|5-LOW|Clerk#000000638|0|dependencies poach packages. sometim|
-4966|70|O|59186.02|1996-09-07|2-HIGH|Clerk#000000243|0|accounts. blithely ironic courts wake boldly furiously express |
-4967|98|O|103814.27|1997-02-17|3-MEDIUM|Clerk#000000397|0|e theodolites; furiously b|
-4992|62|F|203904.80|1992-05-10|1-URGENT|Clerk#000000166|0|telets nag carefully am|
-4993|13|F|145730.19|1994-08-04|4-NOT SPECIFIED|Clerk#000000258|0|ing instructions nag furiously. un|
-4994|43|O|216071.76|1996-06-29|4-NOT SPECIFIED|Clerk#000000868|0|oxes wake above the asymptotes. bold requests sleep br|
-4995|40|O|189651.76|1996-01-06|4-NOT SPECIFIED|Clerk#000000748|0|s. even deposits boost along the express, even theodolites. stealthily ir|
-4996|133|F|100750.67|1992-09-14|3-MEDIUM|Clerk#000000433|0|foxes. carefully special packages haggle quickly fluffi|
-4997|47|O|122611.05|1998-03-18|5-LOW|Clerk#000000040|0|egrate final pinto beans. fluffily special notornis use blith|
-4998|32|F|129096.80|1992-01-11|4-NOT SPECIFIED|Clerk#000000054|0|alongside of the quickly final requests hang always|
-4999|85|F|98643.17|1993-06-26|2-HIGH|Clerk#000000504|0| dolphins cajole blithely above the sly |
-5024|124|O|116127.69|1996-10-25|3-MEDIUM|Clerk#000000659|0|r foxes. regular excuses are about the quickly regular theodolites. regular, |
-5025|121|O|20099.43|1997-02-03|5-LOW|Clerk#000000805|0|ackages are slyly about the quickly |
-5026|28|O|13197.78|1997-09-06|1-URGENT|Clerk#000000955|0|y final requests us|
-5027|148|O|181346.56|1997-08-30|2-HIGH|Clerk#000000751|0|e-- final, pending requests along t|
-5028|13|F|30755.69|1992-04-17|2-HIGH|Clerk#000000180|0|ickly blithely express deposits. b|
-5029|11|F|19811.69|1992-11-14|3-MEDIUM|Clerk#000000469|0|. regular accounts haggle slyly. regul|
-5030|106|O|71781.23|1998-05-25|4-NOT SPECIFIED|Clerk#000000564|0| wake slyly furiously thin requests. ironic pinto beans ha|
-5031|139|F|91438.59|1994-12-02|3-MEDIUM|Clerk#000000788|0|lar instructions haggle blithely pending foxes? sometimes final excuses h|
-5056|52|O|62258.18|1997-02-15|5-LOW|Clerk#000000828|0|lithely above the express ideas. blithely final deposits are fluffily spec|
-5057|64|O|76164.41|1997-08-03|1-URGENT|Clerk#000000955|0|r ironic requests of the carefully ironic dependencies wake slyly a|
-5058|119|O|17031.01|1998-03-23|1-URGENT|Clerk#000000367|0| the pending packages wake after the quickly speci|
-5059|43|F|67173.82|1993-11-10|2-HIGH|Clerk#000000058|0|latelets. final, regular accounts cajole furiously ironic pinto beans? do|
-5060|112|F|65218.47|1992-07-07|4-NOT SPECIFIED|Clerk#000000333|0|e according to the excuses. express theodo|
-5061|101|F|52190.52|1993-08-14|1-URGENT|Clerk#000000009|0|e packages use fluffily according to the carefully ironic deposits. bol|
-5062|61|F|109247.00|1992-10-08|3-MEDIUM|Clerk#000000012|0|ithely. blithely bold theodolites affix. blithely final deposits haggle ac|
-5063|23|O|98753.57|1997-05-17|2-HIGH|Clerk#000000745|0|lyly after the pending foxes. express theodolites breach across t|
-5088|130|F|101616.44|1993-01-06|5-LOW|Clerk#000000930|0|ole slyly since the quickly ironic br|
-5089|130|F|109246.54|1992-07-29|1-URGENT|Clerk#000000677|0|cial platelets. quiet, final ideas cajole carefully. unusu|
-5090|89|O|132838.49|1997-03-09|1-URGENT|Clerk#000000953|0|ress accounts affix silently carefully quick accounts. carefully f|
-5091|148|O|47852.06|1998-05-21|3-MEDIUM|Clerk#000000311|0|egular decoys mold carefully fluffily unus|
-5092|22|O|195834.96|1995-10-30|5-LOW|Clerk#000000194|0|are blithely along the pin|
-5093|79|F|190693.92|1993-09-03|3-MEDIUM|Clerk#000000802|0|ully ironic theodolites sleep above the furiously ruthless instructions. bli|
-5094|106|F|74892.08|1993-03-29|4-NOT SPECIFIED|Clerk#000000406|0|uickly pending deposits haggle quickly ide|
-5095|97|F|184583.99|1992-04-22|2-HIGH|Clerk#000000964|0|accounts are carefully! slyly even packages wake slyly a|
-5120|16|O|28007.73|1996-06-05|1-URGENT|Clerk#000000332|0|against the slyly express requests. furiousl|
-5121|133|F|150334.57|1992-05-11|4-NOT SPECIFIED|Clerk#000000736|0|gular requests. furiously final pearls against the permanent, thin courts s|
-5122|70|O|79863.84|1996-02-10|5-LOW|Clerk#000000780|0|blithely. slyly ironic deposits nag. excuses s|
-5123|10|O|11850.45|1998-02-10|1-URGENT|Clerk#000000776|0|ic requests. furiously ironic packages grow above the express, ironic inst|
-5124|25|O|159170.80|1997-04-04|4-NOT SPECIFIED|Clerk#000000749|0|kly even courts. bold packages solve. |
-5125|28|O|38065.28|1998-02-07|5-LOW|Clerk#000000834|0|ructions. dolphins wake slowly carefully unusual |
-5126|112|F|92123.32|1992-10-12|4-NOT SPECIFIED|Clerk#000000270|0|s. unusual deposits |
-5127|73|O|48024.99|1997-01-15|5-LOW|Clerk#000000829|0|fully express pinto beans. slyly final accounts along the ironic dugouts use s|
-5152|44|O|60568.34|1997-01-04|3-MEDIUM|Clerk#000000963|0| for the blithely reg|
-5153|113|O|193832.28|1995-08-26|1-URGENT|Clerk#000000954|0| the furiously ironic foxes. express packages shall cajole carefully across|
-5154|8|O|28070.86|1997-04-13|3-MEDIUM|Clerk#000000316|0|inal requests. slyly regular deposits nag. even deposits haggle agains|
-5155|77|F|70183.29|1994-06-12|2-HIGH|Clerk#000000108|0|y pending deposits are ag|
-5156|125|O|59439.44|1996-11-04|5-LOW|Clerk#000000117|0|ngside of the multipliers solve slyly requests. regu|
-5157|142|O|167056.34|1997-07-06|4-NOT SPECIFIED|Clerk#000000689|0|closely above the unusual deposits. furiously|
-5158|76|O|240284.95|1997-01-21|1-URGENT|Clerk#000000541|0| regular foxes. even foxes wake blithely |
-5159|106|O|147543.26|1996-09-25|1-URGENT|Clerk#000000303|0|tegrate slyly around the slyly sly sauternes. final pa|
-5184|85|O|209155.48|1998-07-20|5-LOW|Clerk#000000250|0|nding accounts detect final, even|
-5185|148|O|206179.68|1997-07-25|3-MEDIUM|Clerk#000000195|0| regular ideas about the even ex|
-5186|52|O|208892.63|1996-08-03|1-URGENT|Clerk#000000332|0|pecial platelets. slyly final ac|
-5187|55|O|46380.69|1997-07-16|3-MEDIUM|Clerk#000000682|0|ckly according to t|
-5188|140|P|66268.86|1995-03-02|4-NOT SPECIFIED|Clerk#000000029|0|counts. finally ironic requests ab|
-5189|71|F|184172.31|1993-11-26|5-LOW|Clerk#000000940|0|e after the pending accounts. asymptotes boost. re|
-5190|58|F|89684.31|1992-04-26|5-LOW|Clerk#000000888|0|equests. slyly unusual|
-5191|77|F|119910.04|1994-12-11|4-NOT SPECIFIED|Clerk#000000318|0|ing, regular deposits alongside of the deposits boost fluffily quickly ev|
-5216|59|O|16763.95|1997-08-14|3-MEDIUM|Clerk#000000418|0|des boost across the platelets. slyly busy theodolit|
-5217|35|O|135745.58|1995-10-13|2-HIGH|Clerk#000000873|0|ons might wake quickly according to th|
-5218|82|F|73882.37|1992-07-30|4-NOT SPECIFIED|Clerk#000000683|0|y ruthless packages according to the bold, ironic package|
-5219|88|O|21267.72|1997-02-27|1-URGENT|Clerk#000000510|0|aggle always. foxes above the ironic deposits |
-5220|10|F|24844.39|1992-07-30|2-HIGH|Clerk#000000051|0| final packages. ideas detect slyly around|
-5221|13|O|71968.10|1995-06-09|4-NOT SPECIFIED|Clerk#000000324|0|lar accounts above the sl|
-5222|80|F|1051.15|1994-05-27|4-NOT SPECIFIED|Clerk#000000613|0|along the bold ideas. furiously final foxes snoo|
-5223|149|F|105561.21|1994-06-30|1-URGENT|Clerk#000000745|0|e. theodolites serve blithely unusual, final foxes. carefully pending packag|
-5248|70|P|86958.28|1995-04-15|2-HIGH|Clerk#000000737|0|theodolites cajole according to the silent packages. quickly ironic packages a|
-5249|103|F|123586.03|1994-09-06|3-MEDIUM|Clerk#000000019|0|refully bold accounts |
-5250|97|O|29673.73|1995-07-16|2-HIGH|Clerk#000000307|0|. carefully final instructions sleep among the finally regular dependen|
-5251|34|O|34004.48|1995-04-12|3-MEDIUM|Clerk#000000687|0| ironic dugouts detect. reque|
-5252|91|O|173145.37|1996-02-17|1-URGENT|Clerk#000000724|0| ironic accounts among the silent asym|
-5253|148|P|108361.46|1995-04-11|2-HIGH|Clerk#000000275|0|egular requests! blithely regular deposits alongside of t|
-5254|112|F|196989.09|1992-07-26|4-NOT SPECIFIED|Clerk#000000527|0|he express, even ideas cajole blithely special requests|
-5255|64|O|75074.07|1996-07-12|5-LOW|Clerk#000000591|0|ly slow forges. express foxes haggle. regular, even asymp|
-5280|34|O|68052.70|1997-12-03|3-MEDIUM|Clerk#000000604|0|riously ironic instructions. ironic ideas according to the accounts boost fur|
-5281|124|O|179418.31|1995-11-02|2-HIGH|Clerk#000000158|0|ackages haggle slyly a|
-5282|50|O|94446.69|1998-01-30|1-URGENT|Clerk#000000030|0|rding to the unusual, bold accounts. regular instructions|
-5283|131|F|18594.66|1994-06-04|3-MEDIUM|Clerk#000000579|0|ests. even, final ideas alongside of t|
-5284|61|O|40548.99|1995-07-09|4-NOT SPECIFIED|Clerk#000000155|0| careful dependencies use sly|
-5285|70|F|99377.51|1994-01-18|2-HIGH|Clerk#000000976|0|p across the furiously ironic deposits.|
-5286|116|O|79646.89|1997-09-26|5-LOW|Clerk#000000606|0|structions are furiously quickly ironic asymptotes. quickly iro|
-5287|25|F|30045.95|1993-12-22|5-LOW|Clerk#000000406|0|regular packages. bold instructions sleep always. carefully final p|
-5312|65|F|66697.95|1995-02-24|2-HIGH|Clerk#000000690|0|ter the even, bold foxe|
-5313|13|O|159870.44|1997-06-17|4-NOT SPECIFIED|Clerk#000000896|0|le. final courts haggle furiously according to the |
-5314|34|O|26999.83|1995-06-02|2-HIGH|Clerk#000000617|0|ions across the quickly special d|
-5315|139|F|55554.97|1992-10-29|4-NOT SPECIFIED|Clerk#000000035|0| furiously. quickly unusual packages use. sly|
-5316|100|F|62316.61|1994-01-31|1-URGENT|Clerk#000000734|0| requests haggle across the regular, pending deposits. furiously regular requ|
-5317|37|F|228002.51|1994-09-09|5-LOW|Clerk#000000687|0|jole quickly at the slyly pend|
-5318|59|F|106935.19|1993-04-04|2-HIGH|Clerk#000000663|0|efully regular dolphins. even ideas nag fluffily furiously even packa|
-5319|98|O|68619.29|1996-01-21|1-URGENT|Clerk#000000237|0|lent requests. quickly pe|
-5344|109|O|88216.32|1998-06-21|3-MEDIUM|Clerk#000000569|0|s. ironic excuses cajole across the|
-5345|31|O|111924.56|1997-08-24|1-URGENT|Clerk#000000057|0|r the slyly silent packages. pending, even pinto b|
-5346|37|F|149536.20|1993-12-26|2-HIGH|Clerk#000000220|0|gly close packages against the even, regular escapades boost evenly accordi|
-5347|49|F|173024.71|1995-02-22|3-MEDIUM|Clerk#000000180|0|onic, regular deposits. packag|
-5348|53|O|119164.96|1997-11-08|5-LOW|Clerk#000000497|0|totes. accounts after the furiously|
-5349|67|O|38038.84|1996-09-01|1-URGENT|Clerk#000000960|0|le along the carefully bold dolphins. carefully special packa|
-5350|76|F|113417.03|1993-10-10|5-LOW|Clerk#000000604|0|ccounts after the carefully pending requests believe |
-5351|122|O|76799.25|1998-05-11|1-URGENT|Clerk#000000443|0|to beans sleep furiously after the carefully even|
-5376|149|F|98422.83|1994-07-04|5-LOW|Clerk#000000392|0|. quickly ironic deposits integrate along|
-5377|64|O|117728.37|1997-04-24|2-HIGH|Clerk#000000917|0|ons nag blithely furiously regula|
-5378|43|F|101899.93|1992-10-25|1-URGENT|Clerk#000000520|0|n ideas. regular accounts haggle. ironic ideas use along the bold ideas. blith|
-5379|89|O|47010.15|1995-08-08|2-HIGH|Clerk#000000503|0|he unusual accounts. carefully special instructi|
-5380|148|O|123014.83|1997-10-12|1-URGENT|Clerk#000000481|0|le slyly about the slyly final dolphins. fu|
-5381|32|F|223995.46|1993-01-29|5-LOW|Clerk#000000531|0|arefully bold packages are slyly furiously ironic foxes. fluffil|
-5382|35|F|138423.03|1992-01-13|5-LOW|Clerk#000000809|0|lent deposits are according to the reg|
-5383|31|O|11474.95|1995-05-26|5-LOW|Clerk#000000409|0|ly bold requests hang furiously furiously unusual accounts. evenly unusu|
-5408|23|F|123477.05|1992-07-21|5-LOW|Clerk#000000735|0|egular requests according to the|
-5409|13|F|145040.38|1992-01-09|5-LOW|Clerk#000000171|0|eans. regular accounts are regul|
-5410|22|O|139104.17|1998-07-28|4-NOT SPECIFIED|Clerk#000000117|0|final deposits: pending excuses boost. ironic theodolites cajole furi|
-5411|61|O|62541.27|1997-05-16|3-MEDIUM|Clerk#000000800|0|equests cajole slyly furious|
-5412|142|O|109979.71|1998-01-20|2-HIGH|Clerk#000000151|0|ets boost furiously regular accounts. regular foxes above th|
-5413|94|O|224382.57|1997-10-17|1-URGENT|Clerk#000000066|0|e even excuses. always final depen|
-5414|100|F|167017.39|1993-03-25|4-NOT SPECIFIED|Clerk#000000242|0|lent dependencies? carefully express requests sleep furiously ac|
-5415|23|F|176864.83|1992-08-05|3-MEDIUM|Clerk#000000998|0|ly even ideas nag blithely above the final instructions|
-5440|130|O|3223.17|1997-01-12|1-URGENT|Clerk#000000154|0|posits boost regularly ironic packages. regular, ironic deposits wak|
-5441|41|F|131891.05|1994-07-21|4-NOT SPECIFIED|Clerk#000000257|0|after the furiously ironic |
-5442|43|O|139332.94|1998-01-13|4-NOT SPECIFIED|Clerk#000000954|0|ully. quickly express accounts against the|
-5443|131|O|124950.79|1996-10-10|4-NOT SPECIFIED|Clerk#000000492|0|al foxes could detect. blithely stealthy asymptotes kind|
-5444|130|P|172908.01|1995-03-18|1-URGENT|Clerk#000000677|0| asymptotes. asymptotes cajole quickly quickly bo|
-5445|115|F|114990.63|1993-07-26|5-LOW|Clerk#000000623|0|s. even, special requests cajole furiously even, |
-5446|7|F|29920.80|1994-06-21|5-LOW|Clerk#000000304|0| furiously final pac|
-5447|13|O|29029.84|1996-03-16|3-MEDIUM|Clerk#000000597|0|uternes around the furiously bold accounts wake after |
-5472|70|F|221636.83|1993-04-11|5-LOW|Clerk#000000552|0|counts. deposits about the slyly dogged pinto beans cajole slyly|
-5473|65|F|63041.33|1992-03-25|4-NOT SPECIFIED|Clerk#000000306|0|te the quickly stealthy ideas. even, regular deposits above|
-5474|55|F|131079.52|1992-06-01|4-NOT SPECIFIED|Clerk#000000487|0|gle blithely enticing ideas. final, exp|
-5475|139|O|10645.48|1996-07-07|5-LOW|Clerk#000000856|0|es shall boost slyly. furiously even deposits lose. instruc|
-5476|91|O|26906.38|1997-11-06|1-URGENT|Clerk#000000189|0|furiously final ideas. furiously bold dependencies sleep care|
-5477|107|O|130125.64|1997-12-30|5-LOW|Clerk#000000689|0|ckages. ironic deposits caj|
-5478|116|O|97502.23|1996-05-17|1-URGENT|Clerk#000000272|0|ckages. quickly pending deposits thrash furiously: bl|
-5479|70|F|70553.45|1993-12-22|3-MEDIUM|Clerk#000000335|0|ng asymptotes. pinto beans sleep care|
-5504|19|F|41492.25|1993-01-06|2-HIGH|Clerk#000000221|0|y pending packages. furiousl|
-5505|95|O|147329.51|1997-10-04|5-LOW|Clerk#000000719|0| final, regular packages according to the slyly ironic accounts nag ironica|
-5506|91|F|8413.31|1993-11-08|1-URGENT|Clerk#000000292|0|nusual theodolites. sly|
-5507|2|O|140363.70|1998-05-28|5-LOW|Clerk#000000692|0|the carefully ironic instructions are quickly iro|
-5508|56|O|3808.05|1996-06-21|1-URGENT|Clerk#000000128|0|y express packages cajole furiously. slyly unusual requests |
-5509|80|F|135335.96|1994-04-08|5-LOW|Clerk#000000164|0|usual deposits use packages. furiously final requests wake slyly about th|
-5510|37|F|126948.81|1993-01-08|3-MEDIUM|Clerk#000000819|0| nag slyly. carefully eve|
-5511|79|F|151089.96|1994-11-29|1-URGENT|Clerk#000000438|0|ng instructions integrate fluffily among the fluffily silent accounts. bli|
-5536|116|O|108196.56|1998-03-16|4-NOT SPECIFIED|Clerk#000000076|0| carefully final dolphins. ironic, ironic deposits lose. bold, |
-5537|118|O|102207.20|1996-10-03|3-MEDIUM|Clerk#000000742|0|ng to the daring, final |
-5538|139|F|90981.28|1993-12-25|1-URGENT|Clerk#000000992|0|ttainments. slyly final ideas are about the furiously silent excuses.|
-5539|119|F|39397.60|1994-07-31|5-LOW|Clerk#000000675|0|structions. slyly regular patterns solve above the carefully expres|
-5540|130|O|90707.58|1996-10-12|4-NOT SPECIFIED|Clerk#000000120|0|y ironic packages cajole blithely|
-5541|143|O|37526.68|1997-09-30|3-MEDIUM|Clerk#000000217|0|encies among the silent accounts sleep slyly quickly pending deposits|
-5542|49|O|6402.41|1996-04-20|4-NOT SPECIFIED|Clerk#000000100|0|riously among the regularly regular pac|
-5543|115|F|118201.53|1993-09-25|3-MEDIUM|Clerk#000000644|0|ckly regular epitaphs. carefully bold accounts haggle furiously|
-5568|31|O|105421.09|1995-06-07|3-MEDIUM|Clerk#000000491|0| nag. fluffily pending de|
-5569|109|F|126113.32|1993-04-30|4-NOT SPECIFIED|Clerk#000000759|0|e regular dependencies. furiously unusual ideas b|
-5570|112|O|78567.55|1996-08-12|2-HIGH|Clerk#000000795|0|eans. ironic, even requests doze |
-5571|103|F|79248.35|1992-12-19|4-NOT SPECIFIED|Clerk#000000184|0|ts cajole furiously carefully regular sheaves. un|
-5572|8|F|182966.39|1994-07-17|2-HIGH|Clerk#000000163|0|e fluffily express deposits cajole slyly across th|
-5573|37|O|158479.37|1996-08-15|3-MEDIUM|Clerk#000000055|0|lites. slyly final pinto beans about the carefully regul|
-5574|28|F|129803.03|1992-03-10|4-NOT SPECIFIED|Clerk#000000002|0|n deposits. special, regular t|
-5575|103|O|51839.94|1995-07-24|5-LOW|Clerk#000000948|0|uriously express frays breach|
-5600|95|O|53649.35|1997-02-08|4-NOT SPECIFIED|Clerk#000000019|0|lly regular deposits. car|
-5601|11|F|118570.79|1992-01-06|2-HIGH|Clerk#000000827|0|gular deposits wake platelets? blithe|
-5602|130|O|67979.49|1997-07-30|3-MEDIUM|Clerk#000000395|0|onic asymptotes haggl|
-5603|71|F|145100.47|1992-06-20|4-NOT SPECIFIED|Clerk#000000535|0| asymptotes. fluffily ironic instructions are. pending pinto bean|
-5604|46|O|98987.51|1998-04-14|4-NOT SPECIFIED|Clerk#000000123|0|ously across the blithely ironic pinto beans. sile|
-5605|35|O|172899.84|1996-08-22|2-HIGH|Clerk#000000538|0|sleep carefully final packages. dependencies wake slyly. theodol|
-5606|149|O|219959.08|1996-11-12|5-LOW|Clerk#000000688|0|uriously express pinto beans. packages sh|
-5607|92|F|24660.06|1992-01-01|4-NOT SPECIFIED|Clerk#000000137|0|c requests promise quickly fluffily ironic deposits. caref|
-5632|79|O|89503.11|1996-02-05|1-URGENT|Clerk#000000508|0|ons. blithely pending pinto beans thrash. furiously busy theodoli|
-5633|79|O|207119.83|1998-05-31|3-MEDIUM|Clerk#000000841|0|cial deposits wake final, final|
-5634|68|O|99494.67|1996-07-31|3-MEDIUM|Clerk#000000915|0|out the accounts. carefully ironic ideas are slyly. sheaves could h|
-5635|70|F|192217.86|1992-08-16|3-MEDIUM|Clerk#000000734|0|nal platelets sleep daringly. idle, final accounts about |
-5636|122|F|143350.75|1995-02-16|3-MEDIUM|Clerk#000000916|0|. boldly even Tiresias sleep. blithely ironic packages among the ca|
-5637|103|O|128776.90|1996-06-17|3-MEDIUM|Clerk#000000183|0|nic dolphins are regular packages. ironic pinto beans hagg|
-5638|109|F|79197.77|1994-01-17|1-URGENT|Clerk#000000355|0|enly bold deposits eat. special realms play against the regular, speci|
-5639|145|F|9669.46|1994-06-02|3-MEDIUM|Clerk#000000005|0|ending packages use after the blithely regular accounts. regular package|
-5664|119|O|186215.81|1998-07-23|2-HIGH|Clerk#000000789|0|the quickly ironic dolp|
-5665|100|F|129821.09|1993-06-28|4-NOT SPECIFIED|Clerk#000000513|0| carefully special instructions. ironic pinto beans nag slyly blithe|
-5666|14|F|121663.68|1994-02-02|2-HIGH|Clerk#000000396|0|mptotes. quickly final instructions are |
-5667|44|O|37301.25|1995-08-10|1-URGENT|Clerk#000000358|0|s print upon the quickly ironic packa|
-5668|109|F|13679.32|1995-03-22|4-NOT SPECIFIED|Clerk#000000047|0|p slyly slyly express accoun|
-5669|74|O|113156.30|1996-05-06|1-URGENT|Clerk#000000336|0|ng packages nag fluffily furio|
-5670|7|F|101429.61|1993-04-21|5-LOW|Clerk#000000922|0|he carefully final packages. deposits are slyly among the requests. |
-5671|43|O|176647.54|1998-02-06|2-HIGH|Clerk#000000838|0|k dependencies. slyly |
-5696|142|P|198723.30|1995-05-04|1-URGENT|Clerk#000000447|0|e quickly unusual pack|
-5697|55|F|99177.69|1992-10-05|1-URGENT|Clerk#000000112|0|pendencies impress furiously. bold, final requests solve ab|
-5698|95|F|154936.43|1994-05-21|3-MEDIUM|Clerk#000000455|0|he furiously silent accounts haggle blithely against the carefully unusual|
-5699|142|F|226314.91|1992-07-30|5-LOW|Clerk#000000311|0|o beans. ironic asymptotes boost. blithe, final courts integrate|
-5700|143|O|79901.18|1997-12-25|1-URGENT|Clerk#000000618|0|ly pending dolphins sleep carefully slyly pending i|
-5701|43|O|16689.19|1997-02-07|5-LOW|Clerk#000000798|0| blithely final pinto beans. blit|
-5702|97|F|153024.28|1993-09-07|4-NOT SPECIFIED|Clerk#000000743|0|ironic accounts. final accounts wake express deposits. final pac|
-5703|121|F|1816.28|1993-05-16|3-MEDIUM|Clerk#000000647|0|ly special instructions. slyly even reque|
-5728|80|F|85397.04|1994-12-11|4-NOT SPECIFIED|Clerk#000000426|0|furiously express pin|
-5729|44|F|88080.33|1994-10-10|2-HIGH|Clerk#000000843|0|uffily sly accounts about|
-5730|11|O|10934.84|1997-12-18|1-URGENT|Clerk#000000181|0|l platelets. ironic pinto beans wake slyly. quickly b|
-5731|8|O|57823.37|1997-05-17|5-LOW|Clerk#000000841|0| silent excuses among the express accounts wake |
-5732|37|O|28330.42|1997-08-03|1-URGENT|Clerk#000000910|0|he quickly bold asymptotes: final platelets wake quickly. blithely final pinto|
-5733|101|F|38545.97|1993-03-17|2-HIGH|Clerk#000000873|0|osits. pending accounts boost quickly. furiously permanent acco|
-5734|94|O|45860.94|1997-10-12|3-MEDIUM|Clerk#000000084|0|efully even braids detect blithely alo|
-5735|40|F|39358.51|1994-12-11|3-MEDIUM|Clerk#000000600|0| bold realms cajole slyly fu|
-5760|25|F|59404.77|1994-05-25|4-NOT SPECIFIED|Clerk#000000498|0|s among the blithely regular frays haggle ironically bold theodolites. al|
-5761|16|O|130345.90|1998-07-06|3-MEDIUM|Clerk#000000208|0|s asymptotes cajole boldly. regular, |
-5762|49|O|165019.32|1997-02-14|1-URGENT|Clerk#000000901|0|ly bold packages: slyly ironic deposits sleep quietly foxes. express a|
-5763|8|O|140838.11|1998-06-26|4-NOT SPECIFIED|Clerk#000000633|0|according to the furiously regular pinto beans. even accounts wake fu|
-5764|131|F|53212.95|1993-10-03|4-NOT SPECIFIED|Clerk#000000363|0| furiously regular deposits haggle fluffily around th|
-5765|52|F|249900.42|1994-12-15|5-LOW|Clerk#000000959|0|longside of the quickly final packages. instructions so|
-5766|49|F|47940.51|1993-09-27|5-LOW|Clerk#000000753|0|. quickly final packages print slyly. fu|
-5767|118|F|135643.87|1992-04-29|2-HIGH|Clerk#000000225|0|ts wake fluffily above the r|
-5792|26|F|158991.89|1993-04-04|2-HIGH|Clerk#000000731|0|packages. doggedly bold deposits integrate furiously across the|
-5793|37|O|119887.47|1997-07-13|2-HIGH|Clerk#000000294|0|thely. fluffily even instructi|
-5794|8|F|122823.78|1993-04-05|5-LOW|Clerk#000000855|0|t accounts kindle about the gifts. as|
-5795|37|F|35514.45|1992-05-05|2-HIGH|Clerk#000000581|0| even instructions x-ray ironic req|
-5796|149|O|23280.61|1996-01-23|3-MEDIUM|Clerk#000000326|0|eodolites. slyly ironic pinto beans at the silent, special request|
-5797|122|O|15313.61|1997-10-15|4-NOT SPECIFIED|Clerk#000000381|0|ng! packages against the blithely b|
-5798|106|O|125011.92|1998-03-30|5-LOW|Clerk#000000343|0|lent accounts affix quickly! platelets run slyly slyly final packages. f|
-5799|26|O|71381.21|1995-08-03|1-URGENT|Clerk#000000238|0| unusual deposits sleep blithely along the carefully even requests. care|
-5824|56|O|169107.85|1996-12-03|2-HIGH|Clerk#000000171|0|unusual packages. even ideas along the even requests are along th|
-5825|61|F|23020.62|1995-02-21|5-LOW|Clerk#000000494|0|regular packages use bravely.|
-5826|22|O|21119.86|1998-06-13|1-URGENT|Clerk#000000087|0|even, regular dependenc|
-5827|31|O|137297.71|1998-07-23|3-MEDIUM|Clerk#000000660|0|hely furiously blithe dolphins. slyly |
-5828|127|F|62172.34|1994-03-06|5-LOW|Clerk#000000377|0|ages boost never during the final packa|
-5829|125|O|183734.56|1997-01-11|1-URGENT|Clerk#000000196|0|gular accounts. bold accounts are blithely furiously ironic r|
-5830|85|F|28223.57|1993-03-25|3-MEDIUM|Clerk#000000233|0|lites haggle. ironic, ironic instructions maintain blit|
-5831|139|O|113505.19|1996-11-17|5-LOW|Clerk#000000585|0|s final, final pinto beans. unusual depos|
-5856|37|F|71460.49|1994-11-06|2-HIGH|Clerk#000000634|0|special excuses. slyly final theodolites cajole blithely furiou|
-5857|124|O|158345.31|1997-11-06|4-NOT SPECIFIED|Clerk#000000267|0|gage blithely. quickly special ac|
-5858|64|F|181320.50|1992-07-14|4-NOT SPECIFIED|Clerk#000000580|0|lyly pending dugouts believe through the ironic deposits. silent s|
-5859|5|O|210643.96|1997-04-23|1-URGENT|Clerk#000000993|0|requests boost. asymptotes across the deposits solve slyly furiously pendin|
-5860|13|F|9495.28|1992-02-20|4-NOT SPECIFIED|Clerk#000000079|0| beans. bold, special foxes sleep about the ir|
-5861|139|O|41450.19|1997-04-10|3-MEDIUM|Clerk#000000094|0|rthogs cajole slyly. express packages sleep blithely final |
-5862|64|O|30550.90|1997-02-20|1-URGENT|Clerk#000000039|0|leep beneath the quickly busy excuses. ironic theodolit|
-5863|65|F|67941.54|1993-11-22|3-MEDIUM|Clerk#000000774|0|ets about the slyly pending ideas sleep according to the blithely |
-5888|46|O|67167.19|1996-09-28|3-MEDIUM|Clerk#000000748|0|quickly against the furiously final requests. evenly fi|
-5889|22|O|15417.57|1995-05-23|5-LOW|Clerk#000000690|0|ites wake across the slyly ironic|
-5890|49|F|41162.24|1992-11-04|2-HIGH|Clerk#000000013|0|packages. final, final reques|
-5891|46|F|41760.00|1992-12-29|3-MEDIUM|Clerk#000000302|0|ounts haggle furiously abo|
-5892|101|P|92340.77|1995-05-09|5-LOW|Clerk#000000639|0| pending instruction|
-5893|2|F|44777.63|1992-07-08|4-NOT SPECIFIED|Clerk#000000560|0|final sentiments. instructions boost above the never speci|
-5894|71|F|70377.31|1994-08-13|2-HIGH|Clerk#000000776|0|regular deposits wake|
-5895|64|O|201419.83|1997-01-01|4-NOT SPECIFIED|Clerk#000000747|0| ironic, unusual requests cajole blithely special, special deposits. s|
-5920|119|F|142767.26|1994-11-20|2-HIGH|Clerk#000000081|0|ns: even ideas cajole slyly among the packages. never ironic patterns|
-5921|58|F|152940.00|1994-04-07|5-LOW|Clerk#000000125|0|kly special requests breach.|
-5922|143|O|142494.99|1996-11-14|5-LOW|Clerk#000000625|0| ironic instructions haggle furiously blithely regular accounts: even platele|
-5923|101|O|157968.27|1997-05-27|2-HIGH|Clerk#000000304|0|o beans haggle slyly above the regular, even dependencies|
-5924|31|O|106823.97|1995-10-10|3-MEDIUM|Clerk#000000433|0|arefully after the pains. blithely ironic pinto |
-5925|146|O|242588.87|1995-11-13|5-LOW|Clerk#000000602|0|ourts. boldly regular foxes might sleep. slyly express tithes against |
-5926|76|F|105770.53|1994-05-20|5-LOW|Clerk#000000071|0| carefully after the furiously even re|
-5927|116|O|84983.90|1997-08-28|4-NOT SPECIFIED|Clerk#000000972|0|endencies according to the slyly ironic foxes detect furiously about the furio|
-5952|148|O|128624.99|1997-04-14|3-MEDIUM|Clerk#000000950|0| regular, final pla|
-5953|7|F|95312.81|1992-03-28|1-URGENT|Clerk#000000049|0|ages are furiously. slowly bold requests|
-5954|28|F|167262.34|1992-12-03|1-URGENT|Clerk#000000968|0|requests along the blith|
-5955|94|P|67944.38|1995-03-27|5-LOW|Clerk#000000340|0|deas integrate. fluffily regular pa|
-5956|22|O|118036.54|1998-05-18|1-URGENT|Clerk#000000587|0|le even, express platelets.|
-5957|89|F|230949.45|1993-12-27|2-HIGH|Clerk#000000020|0| dependencies are slyly. bold accounts according to the carefully regular r|
-5958|115|O|145060.41|1995-09-16|3-MEDIUM|Clerk#000000787|0|e final requests detect alongside of the qu|
-5959|23|F|195515.26|1992-05-15|3-MEDIUM|Clerk#000000913|0|into beans use ironic, unusual foxes. carefully regular excuses boost caref|
-5984|70|F|83413.30|1994-06-18|5-LOW|Clerk#000000023|0|ickly final pains haggle along the furiously ironic pinto bea|
-5985|143|F|3942.73|1995-01-12|3-MEDIUM|Clerk#000000417|0|as nag fluffily slyly permanent accounts. regular depo|
-5986|115|F|92187.80|1992-04-22|2-HIGH|Clerk#000000674|0|iously unusual notornis are |
-5987|64|O|98956.82|1996-08-03|1-URGENT|Clerk#000000464|0| ideas. quietly final accounts haggle blithely pending escapade|
-5988|31|F|41655.51|1993-11-22|4-NOT SPECIFIED|Clerk#000000867|0|fully express accounts. final pi|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl
deleted file mode 100644
index f58926e..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/part.tbl
+++ /dev/null
@@ -1,200 +0,0 @@
-1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi|
-2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|1|LG CASE|902.00|lar accounts amo|
-3|spring green yellow purple cornsilk|Manufacturer#4|Brand#42|STANDARD POLISHED BRASS|21|WRAP CASE|903.00|egular deposits hag|
-4|cornflower chocolate smoke green pink|Manufacturer#3|Brand#34|SMALL PLATED BRASS|14|MED DRUM|904.00|p furiously r|
-5|forest brown coral puff cream|Manufacturer#3|Brand#32|STANDARD POLISHED TIN|15|SM PKG|905.00| wake carefully |
-6|bisque cornflower lawn forest magenta|Manufacturer#2|Brand#24|PROMO PLATED STEEL|4|MED BAG|906.00|sual a|
-7|moccasin green thistle khaki floral|Manufacturer#1|Brand#11|SMALL PLATED COPPER|45|SM BAG|907.00|lyly. ex|
-8|misty lace thistle snow royal|Manufacturer#4|Brand#44|PROMO BURNISHED TIN|41|LG DRUM|908.00|eposi|
-9|thistle dim navajo dark gainsboro|Manufacturer#4|Brand#43|SMALL BURNISHED STEEL|12|WRAP CASE|909.00|ironic foxe|
-10|linen pink saddle puff powder|Manufacturer#5|Brand#54|LARGE BURNISHED STEEL|44|LG CAN|910.01|ithely final deposit|
-11|spring maroon seashell almond orchid|Manufacturer#2|Brand#25|STANDARD BURNISHED NICKEL|43|WRAP BOX|911.01|ng gr|
-12|cornflower wheat orange maroon ghost|Manufacturer#3|Brand#33|MEDIUM ANODIZED STEEL|25|JUMBO CASE|912.01| quickly|
-13|ghost olive orange rosy thistle|Manufacturer#5|Brand#55|MEDIUM BURNISHED NICKEL|1|JUMBO PACK|913.01|osits.|
-14|khaki seashell rose cornsilk navajo|Manufacturer#1|Brand#13|SMALL POLISHED STEEL|28|JUMBO BOX|914.01|kages c|
-15|blanched honeydew sky turquoise medium|Manufacturer#1|Brand#15|LARGE ANODIZED BRASS|45|LG CASE|915.01|usual ac|
-16|deep sky turquoise drab peach|Manufacturer#3|Brand#32|PROMO PLATED TIN|2|MED PACK|916.01|unts a|
-17|indian navy coral pink deep|Manufacturer#4|Brand#43|ECONOMY BRUSHED STEEL|16|LG BOX|917.01| regular accounts|
-18|turquoise indian lemon lavender misty|Manufacturer#1|Brand#11|SMALL BURNISHED STEEL|42|JUMBO PACK|918.01|s cajole slyly a|
-19|chocolate navy tan deep brown|Manufacturer#2|Brand#23|SMALL ANODIZED NICKEL|33|WRAP BOX|919.01| pending acc|
-20|ivory navy honeydew sandy midnight|Manufacturer#1|Brand#12|LARGE POLISHED NICKEL|48|MED BAG|920.02|are across the asympt|
-21|lemon floral azure frosted lime|Manufacturer#3|Brand#33|SMALL BURNISHED TIN|31|MED BAG|921.02|ss packages. pendin|
-22|medium forest blue ghost black|Manufacturer#4|Brand#43|PROMO POLISHED BRASS|19|LG DRUM|922.02| even p|
-23|coral lavender seashell rosy burlywood|Manufacturer#3|Brand#35|MEDIUM BURNISHED TIN|42|JUMBO JAR|923.02|nic, fina|
-24|seashell coral metallic midnight floral|Manufacturer#5|Brand#52|MEDIUM PLATED STEEL|20|MED CASE|924.02| final the|
-25|Algebricksmarine steel firebrick light turquoise|Manufacturer#5|Brand#55|STANDARD BRUSHED COPPER|3|JUMBO BAG|925.02|requests wake|
-26|beige frosted moccasin chocolate snow|Manufacturer#3|Brand#32|SMALL BRUSHED STEEL|32|SM CASE|926.02| instructions i|
-27|saddle puff beige linen yellow|Manufacturer#1|Brand#14|LARGE ANODIZED TIN|20|MED PKG|927.02|s wake. ir|
-28|navajo yellow drab white misty|Manufacturer#4|Brand#44|SMALL PLATED COPPER|19|JUMBO PKG|928.02|x-ray pending, iron|
-29|lemon sky grey salmon orchid|Manufacturer#3|Brand#33|PROMO PLATED COPPER|7|LG DRUM|929.02| carefully fluffi|
-30|cream misty steel spring medium|Manufacturer#4|Brand#42|PROMO ANODIZED TIN|17|LG BOX|930.03|carefully bus|
-31|slate seashell steel medium moccasin|Manufacturer#5|Brand#53|STANDARD BRUSHED TIN|10|LG BAG|931.03|uriously s|
-32|sandy wheat coral spring burnished|Manufacturer#4|Brand#42|ECONOMY PLATED BRASS|31|LG CASE|932.03|urts. carefully fin|
-33|spring bisque salmon slate pink|Manufacturer#2|Brand#22|ECONOMY PLATED NICKEL|16|LG PKG|933.03|ly eve|
-34|khaki steel rose ghost salmon|Manufacturer#1|Brand#13|LARGE BRUSHED STEEL|8|JUMBO BOX|934.03|riously ironic|
-35|green blush tomato burlywood seashell|Manufacturer#4|Brand#43|MEDIUM ANODIZED BRASS|14|JUMBO PACK|935.03|e carefully furi|
-36|chiffon tan forest moccasin dark|Manufacturer#2|Brand#25|SMALL BURNISHED COPPER|3|JUMBO CAN|936.03|olites o|
-37|royal coral orange burnished navajo|Manufacturer#4|Brand#45|LARGE POLISHED TIN|48|JUMBO BOX|937.03|silent |
-38|seashell papaya white mint brown|Manufacturer#4|Brand#43|ECONOMY ANODIZED BRASS|11|SM JAR|938.03|structions inte|
-39|rose medium floral salmon powder|Manufacturer#5|Brand#53|SMALL POLISHED TIN|43|JUMBO JAR|939.03|se slowly above the fl|
-40|lemon midnight metallic sienna steel|Manufacturer#2|Brand#25|ECONOMY BURNISHED COPPER|27|SM CASE|940.04|! blithely specia|
-41|burlywood goldenrod pink peru sienna|Manufacturer#2|Brand#23|ECONOMY ANODIZED TIN|7|WRAP JAR|941.04|uriously. furiously cl|
-42|midnight turquoise lawn beige thistle|Manufacturer#5|Brand#52|MEDIUM BURNISHED TIN|45|LG BOX|942.04|the slow|
-43|medium lace midnight royal chartreuse|Manufacturer#4|Brand#44|PROMO POLISHED STEEL|5|WRAP CASE|943.04|e slyly along the ir|
-44|saddle cream wheat lemon burnished|Manufacturer#4|Brand#45|MEDIUM PLATED TIN|48|SM PACK|944.04|pinto beans. carefully|
-45|lawn peru ghost khaki maroon|Manufacturer#4|Brand#43|SMALL BRUSHED NICKEL|9|WRAP BAG|945.04|nts bo|
-46|honeydew turquoise Algebricksmarine spring tan|Manufacturer#1|Brand#11|STANDARD POLISHED TIN|45|WRAP CASE|946.04|the blithely unusual |
-47|honeydew red azure magenta brown|Manufacturer#4|Brand#45|LARGE BURNISHED BRASS|14|JUMBO PACK|947.04| even plate|
-48|slate thistle cornsilk pale forest|Manufacturer#5|Brand#53|STANDARD BRUSHED STEEL|27|JUMBO CASE|948.04|ng to the depo|
-49|light firebrick cyan puff blue|Manufacturer#2|Brand#24|SMALL BURNISHED TIN|31|MED DRUM|949.04|ar pack|
-50|linen blanched tomato slate medium|Manufacturer#3|Brand#33|LARGE ANODIZED TIN|25|WRAP PKG|950.05|kages m|
-51|lime frosted indian dodger linen|Manufacturer#4|Brand#45|ECONOMY BURNISHED NICKEL|34|JUMBO PACK|951.05|n foxes|
-52|lemon midnight lace sky deep|Manufacturer#3|Brand#35|STANDARD BURNISHED TIN|25|WRAP CASE|952.05| final deposits. fu|
-53|bisque rose cornsilk seashell purple|Manufacturer#2|Brand#23|ECONOMY BURNISHED NICKEL|32|MED BAG|953.05|mptot|
-54|blanched mint yellow papaya cyan|Manufacturer#2|Brand#21|LARGE BURNISHED COPPER|19|WRAP CASE|954.05|e blithely|
-55|sky cream deep tomato rosy|Manufacturer#2|Brand#23|ECONOMY BRUSHED COPPER|9|MED BAG|955.05|ly final pac|
-56|antique beige brown deep dodger|Manufacturer#1|Brand#12|MEDIUM PLATED STEEL|20|WRAP DRUM|956.05|ts. blithel|
-57|purple blue light sienna deep|Manufacturer#3|Brand#32|MEDIUM BURNISHED BRASS|49|MED PKG|957.05|lly abov|
-58|linen hot cornsilk drab bisque|Manufacturer#5|Brand#53|STANDARD POLISHED TIN|44|LG PACK|958.05| fluffily blithely reg|
-59|misty brown medium mint salmon|Manufacturer#5|Brand#53|MEDIUM POLISHED TIN|2|LG BAG|959.05|regular exc|
-60|snow spring sandy olive tomato|Manufacturer#1|Brand#11|LARGE POLISHED COPPER|27|JUMBO CASE|960.06| integ|
-61|light tan linen tomato peach|Manufacturer#5|Brand#54|SMALL BURNISHED NICKEL|18|WRAP DRUM|961.06|es. blithely en|
-62|tan cornsilk spring grey chocolate|Manufacturer#3|Brand#35|STANDARD BRUSHED BRASS|39|JUMBO BOX|962.06|ckly across the carefu|
-63|burnished puff coral light papaya|Manufacturer#3|Brand#32|STANDARD BURNISHED NICKEL|10|JUMBO CAN|963.06| quickly |
-64|Algebricksmarine coral lemon ivory gainsboro|Manufacturer#2|Brand#21|MEDIUM ANODIZED BRASS|1|JUMBO CAN|964.06|efully regular pi|
-65|slate drab medium puff gainsboro|Manufacturer#5|Brand#53|MEDIUM BRUSHED COPPER|3|MED CAN|965.06|posits after the quic|
-66|cornflower pale almond lemon linen|Manufacturer#3|Brand#35|PROMO ANODIZED NICKEL|46|SM CASE|966.06|haggle blithely iro|
-67|slate salmon rose spring seashell|Manufacturer#2|Brand#21|SMALL BRUSHED TIN|31|WRAP DRUM|967.06| regular, p|
-68|bisque ivory mint purple almond|Manufacturer#1|Brand#11|PROMO ANODIZED STEEL|10|WRAP BOX|968.06|eposits shall h|
-69|lace burnished rosy antique metallic|Manufacturer#5|Brand#52|MEDIUM POLISHED BRASS|2|SM BOX|969.06|ely final depo|
-70|violet seashell firebrick dark navajo|Manufacturer#1|Brand#11|STANDARD BRUSHED STEEL|42|LG PACK|970.07|inal gifts. sl|
-71|violet firebrick cream peru white|Manufacturer#3|Brand#33|STANDARD PLATED BRASS|26|WRAP DRUM|971.07| packages alongside|
-72|hot spring yellow azure dodger|Manufacturer#2|Brand#23|STANDARD ANODIZED TIN|25|JUMBO PACK|972.07|efully final the|
-73|cream moccasin royal dim chiffon|Manufacturer#2|Brand#21|SMALL BRUSHED COPPER|35|WRAP DRUM|973.07|ts haggl|
-74|frosted grey Algebricksmarine thistle papaya|Manufacturer#5|Brand#55|ECONOMY ANODIZED BRASS|25|JUMBO CASE|974.07|ent foxes|
-75|Algebricksmarine maroon wheat salmon metallic|Manufacturer#3|Brand#35|SMALL BURNISHED NICKEL|39|SM JAR|975.07|s sleep furiou|
-76|rosy light lime puff sandy|Manufacturer#3|Brand#34|MEDIUM BRUSHED COPPER|9|SM PKG|976.07|n accounts sleep qu|
-77|mint bisque chiffon snow firebrick|Manufacturer#5|Brand#52|STANDARD BRUSHED COPPER|13|MED PKG|977.07|uests.|
-78|blush forest slate seashell puff|Manufacturer#1|Brand#14|ECONOMY POLISHED STEEL|24|LG JAR|978.07|icing deposits wake|
-79|gainsboro pink grey tan almond|Manufacturer#4|Brand#45|PROMO ANODIZED BRASS|22|JUMBO BAG|979.07| foxes are slyly regu|
-80|tomato chartreuse coral turquoise linen|Manufacturer#4|Brand#44|PROMO PLATED BRASS|28|MED CAN|980.08|unusual dependencies i|
-81|misty sandy cornsilk dodger blush|Manufacturer#5|Brand#53|ECONOMY BRUSHED TIN|21|MED BAG|981.08|ove the furiou|
-82|khaki tomato purple almond tan|Manufacturer#1|Brand#15|ECONOMY POLISHED TIN|12|WRAP BOX|982.08|ial requests haggle |
-83|blush green dim lawn peru|Manufacturer#1|Brand#12|PROMO BURNISHED NICKEL|47|SM CAN|983.08|ly regul|
-84|salmon floral cream rose dark|Manufacturer#4|Brand#45|SMALL ANODIZED NICKEL|26|JUMBO PACK|984.08|ideas nag|
-85|dim deep Algebricksmarine smoke pale|Manufacturer#5|Brand#55|PROMO ANODIZED NICKEL|16|LG BAG|985.08| silent|
-86|green blanched firebrick dim cream|Manufacturer#4|Brand#44|STANDARD PLATED TIN|37|LG CASE|986.08| daring sheaves |
-87|purple lace seashell antique orange|Manufacturer#4|Brand#41|LARGE PLATED STEEL|41|WRAP PACK|987.08|yly final|
-88|lime orange bisque chartreuse lemon|Manufacturer#4|Brand#44|PROMO PLATED COPPER|16|SM CASE|988.08|e regular packages. |
-89|ghost lace lemon sienna saddle|Manufacturer#5|Brand#53|STANDARD BURNISHED STEEL|7|MED JAR|989.08|y final pinto |
-90|hot rosy violet plum pale|Manufacturer#5|Brand#51|ECONOMY POLISHED STEEL|49|JUMBO CAN|990.09|caref|
-91|misty bisque lavender spring turquoise|Manufacturer#2|Brand#21|STANDARD BRUSHED TIN|32|JUMBO PKG|991.09|counts dete|
-92|blush magenta ghost tomato rose|Manufacturer#2|Brand#22|STANDARD ANODIZED TIN|35|JUMBO PKG|992.09|he ironic accounts. sp|
-93|pale yellow cornsilk dodger moccasin|Manufacturer#2|Brand#24|LARGE ANODIZED TIN|2|WRAP DRUM|993.09| platel|
-94|blanched pink frosted mint snow|Manufacturer#3|Brand#35|STANDARD POLISHED BRASS|32|SM BOX|994.09|s accounts cajo|
-95|dodger beige wheat orchid navy|Manufacturer#3|Brand#33|LARGE BRUSHED TIN|36|WRAP DRUM|995.09| final pinto beans |
-96|chocolate light firebrick rose indian|Manufacturer#5|Brand#53|STANDARD BRUSHED STEEL|32|SM CASE|996.09|ng to the bli|
-97|coral dodger beige black chartreuse|Manufacturer#3|Brand#33|MEDIUM POLISHED BRASS|49|WRAP CAN|997.09|ss excuses sleep am|
-98|frosted peru chiffon yellow Algebricksmarine|Manufacturer#5|Brand#54|STANDARD ANODIZED BRASS|22|MED JAR|998.09|e the q|
-99|mint grey purple sienna metallic|Manufacturer#2|Brand#21|SMALL BURNISHED STEEL|11|JUMBO PKG|999.09|press|
-100|cyan orchid indian cornflower saddle|Manufacturer#3|Brand#33|ECONOMY ANODIZED TIN|4|LG BAG|1000.10|of the steal|
-101|powder deep lavender violet gainsboro|Manufacturer#3|Brand#32|LARGE ANODIZED STEEL|26|JUMBO JAR|1001.10|ly even,|
-102|papaya maroon blush powder sky|Manufacturer#3|Brand#31|MEDIUM BURNISHED BRASS|17|SM DRUM|1002.10|ular packa|
-103|navy sky spring orchid forest|Manufacturer#2|Brand#25|MEDIUM PLATED BRASS|45|WRAP DRUM|1003.10|e blithely blith|
-104|plum cyan cornflower midnight royal|Manufacturer#1|Brand#13|MEDIUM ANODIZED STEEL|36|JUMBO BAG|1004.10|ites sleep quickly|
-105|dodger slate pale mint navajo|Manufacturer#1|Brand#15|SMALL POLISHED COPPER|27|LG DRUM|1005.10|odolites was |
-106|cornsilk bisque seashell lemon frosted|Manufacturer#3|Brand#31|MEDIUM PLATED BRASS|28|WRAP DRUM|1006.10|unts maintain |
-107|violet honeydew bisque sienna orchid|Manufacturer#5|Brand#53|SMALL BURNISHED TIN|12|MED BOX|1007.10|slyly special depos|
-108|bisque peach magenta tomato yellow|Manufacturer#1|Brand#12|PROMO PLATED NICKEL|41|MED PKG|1008.10|after the carefully |
-109|lemon black indian cornflower pale|Manufacturer#3|Brand#33|ECONOMY POLISHED TIN|11|LG PACK|1009.10|instruction|
-110|firebrick navy rose beige black|Manufacturer#3|Brand#33|STANDARD BURNISHED COPPER|46|LG DRUM|1010.11|t quickly a|
-111|orange cornflower mint snow peach|Manufacturer#5|Brand#54|LARGE BRUSHED COPPER|28|JUMBO JAR|1011.11|kly bold epitaphs |
-112|hot Algebricksmarine tomato lace indian|Manufacturer#4|Brand#43|PROMO BRUSHED STEEL|42|JUMBO CAN|1012.11|the express, |
-113|almond seashell azure blanched light|Manufacturer#3|Brand#31|PROMO POLISHED TIN|23|LG CAN|1013.11|finally even |
-114|pink black blanched lace chartreuse|Manufacturer#5|Brand#51|MEDIUM POLISHED NICKEL|41|MED PACK|1014.11|ully final foxes. pint|
-115|spring chiffon cream orchid dodger|Manufacturer#4|Brand#45|STANDARD POLISHED STEEL|24|MED CAN|1015.11|counts nag! caref|
-116|goldenrod black slate forest red|Manufacturer#5|Brand#53|PROMO POLISHED NICKEL|33|SM PACK|1016.11|usly final courts |
-117|tomato honeydew pale red yellow|Manufacturer#1|Brand#14|SMALL BRUSHED TIN|25|LG BAG|1017.11|ages acc|
-118|ghost plum brown coral cornsilk|Manufacturer#2|Brand#25|PROMO ANODIZED TIN|31|MED PACK|1018.11|ly ironic pinto|
-119|olive metallic slate peach green|Manufacturer#4|Brand#43|LARGE POLISHED STEEL|30|WRAP CASE|1019.11|out the quickly r|
-120|pink powder mint moccasin navajo|Manufacturer#1|Brand#14|SMALL ANODIZED NICKEL|45|WRAP JAR|1020.12|lly a|
-121|bisque royal goldenrod medium thistle|Manufacturer#1|Brand#14|ECONOMY BRUSHED COPPER|13|SM PKG|1021.12|deposi|
-122|gainsboro royal forest dark lace|Manufacturer#2|Brand#21|MEDIUM ANODIZED TIN|8|LG DRUM|1022.12|sts c|
-123|deep dim peach light beige|Manufacturer#1|Brand#12|SMALL BURNISHED TIN|31|JUMBO PKG|1023.12|ray regula|
-124|wheat blush forest metallic navajo|Manufacturer#3|Brand#32|PROMO ANODIZED STEEL|1|LG BOX|1024.12|g the expr|
-125|mint ivory saddle peach midnight|Manufacturer#1|Brand#12|STANDARD BRUSHED BRASS|17|WRAP BAG|1025.12|kages against|
-126|burnished black blue metallic orchid|Manufacturer#4|Brand#45|MEDIUM BRUSHED NICKEL|4|LG BAG|1026.12|es sleep al|
-127|royal coral orchid spring sky|Manufacturer#5|Brand#52|SMALL BURNISHED NICKEL|14|LG JAR|1027.12|lithely expr|
-128|dark burlywood burnished snow sky|Manufacturer#2|Brand#22|PROMO PLATED TIN|5|SM BAG|1028.12|e of the furiously ex|
-129|grey spring chiffon thistle lime|Manufacturer#1|Brand#15|LARGE POLISHED TIN|20|SM JAR|1029.12| careful|
-130|gainsboro powder cyan pale rosy|Manufacturer#2|Brand#23|SMALL PLATED NICKEL|26|LG BOX|1030.13|ake slyly|
-131|tomato moccasin cyan brown goldenrod|Manufacturer#5|Brand#52|STANDARD ANODIZED BRASS|43|MED DRUM|1031.13|nts wake dar|
-132|seashell papaya tomato lime hot|Manufacturer#4|Brand#45|STANDARD BURNISHED BRASS|2|WRAP DRUM|1032.13|ckly expre|
-133|firebrick black dodger pink salmon|Manufacturer#1|Brand#13|SMALL BRUSHED NICKEL|19|LG PKG|1033.13| final pinto beans|
-134|steel beige mint maroon indian|Manufacturer#4|Brand#42|SMALL POLISHED STEEL|35|SM PKG|1034.13|es. bold pa|
-135|thistle chocolate ghost gainsboro peru|Manufacturer#2|Brand#21|MEDIUM BURNISHED STEEL|24|JUMBO CASE|1035.13|l frets |
-136|cornsilk maroon blanched thistle rosy|Manufacturer#2|Brand#22|SMALL PLATED STEEL|2|WRAP BAG|1036.13|kages print carefully|
-137|cornsilk drab ghost sandy royal|Manufacturer#3|Brand#31|ECONOMY PLATED STEEL|25|MED PACK|1037.13|the t|
-138|dark Algebricksmarine tomato medium puff|Manufacturer#1|Brand#13|ECONOMY BURNISHED COPPER|42|JUMBO DRUM|1038.13|ts solve acro|
-139|floral steel burlywood navy cream|Manufacturer#3|Brand#32|MEDIUM BRUSHED STEEL|7|SM BOX|1039.13|ter t|
-140|Algebricksmarine lavender maroon slate hot|Manufacturer#5|Brand#53|STANDARD PLATED STEEL|45|SM BOX|1040.14|oss the carefu|
-141|honeydew magenta tomato spring medium|Manufacturer#3|Brand#35|STANDARD ANODIZED STEEL|23|SM PKG|1041.14|ans nag furiously pen|
-142|chartreuse linen grey slate saddle|Manufacturer#5|Brand#55|STANDARD ANODIZED BRASS|36|MED JAR|1042.14|he accounts. pac|
-143|bisque dodger blanched steel maroon|Manufacturer#3|Brand#34|ECONOMY PLATED TIN|44|MED BAG|1043.14|nts across the|
-144|hot midnight orchid dim steel|Manufacturer#1|Brand#14|SMALL ANODIZED TIN|26|SM BOX|1044.14|owly |
-145|navajo lavender chocolate deep hot|Manufacturer#5|Brand#53|PROMO BRUSHED COPPER|24|SM BAG|1045.14|es wake furiously blit|
-146|azure smoke mint cream burlywood|Manufacturer#3|Brand#34|STANDARD BRUSHED COPPER|11|WRAP PACK|1046.14|unts cajole|
-147|honeydew orange dodger linen lace|Manufacturer#1|Brand#11|MEDIUM PLATED COPPER|29|JUMBO PKG|1047.14|wake never bold |
-148|yellow white ghost lavender salmon|Manufacturer#3|Brand#31|STANDARD PLATED STEEL|20|SM BOX|1048.14|platelets wake fu|
-149|tan thistle frosted indian lawn|Manufacturer#2|Brand#24|MEDIUM BURNISHED NICKEL|6|MED PKG|1049.14|leep requests. dog|
-150|pale rose navajo firebrick Algebricksmarine|Manufacturer#3|Brand#35|LARGE BRUSHED TIN|21|SM BAG|1050.15|ironic foxes|
-151|chartreuse linen violet ghost thistle|Manufacturer#3|Brand#34|LARGE PLATED BRASS|45|MED CAN|1051.15|ccounts nag i|
-152|white sky antique tomato chartreuse|Manufacturer#5|Brand#53|MEDIUM POLISHED STEEL|48|MED CASE|1052.15|thely regular t|
-153|linen frosted slate coral peru|Manufacturer#1|Brand#11|STANDARD PLATED TIN|20|MED BAG|1053.15|thlessly. silen|
-154|peru moccasin peach pale spring|Manufacturer#1|Brand#11|ECONOMY ANODIZED TIN|1|JUMBO BAG|1054.15|posits |
-155|puff yellow cyan tomato purple|Manufacturer#2|Brand#21|SMALL BRUSHED NICKEL|28|WRAP CASE|1055.15|lly ironic, r|
-156|almond ghost powder blush forest|Manufacturer#4|Brand#43|SMALL POLISHED NICKEL|2|LG PKG|1056.15| pinto beans. eve|
-157|navajo linen coral brown forest|Manufacturer#1|Brand#11|ECONOMY ANODIZED STEEL|26|JUMBO PACK|1057.15|ial courts. ru|
-158|magenta light misty navy honeydew|Manufacturer#4|Brand#45|MEDIUM BURNISHED COPPER|47|LG JAR|1058.15| ideas detect slyl|
-159|white orange antique beige Algebricksmarine|Manufacturer#4|Brand#43|SMALL ANODIZED BRASS|46|SM BAG|1059.15| ironic requests-- pe|
-160|frosted cornflower khaki salmon metallic|Manufacturer#5|Brand#55|STANDARD POLISHED COPPER|47|JUMBO CAN|1060.16|nts are carefully|
-161|metallic khaki navy forest cyan|Manufacturer#2|Brand#22|STANDARD PLATED TIN|17|SM PACK|1061.16|r the bl|
-162|burlywood cornflower Algebricksmarine misty snow|Manufacturer#3|Brand#33|MEDIUM ANODIZED COPPER|35|JUMBO PACK|1062.16|e slyly around th|
-163|blush metallic maroon lawn forest|Manufacturer#2|Brand#21|ECONOMY PLATED TIN|34|WRAP DRUM|1063.16|nly s|
-164|orange cyan magenta navajo indian|Manufacturer#2|Brand#23|LARGE PLATED BRASS|35|JUMBO BAG|1064.16|mong th|
-165|white dim cornflower sky seashell|Manufacturer#1|Brand#15|STANDARD PLATED STEEL|24|SM CAN|1065.16| carefully fin|
-166|linen bisque tomato gainsboro goldenrod|Manufacturer#5|Brand#52|LARGE POLISHED COPPER|4|MED BAG|1066.16|ss the|
-167|almond floral grey dim sky|Manufacturer#3|Brand#32|LARGE ANODIZED STEEL|46|WRAP BOX|1067.16|ic ac|
-168|lace gainsboro burlywood smoke tomato|Manufacturer#1|Brand#13|SMALL BRUSHED COPPER|20|JUMBO DRUM|1068.16|ss package|
-169|bisque misty sky cornflower peach|Manufacturer#5|Brand#55|STANDARD POLISHED BRASS|10|JUMBO CASE|1069.16|lets alongside of|
-170|peru grey blanched goldenrod yellow|Manufacturer#3|Brand#33|LARGE POLISHED COPPER|28|LG DRUM|1070.17|yly s|
-171|beige violet black magenta chartreuse|Manufacturer#1|Brand#11|STANDARD BURNISHED COPPER|40|LG JAR|1071.17| the r|
-172|medium goldenrod linen sky coral|Manufacturer#5|Brand#53|PROMO PLATED NICKEL|28|MED CASE|1072.17|quick as|
-173|chartreuse seashell powder navy grey|Manufacturer#1|Brand#12|ECONOMY BURNISHED TIN|17|LG CASE|1073.17|sly bold excuses haggl|
-174|hot cornflower slate saddle pale|Manufacturer#1|Brand#15|ECONOMY BRUSHED COPPER|25|LG CASE|1074.17| accounts nag ab|
-175|magenta blue chartreuse tan green|Manufacturer#1|Brand#11|PROMO ANODIZED TIN|45|JUMBO JAR|1075.17|ole against the|
-176|pink drab ivory papaya grey|Manufacturer#2|Brand#24|SMALL ANODIZED STEEL|40|MED CAN|1076.17|blithely. ironic|
-177|indian turquoise purple green spring|Manufacturer#2|Brand#21|MEDIUM BRUSHED STEEL|42|LG BAG|1077.17|ermanently eve|
-178|lace blanched magenta yellow almond|Manufacturer#1|Brand#13|STANDARD POLISHED TIN|10|LG JAR|1078.17|regular instructions.|
-179|deep puff brown blue burlywood|Manufacturer#4|Brand#43|ECONOMY BRUSHED STEEL|20|LG JAR|1079.17|ely regul|
-180|seashell maroon lace burnished lavender|Manufacturer#3|Brand#33|STANDARD BURNISHED NICKEL|7|WRAP BAG|1080.18|oss the |
-181|antique plum smoke pink dodger|Manufacturer#2|Brand#24|MEDIUM PLATED STEEL|19|WRAP CAN|1081.18|al deposits |
-182|beige cyan burlywood chiffon light|Manufacturer#3|Brand#31|MEDIUM ANODIZED COPPER|11|JUMBO CAN|1082.18|bits are |
-183|ivory white burnished papaya cornflower|Manufacturer#5|Brand#52|PROMO POLISHED STEEL|35|LG PKG|1083.18|ly regular excus|
-184|ghost honeydew cyan lawn powder|Manufacturer#5|Brand#53|SMALL POLISHED TIN|42|LG BOX|1084.18|ding courts. idly iro|
-185|firebrick black ivory spring medium|Manufacturer#4|Brand#44|ECONOMY POLISHED TIN|4|WRAP BAG|1085.18|even foxe|
-186|grey purple chocolate turquoise plum|Manufacturer#2|Brand#23|ECONOMY BRUSHED TIN|15|JUMBO PKG|1086.18|ly reg|
-187|white red lace deep pale|Manufacturer#4|Brand#45|PROMO ANODIZED BRASS|45|MED CAN|1087.18|leep slyly s|
-188|moccasin steel rosy drab white|Manufacturer#5|Brand#54|ECONOMY ANODIZED BRASS|9|MED CAN|1088.18| above the silent p|
-189|dodger moccasin lemon purple thistle|Manufacturer#2|Brand#22|MEDIUM BRUSHED BRASS|13|WRAP DRUM|1089.18|en requests. sauternes|
-190|chartreuse goldenrod midnight cornflower blush|Manufacturer#5|Brand#53|LARGE BURNISHED NICKEL|23|WRAP BAG|1090.19| furiously even d|
-191|mint midnight puff forest peach|Manufacturer#3|Brand#31|MEDIUM POLISHED BRASS|36|WRAP BOX|1091.19| asymptote|
-192|thistle puff pink cream orange|Manufacturer#3|Brand#34|STANDARD BRUSHED COPPER|17|MED BAG|1092.19|uickly regular, expr|
-193|turquoise lime royal metallic azure|Manufacturer#4|Brand#45|ECONOMY BURNISHED BRASS|31|SM PKG|1093.19|final ideas wake furi|
-194|brown black cream navy plum|Manufacturer#5|Brand#51|ECONOMY POLISHED STEEL|7|SM CAN|1094.19|y special accoun|
-195|bisque sienna hot goldenrod khaki|Manufacturer#4|Brand#41|STANDARD BRUSHED NICKEL|40|MED CASE|1095.19|oxes sleep care|
-196|pale peru linen hot maroon|Manufacturer#3|Brand#33|SMALL BURNISHED NICKEL|3|JUMBO JAR|1096.19|uickly special |
-197|lawn lemon khaki rosy blue|Manufacturer#5|Brand#52|SMALL ANODIZED COPPER|18|SM JAR|1097.19|lithely after the eve|
-198|orange cornflower indian Algebricksmarine white|Manufacturer#4|Brand#41|PROMO BRUSHED NICKEL|43|SM PACK|1098.19|ackages? carefully re|
-199|ivory slate lavender tan royal|Manufacturer#3|Brand#31|ECONOMY PLATED STEEL|23|JUMBO DRUM|1099.19|ickly regul|
-200|peach cornsilk navy rosy red|Manufacturer#5|Brand#54|MEDIUM POLISHED BRASS|22|LG PKG|1100.20|furiously even depo|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl
deleted file mode 100644
index d8e5856..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/partsupp.tbl
+++ /dev/null
@@ -1,800 +0,0 @@
-1|2|3325|771.64|, even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful|
-1|4|8076|993.49|ven ideas. quickly even packages print. pending multipliers must have to are fluff|
-1|6|3956|337.09|after the fluffily ironic deposits? blithely special dependencies integrate furiously even excuses. blithely silent theodolites could have to haggle pending, express requests; fu|
-1|8|4069|357.84|al, regular dependencies serve carefully after the quickly final pinto beans. furiously even deposits sleep quickly final, silent pinto beans. fluffily reg|
-2|3|8895|378.49|nic accounts. final accounts sleep furiously about the ironic, bold packages. regular, regular accounts|
-2|5|4969|915.27|ptotes. quickly pending dependencies integrate furiously. fluffily ironic ideas impress blithely above the express accounts. furiously even epitaphs need to wak|
-2|7|8539|438.37|blithely bold ideas. furiously stealthy packages sleep fluffily. slyly special deposits snooze furiously carefully regular accounts. regular deposits according to the accounts nag carefully slyl|
-2|9|3025|306.39|olites. deposits wake carefully. even, express requests cajole. carefully regular ex|
-3|4|4651|920.92|ilent foxes affix furiously quickly unusual requests. even packages across the carefully even theodolites nag above the sp|
-3|6|4093|498.13|ending dependencies haggle fluffily. regular deposits boost quickly carefully regular requests. deposits affix furiously around the pinto beans. ironic, unusual platelets across the p|
-3|8|3917|645.40|of the blithely regular theodolites. final theodolites haggle blithely carefully unusual ideas. blithely even f|
-3|10|9942|191.92| unusual, ironic foxes according to the ideas detect furiously alongside of the even, express requests. blithely regular the|
-4|5|1339|113.97| carefully unusual ideas. packages use slyly. blithely final pinto beans cajole along the furiously express requests. regular orbits haggle carefully. care|
-4|7|6377|591.18|ly final courts haggle carefully regular accounts. carefully regular accounts could integrate slyly. slyly express packages about the accounts wake slyly|
-4|9|2694|51.37|g, regular deposits: quick instructions run across the carefully ironic theodolites-- final dependencies haggle into the dependencies. f|
-4|1|2480|444.37|requests sleep quickly regular accounts. theodolites detect. carefully final depths w|
-5|6|3735|255.88|arefully even requests. ironic requests cajole carefully even dolphin|
-5|8|9653|50.52|y stealthy deposits. furiously final pinto beans wake furiou|
-5|10|1329|219.83|iously regular deposits wake deposits. pending pinto beans promise ironic dependencies. even, regular pinto beans integrate|
-5|2|6925|537.98|sits. quickly fluffy packages wake quickly beyond the blithely regular requests. pending requests cajole among the final pinto beans. carefully busy theodolites affix quickly stealthily |
-6|7|8851|130.72|usly final packages. slyly ironic accounts poach across the even, sly requests. carefully pending request|
-6|9|1627|424.25| quick packages. ironic deposits print. furiously silent platelets across the carefully final requests are slyly along the furiously even instructi|
-6|1|3336|642.13|final instructions. courts wake packages. blithely unusual realms along the multipliers nag |
-6|3|6451|175.32| accounts alongside of the slyly even accounts wake carefully final instructions-- ruthless platelets wake carefully ideas. even deposits are quickly final,|
-7|8|7454|763.98|y express tithes haggle furiously even foxes. furiously ironic deposits sleep toward the furiously unusual|
-7|10|2770|149.66|hould have to nag after the blithely final asymptotes. fluffily spe|
-7|2|3377|68.77|usly against the daring asymptotes. slyly regular platelets sleep quickly blithely regular deposits. boldly regular deposits wake blithely ironic accounts|
-7|4|9460|299.58|. furiously final ideas hinder slyly among the ironic, final packages. blithely ironic dependencies cajole pending requests: blithely even packa|
-8|9|6834|249.63|lly ironic accounts solve express, unusual theodolites. special packages use quickly. quickly fin|
-8|1|396|957.34|r accounts. furiously pending dolphins use even, regular platelets. final|
-8|3|9845|220.62|s against the fluffily special packages snooze slyly slyly regular p|
-8|5|8126|916.91|final accounts around the blithely special asymptotes wake carefully beyond the bold dugouts. regular ideas haggle furiously after|
-9|10|7054|84.20|ts boost. evenly regular packages haggle after the quickly careful accounts. |
-9|2|7542|811.84|ate after the final pinto beans. express requests cajole express packages. carefully bold ideas haggle furiously. blithely express accounts eat carefully among the evenly busy accounts. carefully un|
-9|4|9583|381.31|d foxes. final, even braids sleep slyly slyly regular ideas. unusual ideas above|
-9|6|3063|291.84| the blithely ironic instructions. blithely express theodolites nag furiously. carefully bold requests shall have to use slyly pending requests. carefully regular instr|
-10|1|2952|996.12| bold foxes wake quickly even, final asymptotes. blithely even depe|
-10|3|3335|673.27|s theodolites haggle according to the fluffily unusual instructions. silent realms nag carefully ironic theodolites. furiously unusual instructions would detect fu|
-10|5|5691|164.00|r, silent instructions sleep slyly regular pinto beans. furiously unusual gifts use. silently ironic theodolites cajole final deposits! express dugouts are furiously. packages sleep |
-10|7|841|374.02|refully above the ironic packages. quickly regular packages haggle foxes. blithely ironic deposits a|
-11|2|4540|709.87|thely across the blithely unusual requests. slyly regular instructions wake slyly ironic theodolites. requests haggle blithely above the blithely brave p|
-11|5|4729|894.90|ters wake. sometimes bold packages cajole sometimes blithely final instructions. carefully ironic foxes after the furiously unusual foxes cajole carefully acr|
-11|8|3708|818.74|inal accounts nag quickly slyly special frays; bold, final theodolites play slyly after the furiously pending packages. f|
-11|1|3213|471.98|nusual, regular requests use carefully. slyly final packages haggle quickly. slyly express packages impress blithely across the blithely regular ideas. regular depe|
-12|3|3610|659.73|jole bold theodolites. final packages haggle! carefully regular deposits play furiously among the special ideas. quickly ironic packages detect quickly carefully final|
-12|6|7606|332.81|luffily regular courts engage carefully special realms. regular accounts across the blithely special pinto beans use carefully at the silent request|
-12|9|824|337.06|es are unusual deposits. fluffily even deposits across the blithely final theodolites doubt across the unusual accounts. regular, |
-12|2|5454|901.70|s across the carefully regular courts haggle fluffily among the even theodolites. blithely final platelets x-ray even ideas. fluffily express pinto beans sleep slyly. carefully even a|
-13|4|612|169.44|s. furiously even asymptotes use slyly blithely express foxes. pending courts integrate blithely among the ironic requests! blithely pending deposits integrate slyly furiously final packa|
-13|7|7268|862.70|s sleep slyly packages. final theodolites to the express packages haggle quic|
-13|10|864|38.64|s after the slyly pending instructions haggle even, express requests. permanently regular pinto beans are. slyly pending req|
-13|3|9736|327.18|tect after the express instructions. furiously silent ideas sleep blithely special ideas. attainments sleep furiously. carefully bold requests ab|
-14|5|5278|650.07|e quickly among the furiously ironic accounts. special, final sheaves against the|
-14|8|5334|889.50|ss dependencies are furiously silent excuses. blithely ironic pinto beans affix quickly according to the slyly ironic asymptotes. final packag|
-14|1|3676|893.39|sits are according to the fluffily silent asymptotes. final ideas are slyly above the regular instructions. furiousl|
-14|4|4947|310.13| final deposits boost slyly regular packages; carefully pending theodolites |
-15|6|7047|835.70|blithely quick requests sleep carefully fluffily regular pinto beans. ironic pinto beans around the slyly regular foxe|
-15|9|3336|784.55|slyly. fluffily bold accounts cajole furiously. furiously regular dependencies wak|
-15|2|3316|265.89|e express instructions. ironic requests haggle fluffily along the carefully even packages. furiously final acco|
-15|5|5255|458.67|refully bold instructions among the silent grouches must boost against the express deposits:|
-16|7|5282|709.16|lithely ironic theodolites should have to are furiously-- |
-16|10|9412|887.53|ly special accounts wake. fluffily bold ideas believe blith|
-16|3|854|781.91| unusual excuses. requests after the carefully regular pinto |
-16|6|1491|918.51|unts cajole furiously across the fluffily pending instructions. slyly special accounts could have to boost b|
-17|8|8555|995.35|are furiously final accounts. carefully unusual accounts snooze across the requests. carefully special dolphins|
-17|1|7737|648.75|e blithely express accounts. foxes kindle slyly unusual dinos. quickly special f|
-17|4|3123|555.04|ly bold accounts. regular packages use silently. quickly unusual sentiments around the quickly ironic theodolites haggle furiously pending requests. care|
-17|7|3203|64.40|bold packages nag fluffily after the regular accounts. furiously ironic asymptotes sleep quickly enticing pinto beans. carefully pending accounts use about the |
-18|9|1125|664.17|. ironic, regular accounts across the furiously express |
-18|2|8132|52.44| final packages wake quickly across the blithely ironic instructions. regular pains integrate slyly across the deposits. carefully regular pinto beans among the close|
-18|5|3133|568.61|riously bold accounts. packages boost daringly. blithely regular requests cajole. regular foxes wake carefully final accounts. blithely unusual excuses det|
-18|8|6475|386.29|. furiously regular accounts cajole slyly across the pending|
-19|10|1416|144.80|o beans. even packages nag boldly according to the bold, special deposits. ironic packages after the pinto beans nag above the quickly ironic requests. bl|
-19|3|5467|405.70|nstructions use furiously. fluffily regular excuses wake. slyly special grouches are carefully regular Tiresias. regular requests use about the quickly furio|
-19|6|8800|635.66|sual requests sleep carefully. deposits cajole carefully over the regular, regular requests. quickly unusual asymptotes use some|
-19|9|1340|346.92| requests. final, pending realms use carefully; slyly dogged foxes impress fluffily above the blithely regular deposits. ironic, regular courts wake carefully. bold requests impress|
-20|1|2927|675.54|s, ironic deposits haggle across the quickly bold asymptotes. express, ironic pinto beans wake carefully enticingly special foxes. requests are at the c|
-20|4|2723|305.84|nal, bold frets cajole slyly regular, unusual platelets. slyly permanent deposits wake carefully carefully silent accounts. even, even requests wake quickly. furiously pending packages are|
-20|7|5905|546.66|ing deposits use furiously. ironically final pinto bea|
-20|10|4271|115.89|xcuses wake at the deposits. regular pinto beans nag slyly fluffi|
-21|2|6571|944.44|ing instructions impress bold foxes. ironic pinto beans use. thinly even asymptotes cajole ironic packages. quickly ironic pinto beans detect slyly regular deposits. ruthlessly even deposits are. sl|
-21|6|1704|139.05|posits cajole; quickly even requests sleep furiously. ironic theodolites sleep pending, express instructions. stealthily even platelets cajole carefully after the final, ironic p|
-21|10|7153|664.50|blithely enticing instructions use alongside of the carefully thin deposits. blithely bold requests are fluffily|
-21|4|367|584.86|ong the even theodolites. pending, pending accounts sleep-- courts boost quickly at the accounts. quickly fin|
-22|3|4410|786.18|even accounts. final excuses try to sleep regular, even packages. carefully express dolphins cajole; furiously special pinto bea|
-22|7|9779|635.84|l instructions cajole across the blithely special deposits. blithely pending accounts use thinly slyly final requests. instructions haggle. pinto beans sleep along the slyly pen|
-22|1|7834|359.16|sits wake fluffily carefully stealthy accounts. furiously ironic requests x-ray fluffily alongside of the pending asymptotes. slyly silent packages use along the instructions. fu|
-22|5|1434|597.21|ix across the blithely express packages. carefully regular pinto beans boost across the special, pending d|
-23|4|2739|460.12|platelets against the furiously bold Tiresias dazzle quickly into the special, bold courts. silent, regular instructions wake blithely ironic multipliers. ideas|
-23|8|5739|103.13| theodolites need to nag blithely final notornis. slyly idle packages cajole after the furiously stealthy packages. slyly regular accounts use furiously. carefully final accounts affix |
-23|2|9898|233.94|l, express packages wake permanently. quickly even deposits sleep quickly slyly silent id|
-23|6|7035|51.75|xcuses; decoys wake after the pending packages. final instructions are furi|
-24|5|5180|905.41|heodolites above the ironic requests poach fluffily carefully unusual pinto beans. even packages acc|
-24|9|2227|511.20|, silent packages boost around the instructions. special requests sleep slyly against the slyly regular deposits. final, final accounts haggle fluffily among the final requests. regular |
-24|3|7182|582.03| the final, ironic asymptotes. regular requests nag instead of the carefully unusual asymptotes. furiously pending attainments among the slyly final packages boost after th|
-24|7|5318|62.15| careful requests cajole blithely realms. special asymptotes sleep. pinto beans sleep carefully furiously ironic packages. furiously |
-25|6|9029|832.74|fully fluffily regular frets. sometimes even requests after the requests wake slyly at the quickly ruthless requests. a|
-25|10|9062|928.96|he foxes. final, final accounts sleep. boldly ironic excuses thrash quick|
-25|4|9946|694.35|ld, ironic requests. furiously special packages cajole furiously enticing instructions.|
-25|8|7340|746.59|dly final packages haggle blithely according to the pending packages. slyly regula|
-26|7|5020|683.96|es. fluffily express deposits kindle slyly accounts. slyly ironic requests wake blithely bold ideas|
-26|1|6577|892.20|riously pending pinto beans. furiously express instructions detect slyly according to the b|
-26|5|3499|382.11|imes even pinto beans among the busily ironic accounts doubt blithely quickly final courts. furiously fluffy packages despite the carefully even plate|
-26|9|9702|821.89| behind the blithely regular courts impress after the silent sheaves. bravely final ideas haggle |
-27|8|2111|444.01|the even, ironic deposits. theodolites along the ironic, final dolphins cajole slyly quickly bold asymptotes. furiously regular theodolites integrate furiously furiously bold requests. carefully|
-27|2|9080|157.03|ole express, final requests. carefully regular packages lose about the regular pinto beans. blithely re|
-27|6|3407|151.34|ironic theodolites are by the furiously bold ideas. ironic requests shall have to sublate final packages. furiously quick foxes alongside of the express, special deposits was boldly according |
-27|10|4283|348.61|ound the final foxes detect furiously across the even warhorses. quickly t|
-28|9|6643|204.86|y ironic deposits above the slyly final deposits sleep furiously above the final deposits. quickly even i|
-28|3|2452|744.57|ully regular theodolites haggle about the blithely pending packages. carefully ironic sentiments use quickly around the blithely silent requests. slyly ironic frays bo|
-28|7|302|690.30|uickly unusual requests alongside of the final courts integrate slyly |
-28|1|9988|666.53|beans haggle carefully around the slyly ironic acco|
-29|10|3506|799.27|leep fluffily according to the quietly regular requests: accounts integrate carefully bold foxes. carefully silent|
-29|4|8106|981.33|the ironic, bold asymptotes! blithely regular packages hang furiously above the dependencies. blithely permanent dependencies are furiously furiously ironic acco|
-29|8|9193|734.44|ly unusual packages. foxes cajole. theodolites nag|
-29|2|6252|186.21|thely carefully even packages. even, final packages cajole after the quickly bold accounts. fluffily quick accounts in place of the theodolites doze slyly f|
-30|1|4767|989.05|ts. slyly final pinto beans cajole ironic accounts. blithely final accounts use among the request|
-30|5|535|743.26|sual instructions wake carefully blithely even hockey playe|
-30|9|7756|568.86| special foxes across the dependencies cajole quickly against the slyly express packages! furiously unusual pinto beans boost blithely ironic Tir|
-30|3|7945|583.84| sleep. bold, regular deposits hang doggedly furiously bold requests. slyly bold excuses detect busily above the even gifts. blithely express courts are carefully. blithely final packages until th|
-31|2|9685|620.84|he blithely regular ideas. blithely unusual requests haggle fluffily. platelets|
-31|7|1951|120.99|refully regular pinto beans. ironic requests integrate furiously since the quickly ruthless platelets. quickly ironic attainments ha|
-31|2|1402|761.64|r platelets nag blithely regular deposits. ironic, bold requests |
-31|7|137|849.11|blithely ironic accounts. slyly ironic asymptotes sleep ironic, even accounts. regular accounts thrash quickly|
-32|3|2203|406.03|es? slyly enticing dugouts haggle carefully. regular packages alongside of the asymptotes are carefull|
-32|8|467|109.34|ainst the unusual braids nod fluffily packages. regular packages nod among the slyly express|
-32|3|7975|747.14|final foxes boost furiously pending packages. quickly regular depths promise blithely accoun|
-32|8|7938|856.09|s integrate according to the even dependencies. carefully regular reque|
-33|4|4028|891.46|, pending requests affix slyly. slyly ironic deposits wake accounts. express accounts sleep slowly. ironic, express accounts run carefully fluffily final dependencies. furiously unusual ideas|
-33|9|4410|929.05| packages sleep carefully. slyly final instructions boost. slyly even requests among the carefully pending platelets wake along the final accounts. quickly expre|
-33|4|1287|310.76|dolites above the slyly express deposits try to haggle blithely special gifts. blithely ironic reque|
-33|9|6006|327.19|ly. ironic dependencies haggle carefully silent instructions. furiously ironic dolphins are fluffily furiously even theo|
-34|5|9934|848.75|ven instructions besides the gifts are furiously among the slyly regular packages! instructions use carefully. even requests sleep quickl|
-34|10|4749|265.31|ckly regular theodolites eat above the bravely regular courts. ironic requests wake slyly.|
-34|5|5459|824.69|ong the slyly silent requests. express, even requests haggle slyly|
-34|10|5884|609.69|ully final tithes. slyly ironic deposits hang furiously about the regular, regular deposits|
-35|6|2500|451.58|nic packages boost carefully carefully even theodolites. blithely fina|
-35|1|8875|537.72|ully regular deposits: special accounts use. slyly final deposits wake slyly unusual, special ideas. asymptotes |
-35|6|596|669.19|slyly against the daring, pending accounts. fluffily special pinto beans integrate slyly after the carefully unusual packages. slyly bold accounts besides|
-35|1|2025|411.17|s cajole fluffily final deposits. furiously express packages after the blithely special realms boost evenly even requests. slow requests use above the unusual accoun|
-36|7|3907|630.91|al deposits detect fluffily fluffily unusual sauternes. carefully regular requests against the car|
-36|2|174|434.47|permanently express instructions. unusual accounts nag toward the accou|
-36|7|2625|569.91|ctions. pending requests are fluffily across the furiously regular notornis. unusu|
-36|2|8209|289.15|arefully regular requests cajole. special, express foxes sleep slowly. quickly unusual in|
-37|8|7171|824.96|usly into the slyly final requests. ironic accounts are furiously furiously ironic i|
-37|3|5542|126.59|ven deposits. ironic foxes cajole. slyly final deposits are furiously after the furiously even packages. slyly ironic platelets toward the slyl|
-37|8|7113|15.72|re bravely along the furiously express requests. blithely special asymptotes are quickly. fluffily regular packages alo|
-37|3|1449|745.64|y after the ironic accounts. blithely final instructions affix blithely. bold packages sleep carefully regular instructions. regular packages affix carefully. stealthy fo|
-38|9|1226|570.11| slyly even pinto beans. blithely special requests nag slyly about the ironic packages. |
-38|4|4237|662.75|lar warhorses cajole evenly against the attainments. requests cajole furiously furiously express requests. carefully regular platelets use fluffily after the silent, unusual ideas: bl|
-38|9|1135|160.70|express accounts haggle. carefully even pinto beans according to the slyly final foxes nag slyly about the enticingly express dol|
-38|4|3516|847.09|nal accounts. furiously pending hockey players solve slyly after the furiously final dependencies. deposits are blithely. carefully regular packages unwind busily at the deposits. fluffily |
-39|10|3633|463.10|kages are slyly above the slyly pending pinto beans. bold, ironic pinto beans sleep against the blithely regular requests. fluffily even pinto beans use. regular theodolites haggle against the quic|
-39|5|3682|300.43|ng requests are according to the packages. regular packages boost quickly. express Tiresias sleep silently across the even, regular ideas! blithely iro|
-39|10|5475|532.26| beans cajole carefully carefully express requests. instructions sleep furiously bold deposits. furiously regular depos|
-39|5|6259|737.86|y. special, even asymptotes cajole carefully ironic accounts. regular, final pinto beans cajole quickly. regular requests use warhorses. special, special accounts hinder boldly across the|
-40|1|7690|776.13|lets use fluffily carefully final deposits. blithely ironic instructions sublate against the furiously final ideas; slyly bold courts x-ray silent foxes. regular foxes wake blithely. slyl|
-40|6|1704|565.82|riously furiously silent asymptotes. final deposits cajole blithely ironic requests. furiously special pains into the blithely final instru|
-40|1|4521|374.71|ptotes haggle. slyly even requests nag fluffily silent packages. blith|
-40|6|6617|196.64|he slyly unusual epitaphs? ironic deposits at the furiously unusual instructions thrash blithely requests. requests are carefully blithely pending waters.|
-41|2|9040|488.55|ss the dinos wake along the blithely regular theodolites. foxes cajole quickly ironic, final foxes. blithely ironic packages haggle against |
-41|8|5946|391.81| slyly slyly regular requests. final deposits sleep fluffily. blithely bold instructions detect carefully. blithely pending requests are furiously ironically final ideas. regul|
-41|4|1550|916.55| the blithely final ideas. furiously regular asymptotes could cajole furious|
-41|10|560|37.59|special pinto beans against the unusual accounts cajole slyly final foxes. close, ironic|
-42|3|2893|716.81|requests nag. furiously brave packages boost at the furiously even waters. slyly pending ideas nag carefully caref|
-42|9|2927|709.06|g dugouts. carefully careful ideas are fluffily. carefully final pinto beans snooze. ironic deposits wake evenly along |
-42|5|3500|200.00|against the ironic, ironic forges. slyly final deposits wake blithely. ironic courts sleep furiously ab|
-42|1|3662|29.46|es sleep slyly among the slyly final requests. bold theodolites use silently against the final foxes. carefully pending requests use furiously. dogged, unusual asymptotes use |
-43|4|3211|805.78|gular accounts. bold theodolites nag slyly. quickly express excuses use blithely. blithely even ideas boost fluffily! blithely unusual ideas detect bli|
-43|10|6770|493.19|ing to the quickly even theodolites. quickly bold excuses haggle. sometimes unusua|
-43|6|9506|493.65|riously! slyly ironic sauternes affix. ironic theodolites sleep furiously about the express packages. slyly ironic deposits are blithely against the regular package|
-43|2|3232|307.12|counts: express, final platelets use slyly bold ideas. ironic theodolites about the blithely s|
-44|5|486|164.22| final notornis throughout the unusual pinto beans are about the special accounts. bold packages sleep fluffily above the|
-44|1|5310|114.37|quests. quickly unusual requests against the carefully final somas detect slyly bold a|
-44|7|3534|383.01|r the pending pinto beans! requests wake furiously after the special deposits. silent deposits mold quickly along the express, special |
-44|3|4798|833.15| run. ironic, special dolphins according to the even, ironic deposits haggle carefully alongside of the carefully regular excuses. regular frays haggle carefully ironic dependenc|
-45|6|1685|919.63|he doggedly final accounts; carefully regular packages cajole idly regular idea|
-45|2|5202|877.29|ngage blithely after the final requests. bold accounts sleep blithely blithely express dependencies. pinto beans through the carefully regular hockey players wake|
-45|8|5669|532.70|es play carefully doggedly unusual requests. bold grouches against the furiously ironic dugouts sleep furiously qu|
-45|4|1872|155.32| ironic, even pinto beans. bold theodolites haggle after the furiously ironic accounts. slyly bold courts|
-46|7|4171|244.65|lly quiet instructions. furiously express requests among the final ideas cajole carefully bold waters. furiously regular pac|
-46|3|8518|106.80|e unusual instructions shall have to detect slyly blithely ironic foxes. bold requests impress silent foxes. ironic, quiet realms haggle quickly pending, express pinto be|
-46|9|7225|14.78|ously about the fluffily pending accounts. fluffily even dugouts are quickly slyly express platelets; quickly bold pearls sleep slyly even instructions. furiously ironic packages poach quic|
-46|5|1381|985.88|ending platelets are carefully regular accounts. fluffily even accounts against the dependencies nag carefully final, |
-47|8|6989|292.52|even ideas. blithely final requests boost blithely. final, ironic instruct|
-47|4|4458|539.47|; finally enticing theodolites cajole enticing, silent warhorses! slyly bold pains c|
-47|10|2896|74.54|grate final asymptotes. pending requests kindle carefully final frets. ironic deposits above the slyly e|
-47|6|5873|296.63|after the regular dependencies. final, bold pains sleep quickly pend|
-48|9|5052|611.16|posits are blithely blithely final foxes. blithely even deposits haggle fluffily express requests. furiously final theodolites use sl|
-48|5|9451|191.36|ckages cajole never even, special foxes. regular dependencies wake after the blithely ironic instructions. thinly ironic reque|
-48|1|5564|668.19|al pinto beans. furiously final frays use slyly according to the ironic theodolites. regular ideas cajole furiously after the slyly even deposits. |
-48|7|1719|606.16|forges lose. packages cajole regular, bold accounts. never ironic accounts may promise about the permanently bold deposits. always express requests cajole fluffily regular c|
-49|10|9056|35.11| bold deposits? final, bold pinto beans are furiously slyly regular packages. sly|
-49|6|6646|908.15|ts sleep across the fluffily final deposits. carefully express accounts around the regular, express excuses x-ray inside the ironic theodolites. expre|
-49|2|5336|713.25|ld accounts. furiously blithe waters use furiously blithely idle dependencies. pending deposits along the permanently re|
-49|8|597|812.62|n foxes snooze furiously. courts integrate never. carefully unusual requests are carefully. quickly ironic deposits ha|
-50|1|1832|565.54|liers above the dolphins dazzle across the regular foxes. furiously regular packages haggle furiously blithely ironic grouches. ironic, even accounts haggle pending, furious instruction|
-50|7|43|690.87|aggle daringly along the close, express deposits. final requests snooze carefully carefully bold deposits. carefully unusual ideas doze furiously after the furious|
-50|3|6160|301.06|arefully ironic requests use. furiously pending waters play carefully carefully regular platelets. sly requests cajole furiously slyly regular pinto beans. bold packages boost fluffily. furiously i|
-50|9|2104|107.17|t blithely unusual theodolites. quickly final accounts affix fluffily regular requests. c|
-51|2|837|310.74|ly dogged, regular dependencies. express, even packages are |
-51|9|7318|85.03|al foxes. carefully ironic accounts detect carefully-- slyly even accounts use. furiously final platelets shall haggle sometimes after the blithely regu|
-51|6|138|728.95|requests according to the carefully unusual deposits promise slyly ironic packages. slyly ironic dependencies are accordin|
-51|3|8062|901.04|le ruthlessly furiously slow requests. fluffily slow depende|
-52|3|6533|54.92|efully. slyly special deposits haggle along the quick deposits. slyly pending requests use quickly packages. final, final dolphins doubt according to the quickly unusual excuses|
-52|10|1937|210.44|s. never even asymptotes nag carefully! regularly unusual foxes along the unusual requests haggle accounts. fluffily express pinto |
-52|7|4084|628.53| deposits wake slyly pending asymptotes. ironic asymptotes haggle. blithely ironic requests are qui|
-52|4|5524|424.93|cial, ironic packages. even dolphins boost. slyly final deposits integrate. final sheaves along the silent excuses use at the slyly close foxes; bold accounts are finally even packages. ironi|
-53|4|6443|192.78|carefully ironic accounts. blithely bold deposits detect furiously against the flu|
-53|1|5319|563.44|ly. fluffily final pearls boost carefully. special sauternes nod furiously even instructions. carefully regular dependencies across the slyly regular deposits|
-53|8|8200|388.08|fully requests. furiously final accounts cajole express, regular pearls. special deposits wake fluffily express accounts. quic|
-53|5|6929|224.83|xes. carefully ruthless asymptotes impress slyly. fluffily final deposits sleep against the ideas. slyly final packages wake. pending, express packages sleep quickly.|
-54|5|2515|686.51|ly along the packages. blithely close pinto beans are blithely alongside of the unusual packages. carefully even platelets boost alongside of the even foxes. ironic de|
-54|2|7079|798.98|he carefully unusual packages wake according to the ironic dolphins. permanently regular sheaves nag quickly. regular, ironic|
-54|9|2386|23.78|kly ironic foxes. final instructions hinder doggedly. carefull|
-54|6|536|259.24| furiously along the fluffily regular requests. carefully unusual accounts use fluffily final platelets. pending deposits integrate furiou|
-55|6|7874|611.04|ly special packages. furiously even warhorses integrate. silen|
-55|3|8460|236.27|round the special, bold asymptotes cajole alongside of the instructions. qui|
-55|10|8278|134.62|gedly silent pinto beans! furiously regular sentiments was furiously across the silent pinto beans. pending warthogs along the slyly |
-55|7|1289|130.33|ut the blithely final requests. requests nag blithely. |
-56|7|241|855.39|nto beans. finally regular sauternes are. carefully bold deposits according to the blithely express requests wake carefully ironic excuses? furiously final deposit|
-56|4|9104|54.79|tructions above the blithely pending foxes cajole blithely furiously even sentiments. special, exp|
-56|1|1330|52.29|xpress instructions haggle furiously regular deposits. quickly unusual packages sleep furiously final pinto|
-56|8|5799|926.25|ades grow around the dependencies. carefully special ideas cajole furiously across the blithely express requests. unusual tithes are caref|
-57|8|2972|123.11| asymptotes use carefully furiously final deposits. quickly regular deposits are furiously slyly ironic requests. blithely even excuses haggle: blithely special ideas|
-57|5|4721|411.08|instructions. quickly unusual deposits about the furiously special ideas believe among the furiously bold theodolites. unusual, even ideas nag: slow, special theodolites hagg|
-57|2|3788|211.66|ly according to the ironic requests-- slyly final accounts print carefully depths? pending, unusual accounts solve |
-57|9|4583|137.68|ts. blithely bold theodolites can boost carefully carefully even instr|
-58|9|4328|542.52|ven deposits wake requests. quickly bold platelets sleep furiously after the ironic requests. even accounts haggle quickly bold |
-58|6|4307|448.31|quickly carefully ironic foxes. bold platelets nag furiously regular packages. slyly specia|
-58|3|4136|512.24|packages cajole slyly quickly pending depths. special, bold realms cajole slyly. slyly ir|
-58|10|9689|25.09|long the unusual, express asymptotes. ironic ideas boost bold, special deposits? ironic foxes among the fin|
-59|10|8374|357.22|c decoys. carefully even pinto beans wake slyly alongside of the express accounts. regular grouches haggle.|
-59|7|4226|80.98|lar packages. regular depths use slyly after the fluffily regular packages; theodolites around the furiously ironic asy|
-59|4|99|598.55|he special pinto beans. fluffily even accounts cajole. fluffily regular foxes haggle among the|
-59|1|8184|45.50|ependencies. ironic dependencies wake carefully according to the blithely bold packages. quickly unusual ideas about th|
-60|1|6642|800.72| blithely. slyly final realms alongside of the excuses use quickly blithely bold foxes. final theodolites are slyly after the slyly regular excuses. never thin foxes about |
-60|8|5017|314.81| even pinto beans wake carefully. quickly regular deposits hinder along the furiously regular pack|
-60|5|148|504.10|s use fluffily. furiously regular deposits boost furiously against the even instructions. blithely final platelets wake. carefully pending asymptotes sleep blithely. regular, s|
-60|2|5792|92.64|s the carefully pending deposits. slyly regular pinto beans against the furiously regular grouches lose carefully around the enticingly final ideas. furiously express packages cajole bold pa|
-61|2|1540|858.64| could have to use upon the packages. fluffily special packages integrate slyly final theodolites. pending warhorses wake quickly after the blithely final fo|
-61|10|9170|771.26|ly. pinto beans sleep blithely about the patterns. slyly final accounts wake according to the furiously bold requests. slyly regular packages wake according to the ironic packages. requests acros|
-61|8|4762|633.74|final theodolites haggle. fluffily express ideas about the silent theodolites cajole ideas; fluffily special instructions are accordin|
-61|6|7312|153.74|gly final instructions. pending theodolites will wake furiously. slyly bold instructions run. furiously special foxes cajole f|
-62|3|1780|692.42|s around the even ideas cajole furiously somas. silent asym|
-62|1|5896|348.82| final accounts. furious deposits wake slyly. idly regular packages haggle blithely pending grouches. ironic accounts boost blithely. carefully express pa|
-62|9|9127|620.08|totes. unusual requests after the unusual accounts sleep fluffily bold notornis. slowly careful requests use according to the final ideas. pinto beans sleep. foxes are furiously furiously pe|
-62|7|9542|255.78|lly express requests haggle carefully. idle, pending pinto beans are furiously regular excuses. quickly sly attainments are furiously; even accounts are slyly quickl|
-63|4|1804|498.84|leep bravely. final accounts nag. forges sleep against the slyly ironic pa|
-63|2|1998|509.16|yly express theodolites. slyly bold ideas sleep furiously accordi|
-63|10|6839|274.15| among the carefully ironic accounts. carefully even accounts against the regular, final deposits detec|
-63|8|6325|463.69|arly express accounts. express, unusual escapades haggle. special packages must wake. express, regular requests sleep furiously ironic packages|
-64|5|5567|228.61|y even instructions. unusual requests serve slyly. special foxes sleep quickly. fluffily ir|
-64|3|4542|398.92|. quickly final ideas cajole carefully among the blithely silent requests. sometimes ironic accounts nag furiously against the pending instructions. f|
-64|1|9110|602.65| ironic accounts are carefully carefully final accounts. slyly ironic packa|
-64|9|2064|25.77| quickly regular ideas. carefully final requests snooze carefully regular, regular instructions. stealthily final pi|
-65|6|2918|846.26|inal, even foxes cajole. furiously final dolphins hang quickly ironic foxes. furiously special packages alongside of the bold foxes solve above the carefully final instructio|
-65|4|1779|393.63|ully after the quickly regular ideas. ironic, final multipliers above the carefully bold deposits breach slyly furiously express deposits. unusual accounts haggle carefully idea|
-65|2|2054|503.10|e express excuses. ironic, even accounts across the reg|
-65|10|2188|288.73|lent requests nag quickly. blithely silent platelets haggle ironic accounts. slyly bold instructions boost carefully final accounts. carefully even dependencies must nag blithely; qui|
-66|7|3077|809.13|nod carefully besides the furiously final theodolites. slyly final requests haggle. furiously silent excuses detect quickly. ironic deposits detect above the furiously final |
-66|5|1076|785.75|its across the blithely regular theodolites wake furiously among the furiously regular accounts. pains are slyly care|
-66|3|2568|447.08|ously even accounts boost slyly daring requests. even, regular realms kindle blithely. unusual, ironic ins|
-66|1|296|797.27|s nag enticingly outside the furiously final foxes. final accounts haggle fluffily accord|
-67|8|9923|306.37|ly according to the quickly ironic requests. express instructions after the slyly even instructions x-ray blith|
-67|6|7908|546.75|furiously express dolphins integrate carefully regular notor|
-67|4|3368|625.62|le slyly regular requests: regular platelets wake quickly across the quickly regular accounts. reg|
-67|2|5826|397.34|en, ironic deposits affix quickly unusual requests. busily ironic accounts are finally never even sauternes. ironic depos|
-68|9|3444|31.37|es impress furiously pending packages. always silent instructions above the fluffily bold packages haggle slyly blit|
-68|7|6762|5.16|lithely. carefully even grouches along the bold deposits might sleep slyly requests. blithel|
-68|5|8300|80.86|nooze according to the furiously even ideas. blithely regular accounts wake blithely. furiously regular Tiresias cajole regular deposits. regular theodolites eat alongside of the|
-68|3|5399|683.59|. finally final pinto beans play carefully unusual requests. never pending accounts are. regular, final theodolites wake furiously excuses. special request|
-69|10|6197|694.24|eep across the packages. regular, final foxes boost fluffily regular pinto beans. packages sleep along the final requests. bold, unusual packages cajo|
-69|8|8235|846.49|nt fluffily. carefully ironic instructions wake. blithely express foxes cajole slyly. unusual requests sleep quickly. final packages affix slyly according to the spec|
-69|6|9294|386.96|ar packages. blithely regular dependencies are dolphins. slyly ironic excuses nag quickly pending, regular ideas. furiously special sheaves haggle. close, regular pinto beans about the slyly bold|
-69|4|7017|344.28|heodolites. unusual, regular requests boost slyly pending deposits. slyly daring instruct|
-70|1|4536|348.27|ructions. blithely final packages cajole carefully after the express, even requests. furiously final theodolites cajole |
-70|9|8063|452.80|y regular deposits nag about the carefully regular instructions; furiously express accounts along the final, express instruct|
-70|7|2990|940.81|s deposits. unusual foxes are carefully according to the carefully even deposits. carefully ironic foxes cajole fluffily against the carefully pending deposits. slyly special depo|
-70|5|9074|182.58|ions after the fluffily regular foxes wake above the furiously regular requests: slyly regular deposits wake slyly daringly even Tiresias. express, express deposits are. always unusual pa|
-71|2|508|842.21|es cajole carefully around the furiously pending instructions. |
-71|1|8329|239.57|ins sleep carefully slyly express accounts! quickly even accounts boost carefully about the carefully regular excuses. dogged, even dolphins against the sometimes ironic packages believe bl|
-71|10|6768|744.67|ructions. daring requests solve carefully about the furiously pending pinto|
-71|9|5179|329.13|usly at the packages. blithely regular deposits haggle regular packages. quickly special theodolites at the blithely ironic instructions wake|
-72|3|9855|497.26|tithes. quickly pending foxes haggle enticingly according to the accounts. accounts detect slyly: final packages wake. fina|
-72|2|9346|41.04| pending instructions before the even, silent dep|
-72|1|2654|762.61|nusual packages: blithely bold Tiresias sleep furiously. slyly brave accounts according to the final, |
-72|10|4526|154.47|use across the never ironic packages. express, regular accounts above the pending, fluffy deposits are carefully across the slyly even pinto be|
-73|4|9873|947.99|tes use pending packages. final foxes wake final, unusual packages. blithely blithe ideas haggle sometimes slyly express accounts. express instructions nag furiously quickly|
-73|3|7729|920.66|ecial accounts sleep according to the slyly sly accounts. slyly express instructions nag. accounts cajole furiously quickly even foxes. furiously regular requests wake. carefully even frets haggle |
-73|2|5327|108.96| beans are furiously between the regular ideas! unusual pinto beans use. furiously silent requests against the carefully even somas wake care|
-73|1|3928|309.57|longside of the blithely final ideas. carefully ironic courts sleep along the enticingly pending requests. fluffily regular accounts use fluffily bold ideas. slyly ironic packa|
-74|5|3128|345.92|ic theodolites. express deposits haggle blithely pending packages. quickly express foxes could are slyly. deposits sleep deposits. final dependencies sleep ab|
-74|4|2479|930.97|o beans sleep dependencies. regular accounts use blithely asymptotes. u|
-74|3|9473|496.36| haggle carefully alongside of the regular requests. slyly regular accounts belie|
-74|2|6234|849.66| slyly regular foxes. silent accounts integrate. even deposits are quick|
-75|6|7086|624.39|sits are furiously fluffily even courts. furiously pending requests are blithely. pending, regular accounts play carefully slyly unusual platelets. blithely final requests against the ru|
-75|5|6308|759.36|refully ironic dependencies. pinto beans use according to the packages. regular platelets wake around the blithely p|
-75|4|9080|433.59|sits. permanent packages breach. carefully final waters wake. bold, pending foxes haggle furiously evenly express instructions. even deposits about the final|
-75|3|5439|884.01|ding excuses snooze special accounts. tithes alongside of the regular dep|
-76|7|6754|494.83|gular accounts solve. ironic deposits sleep slyly even packages. slyly pending accounts detect slyly express accounts. ironic forges can play furiously carefully express fox|
-76|6|2009|108.97|n packages. blithely even accounts sleep carefully furiously ironic accounts. carefully express requests|
-76|5|6371|552.38|ts use against the quickly ironic ideas. quickly even deposits are carefully a|
-76|4|7986|252.03| packages across the furiously ironic platelets cajole across the regular, ironic accounts. carefully enticing accounts among the blithely regular instructions detect regular pinto be|
-77|8|552|254.92|e after the carefully pending packages. carefully even dependencies cajole pending |
-77|7|8170|875.83|xcuses. blithely even foxes use fluffily. blithely even requests use. slyl|
-77|6|8541|936.13|e slyly express instructions haggle about the sometimes regula|
-77|5|1713|402.14|the even ideas kindle after the requests. regular theodolites cajole carefully about the blithely final ideas. carefully even dependencies at the flu|
-78|9|9915|729.94|around the special excuses. furiously even deposits serve boldly according to the platelets. carefully express accounts at the blithely unusual pinto beans sleep furiously against the u|
-78|8|7246|577.23|regular dependencies cajole doggedly ironic accounts. bold theodolites doze about the accounts. quickly final requests boost slyly final asymptotes. carefully final dolphins ha|
-78|7|1801|434.34|nts kindle furiously according to the even packages. blithely ironic platelets are slyly silent foxes. final, final packages would sleep. pinto beans a|
-78|6|9599|382.82| carefully special theodolites cajole among the quickly even asymptotes. foxes wake blithely across the carefully |
-79|10|4248|765.34|nusual, express asymptotes wake furiously. ironic pinto beans detect above the carefully express theodolites: even, dogged instructions nag. spe|
-79|9|465|28.33|uriously special frays cajole across the finally ironic pinto beans. ironic accounts sleep blithely. fluffily silent accounts are slyly at the slyly unusual ideas. even deposits nag slyly |
-79|8|3309|880.23|tect final, thin accounts? furiously ironic accounts boost regular deposits. carefully ironic attainments sleep. furiously special ins|
-79|7|8627|891.18|r dolphins grow blithely against the slyly ironic packages. deposits about the regular, ironic decoys are slyly around the carefully regular packages. slyly pending excuses sle|
-80|1|8893|127.65|ld accounts detect carefully. carefully bold courts along the regular deposits could have to affix ca|
-80|10|2243|775.79|endencies. bold, regular pinto beans wake furiously above|
-80|9|5385|945.72|cial asymptotes believe after the blithely unusual deposits. furiously silent pinto beans cajole quickly inside the slyly even deposits. regular, f|
-80|8|4034|797.05|ptotes cajole carefully. express ideas cajole carefully even somas. final pinto beans print fluffily across the |
-81|2|1605|550.29|es haggle blithely fluffily final requests. furiously regular foxes use. furiously unusual requests outside the furiously regular requests|
-81|2|5923|220.23|the final, quick accounts are blithely above the s|
-81|2|2942|409.73|accounts boost. fluffily unusual requests cajole fluffily slyly ironic requests. foxes cajole quick|
-81|2|58|492.19| instructions boost furiously across the foxes-- final depo|
-82|3|7793|697.31|he accounts cajole quickly after the even patterns. ironic platelets sublate regular, even asymptotes. quick courts affix according to|
-82|3|7698|585.86|pinto beans. slyly express excuses haggle. blithely even pinto beans about the quick inst|
-82|3|8268|604.25|e after the carefully even theodolites. regular, pending accounts boost. quickly final asymptotes haggle slyly. requests use final, bold pinto beans. bold, ruthle|
-82|3|5532|900.07| slyly? fluffily special dependencies haggle among the slyly special requests. regular, bold packages after the blithely ironic packages are slyly ironic packages. slyly final deposits w|
-83|4|3010|745.51|l foxes along the bold, regular packages integrate carefully express courts! final excuses sleep carefully ironic|
-83|4|8200|399.64|y final platelets are carefully carefully special platelets. carefully ironic requests wake blithely alongside of the slyly even accounts. bold, regular requests sleep |
-83|4|5974|657.22| even packages boost furiously. slyly regular gifts above the accounts are quickly express packages. slyly pending deposits besides the express, even asymptotes haggle after the ironic ins|
-83|4|3890|24.73|deposits. carefully even dependencies across the dependencies haggl|
-84|5|5711|233.61|arefully final platelets cajole blithely; quickly final accounts use furiously. furiously reg|
-84|5|208|469.80|carefully express dolphins nag about the slyly bold requests. slyly even packages wake among the furiously special attainments.|
-84|5|2909|969.44|silent requests cajole slowly bold ideas. special, special deposits according to the always silent packages are against the furiously silent packages. even, blithe accounts sleep slyly across |
-84|5|903|707.77|gly regular dependencies boost. slyly even accounts sleep. furiously final hockey players wake carefully with the reg|
-85|6|2628|608.77|xes wake furiously after the carefully even platelets. blithe theodolites are furi|
-85|6|118|917.83| against the even deposits. furiously bold ideas along the furious requ|
-85|6|2074|491.20|encies-- slyly regular requests about the quiet accounts detect quickly at the |
-85|6|8289|73.81|s cajole slyly along the slyly special accounts. regular, special deposits wake. furiously special foxes boost. blithely even packa|
-86|7|806|65.98|ackages. blithely pending accounts are slyly furiously pending theodolites. furiously eve|
-86|7|2773|250.04|ding accounts. slyly special requests will have to affix carefully along the furiously unusual packages. regular theodol|
-86|7|5546|816.53|s. slyly final requests wake. furious deposits must wake blithely among the blithely ironic instructions. special hockey players try to are bli|
-86|7|1418|332.65|press theodolites sleep carefully about the blithely unusual requests. quickly final deposits breach slyly |
-87|8|5679|688.33|t the carefully regular asymptotes. blithely stealthy pinto beans within the furiously expres|
-87|8|1272|435.42|ronic foxes sleep along the special foxes. final ideas wake quickly about the carefully special theodolites. blithely ironic packages are blithely. regular, regular pint|
-87|8|9041|617.20|furiously final deposits. furiously special dependencies solve across the regular, special ideas. carefully silent requests haggle furiously after the special, specia|
-87|8|1892|868.60|arhorses are. unusual requests use blithely furiously final ideas. final requests sleep theodoli|
-88|9|6116|334.58|ect furiously around the regular deposits. special, final platelets boost furiously. blithely unusu|
-88|9|395|71.50| the regular accounts-- furiously even accounts use quickly after the regular, regular deposits. furiously e|
-88|9|9979|81.82|f the regular, regular requests believe fluffily along the final, quiet decoys. furiously even accounts cajole. carefully express requests wake quickly among the ideas. quickly silent |
-88|9|276|821.43|gular pinto beans. slyly pending excuses breach blithely express accounts. thin deposits sleep slyly around the even accounts; fluffily busy patterns kindle. slyly final deposits along the |
-89|10|3430|744.87| integrate slyly dolphins. bold, final frets use beside the carefully even accounts. slyly close dependencies sleep quickly carefully final pinto beans. foxes promi|
-89|10|8599|776.53|ress packages use furiously. furiously regular packages thrash blithely about the slyly pe|
-89|10|7876|417.61|nstructions: furiously even requests are quietly unusual accounts. regular requests are after the blithely regular deposits. sl|
-89|10|924|920.02|ickly unusual asymptotes after the slyly unusual accounts are carefully doggedly ironic accounts. even, final accounts use furiousl|
-90|1|8037|409.38|eas. unusual, pending packages boost quietly final accounts. slyly final packages serve. slyly even instructions sleep carefully. quickly even foxes wake quickly. |
-90|1|9683|498.43| accounts! fluffily regular deposits x-ray about the unusual, final packages. furiously final deposits alongside of the caref|
-90|1|7849|666.13|carefully ironic accounts are around the slyly bold asymptotes. carefully regular packages use furiously. ironic platelets affix carefully final accounts-- fluffily final pinto beans across the fina|
-90|1|7629|50.84|onic requests wake fluffily unusual packages. furiously even frays after the daringly pending requests wake furiously alongside of the bold requests. fluffily ironic ideas nag. ironic,|
-91|2|7986|528.64|luffily final instructions. furiously unusual foxes haggle |
-91|3|3257|906.20|ackages cajole slyly. blithely bold deposits cajole. blithely |
-91|4|483|823.21|n: slyly ironic foxes nag blithely according to the furiously bold foxes. regular, regular accounts a|
-91|5|1265|703.41| quickly silent deposits use attainments. final requests along the carefully ironic accounts wake blithely about the carefully ironic excuses. furiously bold excuses wake final, final ex|
-92|3|9337|224.01| requests are slyly along the deposits. fluffy pains alongside of the deposits |
-92|4|2246|985.03|jole enticingly regular asymptotes. carefully unusual pinto beans nag carefully ironic ideas. quickly un|
-92|5|3199|91.63|ake carefully: carefully ironic requests sleep careful|
-92|6|1044|854.89|l instructions are fluffily silently regular accounts. quickly final dolphins w|
-93|4|3008|615.98|sits promise blithely fluffily special decoys. slyly regular packages along the slyly final deposits wake accord|
-93|5|5275|376.47|ounts boost fluffily along the thinly regular realms. busily regular a|
-93|6|3869|868.81|ly among the furiously silent accounts. closely regular pinto beans nag slyly! slyly e|
-93|7|7188|805.90|y furiously bold pinto beans. express asymptotes was quickly. carefully final accounts affix slyly! platelets according to the ca|
-94|5|5433|365.56| even excuses wake carefully. quickly unusual requests wake accounts. regularly pending packages are regular |
-94|6|7784|358.08|ironic packages wake slyly carefully regular accounts. quickly regular warhorses against the blithely ironic packages haggle doggedly sly|
-94|7|7232|478.94|y regular requests. carefully final asymptotes haggle carefully against the slyly unusual requests: blithely brave grouches are fu|
-94|8|3261|824.08|quests. enticingly final accounts sleep fluffily. quickly express asymptotes around th|
-95|6|5186|291.03|ites across the blithely pending theodolites do affix across the unusual, bold Tiresias. bold packages|
-95|7|6552|456.36|tes; final, final accounts boost blithely ironic pinto beans. blithely ironic deposits cajole above the quickly pending requests? i|
-95|8|367|987.22| express requests detect furiously. requests cajole carefully|
-95|9|7379|973.74| above the furiously unusual deposits haggle ironic ideas. express, even packages haggle slyly slyly special asymp|
-96|7|5739|202.06|re. slyly regular theodolites breach slyly even dinos. fluffily regular asymptotes haggle slyly. fluffily bold courts affix furiously. regular requests |
-96|8|4942|571.30|e carefully. bold packages sleep against the furiously express requests. express foxes above the dependencies use quickly according to the slyly expres|
-96|9|9985|672.29|ecial instructions-- blithely silent theodolites play. even, silent accounts sleep. blithely silent requests haggle final, f|
-96|10|7250|587.08|efully ironic foxes. regular, final pinto beans boost above the express a|
-97|8|6371|129.77|fluffily unusual accounts. slyly regular theodolites integrate furiou|
-97|9|2390|458.34| carefully unusual pinto beans; even deposits detect furiously|
-97|10|2618|239.34|al theodolites are daringly requests. warhorses sleep blithely requests. special accounts cajole slyly deposits. a|
-97|1|4580|761.41| beans. carefully final deposits alongside of the carefully final requests haggle idly blithely ironic accounts. foxes cajole slyly against the ironic, special packages. furiously brave excuses boo|
-98|9|9486|908.21|usly final deposits mold furiously above the even deposits. carefully ironic packages across the quickly regular dolphins are slyly according to the slyly even|
-98|10|8550|657.16| sleep carefully. bravely bold somas may sleep pendin|
-98|1|3443|139.00|gular pinto beans maintain quickly fluffily regular deposits. express requests sleep. even requests after the regu|
-98|2|3759|811.55|iously. final, express packages are across the ironic dependencies. slyly thin ideas according to the even Tiresias detect furiou|
-99|10|8487|438.38|lphins affix ironic packages. blithely ironic requests nag fluffily after the slyly ironic foxes. bold dependencies boost furiously. special, |
-99|1|7567|496.93|es? permanently even excuses haggle quickly across the dependencies.|
-99|2|7970|365.83|ending accounts cajole furiously. requests promise care|
-99|3|2789|843.88|ending accounts. furiously sly packages above the carefully unusual dolphins sleep after the thinly even deposits. requests wake abo|
-100|1|7885|490.61| accounts nag slyly against the bold excuses. pearls according to the fluffily ironic accounts haggle fluffily along the quickly final platelets|
-100|2|2070|196.73| dolphins. bold deposits along the even theodolites sleep furiously about the final pinto beans. furiously unusual courts cajole about the carefully bold asymptotes. accounts integrate slyly entic|
-100|3|4994|929.57| deposits. accounts are slyly regular ideas. slyly special pinto beans upo|
-100|4|9688|22.00|uctions according to the carefully ironic deposits haggle carefully express ideas? packages across the quickly final requests c|
-101|2|5589|305.40|blithely above the fluffily pending ideas. quickly quick accounts nod ruthlessly above the carefully pending packages. slyly s|
-101|4|8263|218.71|fluffily final requests. carefully even packages wake quickly about the quickly ironic foxes. fluffily even requests hang quickly about the pending, final requests. sp|
-101|6|6324|786.53|olites sleep quickly. slyly ironic theodolites affix. furiously bold accounts integrate among the pinto beans. final ideas hang slyly along the quickly regular packages. instructions cajole.|
-101|8|55|612.09|beans against the carefully express ideas wake quickly along the quickly unusual requests. blithely regular accounts cajole fluffily. enticingly pending theodolites haggle furiously fluffily pendi|
-102|3|1384|876.75|s wake quickly. carefully express deposits wake. silent, regular requests sleep slyly after the furiously ironic deposits. slyly unusual accounts cajole|
-102|5|9137|332.71|telets are final, special deposits. silently ironic deposits wake. pending, eve|
-102|7|9156|618.00| the unusual, ironic pinto beans. theodolites above the foxes sleep slyly car|
-102|9|6942|231.02|tions haggle against the furiously ironic deposits. quickly final asymptotes haggle carefully. regular sentiments might cajole silent courts. blithely bold frays |
-103|4|5913|905.88|e across the theodolites. carefully pending escapades haggle after the ironic theodolites. furiously pending ac|
-103|6|7742|414.42|bout the bold, regular deposits; blithely even accounts are regular, even platelets-- carefully express accounts nag slyly pen|
-103|8|5164|361.48|furiously thin deposits haggle blithely. blithely regular deposits above the carefully regular accounts are slyly carefully regular packages. silent, unusual|
-103|10|429|605.20| theodolites cajole quickly above the asymptotes-- slyly special packages can haggle carefully blithely final instructions. unusual, regular ideas|
-104|5|2368|946.39|packages. final packages wake enticingly. furiously regular asymptotes are always about the carefully regular deposits. slyly regular platelets cajole carefully. final pinto beans must pro|
-104|7|6110|15.57|ending requests. carefully regular deposits use blithely. bold, ironic deposits wake slyly carefully specia|
-104|9|6269|213.89| ideas against the final accounts wake slyly regular notornis. final deposits haggle a|
-104|1|3369|729.38|ong the foxes. foxes sleep quickly? carefully regular accounts sleep. special foxes boost quickl|
-105|6|4602|27.75|lar pearls cajole never carefully even depths. blithely regular ideas are quickly. unusual asymptotes nod carefully carefully regula|
-105|8|269|158.62| unusual courts eat pending excuses. ironic, ironic requests use. bravely |
-105|10|8855|810.86|. slyly special depths sleep. bold packages engage furiously bold packages. fluff|
-105|2|8519|904.17|ding to the furiously careful ideas. dogged theodolites wake fluffily among the slyly bold ideas. blithely brave warthogs above the slyly even theodolit|
-106|7|8649|732.15| slyly ironic instructions are. bold, final accounts cajole slyly ironic pinto beans. fluffily ironic accounts around the quickly special requests use blith|
-106|9|3144|779.68| final deposits along the slyly express theodolites cajole blithely after the ironic pinto beans. furiousl|
-106|1|1411|310.40|al accounts impress. even instructions engage furiously final foxes. silently final deposits wake qui|
-106|3|2297|281.98|inal packages. pending foxes sleep bold hockey players. courts across the blithely regular packages sleep fl|
-107|8|7249|168.03|he fluffily even packages. slyly regular dependencies nag fluffily above the final, unusual foxes. final, pending foxes affix. furiously final deposits cajole quickly blithely|
-107|10|4029|91.31|integrate. requests maintain quickly. carefully regular ideas about the instructions sle|
-107|2|4667|372.94|uctions sleep doggedly final requests. express, final theodolites cajole fluffily furiously silent deposits. blithely regular requests cajole quickly regular instruction|
-107|4|7912|474.77|fluffily across the final, bold accounts. quickly regular deposits grow carefully deposits. regular requests haggle blithely. slyly special platelets boost furiously care|
-108|9|4149|558.85| of the quickly pending theodolites. fluffily unusual frays wake accounts. carefully even foxes wake slyly. carefully special pinto beans |
-108|1|4898|241.47|lthily according to the fluffy deposits. furiously silent ideas according to the furiously special theodolites wake furiously a|
-108|3|5534|626.89|instructions. blithely regular instructions according to the permanent foxes cajole blithely slyly fluffy foxes. slyly regular asymptotes cajole foxes. slyly unusual deposits |
-108|5|3142|922.27|slyly express accounts are fluffily along the blithely unusual packages. pinto beans mold furiously. furiously bold instructions are blithely deposits. quickly special accounts detect t|
-109|10|524|275.19|st the permanently final requests. carefully pending pinto beans haggle quickly slyly ironic dolphins. blithely bold deposits wake blithely. even requests cajole foxes. iro|
-109|2|4470|992.21|ake furiously packages. blithely even foxes haggle furious|
-109|4|8176|936.60|d the express accounts. even theodolites wake quickly up the furiously bold foxes. furiously regular packages use regular, bold|
-109|6|7524|374.49|sual requests. final pinto beans cajole furiously. dependencies integrate slyly even excuses. blithely special requests wake around the slyly final pinto beans. furiously pending requests wake furi|
-110|1|2782|566.46|ly sly deposits. regular deposits are; theodolites haggle furiously bold foxes. final pinto beans wake blithely furiously ironic depths. unusual, regular platelets cajole. final, ironic|
-110|3|8914|183.47|yly even foxes. carefully regular requests doubt. pending, regular requests across the blithely final theodolites hag|
-110|5|1160|932.08|ake blithely. furiously ironic accounts sleep fluffily|
-110|7|4927|196.63|theodolites. instructions haggle even packages. waters impress furiously quickly express courts. furiously ironic depths nod quickly? ironic, ironic requests sle|
-111|2|1890|321.97|st foxes. daring depths use above the furiously special ideas. ironic foxes among the carefully final theodolites are alongside of the regular depths. e|
-111|5|9587|978.65|express instructions against the furiously final grouches haggle across the blithely ironic theodolites. slyly special dependencies in place of the carefully pending |
-111|8|8069|745.33|thely bold requests. unusual packages sleep. quickly pending ideas nag furiously to the carefully final p|
-111|1|2175|496.08|s around the daringly final pinto beans use furiously against the pi|
-112|3|8509|111.42|unts. carefully ironic instructions are final, bold foxes. bold excuses run according to the unusual packages. theodolites cajole carefully according to the fluffily pending deposits? sly|
-112|6|7652|783.52| carefully among the furiously final packages. regular instructions nag. slyly pending ideas hang fluffily blithely ironic instructions. ironic deposits haggle except the quickl|
-112|9|4835|913.75|ach slyly special dependencies. furiously ironic pinto beans sleep slyly pen|
-112|2|1211|815.88|l requests integrate furiously. quickly quiet packages are carefully regular accounts. regular packages eat quickly express, ironic sheaves. quickly dogged accounts o|
-113|4|9981|396.26|ithely express pains lose bravely fluffily pending foxes. blithely ironic sauternes cajole q|
-113|7|3804|860.68|ully about the carefully even accounts: thinly even foxes are carefully. |
-113|10|522|981.41| warthogs use quickly alongside of the furiously unusual requests. final deposits are blithely acro|
-113|3|4692|141.48| blithely unusual gifts snooze against the quickly ironic packages. regular packages across the carefully regular packages bo|
-114|5|7146|447.24|ideas will nag regular accounts! carefully final requests cajole furiously quickly final tithes. furiously express instructions a|
-114|8|3062|555.12|ts. furiously regular requests run carefully thin decoys. ironic platelets sleep alongside of the slyly silent deposits. reg|
-114|1|4519|382.87|nts. ironically express dolphins dazzle blithely. special instructions wake carefully along the ideas. quickly special dolphins sleep. furiously pendi|
-114|4|2113|570.79|o beans sleep among the ironic excuses. furiously even sheaves are. never regular instructions nod.|
-115|6|1817|82.84|uffily final accounts integrate furiously along the carefully busy excuses. slyly even asymptotes doubt quickly. fluffily thin theodoli|
-115|9|983|867.45|kly. requests nag after the blithely bold packages. express requests cajole theodolites. blithely express requests sleep after the furiously regular accounts. fluffily r|
-115|2|7781|861.93|lyly ironic pinto beans affix alongside of the furiously even ideas: quickly bold warhorses sle|
-115|5|3002|81.52|efully after the quickly regular deposits. daringly pending ideas sleep even ideas. silent, re|
-116|7|6580|705.50|iously. slyly regular requests detect slyly. carefully bold packages sleep furiously carefu|
-116|10|4975|413.86|tions. regular excuses detect. ideas haggle slyly about the slyly ironic courts. ironic foxes solve. ideas affix fluffily after the special, even dependencies. final platelets according|
-116|3|8679|866.56|aphs cajole blithely regular accounts. even packages doubt; bold instructions boost quickly. fluffi|
-116|6|5632|37.30|ccounts about the special packages nag across the carefu|
-117|8|5906|706.51|into beans sleep carefully blithely bold packages. even, bold instructions use across the carefully e|
-117|1|1986|322.08|eposits. special pinto beans use fluffily across the furiously regular pinto beans. furiously regular epitaphs nag fluffily packages. special accounts a|
-117|4|2577|761.86|riously. doggedly unusual ideas boost blithely blithely regula|
-117|7|4762|552.88| run furiously ironic accounts. slyly ironic deposits haggle slyly fluffy requests. flu|
-118|9|694|744.73|refully slow requests. requests against the special pac|
-118|2|6326|325.61| packages. express, final frays affix quickly above the final asymptotes. carefully regular requests doubt quickly f|
-118|5|7806|283.27| accounts affix carefully. regular, regular packages among the brave, pendin|
-118|8|4951|976.55|s orbits. even asymptotes above the instructions wake fluffily according to the sly, final excuses. express deposits across the blithely ironic depend|
-119|10|2307|473.64| blithely unusual dolphins boost busy, express ideas. regular requests use carefully furiously ironic deposits. carefully regular packages would sle|
-119|3|1452|676.92|ular instructions was slyly. furiously bold gifts boost f|
-119|6|4955|488.93|ias are along the express requests. fluffily pending ideas nag idly against the fluffily bold instructions? foxes cajole quickly. slyly special deposits haggle slyly e|
-119|9|583|782.47|yly pending requests-- carefully special instructions haggle carefully even instructions. blithely regular theodolites detect blithely final ideas. blithely ironic deposits among the sl|
-120|1|4976|201.21|inal, regular pinto beans haggle carefully! ironic ideas unwind among the slyly regular theodolites. regular platelets kindle blith|
-120|4|7744|365.79|l, special escapades! ideas sleep slyly instructions. carefully bold requests are. even accounts cajole. final accounts use slyly |
-120|7|5329|249.61|s cajole blithely. carefully bold requests believe blithely? brave accounts above the pending, dog|
-120|10|3102|566.34|ctions; realms beside the blithely final theodolites unwind blithely packages. regular dolphins sleep carefully-- carefully express accounts wake quickly. pending depths use never courts.|
-121|2|9741|147.45|ly according to the carefully regular asymptotes. silent excuses cajole carefully against the never silent instructions. furio|
-121|6|4246|850.42|usly final instructions. theodolites are according to the permanently ironic accounts. carefully pending accounts haggle about the pending instructio|
-121|10|7670|449.39|carefully daring packages. express packages use carefully about the quickly unusual packages. special ideas along |
-121|4|8709|655.22| detect carefully along the carefully even pinto beans. gifts haggle: ideas sleep ar|
-122|3|1019|451.29| blithely regular accounts. blithely final pains sleep besides the blithely final warhorses. furiously unusual requests haggle furiously|
-122|7|2490|637.28|efully special excuses grow slyly unusual packages. carefully quiet as|
-122|1|4957|650.84|quests. quickly bold requests nag across the furiously ironic accounts. ironically express instructions detect slyly carefully ironic requests. even, un|
-122|5|2083|739.25|counts. unusual requests alongside of the regular requests are carefully stealthy instructions? regular sauternes cajole. final theodolites breach carefully at the blithely final idea|
-123|4|9881|107.03|fully bold deposits detect slyly pending instructions. slyly special ideas detect blithely. slyly fluffy instructions hinder|
-123|8|5638|818.19|thely even pinto beans. furiously regular asymptotes affix furiously. regular, ironic tithes integrate quickly. blithely regular requests breach finally. decoys alon|
-123|2|2692|217.01|he ironic accounts nag fluffily after the bold, pending theodolites. blithely final ideas sleep carefully according to the blithely ironic foxes. regular requests are. furiousl|
-123|6|5311|149.65|eposits cajole according to the carefully pending packages. furiously final epitaphs solve alongside of the even requests|
-124|5|7102|901.98|ily accounts. furiously busy theodolites above the deposits thrash above the blithely final foxes. express instructions nod slyly furiously busy packages. special asymp|
-124|9|3969|908.64|l epitaphs. packages cajole among the furiously regular requests. closely|
-124|3|9295|882.54|s along the accounts poach quickly ironic deposits. even, final excuses thrash carefully about the express, special pains. carefully careful accounts breach slyly|
-124|7|9416|822.78|ously. theodolites affix around the slyly bold packages. even, ironic packages are carefully pains. furiously unusual requests sleep blith|
-125|6|2263|358.45|e. ironic, regular requests cajole fluffily along the even ideas. final ideas wake blithely. blithely bold |
-125|10|8276|668.65|nd the carefully express requests. slyly regular requests haggle. blithely unusual platelets solve fluffily fluffily regular|
-125|4|2600|455.70|ounts. thinly special accounts cajole carefully. even, special accounts after|
-125|8|5546|806.66| to the unusual courts are deposits! final, final pinto beans solve slyly. ironic accounts boost fluffily. furiously pending d|
-126|7|2647|221.89|lyly final pinto beans across the regular, even courts use slyly slyly pending braids! unusual requests along the furious|
-126|1|2373|194.38|fter the ideas. blithely daring sheaves print furiously among the blithely final packages. iron|
-126|5|1532|451.61|refully alongside of the quickly bold excuses. enticing, bold |
-126|9|5458|929.43|leep to the furiously special accounts. furiously final courts |
-127|8|7658|712.33|al pinto beans! slyly ironic excuses boost after the packages. express foxes integrate carefully. pending, regular theodolites |
-127|2|1467|237.98|regular accounts! quickly ironic packages haggle according to the accounts. carefully ironic |
-127|6|8281|3.14|ts above the furiously pending asymptotes cajole after the deposits. slyly ironi|
-127|10|8894|73.42|fter the sometimes special courts sleep about the slyly unusual reque|
-128|9|6982|425.29|ironic asymptotes. fluffily ironic packages use. ironic, regular ideas are in place of the quickly silent deposits. final, bold gifts across the ironic, regular pac|
-128|3|7602|224.49|xcuses. blithely unusual theodolites use slyly carefully even warthogs. slyly even dugouts haggle slyly final, express pinto beans. furiously bold packages thrash requests? slyly unusual packages |
-128|7|3766|947.16|arefully regular packages boost regularly. accounts are according to the blithely even dependencies. slyly silent accounts doubt slyl|
-128|1|7023|875.78| furiously quickly regular pinto beans. always special requests are. quickly regular deposits are furiously. slyly unusual theodolites haggle evenly; furiously special deposits wa|
-129|10|5721|129.69|ully express requests above the ironic, final requests cajole slyly along the quickly special packages. sl|
-129|4|7242|200.26|es across the furious escapades wake quickly slyly e|
-129|8|5299|330.59|final sentiments affix atop the silent foxes. busy pinto beans cajole. slyly final pinto beans haggle against the carefully expres|
-129|2|1968|27.22|ealthy, ironic deposits. slyly ironic pinto beans are blithely pinto beans. blithely ironic |
-130|1|4928|223.38|ths. slyly even theodolites detect according to the slyly final courts. carefully unusual deposits ar|
-130|5|6909|275.58|lly unusual accounts try to boost along the special packages. furiously bold requests x-ray blithely ironic waters. slyly unusual orbi|
-130|9|4850|442.81|ully regular deposits snooze. slyly silent foxes detect furiously furiously bold requests. slyly regular accounts breach. blithely bli|
-130|3|7387|883.99|aggle furiously. even ideas hinder deposits. even, final ideas are. unusual theodolites after the special, express foxes haggle carefully pending accou|
-131|2|3263|211.70|sits sleep quickly regular multipliers. slyly even platelets cajole after the furiously ironic deposits. slyly ironic requests should have to cajole: bl|
-131|7|125|861.84|l accounts grow quickly-- slyly ironic requests haggle? quickly express pinto bean|
-131|2|5138|572.43|grouches run with the carefully even packages. ironic, even deposits run slyly along the packages. special dependencies among the regular |
-131|7|8945|613.09| are carefully along the quickly final theodolites. packages after the quickly pending package|
-132|3|3092|687.29|y special decoys against the ideas affix against the sly|
-132|8|1904|925.73|the regular foxes wake ironic deposits. ironic, special requests use blithely instructions! final requests hang. blithely regular deposits haggle. ir|
-132|3|7441|357.06|ests. furiously unusual requests wake furiously. quickly unusual depos|
-132|8|5303|353.06|ep blithely after the sly accounts. slyly express dolphins cajole amon|
-133|4|5727|49.17|boost blithely across the ironic, regular instructions. packages use slyly unusual requests. bold accounts above the fu|
-133|9|404|478.18|ly ironic requests run instead of the blithely ironic accounts? regular ideas use fluffily: even, express packages sleep abov|
-133|4|4568|57.48|dolites. ironic accounts are blithely pinto beans. regular pinto beans haggle beneath|
-133|9|2813|277.26|s. pending, final accounts haggle blithely furiously pending deposits! carefully unusual attainments integrate. blithely bo|
-134|5|8879|848.14|lites. slyly final foxes after the bold requests cajole carefu|
-134|10|9013|102.99|pendencies. furiously express warthogs cajole furiously ironic, regular asymptotes. bold deposits boost among the furiously even theodolites. regular instructions integrate carefully |
-134|5|852|927.45| sleep unusual, express packages. unusual sentiments are furio|
-134|10|6270|388.28| to the furiously pending deposits nag along the slyly express asymptotes. slyly silent accounts shal|
-135|6|6940|465.82|ding foxes cajole. even dugouts haggle busily. fluffily pending packages about the express excuses boost slyly final packages. blithely express ideas cajole about the carefu|
-135|1|2443|9.83|atterns. pending, special deposits are furiously. express, regular deposits integrate quickly. unusual gifts cajole blithely stealthily pending deposit|
-135|6|7453|698.42|ven accounts. slyly final instructions nag slyly around the regular, unusual packages. slyly sp|
-135|1|2771|306.43|old deposits. furiously express instructions boost. pending dolphins use requests. slyly regular packages cajole quickly final ideas. pending, regular ideas nag carefully even, express pla|
-136|7|2237|548.19|ond the silent accounts haggle above the blithely regular packages|
-136|2|6068|806.19|structions. ironic theodolites haggle according to the final, daring pearls. carefully ironic somas are silently requests. express pa|
-136|7|8979|387.57|ans. express pinto beans wake carefully among the slyly ironic foxes: carefully final pinto beans haggle blithely. pending, final deposits promise furiously|
-136|2|9617|525.81| across the carefully pending warthogs. close, regular packages are quickly after the never ironic foxes. accounts sleep quickly along the furiously regular re|
-137|8|9057|302.26|slyly about the regular instructions. even, ironic theodolites use carefully around the even decoys. unusual, pending dolphin|
-137|3|4078|441.11|packages. blithely unusual sentiments should are. furiously regular accounts nag quickly carefully special asymptotes! idly ironic requests dazzle bold requests. carefully expres|
-137|8|467|371.85|ly special accounts detect carefully. furiously ironic deposits nag express packages. slyly quiet |
-137|3|7850|187.31|atelets sublate fluffily. enticingly unusual packages boost according to the blithely ironic foxes. pending requests mold sly|
-138|9|133|576.96|regular, final deposits maintain slyly even requests. regularly furious deposits use above the stealthy requests. ironic deposits are. carefully final frays are carefully. carefu|
-138|4|2535|885.35|lar deposits. courts sleep carefully. furiously express ideas boost furiously after the final, regular foxes. furiously bold deposits are. express accounts haggle blithely. |
-138|9|7907|119.83|epitaphs? quickly express foxes use pending accounts. special packages cajole blithely among the quickly unusual accounts? boldly ironic packages across the slyly ironic senti|
-138|4|967|309.03|pendencies integrate against the unusual pains. carefully unusual theodolites wake quickly across the deposits. blithely regular deposits alongside of the carefully regular deposits|
-139|10|2886|285.75|fully ironic requests according to the quickly final idea|
-139|5|9255|684.61|ickly furiously regular excuses. boldly express deposits sleep. ideas nag above the silent dependencies. slyly regular packages wake furiously. requests are carefully. quickly final fox|
-139|10|1042|972.23|gular, regular theodolites. regular asymptotes haggle carefully according to the permanently even deposits. slyly special account|
-139|5|3285|690.00|xpress pains. quickly regular ideas after the special, bold excuses wake furiously final ideas. slyly bold accounts nag packages. ironically regular|
-140|1|2379|501.05|of the silent, bold courts. slyly regular dependencies haggle. fluffily special deposits cajole carefully. quickly ironic depos|
-140|6|3533|781.45|ayers. carefully ironic pinto beans nod carefully furiously regular pinto beans. slyly ironic requests after the carefully regular packages are about the blithel|
-140|1|304|45.84|ing requests. carefully unusual foxes are final requests. slyly regular accounts wake permanently. quickly ironic theodolites hagg|
-140|6|7346|429.52| special pinto beans wake carefully unusual warthogs! furi|
-141|2|6776|293.63|fluffily unusual courts sleep. close pinto beans haggle quickly after the carefully ir|
-141|8|1660|139.18|egular accounts. enticingly bold theodolites eat slyly across the never ironic platelets. theodolites wake bli|
-141|4|7628|838.08|sly about the pinto beans. blithely ironic ideas sleep. foxes are quietly among the pinto beans. carefu|
-141|10|90|810.68|e doggedly regular ideas. foxes haggle slyly. slyly regular theodolites across the carefu|
-142|3|9219|897.49|thlessly special requests sleep blithely about the bold deposits. express, ironic instructions wake. final packages are blithely. deposits are carefully furiously even deposits. furiously regular a|
-142|9|13|334.33|are blithely blithely brave requests. slyly regular theodolites are furiously. blithely ironic dependencies haggle blithely. furiously unu|
-142|5|3076|860.55|gular requests about the pending packages wake furiously dogged accounts. th|
-142|1|3858|854.08|efully special deposits. blithely bold pinto beans haggle. slyly final ideas boost blithely. finally special requests mold along the blithely express packages. entic|
-143|4|7326|960.64|the slyly pending requests cajole quickly blithely regular platelets. even requests boost carefully. ironic, final instructions above the regular courts boost a|
-143|10|3923|741.01|le quickly furiously silent ideas. carefully regular requests ar|
-143|6|7152|772.24|fully furious accounts. final asymptotes cajole regular requests. carefully regular courts are quickly. slyly ironic ideas above the carefully regular requests wake|
-143|2|1952|199.37|l accounts are quickly after the unusual packages. regular accounts wake among the quickly even accounts. even, ironic|
-144|5|6295|457.37| pinto beans promise across the blithely bold packages. express, regular accounts play around the slyly silent deposits. specia|
-144|1|494|849.96|uriously ironic pearls wake idly furiously even pearls. foxes impress slyly busily express requests. carefully slow somas wake quick|
-144|7|1799|713.88|yly final requests. packages are. carefully daring accou|
-144|3|5427|361.83| foxes integrate carefully. deposits cajole fluffily. pending deposits kindle slyly carefully regular packages. even, thin accounts according to th|
-145|6|11|641.67| slyly regular packages are slyly carefully special dolphins. unusual braids use furiously about the final courts. slyly special|
-145|2|3838|568.91|ss, final asymptotes are. furiously express accounts run. furiously express dependencies eat carefully blithely ironic theodolites. closely ironic foxes among the silent asymptotes cajole|
-145|8|1344|422.60| dependencies. even patterns detect slyly after the ironic deposits. ironically even ideas wake slyly. even packages against the blithely express accounts haggle furiously carefully regular|
-145|4|4332|894.57|are carefully above the quickly silent deposits. evenly bold reque|
-146|7|2726|231.15|uriously after the fluffy accounts. furiously bold deposits cajole. requests might engage. quick accounts wake carefu|
-146|3|4628|123.91|ly across the dependencies. daringly ironic deposits are furiously; requests are. quickly regular accounts hang. carefu|
-146|9|5893|858.59|sual instructions believe. fluffily unusual warhorses nag. unusual dependencies sleep. slow sheaves haggle furiously. carefully ironic dependencies cajole slyly against the accounts. |
-146|5|9687|882.37|packages? ideas affix slyly even accounts: express requests wake slyly carefully special depths. ironic in|
-147|8|7442|939.14|sts against the furiously unusual instructions integrate ironic accounts. slyly final pinto beans sleep blithely carefully final asymptotes. slyly ironic warhorses befor|
-147|4|7647|102.19|refully regular orbits about the furiously express asymptotes haggle carefully according to the blithely regular ideas. blithely express excuses around the furiously |
-147|10|1596|466.37|ole. slyly final packages do haggle quickly. unusual accounts across the pending pinto beans was furiously according to the furiously brave deposits. pending deposits along the regular request|
-147|6|4235|235.91|ar pinto beans. regular instructions sleep carefully after the furiously blithe accounts. slowly pending ideas could nag careful, even accounts. attainments use slyly quickly|
-148|9|8007|177.40|final requests-- slyly regular theodolites haggle carefully across the blithely final dependencies. slyly even requests about the carefully even accounts sleep |
-148|5|1904|774.56|y even pinto beans. fluffily ironic packages sleep slyly. permanently brave requests boost furiously packages. boldly ironic deposits across the carefully bold pinto b|
-148|1|5393|264.09|ses. slyly pending packages haggle fluffily fluffily even instructions. fluffily regular packages are carefully about the furiously even asymptot|
-148|7|2957|250.98|. requests boost above the bold, special foxes. blithely regular platelets serve blithely slyly final ideas. carefully special idea|
-149|10|959|679.10|y to sleep carefully ironic requests. even, regular dependencies haggle. slyly unusual foxes haggle along the instructions. quickly even accounts nag furiously special accoun|
-149|6|7283|201.03|usly bold instructions. regular, final deposits alongside of the furiously ironic platelets are slyly even instructions. carefully bold accounts are. ironic, regular requests nag furious|
-149|2|7392|266.53|es detect along the regular instructions. bold ideas boost slyly. quickly unusual accounts doubt. carefully even foxes thrash slyly silent, ironic dolphins: Tiresias must wake |
-149|8|4104|312.37|ly express excuses. bold pinto beans boost blithely across the bold, final pinto beans. final deposits haggle carefully from the|
-150|1|8091|524.71|sleep furiously furiously bold warthogs. furiously express gifts according to the regularly silent sentiments boost within the f|
-150|7|2721|814.79|dependencies. special accounts wake carefully furiously regular accounts. regular accounts haggle along the express instructions. express pinto beans along the express, bold deposits run |
-150|3|3172|33.71| about the silent ideas. fluffily final requests impress. slyly final requests wake carefully about the slyly express foxes. slyly regular warthogs sleep fur|
-150|9|1640|327.34|slyly even deposits alongside of the furiously even accounts detect boldly quickly regular accounts. final accounts kindle carefu|
-151|2|391|281.90|dolites. boldly ironic packages cajole fluffily regular instructions. regular, ironic accounts are blithely. ironic accounts are alongside of th|
-151|9|253|840.06| haggle. somas are carefully. slyly regular requests sleep blithely atop the thinly express deposits. stealthily express packages cajole daringly express requests. carefully special requests after t|
-151|6|1484|71.68|riously final requests sleep according to the regular deposits? slyly ironic ideas wake furiously. quickly even theodolites use fluffily. regular, unusual courts according to the regular |
-151|3|9417|244.06| foxes along the hockey players are slyly about the blithely even packages. unusu|
-152|3|1396|164.60|d the instructions. carefully pending accounts haggle fluffily ruthless instruc|
-152|10|2653|432.12|carefully pending requests. quickly ironic requests haggle carefully special theodolites. blithely special requests aga|
-152|7|3599|77.38| quick excuses according to the pending, ironic requests snooze carefully slyly even foxes: slyly regular instru|
-152|4|1283|142.73|olites above the furiously even requests dazzle blithely against the busy, regular pains. furiously blit|
-153|4|4695|539.86|atelets. dolphins haggle blithely carefully ironic deposits? express, final accounts wake about the requests. even deposits should use quickly. regular,|
-153|1|8464|680.14|cording to the final instructions. carefully fluffy asymptotes haggle carefully |
-153|8|2916|685.52|ully express deposits boost daringly packages. furiously ironic accounts sleep slyly ironic instructions. special deposits integrate blithely. |
-153|5|6397|285.92|furiously special platelets haggle quickly even, bold pinto beans. blithely close pinto beans boost around the furiously regular packages. quickly express requests cajole.|
-154|5|3961|474.19|quickly pending requests nag express dependencies. furiously unusual requests about the regular, pending packages wake according to the ironic packages! theodolites wake about the unusual, regula|
-154|2|3231|829.29|ins along the packages use carefully requests. furiously unusual packages kindle fluffily quick|
-154|9|7315|960.19|uickly regular dolphins ought to believe among the q|
-154|6|1682|160.31|refully except the sly, even requests. careful ideas haggle after the slyly regular foxes: slyly special packages at the slyly regular deposits wake carefully theod|
-155|6|2893|222.02|. bold packages are toward the silent pinto beans. quickly fin|
-155|3|7077|413.24|lar instructions against the furiously unusual instructions breach furiously for the bold, even platelets. ironic accounts must have to are quickly across the |
-155|10|3029|413.02|the carefully ironic asymptotes. even, unusual accounts sleep furiously about the blithely regular ideas. quickly re|
-155|7|977|751.45|quickly silent deposits doubt above the unusual instructions. special r|
-156|7|4755|453.69|e of the excuses. slyly even theodolites boost about the slyly final foxes? requests after the carefully regular platelets sleep above the furiously pending d|
-156|4|7228|994.19|odolites wake quickly slyly final dinos. requests cajole slyly along the instructions. furiously regular deposits cajole slyly blithely ironic instructions. instructions wake. blithely even pinto be|
-156|1|3043|252.66|lithely express, silent decoys. bold, special requests along the carefully even accounts|
-156|8|3191|9.87|ar instructions-- quickly special deposits wake fluffily about the blithely e|
-157|8|5414|369.44|ong the carefully bold ideas boost across the regular, ironic requests. ironic fo|
-157|5|763|568.46|cial packages boost along the ideas. packages sleep slyly express packages. ironic, bold requests|
-157|2|3718|901.53|, ironic foxes. blithely even foxes wake about the carefully special req|
-157|9|3400|288.41|encies integrate carefully even accounts. regular, regular sentiments are against the slyly regular deposits-- even, even ideas use inside the carefull|
-158|9|2845|408.72|y. slyly final pinto beans believe fluffily pending, regular deposits. final, unusual ideas according to t|
-158|6|8715|452.31|instructions along the ironic, final requests are fluffily regular deposits. regular deposits cajole carefully about the silent instructions|
-158|3|4465|837.16| wake carefully in place of the furiously express deposits. slyly regular instructions engage. fluffily f|
-158|10|4251|431.90|etly special accounts boost carefully final multipliers. carefu|
-159|10|9200|356.66|ccording to the furiously final accounts. carefully fluffy foxes wake idly against the quickly final requests. evenly even pinto beans must have to are against the carefully regular de|
-159|7|3585|629.29|g platelets wake furiously slyly bold deposits? slyly regular accounts across the stealthily ironic accounts cajole along the special, ironic pearls. fluffily regular pinto|
-159|4|6085|171.40|ross the blithely special deposits are quickly carefully ironic Tiresias. quickly regular deposits was furiously. unusual accounts affix blithely about the regular deposits. asymptotes ab|
-159|1|3717|790.87|y blithe dependencies. final accounts haggle furiously. even, special asymptotes|
-160|1|2434|525.73|lithely. furiously silent theodolites after the ca|
-160|8|8324|999.93|ly final instructions. closely final deposits nag furiously alongside of the furiously dogged theodolites. blithely unusual theodolites are furi|
-160|5|6034|733.59| furiously against the final instructions. silent accounts sleep blithely after the boldly final requests. ex|
-160|2|6872|872.20|ions are carefully. carefully express foxes nag slyly before the carefully final excuses. accounts after the furiously ironic packages are furio|
-161|2|9365|790.03|scapades. packages use. slyly final accounts haggle across the quickly final th|
-161|10|8421|394.05|cial ideas. ironic instructions eat blithely slyly special packages. furiously final packages alongside of the furiously final instructions boost carefully against the quickly |
-161|8|9679|688.47|ns. blithely express requests sleep slyly foxes. blithely unusual ideas |
-161|6|679|893.72| the fluffily final requests. ironic, pending epitaphs affix slyly. qui|
-162|3|315|923.04| ideas. carefully final dugouts will have to wake quickly regular asymptotes. express grouches unwind carefully after the regula|
-162|1|2604|104.20|usly regular excuses. silent, even sheaves are according to the regular requests. packages grow blithely slyly regular accounts. ca|
-162|9|7014|236.07|cording to the stealthily fluffy theodolites. carefully unusual excuses around the regular deposits cajole slyly amo|
-162|7|4381|824.36|as across the furiously ironic notornis print blithely alongside of the final, pending deposits. fluffily express deposits slee|
-163|4|9241|955.81|cial dolphins. furiously bold foxes could have to use. never sly accounts cajole fluffily about the unusual, special pinto beans. pending, even requests around the quickly special deposits use f|
-163|2|3427|499.51|ithely bold packages integrate slyly quiet pinto beans. carefully even deposits boost slyly about the furiously fluffy packages. evenly regular dependencies wa|
-163|10|5323|920.75|sly even theodolites against the carefully bold packages wake final pinto beans. furiously pending deposits dazzle furiously. blithely exp|
-163|8|9676|573.48|ending accounts haggle blithely ironic, even packages. carefully pending packages wake carefully across the ruthlessly pending accounts! pinto beans wake. slyly final deposits boost slyly. fluffily|
-164|5|1295|341.95| bold instructions cajole slyly ironic deposits. quickly ironic foxes are carefully final, bold theodolites. ironic deposi|
-164|3|2134|84.02|ns believe. carefully express theodolites impress. carefully fina|
-164|1|3245|814.67|brave accounts cajole according to the final platelets. furiously final dolphins across the furi|
-164|9|3028|64.89|fully furiously regular requests. furiously bold orbits serve about the regular packages? carefully final deposits p|
-165|6|4424|943.82|ular requests. regular accounts cajole against the blithely ironic deposits. blithely even packages cajole. furiously final deposits cajole. thinly pending deposits hagg|
-165|4|5534|717.83| quickly regular deposits above the fluffily thin deposits haggle furiously against the quickly final depend|
-165|2|3780|730.28| furiously quickly regular foxes. pending requests engage evenly blithel|
-165|10|6114|210.84|foxes. foxes haggle. dolphins use carefully according to the fluffily regular packages. blithely special accounts according to the slyly final frets breach blithely after the care|
-166|7|6527|309.00|lly. dependencies haggle carefully at the slyly special packages. regular, final packages|
-166|5|6508|714.49|y express deposits cajole furiously above the carefully even theod|
-166|3|9364|581.52|pinto beans. pinto beans cajole furiously carefully special requests-- quickly |
-166|1|6713|631.58| sleep carefully. quickly even deposits run carefully fluffily ironic orbits. ironic deposits wake furiously. close sheaves along the special packages sleep carefully special instr|
-167|8|4933|666.70|ular deposits among the even dolphins are quickly express accounts. final, ironic theodolites cajole closely. th|
-167|6|5789|524.27| are furiously final, even dugouts. ironic, regular packages nag fu|
-167|4|4756|336.75|es are carefully along the carefully express tithes. furiously even deposits cajole slyly slyly regular deposits. bold excuses about the carefully ironic requests sleep blithely instructions|
-167|2|6748|704.97|t the silent ideas are blithely carefully even packages; blithely|
-168|9|347|394.83|hely blithely final theodolites. blithely final deposits among the quickly even ideas haggle about the blithely bold d|
-168|7|1281|771.90|, pending packages. ironic pinto beans use carefully. fluffily bold deposits|
-168|5|9089|508.37|ests are always. regular ideas sleep fluffily; special, express instructions cajole slowly. pending platelets boost furiously against the bold, even instructions. bold instructi|
-168|3|7519|963.43|requests above the quickly regular deposits use carefully aft|
-169|10|6914|619.53|uickly along the dependencies. furiously pending notornis cajole at the carefully special attainments. carefully ironic packages impress slyly care|
-169|8|6589|947.03|gside of the quickly regular asymptotes. quickly even theodolites against the theodolites promise express requests. ironic accounts wake careful|
-169|6|6731|713.35| the quickly special excuses wake blithely alongside of the carefully silent accounts. regular dolphin|
-169|4|7691|476.19|slyly alongside of the warthogs. fluffily even instructions poach under the slyly pending packages. blithely silent deposits use across the fur|
-170|1|7516|581.65| pinto beans. unusual ideas was fluffily. excuses cajole carefully final dependencies. platelets nag quickly according to the furiously ironic requests. carefully regular dependenci|
-170|9|838|667.16|orges do sleep furiously. fluffily furious requests among the final requests sleep after the slyly bold ideas? regular pinto beans might ha|
-170|7|6498|251.19| fluffily regular accounts integrate. blithely even packages cajole fluffily. furiously ironic excuses haggle by the finally final requ|
-170|5|6593|202.07|ep blithely final packages. quickly bold pains cajole carefully across the somet|
-171|2|8217|859.60|ress deposits. carefully special requests are furiously final requests. accounts cajole carefully blith|
-171|1|2311|864.96|s are along the blithely final deposits. regular asymptotes nag slyly against the requests. accounts cajole carefully carefully |
-171|10|8561|22.69|y close ideas are quickly silently regular packages. even, silent requests wake against the slyly special dependencies; regular accounts sleep doggedly furiously final pinto beans. slyly unusual pac|
-171|9|7589|935.29|s above the theodolites wake slyly along the carefully unusual dependencies. carefully express theodolites a|
-172|3|9799|184.96|ts. slyly even asymptotes nag blithely regular accounts. final platelets cajole furiously slyly bold packages. ironic accounts sleep slyly. pendi|
-172|2|8333|920.74|ronic foxes. quickly unusual accounts cajole blithely. blithely bold deposits cajole. blithely close pinto beans cajole requests. quickly express excuses around the quickly even deposits nag agai|
-172|1|3589|437.86|posits should have to boost furiously near the unusual ideas. final packages cajole blithely. carefully final deposits boost carefully. carefully special attainments boost quickly af|
-172|10|1661|687.13|y among the slyly even requests. ideas according to the slyly pending dinos print quickly slyly ironic foxes. pending, even excuses dazzle car|
-173|4|2536|353.84|ons-- final, silent dependencies sleep across the special, special excuses. furiously even accounts must have to mold after the ironic accounts. reque|
-173|3|8307|70.22|alongside of the furiously even packages. furiously final requests snooze blithely alongside of the carefull|
-173|2|6050|683.78|e after the slyly regular ideas. unusual pinto beans cajole even asymptotes-- silent, stealthy requests after the even accounts haggle blithely regular instructions. slyly ev|
-173|1|6162|877.84|es. slyly bold requests after the blithely regular dependencies cajole slyly even ideas. unusual deposits integrate about the final somas. |
-174|5|2103|681.95|sual, express requests wake furiously ruthless, final accounts. carefully ironic somas dazzle furiously. unusual asymptotes sleep-- patterns about the furiousl|
-174|4|6795|143.48|regular theodolites. special accounts integrate across the carefully ironic Tiresias. blithely even platelets detect. foxes about t|
-174|3|111|135.46| express packages-- quickly unusual courts lose carefully requests. bold accounts solve about the theodolites; pinto beans use. ironic foxes|
-174|2|8404|126.20|nding accounts mold furiously. slyly ironic foxes boost express sheaves. daringly final packages along the stealthy dependencies are blithely ironic requests. furiously pending pin|
-175|6|5515|487.68|ages sleep against the Tiresias. slyly pending packages print slyly above the evenly ironic dolphins. furiously ironic packages use f|
-175|5|7522|784.93| affix. quickly final theodolites haggle furiously after the slowly even pinto beans. furiously final packages use slyly. slyly regular reque|
-175|4|8501|706.61|int above the instructions. furiously regular requests integrate blithely according to the instructions. slyly pending foxes are asymptotes. slyly ruthless accounts wake. r|
-175|3|9456|978.56| regular packages. carefully ironic packages use. blithely ironic accounts among the pending, |
-176|7|7180|179.09|riously final requests. accounts doubt blithely regular somas. slyly even platelets are. theodolites across |
-176|6|3589|157.38|inal excuses. express deposits haggle carefully even deposits. carefully unusual requests haggle along the fluffily bold deposits. even, final requests affix. furi|
-176|5|5407|947.51|ending accounts eat carefully instructions. carefully pending packages detect slyly express accounts. foxes wake fluffily across th|
-176|4|1783|861.63|g the carefully special platelets. dogged, ironic asymptotes wake requests. regular excus|
-177|8|1239|44.75|requests use furiously regular, final requests. regular requests on the pending, ironic deposits use slyly among the excuses. carefully regular sheaves are.|
-177|7|4349|63.36|osits sleep among the fluffily unusual instructions. ironic dolphins cajole. furiously bold deposits sleep carefully. even, unusual accounts|
-177|6|9872|252.42|sual platelets. bold foxes affix furiously. pending, pending accounts lose furiously. pending platelets along the unusual, even foxes wake regular, even theo|
-177|5|4727|859.82|es are. slyly ironic packages haggle around the slyly bold deposits. bold foxes haggle blithely. f|
-178|9|4231|558.56|deposits. patterns use against the furiously unusual accounts. accounts wake carefully above the careful|
-178|8|1919|362.26| ironic dependencies. blithely regular packages detect fluffily special theodolites. regular instructions poach-- ironic deposits along the final requests |
-178|7|6836|864.93|y. ideas integrate regular pinto beans. special foxes wake above the slyly ironic asymptotes. quickly ironic ideas sleep. silent dependencies against the slyly bold packa|
-178|6|6922|475.18| regular patterns. fluffily express accounts about the furiously bold deposits cajole slyly about the furiously silent foxe|
-179|10|6956|444.38|g the furiously careful excuses haggle quickly thinly special Tiresias. furiously express foxes after the quickly regular deposits sleep ironic packages|
-179|9|1954|372.75|even dependencies print carefully. deposits boost blithely about the ironic, ironic accounts. express, regular deposits are. bli|
-179|8|2710|277.15|d the frets. pending packages doze quickly across the furiously regular deposits. pending, even deposits impress ironic ideas. quickly regular r|
-179|7|4776|8.39|sly special pinto beans. pinto beans cajole. carefully unusual ideas around the silent accounts are blithely carefully ev|
-180|1|2467|440.25| instructions affix. regular packages cajole quickly. carefully express asymptotes use furiously around the pendin|
-180|10|1108|934.59|hinly after the regular, unusual asymptotes! carefully regular theodolites sublate. regular, ironic deposits against the regular pinto beans nag ca|
-180|9|724|426.16|e, regular accounts. furiously final ideas are furiously above the bold, silent asymptotes. sly instructions are carefully quickly final sentiments. furiously ironic foxes cajole bold, exp|
-180|8|5899|864.83|hin the carefully furious pinto beans. furiously ironic pinto beans use slyly above the even instructio|
-181|2|2416|844.44|ully. theodolites throughout the blithely unusual pinto bea|
-181|2|3242|886.53| express ideas nag carefully brave accounts. slyly express deposits would affix. final, special requests against the slyl|
-181|2|215|938.29| accounts boost furiously furiously blithe theodolites. slyly bold requests unwind special, unusual requests. furious ideas boost quickly pending |
-181|2|1122|657.25|lyly fluffily pending foxes. fluffily ironic pains haggle. thinly regular requests against the deposits affix after the never ev|
-182|3|9699|535.27|ound the furiously regular foxes. pending requests dazzle along |
-182|3|960|519.36|arefully pending dependencies are always slyly unusual pin|
-182|3|6243|741.46|accounts are slyly. furiously ironic requests haggle. express, special instructions against the ironic theodolites use s|
-182|3|6146|365.00|s. blithely express theodolites sleep blithely alongside of the requests?|
-183|4|30|875.44|slyly. furiously regular instructions cajole slyly about the pending, final theodolites. blithely final deposits cajole fluffily alo|
-183|4|4482|424.86|es. depths affix fluffily. bold instructions haggle. ruthless instructions must have to boost|
-183|4|8707|884.26|posits wake. blithely pending requests nag furiously alongside of the p|
-183|4|333|678.16|ost final, final theodolites. slyly bold foxes dazzle carefully furiously regular accounts. regular, sly instructions about the furiously regular excuses nag blithely abou|
-184|5|7069|449.45|nal ideas. blithely final ideas haggle against the pinto beans. qu|
-184|5|9193|576.88|uickly quick dependencies could detect furiously. final packages p|
-184|5|6400|551.90|ss dependencies. quickly even pinto beans are. express accounts a|
-184|5|831|186.84|kages cajole carefully furiously ironic instructions. deposits use bl|
-185|6|1475|538.58|unts hinder slyly. quickly express ideas sleep carefully |
-185|6|6244|213.04|ly unusual decoys are furiously quickly regular packages. bold, ironic foxes cajole fluffily around|
-185|6|7245|426.74|sleep blithely alongside of the regular excuses. even, regular|
-185|6|8014|510.23|lithely even ideas. regular platelets wake carefully ironic, special instructions! final pearls above the fluffily quiet ideas use furiously about the |
-186|7|1095|252.84|. carefully regular pinto beans according to the blithely close asymptotes haggle carefully special requests. packages cajole up the furi|
-186|7|1945|18.75|nic foxes boost carefully careful packages: express, fluffy dolphins nag quickly ironic packages. slyly bold requests nag amon|
-186|7|8838|729.42|ing asymptotes. enticingly regular theodolites mai|
-186|7|7898|812.37|ctions sleep silently carefully bold platelets. furiously ironic dependencies boost. regular de|
-187|8|8656|238.66|tes use along the even foxes? final foxes haggle pinto beans. slyly ironic theodolites are according to the deposits. furiously pending reques|
-187|8|4945|316.64|eposits boost quickly bold requests. furiously regular ideas boost boldly. special, express dependencies are fluffily slyly reg|
-187|8|3183|362.75|t the bold platelets. fluffily express platelets cajole fluffily along the always bold requests. blith|
-187|8|7440|989.71|e slyly against the slyly regular pinto beans. requests haggle carefully around the asymptotes. regular, regular asymptotes use furiously some|
-188|9|4835|771.95|pains are fluffily about the fluffily pending asymptot|
-188|9|2620|331.70|elets nag slyly regular pinto beans. slyly even dugouts above the blithely unusual theodolites su|
-188|9|730|713.62|nag against the final accounts. blithely pending attainments lose. silent requests wake quickly. careful|
-188|9|5430|920.20|uriously. special, regular instructions sleep along the accounts. quickly even foxes across the regular theodolites hang u|
-189|10|1305|392.50|packages. regular, unusual accounts lose furiously fluffily regular platelets. requests sleep carefully dependenc|
-189|10|8777|573.22|beans cajole slyly ironic requests. requests are quickly unusual, even packages. ironic frays haggle. blithely pending requests nod slyly. express, silent requests against the slyly unusual |
-189|10|6369|946.07|ts hinder slyly regular, unusual foxes. final sentiments use above the slyly r|
-189|10|2505|593.23| the deposits. special deposits sleep-- furiously regular sauternes solve furiously across the furiously regular pack|
-190|1|535|621.53|unts must have to haggle; slyly ironic accounts affix slyly alongside of the carefully even accounts. furious deposits haggle quietly among the packages. blithely |
-190|1|5845|608.91| haggle along the carefully unusual pinto beans. quickly final accounts sleep a|
-190|1|4579|396.60|inal, final foxes. regular, even deposits wake blithely! silent, regular packages integrate according to the slyly regular deposits. ironic, ironic notornis ha|
-190|1|2861|458.00|s cajole slyly across the daring, final pinto beans. carefully quiet requests affix along the a|
-191|2|8310|521.06|the slowly regular deposits. special accounts along the quickly unusual|
-191|3|1693|464.46|y. slyly unusual waters across the special pinto beans nag blithely according to the busy deposits. carefully regular accounts are against the regular accounts; perman|
-191|4|597|126.96|ly final accounts should have to boost above the doggedly express pinto beans. blithely regular packages cajole furiously bold requests. fluf|
-191|5|9673|119.41|press deposits kindle theodolites! slyly final dependencies against the blithely final packages sleep slyly regular requests. theodolites cajole furiously quickly bold a|
-192|3|606|198.69|inal platelets integrate regular accounts. accounts wake ironic, silent accounts. slyly unusual accounts kindle carefully-|
-192|4|2656|916.16|uickly. slyly bold ideas affix special, close theodolites. ironic, pending requests use carefully. blithely regular |
-192|5|1811|359.59|ly carefully special asymptotes. furiously pending instructions haggle blithely bravely pending requests. carefully f|
-192|6|8305|861.23|s against the carefully regular foxes haggle fluffily across the pending accounts. blithely final packages sleep after the furiously ironic theodolites. quickly bold r|
-193|4|6184|335.98| quickly bold deposits cajole furiously ruthless courts. carefully|
-193|5|4762|606.19|ns sleep against the furiously regular asymptotes. carefully even asymptotes across the daringly final packages sleep fluf|
-193|6|385|571.71|ons. slyly ironic deposits wake furiously ironic, unus|
-193|7|9791|478.52|quests. carefully even requests use regular excuses. pending accounts are. furiously even pinto beans haggle furi|
-194|5|4289|662.17|ic Tiresias serve along the ironic, express accounts. quickly final requests are slyly among the carefully special requests. accounts boost.|
-194|6|377|430.21|efully instead of the special ideas. fluffily unusual asymptotes cajole blithely after the regular ideas. final accounts along the silent ex|
-194|7|5294|913.46|indle fluffily despite the carefully silent instructions. furiously regular hockey players cajole slyly unusual accounts. furiously regular realms cajole furiously according to the e|
-194|8|7890|79.40|ctions sleep. carefully unusual theodolites should wake furiously across the deposits-- furiously bold excuses boost furiously carefully slow accounts. boldly final accounts grow. regular excuse|
-195|6|9985|20.39|efully among the fluffily even accounts! requests are slyly ag|
-195|7|2947|271.39|yly regular requests cajole carefully. carefully fina|
-195|8|319|102.58|ts. ironic foxes wake carefully slyly special pinto beans. blithely silent excuses hinder blithely quietly regular accounts. quickly careful foxes maintain slyly above the slyly express fo|
-195|9|2803|992.27|xes according to the regular foxes wake furiously final theodolites. furiously regular packages sleep slyly express theodolites. slyly thin instructions sleep r|
-196|7|3843|859.90|l platelets use blithely alongside of the enticingly final deposits. fluffily final requests boost furiously ag|
-196|8|2515|966.01|final theodolites. fluffily even deposits are against the|
-196|9|4778|37.61|fully final requests cajole fluffily across the furiously ironic accounts. qui|
-196|10|1068|928.25| cajole about the blithely regular ideas. final ideas hin|
-197|8|9678|753.88|ously. slyly stealthy requests use alongside of the express, unusual packages. final deposits wake. carefully unusual theodolites cajole slyly about the regular foxes. slyly iron|
-197|9|2631|279.05|e blithely. quickly final deposits wake fluffily excuses. even, unusual deposits x-ray among the final accounts. even ideas above the blithely ironic requests sleep furiously slyly final inst|
-197|10|7598|845.51|lets according to the regular deposits wake furiously about the carefully daring theodolites. blithely express dolphins poach after th|
-197|1|8950|897.33|ideas. requests wake above the blithely unusual deposits. slyly regular |
-198|9|6878|587.41|y even accounts poach carefully about the asymptotes. deposits haggle slyly. finally unusual requests run silently regular, bold packages: instructions after the |
-198|10|6493|673.99|y express excuses use blithely among the pending accounts. stealthy ide|
-198|1|8410|166.93|kages. blithely final theodolites dazzle fluffily. accounts boost furiously. furiously unu|
-198|2|6190|697.10|beans nag fluffily about the asymptotes. slyly bold escapades haggle quickly. fluffily special requests haggle above the ironic,|
-199|10|9343|79.70|ending accounts nag across the instructions. carefully express packages over the blithely even pac|
-199|1|8199|46.52|oost slyly. ironic platelets sleep blithely about the slyly silent foxes. furiously even pl|
-199|2|2742|890.63| the special deposits? carefully final deposits about the carefully regular sauternes |
-199|3|7167|884.56|onic platelets use carefully along the slowly stealthy ideas. slyly dogged instructions are quickly above the slyly u|
-200|1|3120|776.41|ntly final packages kindle furiously blithely ironic accounts. carefully final packages according to the carefully |
-200|2|5392|242.52|y unusual ideas. ruthlessly express asymptotes cajole. regular theodolites are. carefully silent deposits poach carefully across the fluffily even theodolites. carefully express realms hag|
-200|3|9408|307.79|oxes! fluffily regular requests use against the unusual, slow ideas. ironic accounts doze b|
-200|4|331|466.07| slyly even requests. fluffily final packages boost carefully express instructions. slyly regular forges are blithely unusual, regular |
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl
deleted file mode 100644
index c5ebb63..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/region.tbl
+++ /dev/null
@@ -1,5 +0,0 @@
-0|AFRICA|lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to |
-1|AMERICA|hs use ironic, even requests. s|
-2|ASIA|ges. thinly even pinto beans ca|
-3|EUROPE|ly final courts cajole furiously final excuse|
-4|MIDDLE EAST|uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl b/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl
deleted file mode 100644
index d9c0e9f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/data/supplier.tbl
+++ /dev/null
@@ -1,10 +0,0 @@
-1|Supplier#000000001| N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ|17|27-918-335-1736|5755.94|each slyly above the careful|
-2|Supplier#000000002|89eJ5ksX3ImxJQBvxObC,|5|15-679-861-2259|4032.68| slyly bold instructions. idle dependen|
-3|Supplier#000000003|q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3|1|11-383-516-1199|4192.40|blithely silent requests after the express dependencies are sl|
-4|Supplier#000000004|Bk7ah4CK8SYQTepEmvMkkgMwg|15|25-843-787-7479|4641.08|riously even requests above the exp|
-5|Supplier#000000005|Gcdm2rJRzl5qlTVzc|11|21-151-690-3663|-283.84|. slyly regular pinto bea|
-6|Supplier#000000006|tQxuVm7s7CnK|14|24-696-997-4969|1365.79|final accounts. regular dolphins use against the furiously ironic decoys. |
-7|Supplier#000000007|s,4TicNGB4uO6PaSqNBUq|23|33-990-965-2201|6820.35|s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit|
-8|Supplier#000000008|9Sq4bBH2FQEmaFOocY45sRTxo6yuoG|17|27-498-742-3860|7627.85|al pinto beans. asymptotes haggl|
-9|Supplier#000000009|1KhUgZegwM3ua7dsYmekYBsK|10|20-403-398-8662|5302.37|s. unusual, even requests along the furiously regular pac|
-10|Supplier#000000010|Saygah3gYWMp72i PY|24|34-852-489-8585|3891.91|ing waters. regular requests ar|
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml
deleted file mode 100644
index 47dfac5..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-    <name>fs.default.name</name>
-    <value>hdfs://127.0.0.1:31888</value>
-</property>
-<property>
-    <name>hadoop.tmp.dir</name>
-    <value>/tmp/hadoop</value>
-</property>
-
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak
deleted file mode 100644
index 2e248d4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/core-site.xml.bak
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-    <name>fs.default.name</name>
-    <value>hdfs://localhost:31888</value>
-</property>
-<property>
-    <name>hadoop.tmp.dir</name>
-    <value>/tmp/hadoop</value>
-</property>
-
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml
deleted file mode 100644
index 842e7ab..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-   <name>dfs.replication</name>
-   <value>2</value>
-</property>
-
-<property>
-	<name>dfs.block.size</name>
-	<value>65536</value>
-</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak
deleted file mode 100644
index e3c082b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/hdfs-site.xml.bak
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-<property>
-   <name>dfs.replication</name>
-   <value>2</value>
-</property>
-
-<property>
-	<name>dfs.block.size</name>
-	<value>32768</value>
-</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml
deleted file mode 100644
index 1b9a4d6..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-  <property>
-    <name>mapred.job.tracker</name>
-    <value>localhost:29007</value>
-  </property>
-  <property>
-     <name>mapred.tasktracker.map.tasks.maximum</name>
-     <value>20</value>
-  </property>
-   <property>
-      <name>mapred.tasktracker.reduce.tasks.maximum</name>
-      <value>20</value>
-   </property>
-   <property>
-      <name>mapred.min.split.size</name>
-      <value>65536</value>
-   </property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak b/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak
deleted file mode 100644
index 7a51b86..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hadoop/conf/mapred-site.xml.bak
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<!-- Put site-specific property overrides in this file. -->
-
-<configuration>
-
-  <property>
-    <name>mapred.job.tracker</name>
-    <value>localhost:29007</value>
-  </property>
-  <property>
-     <name>mapred.tasktracker.map.tasks.maximum</name>
-     <value>20</value>
-  </property>
-   <property>
-      <name>mapred.tasktracker.reduce.tasks.maximum</name>
-      <value>20</value>
-   </property>
-   <property>
-      <name>mapred.min.split.size</name>
-      <value>32768</value>
-   </property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml b/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml
deleted file mode 100644
index eef4071..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/hive-default.xml
+++ /dev/null
@@ -1,853 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
-
-<configuration>
-
-	<!-- Hive Configuration can either be stored in this file or in the hadoop 
-		configuration files -->
-	<!-- that are implied by Hadoop setup variables. -->
-	<!-- Aside from Hadoop setup variables - this file is provided as a convenience 
-		so that Hive -->
-	<!-- users do not have to edit hadoop configuration files (that may be managed 
-		as a centralized -->
-	<!-- resource). -->
-
-	<!-- Hive Execution Parameters -->
-	<property>
-		<name>mapred.reduce.tasks</name>
-		<value>-1</value>
-		<description>The default number of reduce tasks per job. Typically set
-			to a prime close to the number of available hosts. Ignored when
-			mapred.job.tracker is "local". Hadoop set this to 1 by default,
-			whereas hive uses -1 as its default value.
-			By setting this property to
-			-1, Hive will automatically figure out what
-			should be the number of
-			reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hyracks.connectorpolicy</name>
-		<value>SEND_SIDE_MAT_PIPELINING</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.host</name>
-		<value>127.0.0.1</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.port</name>
-		<value>13099</value>
-	</property>
-
-	<property>
-		<name>hive.hyracks.app</name>
-		<value>hivesterix</value>
-	</property>
-
-
-	<property>
-		<name>hive.hyracks.parrallelism</name>
-		<value>2</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external</name>
-		<value>false</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.groupby.external.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.sort.memory</name>
-		<value>3072</value>
-	</property>
-
-	<property>
-		<name>hive.algebricks.framesize</name>
-		<value>768</value>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.bytes.per.reducer</name>
-		<value>1000000000</value>
-		<description>size per reducer.The default is 1G, i.e if the input size
-			is 10G, it will use 10 reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.reducers.max</name>
-		<value>999</value>
-		<description>max number of reducers will be used. If the one
-			specified
-			in the configuration parameter mapred.reduce.tasks is
-			negative, hive
-			will use this one as the max number of reducers when
-			automatically
-			determine number of reducers.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.scratchdir</name>
-		<value>/tmp/hive-${user.name}</value>
-		<description>Scratch space for Hive jobs</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode</name>
-		<value>false</value>
-		<description>whether hive is running in test mode. If yes, it turns on
-			sampling and prefixes the output tablename
-		</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.prefix</name>
-		<value>test_</value>
-		<description>if hive is running in test mode, prefixes the output
-			table by this string
-		</description>
-	</property>
-
-	<!-- If the input table is not bucketed, the denominator of the tablesample 
-		is determinied by the parameter below -->
-	<!-- For example, the following query: -->
-	<!-- INSERT OVERWRITE TABLE dest -->
-	<!-- SELECT col1 from src -->
-	<!-- would be converted to -->
-	<!-- INSERT OVERWRITE TABLE test_dest -->
-	<!-- SELECT col1 from src TABLESAMPLE (BUCKET 1 out of 32 on rand(1)) -->
-	<property>
-		<name>hive.test.mode.samplefreq</name>
-		<value>32</value>
-		<description>if hive is running in test mode and table is not
-			bucketed, sampling frequency
-		</description>
-	</property>
-
-	<property>
-		<name>hive.test.mode.nosamplelist</name>
-		<value></value>
-		<description>if hive is running in test mode, dont sample the above
-			comma seperated list of tables
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.local</name>
-		<value>true</value>
-		<description>controls whether to connect to remove metastore server or
-			open a new metastore server in Hive Client JVM
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionURL</name>
-		<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
-		<description>JDBC connect string for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionDriverName</name>
-		<value>org.apache.derby.jdbc.EmbeddedDriver</value>
-		<description>Driver class name for a JDBC metastore</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.PersistenceManagerFactoryClass</name>
-		<value>org.datanucleus.jdo.JDOPersistenceManagerFactory</value>
-		<description>class implementing the jdo persistence</description>
-	</property>
-
-	<property>
-		<name>datanucleus.connectionPoolingType</name>
-		<value>DBCP</value>
-		<description>Uses a DBCP connection pool for JDBC metastore
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.DetachAllOnCommit</name>
-		<value>true</value>
-		<description>detaches all objects from session so that they can be
-			used after transaction is committed
-		</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.NonTransactionalRead</name>
-		<value>true</value>
-		<description>reads outside of transactions</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionUserName</name>
-		<value>APP</value>
-		<description>username to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>javax.jdo.option.ConnectionPassword</name>
-		<value>mine</value>
-		<description>password to use against metastore database</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateTables</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateColumns</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.validateConstraints</name>
-		<value>false</value>
-		<description>validates existing schema against code. turn this on if
-			you want to verify existing schema
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.storeManagerType</name>
-		<value>rdbms</value>
-		<description>metadata store type</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoCreateSchema</name>
-		<value>true</value>
-		<description>creates necessary schema on a startup if one doesn't
-			exist. set this to false, after creating it once
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.autoStartMechanismMode</name>
-		<value>checked</value>
-		<description>throw exception if metadata tables are incorrect
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.transactionIsolation</name>
-		<value>read-committed</value>
-		<description>Default transaction isolation level for identity
-			generation.
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2</name>
-		<value>false</value>
-		<description>Use a level 2 cache. Turn this off if metadata is changed
-			independently of hive metastore server
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.cache.level2.type</name>
-		<value>SOFT</value>
-		<description>SOFT=soft reference based cache, WEAK=weak reference
-			based cache.
-		</description>
-	</property>
-
-	<property>
-		<name>datanucleus.identifierFactory</name>
-		<value>datanucleus</value>
-		<description>Name of the identifier factory to use when generating
-			table/column names etc. 'datanucleus' is used for backward
-			compatibility
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.warehouse.dir</name>
-		<value>/tmp/hivesterix</value>
-		<description>location of default database for the warehouse
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.connect.retries</name>
-		<value>5</value>
-		<description>Number of retries while opening a connection to metastore
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.rawstore.impl</name>
-		<value>org.apache.hadoop.hive.metastore.ObjectStore</value>
-		<description>Name of the class that implements
-			org.apache.hadoop.hive.metastore.rawstore interface. This class is
-			used to store and retrieval of raw metadata objects such as table,
-			database
-		</description>
-	</property>
-
-	<property>
-		<name>hive.default.fileformat</name>
-		<value>TextFile</value>
-		<description>Default file format for CREATE TABLE statement. Options
-			are TextFile and SequenceFile. Users can explicitly say CREATE TABLE
-			... STORED AS &lt;TEXTFILE|SEQUENCEFILE&gt; to override</description>
-	</property>
-
-	<property>
-		<name>hive.fileformat.check</name>
-		<value>true</value>
-		<description>Whether to check file format or not when loading data
-			files
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr</name>
-		<value>true</value>
-		<description>Whether to use map-side aggregation in Hive Group By
-			queries
-		</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.skewindata</name>
-		<value>false</value>
-		<description>Whether there is skew in data to optimize group by
-			queries
-		</description>
-	</property>
-
-	<property>
-		<name>hive.groupby.mapaggr.checkinterval</name>
-		<value>100000</value>
-		<description>Number of rows after which size of the grouping
-			keys/aggregation classes is performed
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.local.mem</name>
-		<value>0</value>
-		<description>For local mode, memory of the mappers/reducers
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.percentmemory</name>
-		<value>0.5</value>
-		<description>Portion of total memory to be used by map-side grup
-			aggregation hash table
-		</description>
-	</property>
-
-	<property>
-		<name>hive.map.aggr.hash.min.reduction</name>
-		<value>0.5</value>
-		<description>Hash aggregation will be turned off if the ratio between
-			hash
-			table size and input rows is bigger than this number. Set to 1 to
-			make
-			sure
-			hash aggregation is never turned off.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.cp</name>
-		<value>true</value>
-		<description>Whether to enable column pruner</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.ppd</name>
-		<value>true</value>
-		<description>Whether to enable predicate pushdown</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.pruner</name>
-		<value>true</value>
-		<description>Whether to enable the new partition pruner which depends
-			on predicate pushdown. If this is disabled,
-			the old partition pruner
-			which is based on AST will be enabled.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.groupby</name>
-		<value>true</value>
-		<description>Whether to enable the bucketed group by from bucketed
-			partitions/tables.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.join.emit.interval</name>
-		<value>1000</value>
-		<description>How many rows in the right-most join operand Hive should
-			buffer before emitting the join result.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.join.cache.size</name>
-		<value>25000</value>
-		<description>How many rows in the joining tables (except the streaming
-			table) should be cached in memory.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.bucket.cache.size</name>
-		<value>100</value>
-		<description>How many values in each keys in the map-joined table
-			should be cached in memory.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.maxsize</name>
-		<value>100000</value>
-		<description>Maximum # of rows of the small table that can be handled
-			by map-side join. If the size is reached and hive.task.progress is
-			set, a fatal error counter is set and the job will be killed.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapjoin.cache.numrows</name>
-		<value>25000</value>
-		<description>How many rows should be cached by jdbm for map join.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.skewjoin</name>
-		<value>false</value>
-		<description>Whether to enable skew join optimization. </description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.key</name>
-		<value>100000</value>
-		<description>Determine if we get a skew key in join. If we see more
-			than the specified number of rows with the same key in join operator,
-			we think the key as a skew join key.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.map.tasks</name>
-		<value>10000</value>
-		<description> Determine the number of map task used in the follow up
-			map join job
-			for a skew join. It should be used together with
-			hive.skewjoin.mapjoin.min.split
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.skewjoin.mapjoin.min.split</name>
-		<value>33554432</value>
-		<description> Determine the number of map task at most used in the
-			follow up map join job
-			for a skew join by specifying the minimum split
-			size. It should be used
-			together with
-			hive.skewjoin.mapjoin.map.tasks
-			to perform a fine grained control.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.mode</name>
-		<value>nonstrict</value>
-		<description>The mode in which the hive operations are being
-			performed. In strict mode, some risky queries are not allowed to run
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.maxerrsize</name>
-		<value>100000</value>
-		<description>Maximum number of bytes a script is allowed to emit to
-			standard error (per map-reduce task). This prevents runaway scripts
-			from filling logs partitions to capacity
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.script.allow.partial.consumption</name>
-		<value>false</value>
-		<description> When enabled, this option allows a user script to exit
-			successfully without consuming all the data from the standard input.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.operator.id.env.var</name>
-		<value>HIVE_SCRIPT_OPERATOR_ID</value>
-		<description> Name of the environment variable that holds the unique
-			script operator ID in the user's transform function (the custom
-			mapper/reducer that the user has specified in the query)
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.output</name>
-		<value>false</value>
-		<description> This controls whether the final outputs of a query (to a
-			local/hdfs file or a hive table) is compressed. The compression codec
-			and other options are determined from hadoop config variables
-			mapred.output.compress*
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.compress.intermediate</name>
-		<value>false</value>
-		<description> This controls whether intermediate files produced by
-			hive between multiple map-reduce jobs are compressed. The compression
-			codec and other options are determined from hadoop config variables
-			mapred.output.compress*
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel</name>
-		<value>false</value>
-		<description>Whether to execute jobs in parallel</description>
-	</property>
-
-	<property>
-		<name>hive.exec.parallel.thread.number</name>
-		<value>8</value>
-		<description>How many jobs at most can be executed in parallel
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.war.file</name>
-		<value>lib\hive-hwi-0.7.0.war</value>
-		<description>This sets the path to the HWI war file, relative to
-			${HIVE_HOME}.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.host</name>
-		<value>0.0.0.0</value>
-		<description>This is the host address the Hive Web Interface will
-			listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.hwi.listen.port</name>
-		<value>9999</value>
-		<description>This is the port the Hive Web Interface will listen on
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.pre.hooks</name>
-		<value></value>
-		<description>Pre Execute Hook for Tests</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapfiles</name>
-		<value>true</value>
-		<description>Merge small files at the end of a map-only job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.mapredfiles</name>
-		<value>false</value>
-		<description>Merge small files at the end of a map-reduce job
-		</description>
-	</property>
-
-	<property>
-		<name>hive.heartbeat.interval</name>
-		<value>1000</value>
-		<description>Send a heartbeat after this interval - used by mapjoin
-			and filter operators
-		</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.per.task</name>
-		<value>256000000</value>
-		<description>Size of merged files at the end of the job</description>
-	</property>
-
-	<property>
-		<name>hive.merge.size.smallfiles.avgsize</name>
-		<value>16000000</value>
-		<description>When the average output file size of a job is less than
-			this number, Hive will start an additional map-reduce job to merge
-			the output files into bigger files. This is only done for map-only
-			jobs if hive.merge.mapfiles is true, and for map-reduce jobs if
-			hive.merge.mapredfiles is true.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive Tranform/Map/Reduce Clause should
-			automatically send progress information to TaskTracker to avoid the
-			task getting killed because of inactivity. Hive sends progress
-			information when the script is outputting to stderr. This option
-			removes the need of periodically producing stderr messages, but users
-			should be cautious because this may prevent infinite loops in the
-			scripts to be killed by TaskTracker.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.serde</name>
-		<value>org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe</value>
-		<description>The default serde for trasmitting input data to and
-			reading output data from the user scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.recordreader</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordReader</value>
-		<description>The default record reader for reading data from the user
-			scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.script.recordwriter</name>
-		<value>org.apache.hadoop.hive.ql.exec.TextRecordWriter</value>
-		<description>The default record writer for writing data to the user
-			scripts.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.input.format</name>
-		<value>org.apache.hadoop.hive.ql.io.HiveInputFormat</value>
-		<description>The default input format, if it is not specified, the
-			system assigns it. It is set to HiveInputFormat for hadoop versions
-			17, 18 and 19, whereas it is set to CombinedHiveInputFormat for
-			hadoop 20. The user can always overwrite it - if there is a bug in
-			CombinedHiveInputFormat, it can always be manually set to
-			HiveInputFormat.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.udtf.auto.progress</name>
-		<value>false</value>
-		<description>Whether Hive should automatically send progress
-			information to TaskTracker when using UDTF's to prevent the task
-			getting killed because of inactivity. Users should be cautious
-			because this may prevent TaskTracker from killing tasks with infinte
-			loops.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.mapred.reduce.tasks.speculative.execution</name>
-		<value>true</value>
-		<description>Whether speculative execution for reducers should be
-			turned on.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.counters.pull.interval</name>
-		<value>1000</value>
-		<description>The interval with which to poll the JobTracker for the
-			counters the running job. The smaller it is the more load there will
-			be on the jobtracker, the higher it is the less granular the caught
-			will be.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.bucketing</name>
-		<value>false</value>
-		<description>Whether bucketing is enforced. If true, while inserting
-			into the table, bucketing is enforced.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.enforce.sorting</name>
-		<value>false</value>
-		<description>Whether sorting is enforced. If true, while inserting
-			into the table, sorting is enforced.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.connection.url.hook</name>
-		<value></value>
-		<description>Name of the hook to use for retriving the JDO connection
-			URL. If empty, the value in javax.jdo.option.ConnectionURL is used
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.attempts</name>
-		<value>1</value>
-		<description>The number of times to retry a metastore call if there
-			were a connection error
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.ds.retry.interval</name>
-		<value>1000</value>
-		<description>The number of miliseconds between metastore retry
-			attempts
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.min.threads</name>
-		<value>200</value>
-		<description>Minimum number of worker threads in the Thrift server's
-			pool.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.max.threads</name>
-		<value>100000</value>
-		<description>Maximum number of worker threads in the Thrift server's
-			pool.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.metastore.server.tcp.keepalive</name>
-		<value>true</value>
-		<description>Whether to enable TCP keepalive for the metastore server.
-			Keepalive will prevent accumulation of half-open connections.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.optimize.reducededuplication</name>
-		<value>true</value>
-		<description>Remove extra map-reduce jobs if the data is already
-			clustered by the same key which needs to be used again. This should
-			always be set to true. Since it is a new feature, it has been made
-			configurable.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition</name>
-		<value>false</value>
-		<description>Whether or not to allow dynamic partitions in DML/DDL.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.dynamic.partition.mode</name>
-		<value>strict</value>
-		<description>In strict mode, the user must specify at least one static
-			partition in case the user accidentally overwrites all partitions.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions</name>
-		<value>1000</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in total.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.max.dynamic.partitions.pernode</name>
-		<value>100</value>
-		<description>Maximum number of dynamic partitions allowed to be
-			created in each mapper/reducer node.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.default.partition.name</name>
-		<value>__HIVE_DEFAULT_PARTITION__</value>
-		<description>The default partition name in case the dynamic partition
-			column value is null/empty string or anyother values that cannot be
-			escaped. This value must not contain any special character used in
-			HDFS URI (e.g., ':', '%', '/' etc). The user has to be aware that the
-			dynamic partition value should not contain this value to avoid
-			confusions.
-		</description>
-	</property>
-
-	<property>
-		<name>fs.har.impl</name>
-		<value>org.apache.hadoop.hive.shims.HiveHarFileSystem</value>
-		<description>The implementation for accessing Hadoop Archives. Note
-			that this won't be applicable to Hadoop vers less than 0.20
-		</description>
-	</property>
-
-	<property>
-		<name>hive.archive.enabled</name>
-		<value>false</value>
-		<description>Whether archiving operations are permitted</description>
-	</property>
-
-	<property>
-		<name>hive.archive.har.parentdir.settable</name>
-		<value>false</value>
-		<description>In new Hadoop versions, the parent directory must be set
-			while
-			creating a HAR. Because this functionality is hard to detect
-			with just
-			version
-			numbers, this conf var needs to be set manually.
-		</description>
-	</property>
-
-	<!-- HBase Storage Handler Parameters -->
-
-	<property>
-		<name>hive.hbase.wal.enabled</name>
-		<value>true</value>
-		<description>Whether writes to HBase should be forced to the
-			write-ahead log. Disabling this improves HBase write performance at
-			the risk of lost writes in case of a crash.
-		</description>
-	</property>
-
-	<property>
-		<name>hive.exec.drop.ignorenonexistent</name>
-		<value>true</value>
-		<description>drop table always works.</description>
-	</property>
-
-</configuration>
diff --git a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml b/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml
deleted file mode 100644
index 4aac091..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/hive/conf/topology.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<cluster-topology>
-    <network-switch name="switch1">
-        <network-switch name="switch2">
-            <terminal name="nc0"/>
-            <terminal name="nc3"/>
-        </network-switch>
-        <network-switch name="switch3">
-            <terminal name="nc1"/>
-            <terminal name="nc4"/>
-        </network-switch>
-    </network-switch>
-</cluster-topology>
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/ignore.txt b/hivesterix/src/test/resources/runtimefunctionts/ignore.txt
deleted file mode 100644
index e70ea78..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/ignore.txt
+++ /dev/null
@@ -1 +0,0 @@
-q16
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/logging.properties b/hivesterix/src/test/resources/runtimefunctionts/logging.properties
deleted file mode 100644
index 1cc34e1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/logging.properties
+++ /dev/null
@@ -1,65 +0,0 @@
-############################################################
-#  	Default Logging Configuration File
-#
-# You can use a different file by specifying a filename
-# with the java.util.logging.config.file system property.  
-# For example java -Djava.util.logging.config.file=myfile
-############################################################
-
-############################################################
-#  	Global properties
-############################################################
-
-# "handlers" specifies a comma separated list of log Handler 
-# classes.  These handlers will be installed during VM startup.
-# Note that these classes must be on the system classpath.
-# By default we only configure a ConsoleHandler, which will only
-# show messages at the INFO and above levels.
-
-handlers= java.util.logging.ConsoleHandler
-
-# To also add the FileHandler, use the following line instead.
-
-# handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
-
-# Default global logging level.
-# This specifies which kinds of events are logged across
-# all loggers.  For any given facility this global level
-# can be overriden by a facility specific level
-# Note that the ConsoleHandler also has a separate level
-# setting to limit messages printed to the console.
-
-.level= WARNING
-# .level= INFO
-# .level= FINE
-# .level = FINEST
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-# default file output is in user's home directory.
-
-# java.util.logging.FileHandler.pattern = %h/java%u.log
-# java.util.logging.FileHandler.limit = 50000
-# java.util.logging.FileHandler.count = 1
-# java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
-
-# Limit the message that are printed on the console to FINE and above.
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-# For example, set the com.xyz.foo logger to only log SEVERE
-# messages:
-
-edu.uci.ics.asterix.level = WARNING
-edu.uci.ics.algebricks.level = WARNING
-edu.uci.ics.hyracks.level = WARNING
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive
deleted file mode 100644
index 3f1214a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q10_returned_item.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q10_returned_item;
-
--- create the tables and load the data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q10_returned_item (c_custkey int, c_name string, revenue double, c_acctbal string, n_name string, c_address string, c_phone string, c_comment string);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q10_returned_item
-select 
-  c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue, 
-  c_acctbal, n_name, c_address, c_phone, c_comment
-from
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey and o.o_orderdate >= '1993-10-01' and o.o_orderdate < '1994-01-01'
-  join nation n 
-  on 
-    c.c_nationkey = n.n_nationkey
-  join lineitem l 
-  on 
-    l.l_orderkey = o.o_orderkey and l.l_returnflag = 'R'
-group by c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment 
-order by revenue desc 
-limit 20;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive
deleted file mode 100644
index de0cfc3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q11_important_stock.hive
+++ /dev/null
@@ -1,47 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q11_important_stock;
-DROP TABLE IF EXISTS q11_part_tmp;
-DROP TABLE IF EXISTS q11_sum_tmp;
-
--- create tables and load data
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-
--- create the target table
-create table q11_important_stock(ps_partkey INT, value DOUBLE);
-create table q11_part_tmp(ps_partkey int, part_value double);
-create table q11_sum_tmp(total_value double);
-
--- the query
-insert overwrite table q11_part_tmp
-select 
-  ps_partkey, sum(ps_supplycost * ps_availqty) as part_value 
-from
-  nation n join supplier s 
-  on 
-    s.s_nationkey = n.n_nationkey
-  join partsupp ps 
-  on 
-    ps.ps_suppkey = s.s_suppkey
-group by ps_partkey;
-
-insert overwrite table q11_sum_tmp
-select 
-  sum(part_value) as total_value
-from 
-  q11_part_tmp;
-
-insert overwrite table q11_important_stock
-select 
-  ps_partkey, part_value as value
-from
-  (
-    select ps_partkey, part_value, total_value
-    from q11_part_tmp join q11_sum_tmp
-  ) a
-where part_value > total_value * 0.00001
-order by value desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive
deleted file mode 100644
index 062f7b9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q12_shipping.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q12_shipping;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q12_shipping(l_shipmode string, high_line_count double, low_line_count double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q12_shipping
-select 
-  l_shipmode,
-  sum(case
-    when o_orderpriority ='1-URGENT'
-         or o_orderpriority ='2-HIGH'
-    then 1
-    else 0
-end
-  ) as high_line_count,
-  sum(case
-    when o_orderpriority <> '1-URGENT'
-         and o_orderpriority <> '2-HIGH'
-    then 1
-    else 0
-end
-  ) as low_line_count
-from
-  orders o join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey and l.l_commitdate < l.l_receiptdate
-and l.l_shipdate < l.l_commitdate and l.l_receiptdate >= '1994-01-01' 
-and l.l_receiptdate < '1995-01-01'
-where 
-  l.l_shipmode = 'MAIL' or l.l_shipmode = 'SHIP'
-group by l_shipmode
-order by l_shipmode;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive
deleted file mode 100644
index a799008..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q13_customer_distribution.hive
+++ /dev/null
@@ -1,27 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q13_customer_distribution;
-
--- create the tables and load the data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create the result table
-create table q13_customer_distribution (c_count int, custdist int);
-
--- the query
-insert overwrite table q13_customer_distribution
-select 
-  c_count, count(1) as custdist
-from 
-  (select 
-     c_custkey, count(o_orderkey) as c_count
-   from 
-     customer c left outer join orders o 
-     on 
-       c.c_custkey = o.o_custkey and not o.o_comment like '%special%requests%'
-   group by c_custkey
-   ) c_orders
-group by c_count
-order by custdist desc, c_count desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive
deleted file mode 100644
index 988f400..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q14_promotion_effect.hive
+++ /dev/null
@@ -1,28 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q14_promotion_effect;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q14_promotion_effect(promo_revenue double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q14_promotion_effect
-select 
-  100.00 * sum(case
-               when p_type like 'PROMO%'
-               then l_extendedprice*(1-l_discount)
-               else 0.0
-               end
-  ) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue
-from 
-  part p join lineitem l 
-  on 
-    l.l_partkey = p.p_partkey and l.l_shipdate >= '1995-09-01' and l.l_shipdate < '1995-10-01';
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive
deleted file mode 100644
index 04064ed..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q15_top_supplier.hive
+++ /dev/null
@@ -1,45 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS revenue;
-DROP TABLE IF EXISTS max_revenue;
-DROP TABLE IF EXISTS q15_top_supplier;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create result tables
-create table revenue(supplier_no int, total_revenue double); 
-create table max_revenue(max_revenue double); 
-create table q15_top_supplier(s_suppkey int, s_name string, s_address string, s_phone string, total_revenue double);
-
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table revenue
-select 
-  l_suppkey as supplier_no, sum(l_extendedprice * (1 - l_discount)) as total_revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1996-01-01' and l_shipdate < '1996-04-01'
-group by l_suppkey;
-
-insert overwrite table max_revenue
-select 
-  max(total_revenue)
-from 
-  revenue;
-
-insert overwrite table q15_top_supplier
-select 
-  s_suppkey, s_name, s_address, s_phone, total_revenue
-from supplier s join revenue r 
-  on 
-    s.s_suppkey = r.supplier_no
-  join max_revenue m 
-  on 
-    r.total_revenue = m.max_revenue
-order by s_suppkey;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive
deleted file mode 100644
index 971ef99..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q16_parts_supplier_relationship.hive
+++ /dev/null
@@ -1,53 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS q16_parts_supplier_relationship;
-DROP TABLE IF EXISTS q16_tmp;
-DROP TABLE IF EXISTS supplier_tmp;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-
--- create the result table
-create table q16_parts_supplier_relationship(p_brand string, p_type string, p_size int, supplier_cnt int);
-create table q16_tmp(p_brand string, p_type string, p_size int, ps_suppkey int);
-create table supplier_tmp(s_suppkey int);
-
--- the query
-insert overwrite table supplier_tmp
-select 
-  s_suppkey
-from 
-  supplier
-where 
-  not s_comment like '%Customer%Complaints%';
-
-insert overwrite table q16_tmp
-select 
-  p_brand, p_type, p_size, ps_suppkey
-from 
-  partsupp ps join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_brand <> 'Brand#45' 
-    and not p.p_type like 'MEDIUM POLISHED%'
-  join supplier_tmp s 
-  on 
-    ps.ps_suppkey = s.s_suppkey;
-
-insert overwrite table q16_parts_supplier_relationship
-select 
-  p_brand, p_type, p_size, count(distinct ps_suppkey) as supplier_cnt
-from 
-  (select 
-     * 
-   from
-     q16_tmp 
-   where p_size = 49 or p_size = 14 or p_size = 23 or
-         p_size = 45 or p_size = 19 or p_size = 3 or
-         p_size = 36 or p_size = 9
-) q16_all
-group by p_brand, p_type, p_size
-order by supplier_cnt desc, p_brand, p_type, p_size;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive
deleted file mode 100644
index db7746b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q17_small_quantity_order_revenue.hive
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q17_small_quantity_order_revenue;
-DROP TABLE IF EXISTS lineitem_tmp;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q17_small_quantity_order_revenue (avg_yearly double);
-create table lineitem_tmp (t_partkey int, t_avg_quantity double);
-
--- the query
-insert overwrite table lineitem_tmp
-select 
-  l_partkey as t_partkey, 0.2 * avg(l_quantity) as t_avg_quantity
-from 
-  lineitem
-group by l_partkey;
-
-insert overwrite table q17_small_quantity_order_revenue
-select
-  sum(l_extendedprice) / 7.0 as avg_yearly
-from
-  (select l_quantity, l_extendedprice, t_avg_quantity from
-   lineitem_tmp t join
-     (select
-        l_quantity, l_partkey, l_extendedprice
-      from
-        part p join lineitem l
-        on
-          p.p_partkey = l.l_partkey
-          and p.p_container = 'MED BOX'
-      ) l1 on l1.l_partkey = t.t_partkey
-   ) a
-where l_quantity < t_avg_quantity;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive
deleted file mode 100644
index ac2902c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q18_large_volume_customer.hive
+++ /dev/null
@@ -1,43 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q18_tmp;
-DROP TABLE IF EXISTS q18_large_volume_customer;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the result tables
-create table q18_tmp(l_orderkey int, t_sum_quantity double);
-create table q18_large_volume_customer(c_name string, c_custkey int, o_orderkey int, o_orderdate string, o_totalprice double, sum_quantity double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1164000000;
-
--- the query
-insert overwrite table q18_tmp
-select 
-  l_orderkey, sum(l_quantity) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q18_large_volume_customer
-select 
-  c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice,sum(l_quantity)
-from 
-  customer c join orders o 
-  on 
-    c.c_custkey = o.o_custkey
-  join q18_tmp t 
-  on 
-    o.o_orderkey = t.l_orderkey and t.t_sum_quantity > 30
-  join lineitem l 
-  on 
-    o.o_orderkey = l.l_orderkey
-group by c_name,c_custkey,o_orderkey,o_orderdate,o_totalprice
-order by o_totalprice desc,o_orderdate
-limit 100;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive
deleted file mode 100644
index 2002e1e..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q19_discounted_revenue.hive
+++ /dev/null
@@ -1,49 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q19_discounted_revenue;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the result table
-create table q19_discounted_revenue(revenue double);
-
-set mapred.min.split.size=268435456;
-set hive.exec.reducers.bytes.per.reducer=1040000000;
-
--- the query
-insert overwrite table q19_discounted_revenue
-select
-  sum(l_extendedprice * (1 - l_discount) ) as revenue
-from
-  part p join lineitem l 
-  on 
-    p.p_partkey = l.l_partkey    
-where
-  (
-    p_brand = 'Brand#12'
-	and p_container REGEXP 'SM CASE||SM BOX||SM PACK||SM PKG'
-	and l_quantity >= 1 and l_quantity <= 11
-	and p_size >= 1 and p_size <= 5
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  ) 
-  or 
-  (
-    p_brand = 'Brand#23'
-	and p_container REGEXP 'MED BAG||MED BOX||MED PKG||MED PACK'
-	and l_quantity >= 10 and l_quantity <= 20
-	and p_size >= 1 and p_size <= 10
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  )
-  or
-  (
-	p_brand = 'Brand#34'
-	and p_container REGEXP 'LG CASE||LG BOX||LG PACK||LG PKG'
-	and l_quantity >= 20 and l_quantity <= 30
-	and p_size >= 1 and p_size <= 15
-	and l_shipmode REGEXP 'AIR||AIR REG'
-	and l_shipinstruct = 'DELIVER IN PERSON'
-  );
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive
deleted file mode 100644
index a002068..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q1_pricing_summary_report.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q1_pricing_summary_report;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q1_pricing_summary_report ( L_RETURNFLAG STRING, L_LINESTATUS STRING, SUM_QTY DOUBLE, SUM_BASE_PRICE DOUBLE, SUM_DISC_PRICE DOUBLE, SUM_CHARGE DOUBLE, AVE_QTY DOUBLE, AVE_PRICE DOUBLE, AVE_DISC DOUBLE, COUNT_ORDER INT);
-
-set mapred.min.split.size=536870912;
-
--- the query
-INSERT OVERWRITE TABLE q1_pricing_summary_report 
-SELECT 
-  L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY), SUM(L_EXTENDEDPRICE), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)), SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)), AVG(L_QUANTITY), AVG(L_EXTENDEDPRICE), AVG(L_DISCOUNT), COUNT(1) 
-FROM 
-  lineitem 
-WHERE 
-  L_SHIPDATE<='1998-09-02' 
-GROUP BY L_RETURNFLAG, L_LINESTATUS 
-ORDER BY L_RETURNFLAG, L_LINESTATUS;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive
deleted file mode 100644
index 2bb90ea..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q20_potential_part_promotion.hive
+++ /dev/null
@@ -1,73 +0,0 @@
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q20_tmp1;
-DROP TABLE IF EXISTS q20_tmp2;
-DROP TABLE IF EXISTS q20_tmp3;
-DROP TABLE IF EXISTS q20_tmp4;
-DROP TABLE IF EXISTS q20_potential_part_promotion;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-
--- create the target table
-create table q20_tmp1(p_partkey int);
-create table q20_tmp2(l_partkey int, l_suppkey int, sum_quantity double);
-create table q20_tmp3(ps_suppkey int, ps_availqty int, sum_quantity double);
-create table q20_tmp4(ps_suppkey int);
-create table q20_potential_part_promotion(s_name string, s_address string);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q20_tmp1
-select distinct p_partkey
-from
-  part;
-
-insert overwrite table q20_tmp2
-select 
-  l_partkey, l_suppkey, 0.5 * sum(l_quantity)
-from
-  lineitem
-group by l_partkey, l_suppkey;
-
-insert overwrite table q20_tmp3
-select 
-  ps_suppkey, ps_availqty, sum_quantity
-from  
-  partsupp ps join q20_tmp1 t1 
-  on 
-    ps.ps_partkey = t1.p_partkey
-  join q20_tmp2 t2 
-  on 
-    ps.ps_partkey = t2.l_partkey and ps.ps_suppkey = t2.l_suppkey;
-
-insert overwrite table q20_tmp4
-select 
-  ps_suppkey
-from 
-  q20_tmp3
-where 
-  ps_availqty > sum_quantity
-group by ps_suppkey;
-
-insert overwrite table q20_potential_part_promotion
-select 
-  s_name, s_address
-from 
-   nation n join supplier s
-  on
-    s.s_nationkey = n.n_nationkey
-  join q20_tmp4 t4
-  on 
-    s.s_suppkey = t4.ps_suppkey
-order by s_name;
-
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive
deleted file mode 100644
index 9d01741..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q21_suppliers_who_kept_orders_waiting.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q21_tmp1;
-DROP TABLE IF EXISTS q21_tmp2;
-DROP TABLE IF EXISTS q21_suppliers_who_kept_orders_waiting;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create target tables
-create table q21_tmp1(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_tmp2(l_orderkey int, count_suppkey int, max_suppkey int);
-create table q21_suppliers_who_kept_orders_waiting(s_name string, numwait int);
-
--- the query
-insert overwrite table q21_tmp1
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-group by l_orderkey;
-
-insert overwrite table q21_tmp2
-select
-  l_orderkey, count(distinct l_suppkey), max(l_suppkey) as max_suppkey
-from
-  lineitem
-where
-  l_receiptdate > l_commitdate
-group by l_orderkey;
-
-insert overwrite table q21_suppliers_who_kept_orders_waiting
-select
-  s_name, count(1) as numwait
-from
-  (select s_name from
-(select s_name, t2.l_orderkey, l_suppkey, count_suppkey, max_suppkey 
- from q21_tmp2 t2 right outer join
-      (select s_name, l_orderkey, l_suppkey from
-         (select s_name, t1.l_orderkey, l_suppkey, count_suppkey, max_suppkey
-          from
-            q21_tmp1 t1 join
-            (select s_name, l_orderkey, l_suppkey
-             from 
-               orders o join
-               (select s_name, l_orderkey, l_suppkey
-                from
-                  nation n join supplier s
-                  on
-                    s.s_nationkey = n.n_nationkey
-                  join lineitem l
-                  on
-                    s.s_suppkey = l.l_suppkey
-                where
-                  l.l_receiptdate > l.l_commitdate
-                ) l1 on o.o_orderkey = l1.l_orderkey
-             ) l2 on l2.l_orderkey = t1.l_orderkey
-          ) a
-          where
-           (count_suppkey >= 0)
-       ) l3 on l3.l_orderkey = t2.l_orderkey
-    ) b
-  )c
-group by s_name
-order by numwait desc, s_name
-limit 100;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive
deleted file mode 100644
index 851a8b4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q22_global_sales_opportunity.hive
+++ /dev/null
@@ -1,60 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS q22_customer_tmp;
-DROP TABLE IF EXISTS q22_customer_tmp1;
-DROP TABLE IF EXISTS q22_orders_tmp;
-DROP TABLE IF EXISTS q22_global_sales_opportunity;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-
--- create target tables
-create table q22_customer_tmp(c_acctbal double, c_custkey int, cntrycode string);
-create table q22_customer_tmp1(avg_acctbal double);
-create table q22_orders_tmp(o_custkey int);
-create table q22_global_sales_opportunity(cntrycode string, numcust int, totacctbal double);
-
--- the query
-insert overwrite table q22_customer_tmp
-select 
-  c_acctbal, c_custkey, substr(c_phone, 1, 2) as cntrycode
-from 
-  customer;
- 
-insert overwrite table q22_customer_tmp1
-select
-  avg(c_acctbal)
-from
-  q22_customer_tmp
-where
-  c_acctbal > 0.00;
-
-insert overwrite table q22_orders_tmp
-select 
-  o_custkey 
-from 
-  orders
-group by 
-  o_custkey;
-
-insert overwrite table q22_global_sales_opportunity
-select
-  cntrycode, count(1) as numcust, sum(c_acctbal) as totacctbal
-from
-(
-  select cntrycode, c_acctbal, avg_acctbal from
-  q22_customer_tmp1 ct1 join
-  (
-    select cntrycode, c_acctbal from
-      q22_orders_tmp ot 
-      right outer join q22_customer_tmp ct 
-      on
-        ct.c_custkey = ot.o_custkey
-  ) ct2
-) a
-where
-  c_acctbal > avg_acctbal
-group by cntrycode
-order by cntrycode;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive
deleted file mode 100644
index 200b99f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q2_minimum_cost_supplier.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp1;
-DROP TABLE IF EXISTS q2_minimum_cost_supplier_tmp2;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create result tables
-create table q2_minimum_cost_supplier_tmp1 (s_acctbal double, s_name string, n_name string, p_partkey int, ps_supplycost double, p_mfgr string, s_address string, s_phone string, s_comment string);
-create table q2_minimum_cost_supplier_tmp2 (p_partkey int, ps_min_supplycost double);
-create table q2_minimum_cost_supplier (s_acctbal double, s_name string, n_name string, p_partkey int, p_mfgr string, s_address string, s_phone string, s_comment string);
-
--- the query
-insert overwrite table q2_minimum_cost_supplier_tmp1 
-select 
-  s.s_acctbal, s.s_name, n.n_name, p.p_partkey, ps.ps_supplycost, p.p_mfgr, s.s_address, s.s_phone, s.s_comment 
-from 
-  nation n join region r 
-  on 
-    n.n_regionkey = r.r_regionkey and r.r_name = 'EUROPE' 
-  join supplier s 
-  on 
-s.s_nationkey = n.n_nationkey 
-  join partsupp ps 
-  on  
-s.s_suppkey = ps.ps_suppkey 
-  join part p 
-  on 
-    p.p_partkey = ps.ps_partkey and p.p_type like '%BRASS' ;
-
-insert overwrite table q2_minimum_cost_supplier_tmp2 
-select 
-  p_partkey, min(ps_supplycost) 
-from  
-  q2_minimum_cost_supplier_tmp1 
-group by p_partkey;
-
-insert overwrite table q2_minimum_cost_supplier 
-select 
-  t1.s_acctbal, t1.s_name, t1.n_name, t1.p_partkey, t1.p_mfgr, t1.s_address, t1.s_phone, t1.s_comment 
-from 
-  q2_minimum_cost_supplier_tmp1 t1 join q2_minimum_cost_supplier_tmp2 t2 
-on 
-  t1.p_partkey = t2.p_partkey and t1.ps_supplycost=t2.ps_min_supplycost 
-order by s_acctbal desc, n_name, s_name, p_partkey 
-limit 100;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive
deleted file mode 100644
index 0049eb3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q3_shipping_priority.hive
+++ /dev/null
@@ -1,29 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS q3_shipping_priority;
-
--- create tables and load data
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
--- create the target table
-create table q3_shipping_priority (l_orderkey int, revenue double, o_orderdate string, o_shippriority int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-Insert overwrite table q3_shipping_priority 
-select 
-  l_orderkey, (l_extendedprice*(1-l_discount)) as revenue, o_orderdate, o_shippriority 
-from 
-  customer c join orders o 
-    on c.c_mktsegment = 'BUILDING' and c.c_custkey = o.o_custkey 
-  join lineitem l 
-    on l.l_orderkey = o.o_orderkey and l.l_linenumber<3
--- group by l_orderkey, o_orderdate, o_shippriority 
-order by revenue desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive
deleted file mode 100644
index aa828e9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q4_order_priority.hive
+++ /dev/null
@@ -1,30 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q4_order_priority_tmp;
-DROP TABLE IF EXISTS q4_order_priority;
-
--- create tables and load data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-CREATE TABLE q4_order_priority_tmp (O_ORDERKEY INT);
-CREATE TABLE q4_order_priority (O_ORDERPRIORITY STRING, ORDER_COUNT INT);
-
-set mapred.min.split.size=536870912;
--- the query
-INSERT OVERWRITE TABLE q4_order_priority_tmp 
-select 
-  DISTINCT l_orderkey 
-from 
-  lineitem 
-where 
-  l_commitdate < l_receiptdate;
-INSERT OVERWRITE TABLE q4_order_priority 
-select o_orderpriority, count(1) as order_count 
-from 
-  orders o join q4_order_priority_tmp t 
-  on 
-o.o_orderkey = t.o_orderkey and o.o_orderdate >= '1993-07-01' and o.o_orderdate < '1993-10-01' 
-group by o_orderpriority 
-order by o_orderpriority;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive
deleted file mode 100644
index 9af2dd2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q5_local_supplier_volume.hive
+++ /dev/null
@@ -1,42 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS q5_local_supplier_volume;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the target table
-create table q5_local_supplier_volume (N_NAME STRING, REVENUE DOUBLE);
-
-set mapred.min.split.size=536870912;
-
--- the query
-insert overwrite table q5_local_supplier_volume 
-select 
-  n_name, sum(l_extendedprice * (1 - l_discount)) as revenue 
-from
-  customer c join
-    ( select n_name, l_extendedprice, l_discount, s_nationkey, o_custkey from 
-      ( select n_name, l_extendedprice, l_discount, l_orderkey, s_nationkey from
-        ( select n_name, s_suppkey, s_nationkey from 
-          ( select n_name, n_nationkey 
-            from nation n join region r 
-            on n.n_regionkey = r.r_regionkey
-          ) n1 join supplier s on s.s_nationkey = n1.n_nationkey
-        ) s1 join lineitem l on l.l_suppkey = s1.s_suppkey
-      ) l1 join orders o on l1.l_orderkey = o.o_orderkey and o.o_orderdate >= '1990-01-01' 
-              and o.o_orderdate < '1995-01-01'
-) o1 
-on c.c_nationkey = o1.s_nationkey and c.c_custkey = o1.o_custkey
-group by n_name 
-order by revenue desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive
deleted file mode 100644
index d8cb9b9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q6_forecast_revenue_change.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS q6_forecast_revenue_change;
-
--- create tables and load data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the target table
-create table q6_forecast_revenue_change (revenue double);
-
--- the query
-insert overwrite table q6_forecast_revenue_change 
-select 
-  sum(l_extendedprice*l_discount) as revenue
-from 
-  lineitem
-where 
-  l_shipdate >= '1994-01-01'
-  and l_shipdate < '1995-01-01'
-  and l_discount >= 0.05 and l_discount <= 0.07
-  and l_quantity < 24;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive
deleted file mode 100644
index 2678f80..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q7_volume_shipping.hive
+++ /dev/null
@@ -1,71 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q7_volume_shipping;
-DROP TABLE IF EXISTS q7_volume_shipping_tmp;
-
--- create tables and load data
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table q7_volume_shipping (supp_nation string, cust_nation string, l_year int, revenue double);
-create table q7_volume_shipping_tmp(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1225000000;
-
--- the query
-insert overwrite table q7_volume_shipping_tmp
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n2.n_name = 'GERMANY'
-    UNION ALL
-select 
-  n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey, 
-  n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 
-  on 
-    n1.n_name = 'GERMANY'
-) a;
-
-insert overwrite table q7_volume_shipping 
-select 
-  supp_nation, cust_nation, l_year, sum(volume) as revenue
-from 
-  (
-    select
-      supp_nation, cust_nation, year(l_shipdate) as l_year, 
-      l_extendedprice * (1 - l_discount) as volume
-    from
-      q7_volume_shipping_tmp t join
-        (select l_shipdate, l_extendedprice, l_discount, c_nationkey, s_nationkey 
-         from supplier s join
-           (select l_shipdate, l_extendedprice, l_discount, l_suppkey, c_nationkey 
-            from customer c join
-              (select l_shipdate, l_extendedprice, l_discount, l_suppkey, o_custkey 
-               from orders o join lineitem l 
-               on 
-                 o.o_orderkey = l.l_orderkey and l.l_shipdate >= '1992-01-01' 
-                 and l.l_shipdate <= '1996-12-31'
-               ) l1 on c.c_custkey = l1.o_custkey
-            ) l2 on s.s_suppkey = l2.l_suppkey
-         ) l3 on l3.c_nationkey = t.c_nationkey and l3.s_nationkey = t.s_nationkey
-   ) shipping
-group by supp_nation, cust_nation, l_year
-order by supp_nation, cust_nation, l_year;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive
deleted file mode 100644
index 4d9d36f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q8_national_market_share.hive
+++ /dev/null
@@ -1,56 +0,0 @@
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS region;
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS q8_national_market_share;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create external table region (R_REGIONKEY INT, R_NAME STRING, R_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/region';
-
--- create the result table
-create table q8_national_market_share(o_year string, mkt_share double);
-
--- the query
-insert overwrite table q8_national_market_share 
-select 
-  o_year, sum(case when nation = 'BRAZIL' then volume else 0.0 end) / sum(volume) as mkt_share
-from 
-  (
-select 
-  year(o_orderdate) as o_year, l_extendedprice * (1-l_discount) as volume, 
-  n2.n_name as nation
-    from
-      nation n2 join
-        (select o_orderdate, l_discount, l_extendedprice, s_nationkey 
-         from 
-          (select o_orderdate, l_discount, l_extendedprice, l_suppkey 
-           from part p join
-             (select o_orderdate, l_partkey, l_discount, l_extendedprice, l_suppkey 
-              from 
-                (select o_orderdate, o_orderkey 
-                 from 
-                   (select c.c_custkey 
-                    from 
-                      (select n1.n_nationkey 
-                       from nation n1 join region r
-                       on n1.n_regionkey = r.r_regionkey and r.r_name = 'AMERICA'
-                       ) n11 join customer c on c.c_nationkey = n11.n_nationkey
-                    ) c1 join orders o on c1.c_custkey = o.o_custkey
-                 ) o1 join lineitem l on l.l_orderkey = o1.o_orderkey and o1.o_orderdate >= '1995-01-01' 
-                         and o1.o_orderdate < '1996-12-31'
-              ) l1 on p.p_partkey = l1.l_partkey and p.p_type = 'ECONOMY ANODIZED STEEL'
-           ) p1 join supplier s on s.s_suppkey = p1.l_suppkey
-        ) s1 on s1.s_nationkey = n2.n_nationkey
-  ) all_nation
-group by o_year
-order by o_year;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive
deleted file mode 100644
index 2e5b4a1..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/q9_product_type_profit.hive
+++ /dev/null
@@ -1,50 +0,0 @@
-DROP TABLE IF EXISTS part;
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS supplier;
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS partsupp;
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS q9_product_type_profit;
-
--- create the tables and load the data
-create external table part (P_PARTKEY INT, P_NAME STRING, P_MFGR STRING, P_BRAND STRING, P_TYPE STRING, P_SIZE INT, P_CONTAINER STRING, P_RETAILPRICE DOUBLE, P_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/part';
-Create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create external table partsupp (PS_PARTKEY INT, PS_SUPPKEY INT, PS_AVAILQTY INT, PS_SUPPLYCOST DOUBLE, PS_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION'/tpch/partsupp';
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the result table
-create table q9_product_type_profit (nation string, o_year string, sum_profit double);
-
-set mapred.min.split.size=536870912;
-set hive.exec.reducers.bytes.per.reducer=1024000000;
-
--- the query
-insert overwrite table q9_product_type_profit
-select 
-  nation, o_year, sum(amount) as sum_profit
-from 
-  (
-select 
-  n_name as nation, year(o_orderdate) as o_year, 
-  l_extendedprice * (1 - l_discount) -  ps_supplycost * l_quantity as amount
-    from
-      (select l_extendedprice, l_discount, l_quantity, l_orderkey, n_name, ps_supplycost 
-       from part p join
-         (select l_extendedprice, l_discount, l_quantity, l_partkey, l_orderkey, 
-                 n_name, ps_supplycost 
-          from partsupp ps join
-            (select l_suppkey, l_extendedprice, l_discount, l_quantity, l_partkey, 
-                    l_orderkey, n_name 
-             from
-               (select s_suppkey, n_name 
-                from nation n join supplier s on n.n_nationkey = s.s_nationkey
-               ) s1 join lineitem l on s1.s_suppkey = l.l_suppkey
-            ) l1 on ps.ps_suppkey = l1.l_suppkey and ps.ps_partkey = l1.l_partkey
-         ) l2 on p.p_name like '%green%' and p.p_partkey = l2.l_partkey
-     ) l3 join orders o on o.o_orderkey = l3.l_orderkey
-  )profit
-group by nation, o_year
-order by nation, o_year desc;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive
deleted file mode 100644
index 1d901c2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_join.hive
+++ /dev/null
@@ -1,15 +0,0 @@
-DROP TABLE IF EXISTS orders;
-DROP TABLE IF EXISTS customer;
-DROP TABLE IF EXISTS u10_join;
-
--- create the tables and load the data
-create external table orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE STRING, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/orders';
-create external table customer (C_CUSTKEY INT, C_NAME STRING, C_ADDRESS STRING, C_NATIONKEY INT, C_PHONE STRING, C_ACCTBAL DOUBLE, C_MKTSEGMENT STRING, C_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/customer';
-
-create table u10_join(O_ORDERSTATUS STRING);
-
-insert overwrite table u10_join
-select O_TOTALPRICE
-from orders join customer
-on orders.O_CUSTKEY=customer.C_CUSTKEY
-order by O_TOTALPRICE;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive
deleted file mode 100644
index 8fc0a7a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u10_nestedloop_join.hive
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u10_nestedloop_join;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-
--- create the target table
-create table u10_nestedloop_join(supp_nation string, cust_nation string, s_nationkey int, c_nationkey int);
-
--- the query
-insert overwrite table u10_nestedloop_join
-select 
-  * 
-from
-  (
-    select 
-      n1.n_name as supp_nation, n2.n_name as cust_nation, n1.n_nationkey as s_nationkey,      
-      n2.n_nationkey as c_nationkey
-from 
-  nation n1 join nation n2 where n1.n_nationkey > n2.n_nationkey
-) a order by a.supp_nation, a.cust_nation;
\ No newline at end of file
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive
deleted file mode 100644
index 6e53d01..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u1_gby.hive
+++ /dev/null
@@ -1,11 +0,0 @@
-DROP TABLE IF EXISTS nation;
-DROP TABLE IF EXISTS u1_gby;
-
--- create tables and load data
-create external table nation (N_NATIONKEY INT, N_NAME STRING, N_REGIONKEY INT, N_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/nation';
-create table u1_gby(col1 INT, col2 INT);
-
-insert overwrite table u1_gby select N_REGIONKEY, count(1)
-from nation
-group by N_REGIONKEY
-order by N_REGIONKEY;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive
deleted file mode 100644
index be9de2d..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u2_gby_external.hive
+++ /dev/null
@@ -1,19 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u2_gby_external;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u2_gby_external(l_partkey int, t_sum_quantity double);
-
--- the query
-insert overwrite table u2_gby_external
-select 
-  l_orderkey, avg(L_QUANTITY) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey
-order by l_orderkey desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive
deleted file mode 100644
index 99d62df..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u3_union.hive
+++ /dev/null
@@ -1,11 +0,0 @@
-drop table IF EXISTS supplier;
-drop table IF EXISTS u3_union;
-
-create external table supplier (S_SUPPKEY INT, S_NAME STRING, S_ADDRESS STRING, S_NATIONKEY INT, S_PHONE STRING, S_ACCTBAL DOUBLE, S_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/supplier';
-create table u3_union (S_SUPPKEY INT, S_ADDRESS STRING, S_NATIONKEY INT,  S_NAME STRING);
-
-insert overwrite table u3_union 
-select * from (select (2*s_suppkey), s_address, s_nationkey,  s_name  FROM supplier where S_SUPPKEY*2 < 20 
-union all 
-select (2*s_suppkey), s_address, s_nationkey,  s_name   FROM supplier where S_SUPPKEY*2 > 50) t
-order by t.s_address;
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive
deleted file mode 100644
index 6cd4a5b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u4_gby_distinct.hive
+++ /dev/null
@@ -1,19 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u4_gby_distinct;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u4_gby_distinct(l_partkey int, t_sum_quantity double);
-
--- the query
-insert overwrite table u4_gby_distinct
-select 
-  l_orderkey, avg(distinct L_QUANTITY) as t_sum_quantity
-from 
-  lineitem
-group by l_orderkey
-order by l_orderkey desc
-limit 10;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive
deleted file mode 100644
index cef7e2b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u5_gby_global.hive
+++ /dev/null
@@ -1,16 +0,0 @@
-DROP TABLE IF EXISTS lineitem;
-DROP TABLE IF EXISTS u5_gby_global;
-
--- create the tables and load the data
-create external table lineitem (L_ORDERKEY INT, L_PARTKEY INT, L_SUPPKEY INT, L_LINENUMBER INT, L_QUANTITY DOUBLE, L_EXTENDEDPRICE DOUBLE, L_DISCOUNT DOUBLE, L_TAX DOUBLE, L_RETURNFLAG STRING, L_LINESTATUS STRING, L_SHIPDATE STRING, L_COMMITDATE STRING, L_RECEIPTDATE STRING, L_SHIPINSTRUCT STRING, L_SHIPMODE STRING, L_COMMENT STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/tpch/lineitem';
-
--- create the result tables
-create table u5_gby_global(t_sum_quantity double);
-
--- the query
-insert overwrite table u5_gby_global
-select 
-  sum(L_QUANTITY) as t_sum_quantity
-from 
-  lineitem;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive b/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive
deleted file mode 100644
index 5bf560b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/queries/u6_large_card_join.hive
+++ /dev/null
@@ -1,23 +0,0 @@
-DROP TABLE IF EXISTS joinsrc1;
-DROP TABLE IF EXISTS joinsrc2;
-DROP TABLE IF EXISTS u6_large_card_join;
-
--- create the tables and load the data
-create external table joinsrc1 (ID_1 INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
-STORED AS TEXTFILE LOCATION '/test/joinsrc1';
-
-create external table joinsrc2 (ID_2 INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 
-STORED AS TEXTFILE LOCATION '/test/joinsrc2';
-
--- create the result tables
-create table u6_large_card_join(col1 int, col2 int);
-
--- the query
-insert overwrite table u6_large_card_join
-select 
-   ID_1, ID_2
-from 
-  joinsrc1 join joinsrc2
-on
-  joinsrc1.ID_1=joinsrc2.ID_2;
-
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result b/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result
deleted file mode 100644
index 6cc8ef4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q10_returned_item.result
+++ /dev/null
@@ -1,20 +0,0 @@
-121Customer#000000121282635.171899999966428.32PERUtv nCR2YKupGN73mQudO27-411-990-2959uriously stealthy ideas. carefully final courts use carefully
-124Customer#000000124222182.51881842.49CHINAaTbyVAW5tCd,v09O28-183-750-7809le fluffily even dependencies. quietly s
-106Customer#000000106190241.33343288.42ARGENTINAxGCOEAUjUNG11-751-989-4627lose slyly. ironic accounts along the evenly regular theodolites wake about the special, final gifts. 
-16Customer#000000016161422.046099999984681.03IRANcYiaeMLZSMAOQ2 d0W,20-781-609-3107kly silent courts. thinly regular theodolites sleep fluffily after 
-44Customer#000000044149364.565199999987315.94MOZAMBIQUEOi,dOSPwDu4jo4x,,P85E0dmhZGvNtBwi26-190-260-5375r requests around the unusual, bold a
-71Customer#000000071129481.02450000001-611.19GERMANYTlGalgdXWBmMV,6agLyWYDyIz9MKzcY8gl,w6t1B17-710-812-5403g courts across the regular, final pinto beans are blithely pending ac
-89Customer#000000089121663.12431530.76KENYAdtR, y9JQWUO6FoJExyp8whOU24-394-451-5404counts are slyly beyond the slyly final accounts. quickly final ideas wake. r
-112Customer#000000112111137.714099999982953.35ROMANIARcfgG3bO7QeCnfjqJT129-233-262-8382rmanently unusual multipliers. blithely ruthless deposits are furiously along the
-62Customer#000000062106368.0153595.61GERMANYupJK2Dnw13,17-361-978-7059kly special dolphins. pinto beans are slyly. quickly regular accounts are furiously a
-146Customer#000000146103265.988799999993328.68CANADAGdxkdXG9u7iyI1,,y5tq4ZyrcEy13-835-723-3223ffily regular dinos are slyly unusual requests. slyly specia
-19Customer#00000001999306.012700000028914.71CHINAuc,3bHIx84H,wdrmLOjVsiqXCq2tr28-396-526-5053 nag. furiously careful packages are slyly at the accounts. furiously regular in
-145Customer#00000014599256.90189748.93JORDANkQjHmt2kcec cy3hfMh969u23-562-444-8454ests? express, express instructions use. blithely fina
-103Customer#00000010397311.772400000022757.45INDONESIA8KIsQX4LJ7QMsj6DrtFtXu0nUEdV,8a19-216-107-2107furiously pending notornis boost slyly around the blithely ironic ideas? final, even instructions cajole fl
-136Customer#00000013695855.39799999999-842.39GERMANYQoLsJ0v5C1IQbh,DS117-501-210-4726ackages sleep ironic, final courts. even requests above the blithely bold requests g
-53Customer#00000005392568.91244113.64MOROCCOHnaxHzTfFTZs8MuCpJyTbZ47Cm4wFOOgib25-168-852-5363ar accounts are. even foxes are blithely. fluffily pending deposits boost
-49Customer#00000004990965.72624573.94IRANcNgAeX7Fqrdf7HQN9EwjUa4nxT,68L FKAxzl20-908-631-4424nusual foxes! fluffily pending packages maintain to the regular 
-37Customer#00000003788065.74579999999-917.75INDIA7EV4Pwh,3SboctTWt18-385-235-7162ilent packages are carefully among the deposits. furiousl
-82Customer#00000008286998.96449468.34CHINAzhG3EZbap4c992Gj3bK,3Ne,Xn28-159-442-5305s wake. bravely regular accounts are furiously. regula
-125Customer#00000012584808.068-234.12ROMANIA,wSZXdVR xxIIfm9s8ITyLl3kgjT6UC07GY0Y29-261-996-3120x-ray finally after the packages? regular requests c
-59Customer#00000005984655.57113458.6ARGENTINAzLOCP0wh92OtBihgspOGl411-355-584-3112ously final packages haggle blithely after the express deposits. furiou
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result b/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result
deleted file mode 100644
index cdc01d2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q11_important_stock.result
+++ /dev/null
@@ -1,200 +0,0 @@
-252.832302068E7
-1242.59627599E7
-1752.385395363E7
-1972.248551967E7
-1632.099460571E7
-1602.00232846E7
-821.9919213349999998E7
-1691.898734723E7
-291.867279344E7
-261.8612458270000003E7
-731.827170729E7
-1611.798746301E7
-751.7959598009999998E7
-341.7780838360000003E7
-981.7763191509999998E7
-691.728526943E7
-1111.708388262E7
-1711.635442066E7
-1661.635189374E7
-771.598059909E7
-781.58768992E7
-1431.585686159E7
-171.5474261120000001E7
-1091.5054682620000001E7
-1051.5053163809999999E7
-961.495213259E7
-1461.4810759440000001E7
-1361.4654967749999998E7
-1161.443209134E7
-1281.4393555260000002E7
-1421.422039904E7
-1211.420032605E7
-301.4163132409999998E7
-161.413646503E7
-1981.413535335E7
-791.38652287E7
-901.3732797480000002E7
-321.369962979E7
-741.3388711109999998E7
-11.3378707239999998E7
-891.337148041E7
-221.335499174E7
-1861.317604077E7
-1891.305492542E7
-141.299397721E7
-931.299298218E7
-1681.299041501E7
-991.2750046790000001E7
-1671.268255069E7
-21.258471636E7
-1821.256239411E7
-611.253677656E7
-1121.234957975E7
-1781.2260301739999998E7
-1721.219775193E7
-1651.219746506E7
-1841.216784393E7
-1871.214970141E7
-1531.211935422E7
-951.20468895E7
-111.200715156E7
-1251.200347611E7
-1541.1851133850000001E7
-151.179843879E7
-671.178579951E7
-81.170789262E7
-871.168637671E7
-1341.1683586929999998E7
-1301.168246149E7
-431.161150462E7
-1021.151554211E7
-211.141066856E7
-621.138927324E7
-91.126484373E7
-801.118329032E7
-1731.1026774860000001E7
-941.092440116E7
-31.075814545E7
-1031.0691221600000001E7
-1581.067861635E7
-491.06445572E7
-1391.044045371E7
-1921.035745974E7
-241.033911936E7
-391.03210148E7
-1561.014364082E7
-1881.011906085E7
-121.0108587399999999E7
-331.005296264E7
-281.005234286E7
-409927827.77
-1999907803.559999999
-1939869674.77
-1069869361.73
-1089868370.31
-1839855564.82
-709700431.94
-489655921.88
-1189622756.149999999
-139592610.32
-839543465.079999998
-1599519909.44
-1479513932.18
-459423874.47
-1179408426.72
-1359311247.28
-1859305341.780000001
-1319223742.49
-79175528.209999999
-719167712.04
-1009131099.530000001
-769092927.110000001
-538979121.97
-1418686511.12
-648627897.290000001
-1018521762.0
-1768510175.88
-198481679.5
-1948464559.54
-918460636.52
-1328416851.24
-1138405217.959999999
-518247118.499999999
-418187897.16
-558092552.890000001
-728007155.3
-1157954624.0
-1707895241.609999999
-1147832023.279999999
-377809598.66
-547578243.79
-1807531794.4799999995
-607508961.6899999995
-317433034.240000001
-357132671.49
-1407122050.08
-1507106237.92
-1077082828.68
-1237049500.720000001
-1907017966.9
-1206920857.09
-1966905182.43
-1776887257.27
-1266813302.029999999
-1226812763.340000001
-2006780024.53
-1576766365.68
-636724960.14
-386667789.55
-586640619.38
-1456633786.590000001
-1446546945.92
-206533101.39
-1276483139.620000001
-106433776.51
-366410209.249999999
-476407355.369999999
-1916347187.43
-1376180452.850000001
-566145826.6
-1046134341.850000001
-446038126.659999999
-976036047.1899999995
-1815853464.149999999
-1625829410.54
-865746713.88
-525680644.4799999995
-1555552007.57
-925489588.28
-55461046.93
-185456316.21
-1495367514.630000001
-1105261352.11
-45162989.07
-65120392.47
-1485061589.27
-424957032.47
-1194954403.48
-844891082.38
-654834763.09
-664719253.369999999
-1794610607.92
-234531731.12
-684504770.61
-274371849.52
-1293997604.7800000003
-1953817436.31
-593765210.2100000004
-573739347.1199999996
-1383567425.75
-1743484708.31
-1643462215.0
-813421610.4200000004
-463398443.33
-853338711.3899999997
-503145791.97
-883117730.2399999998
-1512727444.22
-1521837809.1700000002
-1331517282.33
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result b/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result
deleted file mode 100644
index bb95677..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q12_shipping.result
+++ /dev/null
@@ -1,2 +0,0 @@
-MAIL5.05.0
-SHIP5.010.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result b/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result
deleted file mode 100644
index beaa047..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q13_customer_distribution.result
+++ /dev/null
@@ -1,27 +0,0 @@
-050
-168
-177
-206
-136
-126
-96
-235
-145
-105
-214
-184
-114
-84
-74
-263
-223
-63
-53
-43
-292
-242
-192
-152
-281
-251
-31
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result b/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result
deleted file mode 100644
index 3b823e7..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q14_promotion_effect.result
+++ /dev/null
@@ -1 +0,0 @@
-15.230212611597251
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result b/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result
deleted file mode 100644
index d975521..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q15_top_supplier.result
+++ /dev/null
@@ -1 +0,0 @@
-10Supplier#000000010Saygah3gYWMp72i PY34-852-489-8585797313.3838
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result b/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result
deleted file mode 100644
index 393a33a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q16_parts_supplier_relationship.result
+++ /dev/null
@@ -1,34 +0,0 @@
-Brand#11PROMO ANODIZED TIN454
-Brand#11SMALL PLATED COPPER454
-Brand#11STANDARD POLISHED TIN454
-Brand#13MEDIUM ANODIZED STEEL364
-Brand#14SMALL ANODIZED NICKEL454
-Brand#15LARGE ANODIZED BRASS454
-Brand#21LARGE BURNISHED COPPER194
-Brand#23ECONOMY BRUSHED COPPER94
-Brand#25MEDIUM PLATED BRASS454
-Brand#31ECONOMY PLATED STEEL234
-Brand#31PROMO POLISHED TIN234
-Brand#32MEDIUM BURNISHED BRASS494
-Brand#33LARGE BRUSHED TIN364
-Brand#33SMALL BURNISHED NICKEL34
-Brand#34LARGE PLATED BRASS454
-Brand#34MEDIUM BRUSHED COPPER94
-Brand#34SMALL PLATED BRASS144
-Brand#35STANDARD ANODIZED STEEL234
-Brand#43PROMO POLISHED BRASS194
-Brand#43SMALL BRUSHED NICKEL94
-Brand#44SMALL PLATED COPPER194
-Brand#52MEDIUM BURNISHED TIN454
-Brand#52SMALL BURNISHED NICKEL144
-Brand#53MEDIUM BRUSHED COPPER34
-Brand#55STANDARD ANODIZED BRASS364
-Brand#55STANDARD BRUSHED COPPER34
-Brand#13SMALL BRUSHED NICKEL192
-Brand#25SMALL BURNISHED COPPER32
-Brand#43MEDIUM ANODIZED BRASS142
-Brand#53STANDARD PLATED STEEL452
-Brand#24MEDIUM PLATED STEEL191
-Brand#51ECONOMY POLISHED STEEL491
-Brand#53LARGE BURNISHED NICKEL231
-Brand#54ECONOMY ANODIZED BRASS91
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result b/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result
deleted file mode 100644
index ccfa2e3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q17_small_quantity_order_revenue.result
+++ /dev/null
@@ -1 +0,0 @@
-863.2285714285715
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result b/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result
deleted file mode 100644
index 32d3515..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q18_large_volume_customer.result
+++ /dev/null
@@ -1,100 +0,0 @@
-Customer#0000000707025671998-02-27263411.29266.0
-Customer#0000000101044211997-04-04258779.02255.0
-Customer#0000000525257651994-12-15249900.42247.0
-Customer#0000000828234601995-10-03245976.74254.0
-Customer#0000000686822081995-05-01245388.06256.0
-Customer#0000000282823061995-07-26244704.23235.0
-Customer#00000014614659251995-11-13242588.87242.0
-Customer#0000000292911211997-01-13241837.88242.0
-Customer#0000000676739071992-08-19240457.56239.0
-Customer#0000000767651581997-01-21240284.95248.0
-Customer#00000013113144841996-12-24237947.61243.0
-Customer#0000001151156451994-12-03234763.73245.0
-Customer#0000000494942941992-08-15232194.74225.0
-Customer#0000000767614771997-08-24231831.35236.0
-Customer#0000000444446451994-09-20231012.22248.0
-Customer#0000000898959571993-12-27230949.45242.0
-Customer#000000076763261995-06-04229165.17228.0
-Customer#000000067679281995-03-02228136.49241.0
-Customer#0000000797938081994-04-24228054.01227.0
-Customer#0000000373753171994-09-09228002.51231.0
-Customer#00000000443581993-09-20226806.66223.0
-Customer#00000014214256991992-07-30226314.91240.0
-Customer#00000012112118881993-10-31224724.11225.0
-Customer#0000000949426901996-03-31224674.27219.0
-Customer#0000000949454131997-10-17224382.57212.0
-Customer#0000000323253811993-01-29223995.46228.0
-Customer#0000001451455181998-02-08223537.09214.0
-Customer#0000000292929451996-01-03223507.72231.0
-Customer#000000007736541992-06-03222653.54222.0
-Customer#0000001451458071993-11-24222392.53216.0
-Customer#00000014914936191996-11-20222274.54221.0
-Customer#0000000707054721993-04-11221636.83217.0
-Customer#00000013713749001992-06-30221320.76227.0
-Customer#00000010610637781993-05-26221036.31225.0
-Customer#00000012112111531996-04-18220727.97209.0
-Customer#0000000707040041993-05-07220715.14228.0
-Customer#000000098987681996-08-20220636.82231.0
-Customer#00000014914956061996-11-12219959.08231.0
-Customer#000000055554841997-01-03219920.62224.0
-Customer#00000014014042301992-03-04219709.6217.0
-Customer#00000008282391996-09-20219707.84231.0
-Customer#0000000373727891998-03-14219123.27218.0
-Customer#0000000171732691996-03-01218697.85220.0
-Customer#00000014914935901995-05-13218482.7210.0
-Customer#0000001341346141992-12-01218116.21204.0
-Customer#0000000929241971996-08-13217709.03225.0
-Customer#00000013313311561996-10-19217682.81218.0
-Customer#000000046464531997-05-26216826.73226.0
-Customer#00000012412431091993-07-24216104.85210.0
-Customer#0000000434349941996-06-29216071.76213.0
-Customer#00000014914937131998-05-07215342.63213.0
-Customer#00000002929681998-04-18215135.72213.0
-Customer#0000000131324381993-07-15214494.39210.0
-Customer#00000013313346131998-03-05212339.55214.0
-Customer#00000010610617611993-12-24211925.95218.0
-Customer#0000000494912481992-01-02210713.88207.0
-Customer#000000005558591997-04-23210643.96211.0
-Customer#00000010610618271996-06-22210113.88205.0
-Customer#0000000858551841998-07-20209155.48213.0
-Customer#0000001331337101993-01-02208974.42196.0
-Customer#0000000525251861996-08-03208892.63210.0
-Customer#0000000282820501994-06-02208517.98217.0
-Customer#0000000767621801996-09-14208481.57212.0
-Customer#00000011911935881995-03-19207925.83212.0
-Customer#00000013413414441994-12-06207907.6205.0
-Customer#0000001031037421994-12-23207632.55198.0
-Customer#0000000171740991992-08-21207364.8208.0
-Customer#00000010910912861993-05-14207291.83200.0
-Customer#0000000797956331998-05-31207119.83203.0
-Customer#0000000626220221992-03-15206742.11209.0
-Customer#0000000222245831994-09-25206495.43197.0
-Customer#00000014814851851997-07-25206179.68198.0
-Customer#0000000444431751994-07-15205282.63215.0
-Customer#0000000565625651998-02-28204438.57201.0
-Customer#00000014914937471996-08-20204355.65195.0
-Customer#00000010110149641997-07-28204163.1197.0
-Customer#0000000626249921992-05-10203904.8198.0
-Customer#0000000101037511994-04-27202917.72204.0
-Customer#0000000767625341996-07-17202784.54214.0
-Customer#00000000111641992-10-21202660.52213.0
-Customer#00000011811812831996-08-30202623.92200.0
-Customer#0000000101018901996-12-18202364.58207.0
-Customer#0000000777717621994-08-20202227.17216.0
-Customer#00000010610641961998-05-15201455.98198.0
-Customer#0000000646458951997-01-01201419.83200.0
-Customer#00000000886441992-05-01201268.06202.0
-Customer#000000047472611993-06-29201003.12200.0
-Customer#0000000797946721995-11-07199593.71203.0
-Customer#0000001311319301994-12-17199102.23204.0
-Customer#00000011811841611993-08-21198995.21211.0
-Customer#0000000737340691992-05-13198816.13199.0
-Customer#00000014214256961995-05-04198723.3198.0
-Customer#00000013413438721996-09-06198538.68207.0
-Customer#00000012712710591994-02-27198360.22194.0
-Customer#00000010310342931996-08-20198322.91202.0
-Customer#000000080809931995-09-10198238.65194.0
-Customer#000000091914201995-10-31198039.23200.0
-Customer#0000000929233331992-09-16197973.22195.0
-Customer#00000014614641921998-04-19197192.95209.0
-Customer#00000014514515751995-09-13197031.52204.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result b/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result
deleted file mode 100644
index 2e44572..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q19_discounted_revenue.result
+++ /dev/null
@@ -1 +0,0 @@
-51515.7344
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result b/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result
deleted file mode 100644
index c1a7b06..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q1_pricing_summary_report.result
+++ /dev/null
@@ -1,4 +0,0 @@
-AF37474.03.756962464000004E73.567619209699997E73.7101416222424E725.35453315290933725419.2318267929880.0508660351826793961478
-NF1041.01041301.07999060.89799999991036450.8022827.39473684210526427402.6597368421030.0428947368421052638
-NO75168.07.538495536999999E77.165316630340007E77.4498798133073E725.55865351921115225632.4227711662680.049697381842910722941
-RF36511.03.657084124000003E73.473847287579999E73.616906011219296E725.05902539464653225100.09693891560.050027453671928671457
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result b/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result
deleted file mode 100644
index d808757..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q20_potential_part_promotion.result
+++ /dev/null
@@ -1,10 +0,0 @@
-Supplier#000000001 N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ
-Supplier#00000000289eJ5ksX3ImxJQBvxObC,
-Supplier#000000003q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV3
-Supplier#000000004Bk7ah4CK8SYQTepEmvMkkgMwg
-Supplier#000000005Gcdm2rJRzl5qlTVzc
-Supplier#000000006tQxuVm7s7CnK
-Supplier#000000007s,4TicNGB4uO6PaSqNBUq
-Supplier#0000000089Sq4bBH2FQEmaFOocY45sRTxo6yuoG
-Supplier#0000000091KhUgZegwM3ua7dsYmekYBsK
-Supplier#000000010Saygah3gYWMp72i PY
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result b/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result
deleted file mode 100644
index 50fa26f..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q21_suppliers_who_kept_orders_waiting.result
+++ /dev/null
@@ -1,10 +0,0 @@
-Supplier#000000007431
-Supplier#000000005417
-Supplier#000000001403
-Supplier#000000009373
-Supplier#000000004367
-Supplier#000000002364
-Supplier#000000010358
-Supplier#000000003349
-Supplier#000000008347
-Supplier#000000006343
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result b/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result
deleted file mode 100644
index 08bcd0c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q22_global_sales_opportunity.result
+++ /dev/null
@@ -1,23 +0,0 @@
-10320747.13
-11535208.880000000005
-12213735.27
-13213545.3
-1419963.15
-15214624.84
-16211239.02
-1719127.27
-18322156.91
-19643758.41
-20323085.67
-21319400.52
-22320332.18
-23325483.06
-25319038.36
-26538943.899999999994
-27213248.06
-28542700.5
-29436059.009999999995
-30217528.46
-31323599.11
-32425754.22
-33320359.59
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result b/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result
deleted file mode 100644
index 402ecf3..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q2_minimum_cost_supplier.result
+++ /dev/null
@@ -1,11 +0,0 @@
-6820.35Supplier#000000007UNITED KINGDOM2Manufacturer#1s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM4Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM22Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM62Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM79Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM94Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM102Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM106Manufacturer#3s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM131Manufacturer#5s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM159Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
-6820.35Supplier#000000007UNITED KINGDOM193Manufacturer#4s,4TicNGB4uO6PaSqNBUq33-990-965-2201s unwind silently furiously regular courts. final requests are deposits. requests wake quietly blit
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result b/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result
deleted file mode 100644
index 94b2cb9..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q3_shipping_priority.result
+++ /dev/null
@@ -1,10 +0,0 @@
-157454559.51996-12-120
-301253664.311993-05-050
-115353458.01996-04-180
-128452830.331996-01-070
-317151436.9351993-04-060
-32350547.61994-03-260
-153749641.821992-02-150
-205148951.7775999999941996-03-180
-128648603.9036000000051993-05-140
-61448531.71521992-12-010
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result b/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result
deleted file mode 100644
index 0e757ee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q4_order_priority.result
+++ /dev/null
@@ -1,5 +0,0 @@
-1-URGENT9
-2-HIGH7
-3-MEDIUM9
-4-NOT SPECIFIED8
-5-LOW12
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result b/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result
deleted file mode 100644
index ecdf467..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q5_local_supplier_volume.result
+++ /dev/null
@@ -1,8 +0,0 @@
-PERU1099912.8209
-MOROCCO520107.17919999996
-IRAN375610.964
-IRAQ364417.398
-ETHIOPIA253825.7622
-ARGENTINA102659.0106
-UNITED KINGDOM61065.8711
-KENYA29679.393200000002
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result b/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result
deleted file mode 100644
index 45bb483..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q6_forecast_revenue_change.result
+++ /dev/null
@@ -1 +0,0 @@
-77949.91860000002
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result b/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result
deleted file mode 100644
index c4cfceee..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q7_volume_shipping.result
+++ /dev/null
@@ -1,37 +0,0 @@
-ARGENTINAGERMANY199263089.1006
-ARGENTINAGERMANY199364024.4532
-ARGENTINAGERMANY199432719.877199999995
-ARGENTINAGERMANY199563729.862400000005
-ARGENTINAGERMANY19961801.8198
-ETHIOPIAGERMANY199274693.317
-ETHIOPIAGERMANY199313733.706600000001
-ETHIOPIAGERMANY199483631.40359999999
-ETHIOPIAGERMANY199569329.67199999999
-ETHIOPIAGERMANY199642017.435999999994
-IRANGERMANY199238014.335399999996
-IRANGERMANY1994252152.5927
-IRANGERMANY19959106.957199999999
-IRAQGERMANY199268040.7747
-IRAQGERMANY19933676.8004
-IRAQGERMANY199485948.85280000001
-IRAQGERMANY199566380.2488
-KENYAGERMANY199277164.5422
-KENYAGERMANY199363792.8736
-KENYAGERMANY199474537.6256
-KENYAGERMANY199537851.309
-KENYAGERMANY199618467.316
-MOROCCOGERMANY199289669.69080000001
-MOROCCOGERMANY1994173726.0087
-MOROCCOGERMANY199537169.8497
-PERUGERMANY1992226624.7652
-PERUGERMANY199358359.3076
-PERUGERMANY1994345376.2983
-PERUGERMANY199552968.9424
-PERUGERMANY19967960.72
-UNITED KINGDOMGERMANY1992100143.32140000002
-UNITED KINGDOMGERMANY199341582.5227
-UNITED KINGDOMGERMANY1994164740.3271
-UNITED KINGDOMGERMANY199650909.551999999996
-UNITED STATESGERMANY199252480.9528
-UNITED STATESGERMANY1994115566.8388
-UNITED STATESGERMANY199580489.69949999999
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result b/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result
deleted file mode 100644
index 7d7bd56..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q8_national_market_share.result
+++ /dev/null
@@ -1,2 +0,0 @@
-19950.0
-19960.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result b/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result
deleted file mode 100644
index f900b06..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/q9_product_type_profit.result
+++ /dev/null
@@ -1,60 +0,0 @@
-ARGENTINA199817779.069700000007
-ARGENTINA199713943.953800000003
-ARGENTINA19967641.422700000003
-ARGENTINA199520892.752500000002
-ARGENTINA199415088.352599999998
-ARGENTINA199317586.344600000004
-ARGENTINA199228732.461499999994
-ETHIOPIA199828217.159999999996
-ETHIOPIA199633970.65
-ETHIOPIA199537720.35
-ETHIOPIA199437251.01
-ETHIOPIA199323782.61
-IRAN199723590.007999999998
-IRAN19967428.232500000005
-IRAN199521000.996499999994
-IRAN199429408.13
-IRAN199349876.41499999999
-IRAN199252064.24
-IRAQ199811619.960399999996
-IRAQ199747910.246
-IRAQ199618459.567499999997
-IRAQ199532782.37010000001
-IRAQ19949041.2317
-IRAQ199330687.2625
-IRAQ199229098.2557
-KENYA199833148.3345
-KENYA199754355.016500000005
-KENYA199653607.4854
-KENYA199585354.87380000002
-KENYA1994102904.2511
-KENYA1993109310.8084
-KENYA1992138534.12099999998
-MOROCCO1998157058.2328
-MOROCCO199788669.96099999998
-MOROCCO1996236833.66719999994
-MOROCCO1995381575.86679999996
-MOROCCO1994243523.4336
-MOROCCO1993232196.78029999993
-MOROCCO1992347434.1452
-PERU1998101109.01959999997
-PERU199758073.086599999995
-PERU199630360.52179999999
-PERU1995138451.77999999997
-PERU199455023.063200000004
-PERU1993110409.0863
-PERU199270946.1916
-UNITED KINGDOM1998139685.04400000002
-UNITED KINGDOM1997183502.04979999995
-UNITED KINGDOM1996374085.28839999996
-UNITED KINGDOM1995548356.7983999999
-UNITED KINGDOM1994266982.7679999999
-UNITED KINGDOM1993717309.464
-UNITED KINGDOM199279540.6016
-UNITED STATES199832847.96
-UNITED STATES199730849.5
-UNITED STATES199656125.46000000001
-UNITED STATES199515961.7977
-UNITED STATES199431671.2
-UNITED STATES199355057.469
-UNITED STATES199251970.23
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result
deleted file mode 100644
index 2239e1c..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u10_join.result
+++ /dev/null
@@ -1,1500 +0,0 @@
-1051.15
-1084.38
-1147.42
-1816.28
-1861.19
-1984.14
-2007.48
-2158.13
-2638.98
-3089.42
-3223.17
-3726.14
-3808.05
-3892.77
-3942.73
-3967.47
-4104.3
-4225.26
-4766.19
-4819.91
-4820.55
-4913.06
-5184.26
-5472.17
-5978.65
-6088.41
-6402.41
-6406.29
-6793.45
-7014.31
-7102.74
-7108.12
-7211.59
-7231.91
-7471.75
-7859.36
-8225.96
-8413.31
-8709.16
-8720.45
-8945.03
-8958.65
-9006.25
-9103.4
-9495.28
-9669.46
-9679.45
-9741.03
-10163.56
-10451.97
-10500.27
-10508.12
-10645.48
-10677.86
-10934.84
-11405.4
-11474.95
-11493.8
-11575.77
-11850.45
-12137.76
-12291.83
-12896.25
-12907.62
-12918.7
-12984.85
-13197.78
-13282.23
-13491.31
-13603.08
-13679.32
-14275.01
-14790.37
-15082.82
-15313.61
-15417.57
-16003.86
-16030.15
-16346.94
-16689.19
-16763.95
-16922.51
-17031.01
-17172.66
-17213.59
-17231.05
-17603.01
-17986.15
-18247.86
-18307.45
-18566.14
-18594.66
-18653.09
-18795.62
-18885.35
-19056.99
-19405.73
-19612.03
-19811.69
-20065.73
-20099.43
-20182.22
-20214.49
-20530.97
-20752.62
-20791.5
-21088.59
-21119.86
-21137.08
-21207.08
-21267.72
-21640.1
-21760.09
-21815.3
-21964.66
-22072.16
-22294.51
-22767.49
-22840.21
-22994.51
-23020.62
-23039.46
-23067.48
-23198.24
-23280.61
-23327.88
-23476.12
-23614.89
-23973.6
-23984.88
-24265.24
-24347.36
-24362.39
-24468.16
-24637.96
-24654.79
-24660.06
-24844.39
-25007.95
-25170.88
-25661.87
-25767.07
-25861.74
-25985.52
-26011.2
-26128.99
-26714.67
-26798.65
-26839.16
-26868.85
-26906.38
-26981.31
-26999.83
-27016.74
-27049.22
-27148.63
-27204.6
-27461.48
-27561.82
-27598.17
-27629.66
-27663.16
-27727.52
-28007.73
-28070.86
-28155.92
-28223.57
-28330.42
-28571.39
-28623.04
-28658.26
-28930.68
-29029.84
-29305.47
-29673.73
-29827.44
-29920.8
-30045.95
-30059.47
-30137.17
-30457.91
-30494.62
-30495.65
-30550.9
-30722.49
-30755.69
-30778.78
-30783.05
-31043.39
-31075.51
-31084.79
-31103.83
-31471.04
-31538.94
-31689.46
-31693.88
-31795.52
-32796.35
-32890.89
-32929.3
-33085.68
-33123.28
-33124.96
-33248.04
-33396.35
-33401.77
-33470.4
-33755.47
-33998.9
-34004.48
-34035.17
-34269.96
-34363.63
-34632.57
-34768.68
-34797.72
-34936.31
-35019.95
-35131.8
-35390.15
-35514.45
-35589.57
-35795.22
-35949.14
-36024.96
-36333.34
-36389.43
-36464.76
-36468.55
-36551.43
-36592.48
-36671.88
-36889.65
-37248.78
-37301.25
-37348.62
-37398.9
-37526.68
-37696.7
-37776.79
-37804.43
-37881.31
-38038.84
-38057.81
-38065.28
-38164.23
-38330.42
-38446.39
-38545.97
-38596.81
-38974.67
-38988.98
-39048.94
-39103.37
-39190.62
-39263.28
-39338.44
-39358.51
-39382.74
-39397.6
-39470.39
-39612.63
-39700.29
-39793.05
-39805.04
-39828.51
-39835.54
-39906.87
-40142.15
-40183.29
-40234.5
-40492.37
-40548.99
-40572.64
-40975.96
-40982.08
-41032.81
-41162.24
-41375.69
-41392.31
-41433.48
-41450.19
-41492.25
-41552.78
-41573.42
-41605.63
-41655.51
-41670.02
-41686.1
-41723.86
-41758.44
-41760.0
-41811.12
-42225.53
-42410.57
-42579.4
-42867.92
-42927.07
-42945.82
-43092.76
-43255.19
-43315.15
-43360.95
-43789.14
-43809.37
-43889.17
-44002.53
-44387.23
-44429.81
-44672.03
-44777.63
-44781.32
-45311.07
-45514.27
-45536.27
-45695.84
-45704.96
-45767.69
-45860.94
-45889.09
-46076.46
-46107.7
-46298.53
-46310.83
-46355.83
-46366.56
-46376.09
-46380.69
-46393.97
-46418.85
-46459.92
-46598.65
-46753.63
-46815.93
-46918.22
-47010.15
-47033.21
-47099.71
-47120.41
-47232.79
-47272.67
-47286.32
-47384.71
-47440.91
-47447.63
-47614.08
-47623.94
-47627.89
-47753.0
-47823.04
-47852.06
-47925.47
-47940.51
-47985.98
-48024.99
-48053.18
-48206.14
-48284.06
-48419.58
-48478.54
-48497.09
-48502.79
-48781.39
-49033.69
-49305.98
-49357.72
-49625.21
-49841.12
-49903.57
-50201.16
-50287.06
-50328.84
-50601.01
-50724.06
-51004.44
-51494.47
-51697.18
-51775.54
-51839.94
-52114.01
-52190.52
-52359.51
-52414.19
-52433.54
-52562.16
-52982.23
-53212.95
-53287.25
-53581.41
-53649.35
-53827.34
-54121.92
-54175.35
-54356.1
-54478.95
-54655.07
-55090.67
-55211.04
-55553.68
-55554.97
-55582.94
-55619.01
-55892.35
-55950.21
-56207.66
-56210.26
-56227.04
-56449.23
-56779.06
-56936.1
-56938.16
-56998.36
-57092.26
-57127.71
-57213.18
-57584.12
-57697.44
-57740.74
-57823.37
-58032.77
-58094.75
-58111.0
-58168.07
-58212.22
-58218.35
-58273.89
-58546.02
-58666.79
-58853.11
-58932.19
-59180.25
-59186.02
-59291.75
-59404.77
-59417.76
-59439.44
-59455.61
-59651.38
-59931.42
-59982.31
-59989.66
-60314.97
-60568.34
-60867.14
-60868.39
-60887.9
-60918.41
-60933.29
-61052.1
-61297.42
-61811.33
-62014.51
-62108.45
-62172.34
-62251.15
-62258.18
-62277.18
-62316.61
-62430.67
-62453.97
-62497.51
-62518.31
-62541.27
-62567.99
-62661.93
-62716.67
-62807.13
-62814.89
-62972.29
-63041.33
-63103.32
-63195.54
-63278.0
-63470.78
-63535.56
-63537.13
-63590.17
-63703.92
-63873.14
-64000.93
-64102.93
-64271.75
-64344.86
-64838.66
-64892.73
-65189.17
-65218.47
-65269.38
-65331.05
-65385.42
-65601.08
-65678.21
-65702.39
-65883.92
-66158.13
-66268.86
-66408.29
-66455.34
-66697.95
-66817.05
-66927.16
-67018.3
-67045.94
-67049.37
-67167.19
-67173.82
-67226.28
-67525.43
-67572.73
-67789.42
-67941.54
-67944.38
-67979.49
-68052.7
-68056.57
-68255.82
-68309.28
-68494.08
-68519.84
-68619.29
-68817.08
-68885.66
-68908.31
-69412.71
-69447.25
-69668.22
-70182.63
-70183.29
-70232.26
-70377.31
-70392.02
-70403.62
-70430.54
-70462.84
-70502.52
-70529.27
-70553.45
-70557.05
-70857.51
-71017.99
-71241.63
-71349.3
-71362.5
-71381.21
-71453.85
-71460.49
-71543.41
-71683.84
-71781.23
-71822.86
-71852.67
-71968.1
-72055.87
-72150.68
-72359.55
-72440.52
-72533.07
-72835.95
-72843.48
-73517.91
-73739.06
-73882.37
-73907.63
-73924.21
-73962.95
-73990.08
-74483.95
-74710.74
-74882.22
-74892.08
-74940.13
-75026.51
-75030.81
-75074.07
-75144.68
-75145.87
-75661.7
-75733.58
-76067.1
-76119.72
-76164.41
-76518.11
-76799.25
-76848.96
-77247.05
-77482.87
-77487.09
-77705.4
-77754.62
-78221.69
-78567.55
-78676.54
-78711.4
-79189.58
-79197.77
-79230.47
-79248.35
-79258.24
-79270.23
-79380.51
-79594.68
-79646.89
-79683.42
-79782.56
-79785.52
-79863.84
-79901.18
-80018.54
-80084.61
-80274.22
-80437.72
-80438.38
-80487.97
-80592.44
-80624.38
-81089.61
-81138.17
-81351.53
-81663.65
-81826.12
-82026.18
-82034.03
-82151.12
-82190.77
-82197.79
-82467.29
-82493.07
-82504.56
-82563.1
-82598.87
-82746.74
-82824.14
-82918.36
-82928.12
-83413.3
-83490.99
-83665.2
-83773.49
-83804.38
-84053.93
-84314.51
-84405.78
-84493.55
-84627.76
-84651.8
-84800.44
-84871.5
-84954.79
-84983.9
-85122.24
-85255.56
-85381.0
-85394.06
-85397.04
-85477.89
-85552.21
-85755.84
-85822.67
-85861.93
-85901.7
-85927.85
-85948.02
-86076.86
-86534.05
-86615.25
-86918.57
-86958.28
-87073.89
-87248.17
-87475.82
-87689.88
-87803.55
-87892.38
-87988.34
-88047.04
-88080.33
-88216.32
-88219.12
-88448.24
-88704.26
-88966.68
-89143.36
-89224.24
-89345.99
-89359.11
-89399.4
-89503.11
-89509.91
-89592.11
-89684.31
-89731.1
-89792.48
-89877.09
-89992.48
-89999.72
-90042.41
-90380.4
-90707.58
-90755.31
-90981.28
-91017.61
-91438.59
-91513.79
-91541.48
-91664.85
-91678.66
-91795.13
-91929.93
-91982.29
-92069.62
-92123.32
-92187.8
-92261.08
-92326.79
-92340.77
-92484.7
-92716.17
-92730.74
-92798.66
-92851.8
-92856.91
-93206.35
-93259.93
-93335.6
-93403.05
-93769.28
-93828.15
-94030.43
-94135.77
-94231.71
-94400.43
-94446.69
-94527.23
-94534.07
-94649.25
-94866.39
-94969.41
-95063.41
-95126.32
-95291.79
-95312.81
-95453.8
-95563.95
-95591.4
-95731.5
-95761.93
-95929.46
-96015.13
-96057.42
-96166.92
-96359.65
-96431.77
-96458.03
-96596.81
-96855.29
-97502.23
-97733.87
-97758.28
-97981.06
-98140.86
-98258.73
-98275.37
-98335.61
-98422.83
-98485.21
-98541.95
-98643.17
-98723.11
-98753.57
-98956.82
-98987.51
-99050.81
-99088.75
-99177.69
-99290.01
-99377.51
-99494.67
-99577.55
-99798.76
-99834.47
-99851.38
-99960.46
-100035.03
-100106.96
-100290.07
-100445.59
-100671.06
-100714.13
-100749.6
-100750.67
-100758.71
-100954.64
-101020.75
-101202.18
-101240.96
-101339.68
-101429.61
-101616.44
-101709.52
-101878.46
-101899.93
-102207.2
-102226.59
-102534.63
-102665.03
-102693.61
-102793.59
-102807.59
-103085.13
-103192.74
-103320.91
-103641.15
-103656.44
-103814.27
-104038.78
-104166.56
-104259.88
-104391.11
-104523.03
-104585.77
-104664.4
-104695.09
-104759.25
-104927.66
-104966.33
-105094.09
-105145.4
-105302.05
-105421.09
-105492.37
-105561.21
-105770.53
-105789.01
-106036.84
-106045.89
-106122.38
-106150.05
-106315.25
-106446.02
-106612.48
-106635.21
-106823.97
-106935.19
-107139.29
-107140.22
-107231.6
-107406.26
-107732.23
-107824.4
-107919.86
-107958.62
-108107.42
-108171.38
-108196.56
-108239.46
-108317.51
-108334.3
-108353.08
-108361.46
-108412.57
-108424.94
-108443.84
-109077.69
-109202.9
-109246.54
-109247.0
-109301.02
-109351.87
-109469.9
-109536.55
-109979.71
-110194.31
-110432.76
-110626.82
-110826.83
-110958.36
-111020.79
-111207.93
-111403.66
-111547.31
-111597.96
-111924.56
-112444.42
-112603.34
-112770.89
-112843.52
-112845.04
-112912.0
-113156.3
-113191.45
-113417.03
-113505.19
-113701.89
-113954.89
-114097.63
-114145.18
-114681.55
-114879.19
-114978.03
-114990.63
-115161.29
-115219.88
-115411.37
-115688.85
-115717.37
-115759.13
-115877.4
-115929.14
-115959.96
-116003.11
-116069.66
-116093.49
-116127.69
-116193.97
-116227.05
-116258.53
-116740.67
-116789.98
-116792.13
-116923.0
-117132.72
-117397.16
-117537.87
-117728.37
-117817.52
-117827.18
-117909.23
-118036.54
-118201.53
-118464.65
-118495.12
-118570.79
-118802.62
-118896.95
-119164.96
-119201.64
-119605.91
-119820.38
-119838.14
-119887.47
-119910.04
-119917.28
-120053.52
-120073.51
-120086.84
-120324.82
-120516.93
-120533.46
-120626.49
-120828.12
-121220.59
-121360.83
-121663.68
-121704.45
-121935.23
-121994.04
-122157.14
-122490.66
-122611.05
-122621.31
-122785.82
-122823.78
-122964.66
-122969.79
-123014.83
-123120.06
-123477.05
-123586.03
-123956.25
-124380.73
-124402.59
-124470.32
-124539.0
-124608.69
-124637.19
-124661.48
-124675.27
-124719.97
-124950.79
-125011.92
-125030.37
-125125.57
-125170.86
-125188.72
-125191.12
-125396.8
-125509.17
-125562.09
-125792.83
-126066.0
-126113.32
-126205.42
-126235.35
-126597.21
-126804.9
-126902.81
-126948.81
-127068.89
-127132.51
-127134.05
-127191.47
-127345.45
-127527.05
-127532.2
-127717.72
-127817.38
-127934.71
-128014.15
-128024.71
-128234.96
-128367.97
-128624.99
-128776.9
-128786.57
-129004.81
-129012.84
-129033.13
-129062.13
-129086.93
-129096.8
-129546.56
-129636.99
-129657.08
-129803.03
-129821.09
-130125.64
-130204.17
-130345.9
-130515.61
-130647.18
-130687.64
-130702.19
-131079.52
-131092.67
-131103.31
-131122.82
-131146.47
-131251.81
-131432.42
-131447.03
-131604.34
-131752.07
-131891.05
-132494.97
-132838.49
-132854.79
-132972.24
-133002.55
-133038.59
-133273.64
-133451.14
-133665.12
-133829.35
-133864.82
-134308.04
-134333.33
-134413.58
-134442.37
-134726.09
-134814.65
-135157.92
-135187.33
-135335.96
-135613.18
-135643.87
-135647.68
-135745.58
-135761.05
-135934.6
-136058.7
-136162.13
-136360.37
-136517.34
-136582.6
-136634.34
-136765.03
-136954.81
-137030.4
-137223.14
-137297.71
-137369.5
-137473.58
-137576.19
-138010.76
-138423.03
-138584.2
-138902.23
-139047.22
-139104.17
-139124.72
-139332.94
-139542.14
-139579.18
-139580.85
-139714.71
-139854.41
-139902.71
-139915.23
-140031.23
-140363.7
-140390.6
-140608.69
-140685.01
-140838.11
-141118.87
-141159.63
-141311.01
-141486.77
-141554.06
-141647.08
-141679.41
-141822.19
-141824.23
-141858.97
-141902.54
-142029.67
-142070.65
-142290.77
-142291.79
-142322.33
-142323.38
-142494.99
-142767.26
-142866.39
-142891.22
-143070.7
-143191.54
-143212.85
-143276.28
-143350.75
-143411.69
-143753.01
-143813.39
-143899.85
-144123.37
-144335.16
-145040.38
-145060.41
-145096.17
-145100.47
-145232.09
-145249.13
-145426.11
-145495.62
-145630.76
-145654.97
-145695.42
-145713.03
-145730.19
-145761.99
-145768.47
-145857.6
-145898.47
-145906.24
-145971.6
-146136.1
-146221.66
-146298.28
-146382.71
-146581.14
-146849.33
-146862.27
-146896.72
-146933.07
-147071.86
-147243.86
-147329.51
-147343.68
-147543.26
-147915.68
-148176.06
-148299.05
-148500.71
-148682.82
-148789.52
-149451.88
-149466.62
-149536.2
-149614.34
-149671.92
-150334.57
-150345.63
-150349.92
-150582.77
-150585.73
-150655.44
-150886.49
-151089.96
-151148.81
-151233.65
-151282.65
-151404.78
-151419.5
-151515.08
-151801.06
-152940.0
-153024.28
-153048.74
-153069.14
-153233.93
-153259.41
-153386.61
-153426.79
-153568.02
-153637.79
-153720.22
-153864.67
-154260.84
-154383.37
-154590.05
-154653.32
-154936.43
-154958.89
-154967.89
-155017.92
-155045.39
-155356.8
-155680.6
-156018.74
-156345.64
-156381.95
-156407.4
-156477.94
-156697.55
-156802.8
-157040.57
-157062.7
-157767.86
-157968.27
-158345.31
-158479.37
-158776.68
-158853.63
-158885.83
-158893.16
-158991.89
-159005.35
-159015.39
-159170.8
-159171.69
-159578.94
-159720.39
-159870.44
-160627.01
-160882.76
-161066.22
-161307.05
-161625.5
-161745.44
-162088.3
-162113.46
-162165.94
-162176.23
-162634.53
-162786.67
-163709.85
-163746.47
-163794.53
-163834.46
-163966.67
-164462.61
-165019.32
-165219.08
-165454.51
-165489.52
-165655.99
-165890.47
-166335.03
-166506.22
-166669.86
-166947.75
-166961.06
-167017.39
-167056.34
-167262.34
-168495.03
-168562.27
-168618.39
-168721.45
-168750.48
-168952.1
-169107.85
-169756.19
-169797.4
-169847.63
-170360.27
-171128.1
-171326.48
-171488.73
-171522.54
-171894.45
-171975.62
-172021.87
-172102.96
-172436.3
-172861.58
-172872.37
-172899.84
-172908.01
-173024.71
-173130.2
-173145.37
-173340.09
-173444.6
-173522.71
-174090.3
-174223.2
-174569.88
-174634.12
-174798.97
-175017.68
-175142.28
-175422.13
-176084.63
-176278.57
-176294.34
-176525.53
-176647.54
-176864.83
-176867.34
-176911.21
-177181.67
-177458.97
-178060.22
-178249.05
-178254.66
-178491.24
-178492.01
-178821.73
-179287.95
-179292.14
-179418.31
-179462.21
-179554.41
-179686.07
-179747.47
-179827.12
-179854.51
-179923.54
-179984.42
-180054.29
-180119.22
-180396.95
-180417.11
-180455.98
-180478.16
-180692.9
-180737.75
-180912.15
-181077.36
-181320.5
-181346.56
-182025.95
-182432.17
-182516.77
-182966.39
-183104.71
-183176.6
-183286.33
-183493.42
-183620.33
-183671.08
-183734.56
-183965.61
-184172.31
-184583.99
-185496.66
-185968.15
-186215.81
-186370.23
-186669.1
-186912.51
-187156.38
-187514.11
-187516.29
-187553.35
-187932.3
-188124.55
-188985.18
-189361.42
-189547.57
-189651.76
-190142.17
-190490.78
-190652.53
-190693.92
-190960.69
-192074.23
-192217.86
-192417.85
-193832.28
-193857.67
-194119.31
-194159.59
-195515.26
-195834.96
-195844.84
-196080.26
-196443.16
-196989.09
-197031.52
-197192.95
-197973.22
-198039.23
-198238.65
-198322.91
-198360.22
-198538.68
-198723.3
-198816.13
-198995.21
-199102.23
-199593.71
-201003.12
-201268.06
-201419.83
-201455.98
-202227.17
-202364.58
-202623.92
-202660.52
-202784.54
-202917.72
-203904.8
-204163.1
-204355.65
-204438.57
-205282.63
-206179.68
-206495.43
-206742.11
-207119.83
-207291.83
-207364.8
-207632.55
-207907.6
-207925.83
-208481.57
-208517.98
-208892.63
-208974.42
-209155.48
-210113.88
-210643.96
-210713.88
-211925.95
-212339.55
-214494.39
-215135.72
-215342.63
-216071.76
-216104.85
-216826.73
-217682.81
-217709.03
-218116.21
-218482.7
-218697.85
-219123.27
-219707.84
-219709.6
-219920.62
-219959.08
-220636.82
-220715.14
-220727.97
-221036.31
-221320.76
-221636.83
-222274.54
-222392.53
-222653.54
-223507.72
-223537.09
-223995.46
-224382.57
-224674.27
-224724.11
-226314.91
-226806.66
-228002.51
-228054.01
-228136.49
-229165.17
-230949.45
-231012.22
-231831.35
-232194.74
-234763.73
-237947.61
-240284.95
-240457.56
-241837.88
-242588.87
-244704.23
-245388.06
-245976.74
-249900.42
-258779.02
-263411.29
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result
deleted file mode 100644
index ffc76a4..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u10_nestedloop_join.result
+++ /dev/null
@@ -1,300 +0,0 @@
-ARGENTINAALGERIA10
-BRAZILALGERIA20
-BRAZILARGENTINA21
-CANADAALGERIA30
-CANADAARGENTINA31
-CANADABRAZIL32
-CHINAALGERIA180
-CHINAARGENTINA181
-CHINABRAZIL182
-CHINACANADA183
-CHINAEGYPT184
-CHINAETHIOPIA185
-CHINAFRANCE186
-CHINAGERMANY187
-CHINAINDIA188
-CHINAINDONESIA189
-CHINAIRAN1810
-CHINAIRAQ1811
-CHINAJAPAN1812
-CHINAJORDAN1813
-CHINAKENYA1814
-CHINAMOROCCO1815
-CHINAMOZAMBIQUE1816
-CHINAPERU1817
-EGYPTALGERIA40
-EGYPTARGENTINA41
-EGYPTBRAZIL42
-EGYPTCANADA43
-ETHIOPIAALGERIA50
-ETHIOPIAARGENTINA51
-ETHIOPIABRAZIL52
-ETHIOPIACANADA53
-ETHIOPIAEGYPT54
-FRANCEALGERIA60
-FRANCEARGENTINA61
-FRANCEBRAZIL62
-FRANCECANADA63
-FRANCEEGYPT64
-FRANCEETHIOPIA65
-GERMANYALGERIA70
-GERMANYARGENTINA71
-GERMANYBRAZIL72
-GERMANYCANADA73
-GERMANYEGYPT74
-GERMANYETHIOPIA75
-GERMANYFRANCE76
-INDIAALGERIA80
-INDIAARGENTINA81
-INDIABRAZIL82
-INDIACANADA83
-INDIAEGYPT84
-INDIAETHIOPIA85
-INDIAFRANCE86
-INDIAGERMANY87
-INDONESIAALGERIA90
-INDONESIAARGENTINA91
-INDONESIABRAZIL92
-INDONESIACANADA93
-INDONESIAEGYPT94
-INDONESIAETHIOPIA95
-INDONESIAFRANCE96
-INDONESIAGERMANY97
-INDONESIAINDIA98
-IRANALGERIA100
-IRANARGENTINA101
-IRANBRAZIL102
-IRANCANADA103
-IRANEGYPT104
-IRANETHIOPIA105
-IRANFRANCE106
-IRANGERMANY107
-IRANINDIA108
-IRANINDONESIA109
-IRAQALGERIA110
-IRAQARGENTINA111
-IRAQBRAZIL112
-IRAQCANADA113
-IRAQEGYPT114
-IRAQETHIOPIA115
-IRAQFRANCE116
-IRAQGERMANY117
-IRAQINDIA118
-IRAQINDONESIA119
-IRAQIRAN1110
-JAPANALGERIA120
-JAPANARGENTINA121
-JAPANBRAZIL122
-JAPANCANADA123
-JAPANEGYPT124
-JAPANETHIOPIA125
-JAPANFRANCE126
-JAPANGERMANY127
-JAPANINDIA128
-JAPANINDONESIA129
-JAPANIRAN1210
-JAPANIRAQ1211
-JORDANALGERIA130
-JORDANARGENTINA131
-JORDANBRAZIL132
-JORDANCANADA133
-JORDANEGYPT134
-JORDANETHIOPIA135
-JORDANFRANCE136
-JORDANGERMANY137
-JORDANINDIA138
-JORDANINDONESIA139
-JORDANIRAN1310
-JORDANIRAQ1311
-JORDANJAPAN1312
-KENYAALGERIA140
-KENYAARGENTINA141
-KENYABRAZIL142
-KENYACANADA143
-KENYAEGYPT144
-KENYAETHIOPIA145
-KENYAFRANCE146
-KENYAGERMANY147
-KENYAINDIA148
-KENYAINDONESIA149
-KENYAIRAN1410
-KENYAIRAQ1411
-KENYAJAPAN1412
-KENYAJORDAN1413
-MOROCCOALGERIA150
-MOROCCOARGENTINA151
-MOROCCOBRAZIL152
-MOROCCOCANADA153
-MOROCCOEGYPT154
-MOROCCOETHIOPIA155
-MOROCCOFRANCE156
-MOROCCOGERMANY157
-MOROCCOINDIA158
-MOROCCOINDONESIA159
-MOROCCOIRAN1510
-MOROCCOIRAQ1511
-MOROCCOJAPAN1512
-MOROCCOJORDAN1513
-MOROCCOKENYA1514
-MOZAMBIQUEALGERIA160
-MOZAMBIQUEARGENTINA161
-MOZAMBIQUEBRAZIL162
-MOZAMBIQUECANADA163
-MOZAMBIQUEEGYPT164
-MOZAMBIQUEETHIOPIA165
-MOZAMBIQUEFRANCE166
-MOZAMBIQUEGERMANY167
-MOZAMBIQUEINDIA168
-MOZAMBIQUEINDONESIA169
-MOZAMBIQUEIRAN1610
-MOZAMBIQUEIRAQ1611
-MOZAMBIQUEJAPAN1612
-MOZAMBIQUEJORDAN1613
-MOZAMBIQUEKENYA1614
-MOZAMBIQUEMOROCCO1615
-PERUALGERIA170
-PERUARGENTINA171
-PERUBRAZIL172
-PERUCANADA173
-PERUEGYPT174
-PERUETHIOPIA175
-PERUFRANCE176
-PERUGERMANY177
-PERUINDIA178
-PERUINDONESIA179
-PERUIRAN1710
-PERUIRAQ1711
-PERUJAPAN1712
-PERUJORDAN1713
-PERUKENYA1714
-PERUMOROCCO1715
-PERUMOZAMBIQUE1716
-ROMANIAALGERIA190
-ROMANIAARGENTINA191
-ROMANIABRAZIL192
-ROMANIACANADA193
-ROMANIACHINA1918
-ROMANIAEGYPT194
-ROMANIAETHIOPIA195
-ROMANIAFRANCE196
-ROMANIAGERMANY197
-ROMANIAINDIA198
-ROMANIAINDONESIA199
-ROMANIAIRAN1910
-ROMANIAIRAQ1911
-ROMANIAJAPAN1912
-ROMANIAJORDAN1913
-ROMANIAKENYA1914
-ROMANIAMOROCCO1915
-ROMANIAMOZAMBIQUE1916
-ROMANIAPERU1917
-RUSSIAALGERIA220
-RUSSIAARGENTINA221
-RUSSIABRAZIL222
-RUSSIACANADA223
-RUSSIACHINA2218
-RUSSIAEGYPT224
-RUSSIAETHIOPIA225
-RUSSIAFRANCE226
-RUSSIAGERMANY227
-RUSSIAINDIA228
-RUSSIAINDONESIA229
-RUSSIAIRAN2210
-RUSSIAIRAQ2211
-RUSSIAJAPAN2212
-RUSSIAJORDAN2213
-RUSSIAKENYA2214
-RUSSIAMOROCCO2215
-RUSSIAMOZAMBIQUE2216
-RUSSIAPERU2217
-RUSSIAROMANIA2219
-RUSSIASAUDI ARABIA2220
-RUSSIAVIETNAM2221
-SAUDI ARABIAALGERIA200
-SAUDI ARABIAARGENTINA201
-SAUDI ARABIABRAZIL202
-SAUDI ARABIACANADA203
-SAUDI ARABIACHINA2018
-SAUDI ARABIAEGYPT204
-SAUDI ARABIAETHIOPIA205
-SAUDI ARABIAFRANCE206
-SAUDI ARABIAGERMANY207
-SAUDI ARABIAINDIA208
-SAUDI ARABIAINDONESIA209
-SAUDI ARABIAIRAN2010
-SAUDI ARABIAIRAQ2011
-SAUDI ARABIAJAPAN2012
-SAUDI ARABIAJORDAN2013
-SAUDI ARABIAKENYA2014
-SAUDI ARABIAMOROCCO2015
-SAUDI ARABIAMOZAMBIQUE2016
-SAUDI ARABIAPERU2017
-SAUDI ARABIAROMANIA2019
-UNITED KINGDOMALGERIA230
-UNITED KINGDOMARGENTINA231
-UNITED KINGDOMBRAZIL232
-UNITED KINGDOMCANADA233
-UNITED KINGDOMCHINA2318
-UNITED KINGDOMEGYPT234
-UNITED KINGDOMETHIOPIA235
-UNITED KINGDOMFRANCE236
-UNITED KINGDOMGERMANY237
-UNITED KINGDOMINDIA238
-UNITED KINGDOMINDONESIA239
-UNITED KINGDOMIRAN2310
-UNITED KINGDOMIRAQ2311
-UNITED KINGDOMJAPAN2312
-UNITED KINGDOMJORDAN2313
-UNITED KINGDOMKENYA2314
-UNITED KINGDOMMOROCCO2315
-UNITED KINGDOMMOZAMBIQUE2316
-UNITED KINGDOMPERU2317
-UNITED KINGDOMROMANIA2319
-UNITED KINGDOMRUSSIA2322
-UNITED KINGDOMSAUDI ARABIA2320
-UNITED KINGDOMVIETNAM2321
-UNITED STATESALGERIA240
-UNITED STATESARGENTINA241
-UNITED STATESBRAZIL242
-UNITED STATESCANADA243
-UNITED STATESCHINA2418
-UNITED STATESEGYPT244
-UNITED STATESETHIOPIA245
-UNITED STATESFRANCE246
-UNITED STATESGERMANY247
-UNITED STATESINDIA248
-UNITED STATESINDONESIA249
-UNITED STATESIRAN2410
-UNITED STATESIRAQ2411
-UNITED STATESJAPAN2412
-UNITED STATESJORDAN2413
-UNITED STATESKENYA2414
-UNITED STATESMOROCCO2415
-UNITED STATESMOZAMBIQUE2416
-UNITED STATESPERU2417
-UNITED STATESROMANIA2419
-UNITED STATESRUSSIA2422
-UNITED STATESSAUDI ARABIA2420
-UNITED STATESUNITED KINGDOM2423
-UNITED STATESVIETNAM2421
-VIETNAMALGERIA210
-VIETNAMARGENTINA211
-VIETNAMBRAZIL212
-VIETNAMCANADA213
-VIETNAMCHINA2118
-VIETNAMEGYPT214
-VIETNAMETHIOPIA215
-VIETNAMFRANCE216
-VIETNAMGERMANY217
-VIETNAMINDIA218
-VIETNAMINDONESIA219
-VIETNAMIRAN2110
-VIETNAMIRAQ2111
-VIETNAMJAPAN2112
-VIETNAMJORDAN2113
-VIETNAMKENYA2114
-VIETNAMMOROCCO2115
-VIETNAMMOZAMBIQUE2116
-VIETNAMPERU2117
-VIETNAMROMANIA2119
-VIETNAMSAUDI ARABIA2120
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result b/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result
deleted file mode 100644
index 7efa15a..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u1_gby.result
+++ /dev/null
@@ -1,5 +0,0 @@
-05
-15
-25
-35
-45
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result b/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result
deleted file mode 100644
index b30110b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u2_gby_external.result
+++ /dev/null
@@ -1,10 +0,0 @@
-598841.0
-598725.25
-598617.8
-59854.0
-598420.25
-595928.857142857142858
-595829.6
-595734.57142857142857
-595630.0
-595523.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result b/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result
deleted file mode 100644
index e8ec7a2..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u3_union.result
+++ /dev/null
@@ -1,9 +0,0 @@
-2 N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ17Supplier#000000001
-181KhUgZegwM3ua7dsYmekYBsK10Supplier#000000009
-489eJ5ksX3ImxJQBvxObC,5Supplier#000000002
-169Sq4bBH2FQEmaFOocY45sRTxo6yuoG17Supplier#000000008
-8Bk7ah4CK8SYQTepEmvMkkgMwg15Supplier#000000004
-10Gcdm2rJRzl5qlTVzc11Supplier#000000005
-6q1,G3Pj6OjIuUYfUoH18BFTKP5aU9bEV31Supplier#000000003
-14s,4TicNGB4uO6PaSqNBUq23Supplier#000000007
-12tQxuVm7s7CnK14Supplier#000000006
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result b/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result
deleted file mode 100644
index b30110b..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u4_gby_distinct.result
+++ /dev/null
@@ -1,10 +0,0 @@
-598841.0
-598725.25
-598617.8
-59854.0
-598420.25
-595928.857142857142858
-595829.6
-595734.57142857142857
-595630.0
-595523.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result b/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result
deleted file mode 100644
index 8828088..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u5_gby_global.result
+++ /dev/null
@@ -1 +0,0 @@
-152398.0
diff --git a/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result b/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result
deleted file mode 100644
index 82b4857..0000000
--- a/hivesterix/src/test/resources/runtimefunctionts/results/u6_large_card_join.result
+++ /dev/null
@@ -1,512 +0,0 @@
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
-22
diff --git a/hyracks/hyracks-api/pom.xml b/hyracks/hyracks-api/pom.xml
index 7778b31..091767b 100644
--- a/hyracks/hyracks-api/pom.xml
+++ b/hyracks/hyracks-api/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -47,7 +47,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-ipc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   	<dependency>
   		<groupId>org.apache.commons</groupId>
diff --git a/hyracks/hyracks-cli/pom.xml b/hyracks/hyracks-cli/pom.xml
deleted file mode 100644
index a11c28b..0000000
--- a/hyracks/hyracks-cli/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks</groupId>
-  <artifactId>hyracks-cli</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
-  <name>hyracks-cli</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks</groupId>
-    <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javacc-maven-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>javacc</id>
-            <goals>
-              <goal>javacc</goal>
-            </goals>
-            <configuration>
-              <isStatic>false</isStatic>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>appassembler-maven-plugin</artifactId>
-        <version>1.3</version>
-        <executions>
-          <execution>
-            <configuration>
-              <programs>
-                <program>
-                  <mainClass>edu.uci.ics.hyracks.cli.Main</mainClass>
-                  <name>hyrackscli</name>
-                </program>
-              </programs>
-              <repositoryLayout>flat</repositoryLayout>
-              <repositoryName>lib</repositoryName>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>assemble</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/binary-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>jline</groupId>
-  		<artifactId>jline</artifactId>
-  		<version>0.9.94</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks</groupId>
-  		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml b/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml
deleted file mode 100644
index 0500499..0000000
--- a/hyracks/hyracks-cli/src/main/assembly/binary-assembly.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<assembly>
-  <id>binary-assembly</id>
-  <formats>
-    <format>zip</format>
-    <format>dir</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/appassembler/bin</directory>
-      <outputDirectory>bin</outputDirectory>
-      <fileMode>0755</fileMode>
-    </fileSet>
-    <fileSet>
-      <directory>target/appassembler/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
deleted file mode 100644
index f01c724..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CLI.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import java.io.IOException;
-
-import jline.ConsoleReader;
-
-public class CLI {
-    private static final String HYRACKS_PROMPT = "hyracks> ";
-    private static final String HYRAX_CONTINUE_PROMPT = "> ";
-    private final ConsoleReader reader;
-    private final Session session;
-
-    public CLI(String[] args) throws IOException {
-        reader = new ConsoleReader();
-        session = new Session();
-    }
-
-    public void run() throws IOException {
-        boolean eof = false;
-        while (true) {
-            String prompt = HYRACKS_PROMPT;
-            StringBuilder command = new StringBuilder();
-            while (true) {
-                String line = reader.readLine(prompt);
-                if (line == null) {
-                    eof = true;
-                    break;
-                }
-                prompt = HYRAX_CONTINUE_PROMPT;
-                line = line.trim();
-                command.append(line);
-                if ("".equals(line)) {
-                    break;
-                }
-                if (line.endsWith(";")) {
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-            try {
-                CommandExecutor.execute(session, command.toString());
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
deleted file mode 100644
index 6bdd136..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/CommandExecutor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import java.io.StringReader;
-import java.util.List;
-
-import edu.uci.ics.hyracks.cli.commands.Command;
-
-public class CommandExecutor {
-    public static void execute(Session session, String command) throws Exception {
-        CLIParser parser = new CLIParser(new StringReader(command));
-        List<Command> cmds = parser.Commands();
-        for (Command cmd : cmds) {
-            cmd.run(session);
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java
deleted file mode 100644
index 5f7ef0b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Main.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-public class Main {
-    public static void main(String[] args) throws Exception {
-        CLI cli = new CLI(args);
-        cli.run();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
deleted file mode 100644
index f15b1bb..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/Session.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.cli;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-
-public class Session {
-    private IHyracksClientConnection connection;
-
-    public void setConnection(IHyracksClientConnection connection) {
-        this.connection = connection;
-    }
-
-    public IHyracksClientConnection getConnection() {
-        return connection;
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
deleted file mode 100644
index ee5849b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/Command.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.cli.Session;
-
-public abstract class Command {
-    public abstract void run(Session session) throws Exception;
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
deleted file mode 100644
index 168280b..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/ConnectCommand.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.api.client.HyracksConnection;
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class ConnectCommand extends Command {
-    private String host;
-
-    private int port;
-
-    public ConnectCommand(String hostPortStr) {
-        int idx = hostPortStr.indexOf(':');
-        host = hostPortStr;
-        port = 1098;
-        if (idx != -1) {
-            host = hostPortStr.substring(0, idx);
-            port = Integer.valueOf(hostPortStr.substring(idx + 1));
-        }
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        System.err.println("Connecting to host: " + host + ", port: " + port);
-        IHyracksClientConnection conn = new HyracksConnection(host, port);
-        session.setConnection(conn);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
deleted file mode 100644
index 7b35ee5..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/CreateApplicationCommand.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import java.io.File;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class CreateApplicationCommand extends Command {
-    private String appName;
-
-    private File harFile;
-
-    public CreateApplicationCommand(String appName, File harFile) {
-        this.appName = appName;
-        this.harFile = harFile;
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        IHyracksClientConnection hcc = session.getConnection();
-        if (hcc == null) {
-            throw new RuntimeException("Not connected to Hyracks Cluster Controller");
-        }
-        System.err.println("Creating application: " + appName + " with har: " + harFile.getAbsolutePath());
-        hcc.createApplication(appName, harFile);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
deleted file mode 100644
index 03aed1e..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DestroyApplicationCommand.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.api.client.IHyracksClientConnection;
-import edu.uci.ics.hyracks.cli.Session;
-
-public class DestroyApplicationCommand extends Command {
-    private String appName;
-
-    public DestroyApplicationCommand(String appName) {
-        this.appName = appName;
-    }
-
-    @Override
-    public void run(Session session) throws Exception {
-        IHyracksClientConnection hcc = session.getConnection();
-        if (hcc == null) {
-            throw new RuntimeException("Not connected to Hyracks Cluster Controller");
-        }
-        System.err.println("Destroying application: " + appName);
-        hcc.destroyApplication(appName);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java b/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
deleted file mode 100644
index facf0f1..0000000
--- a/hyracks/hyracks-cli/src/main/java/edu/uci/ics/hyracks/cli/commands/DisconnectCommand.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package edu.uci.ics.hyracks.cli.commands;
-
-import edu.uci.ics.hyracks.cli.Session;
-
-public class DisconnectCommand extends Command {
-    @Override
-    public void run(Session session) throws Exception {
-        System.err.println("Disconnecting...");
-        session.setConnection(null);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-cli/src/main/javacc/cli.jj b/hyracks/hyracks-cli/src/main/javacc/cli.jj
deleted file mode 100644
index 0f386cb..0000000
--- a/hyracks/hyracks-cli/src/main/javacc/cli.jj
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-options {
-    STATIC = false;
-    IGNORE_CASE = true;
-}
-
-PARSER_BEGIN(CLIParser)
-
-package edu.uci.ics.hyracks.cli;
-
-import java.io.*;
-import java.util.*;
-import edu.uci.ics.hyracks.cli.commands.*;
-
-class CLIParser {
-    private String unquote(String s) {
-        return s.substring(1, s.length() - 1);
-    }
-}
-
-PARSER_END(CLIParser)
-
-List<Command> Commands():
-{
-    List<Command> result = new ArrayList<Command>();
-    Command cmd = null;
-} {
-    (
-        (
-            cmd = ConnectCommand()
-            | cmd = DisconnectCommand()
-            | cmd = CreateApplicationCommand()
-            | cmd = DestroyApplicationCommand()
-        ) ";" {
-            result.add(cmd);
-        }
-    )* <EOF> {
-        return result;
-    }
-}
-
-protected Command ConnectCommand():
-{
-    Token t;
-} {
-    "connect" "to" t = <StringLiteral> {
-        return new ConnectCommand(unquote(t.image));
-    }
-}
-
-protected Command CreateApplicationCommand():
-{
-    Token a;
-    Token f;
-} {
-    "create" "application" a = <Identifier> f = <StringLiteral> {
-        return new CreateApplicationCommand(a.image, new File(unquote(f.image)));
-    }
-}
-
-protected Command DestroyApplicationCommand():
-{
-    Token a;
-} {
-    "destroy" "application" a = <Identifier> {
-        return new DestroyApplicationCommand(a.image);
-    }
-}
-
-protected Command DisconnectCommand():
-{
-    Token t;
-} {
-    "disconnect" {
-        return new DisconnectCommand();
-    }
-}
-
-<DEFAULT>
-TOKEN : {
-    <StringLiteral: (("\"" (~["\"", "\n"])* "\"") | ("'" (~["'", "\n"])* "'"))>
-    | <Identifier: <Letter> (<Letter> | <Digit> | <Extender>)*>
-}
-
-SPECIAL_TOKEN :
-{
- < WhitespaceChar : ["\t", "\r", "\n", " "] >
-}
-
-TOKEN :
-{
- < #Letter : (<BaseChar> | <Ideographic>) >
-}
-
-TOKEN :
-{
- < #BaseChar : ["\u0041" - "\u005a", "\u0061" - "\u007a", "\u00c0" - "\u00d6", "\u00d8" - "\u00f6", "\u00f8" - "\u00ff", "\u0100" - "\u0131", "\u0134" - "\u013e", "\u0141" - "\u0148", "\u014a" - "\u017e", "\u0180" - "\u01c3", "\u01cd" - "\u01f0", "\u01f4" - "\u01f5", "\u01fa" - "\u0217", "\u0250" - "\u02a8", "\u02bb" - "\u02c1", "\u0386", "\u0388" - "\u038a", "\u038c", "\u038e" - "\u03a1", "\u03a3" - "\u03ce", "\u03d0" - "\u03d6", "\u03da", "\u03dc", "\u03de", "\u03e0", "\u03e2" - "\u03f3", "\u0401" - "\u040c", "\u040e" - "\u044f", "\u0451" - "\u045c", "\u045e" - "\u0481", "\u0490" - "\u04c4", "\u04c7" - "\u04c8", "\u04cb" - "\u04cc", "\u04d0" - "\u04eb", "\u04ee" - "\u04f5", "\u04f8" - "\u04f9", "\u0531" - "\u0556", "\u0559", "\u0561" - "\u0586", "\u05d0" - "\u05ea", "\u05f0" - "\u05f2", "\u0621" - "\u063a", "\u0641" - "\u064a", "\u0671" - "\u06b7", "\u06ba" - "\u06be", "\u06c0" - "\u06ce", "\u06d0" - "\u06d3", "\u06d5", "\u06e5" - "\u06e6", "\u0905" - "\u0939", "\u093d", "\u0958" - "\u0961", "\u0985" - "\u098c", "\u098f" - "\u0990", "\u0993" - "\u09a8", "\u09aa" - "\u09b0", "\u09b2", "\u09b6" - "\u09b9", "\u09dc" - "\u09dd", "\u09df" - "\u09e1", "\u09f0" - "\u09f1", "\u0a05" - "\u0a0a", "\u0a0f" - "\u0a10", "\u0a13" - "\u0a28", "\u0a2a" - "\u0a30", "\u0a32" - "\u0a33", "\u0a35" - "\u0a36", "\u0a38" - "\u0a39", "\u0a59" - "\u0a5c", "\u0a5e", "\u0a72" - "\u0a74", "\u0a85" - "\u0a8b", "\u0a8d", "\u0a8f" - "\u0a91", "\u0a93" - "\u0aa8", "\u0aaa" - "\u0ab0", "\u0ab2" - "\u0ab3", "\u0ab5" - "\u0ab9", "\u0abd", "\u0ae0", "\u0b05" - "\u0b0c", "\u0b0f" - "\u0b10", "\u0b13" - "\u0b28", "\u0b2a" - "\u0b30", "\u0b32" - "\u0b33", "\u0b36" - "\u0b39", "\u0b3d", "\u0b5c" - "\u0b5d", "\u0b5f" - "\u0b61", "\u0b85" - "\u0b8a", "\u0b8e" - "\u0b90", "\u0b92" - "\u0b95", "\u0b99" - "\u0b9a", "\u0b9c", "\u0b9e" - "\u0b9f", "\u0ba3" - "\u0ba4", "\u0ba8" - "\u0baa", "\u0bae" - "\u0bb5", "\u0bb7" - "\u0bb9", "\u0c05" - "\u0c0c", "\u0c0e" - "\u0c10", "\u0c12" - "\u0c28", "\u0c2a" - "\u0c33", "\u0c35" - "\u0c39", "\u0c60" - "\u0c61", "\u0c85" - "\u0c8c", "\u0c8e" - "\u0c90", "\u0c92" - "\u0ca8", "\u0caa" - "\u0cb3", "\u0cb5" - "\u0cb9", "\u0cde", "\u0ce0" - "\u0ce1", "\u0d05" - "\u0d0c", "\u0d0e" - "\u0d10", "\u0d12" - "\u0d28", "\u0d2a" - "\u0d39", "\u0d60" - "\u0d61", "\u0e01" - "\u0e2e", "\u0e30", "\u0e32" - "\u0e33", "\u0e40" - "\u0e45", "\u0e81" - "\u0e82", "\u0e84", "\u0e87" - "\u0e88", "\u0e8a", "\u0e8d", "\u0e94" - "\u0e97", "\u0e99" - "\u0e9f", "\u0ea1" - "\u0ea3", "\u0ea5", "\u0ea7", "\u0eaa" - "\u0eab", "\u0ead" - "\u0eae", "\u0eb0", "\u0eb2" - "\u0eb3", "\u0ebd", "\u0ec0" - "\u0ec4", "\u0f40" - "\u0f47", "\u0f49" - "\u0f69", "\u10a0" - "\u10c5", "\u10d0" - "\u10f6", "\u1100", "\u1102" - "\u1103", "\u1105" - "\u1107", "\u1109", "\u110b" - "\u110c", "\u110e" - "\u1112", "\u113c", "\u113e", "\u1140", "\u114c", "\u114e", "\u1150", "\u1154" - "\u1155", "\u1159", "\u115f" - "\u1161", "\u1163", "\u1165", "\u1167", "\u1169", "\u116d" - "\u116e", "\u1172" - "\u1173", "\u1175", "\u119e", "\u11a8", "\u11ab", "\u11ae" - "\u11af", "\u11b7" - "\u11b8", "\u11ba", "\u11bc" - "\u11c2", "\u11eb", "\u11f0", "\u11f9", "\u1e00" - "\u1e9b", "\u1ea0" - "\u1ef9", "\u1f00" - "\u1f15", "\u1f18" - "\u1f1d", "\u1f20" - "\u1f45", "\u1f48" - "\u1f4d", "\u1f50" - "\u1f57", "\u1f59", "\u1f5b", "\u1f5d", "\u1f5f" - "\u1f7d", "\u1f80" - "\u1fb4", "\u1fb6" - "\u1fbc", "\u1fbe", "\u1fc2" - "\u1fc4", "\u1fc6" - "\u1fcc", "\u1fd0" - "\u1fd3", "\u1fd6" - "\u1fdb", "\u1fe0" - "\u1fec", "\u1ff2" - "\u1ff4", "\u1ff6" - "\u1ffc", "\u2126", "\u212a" - "\u212b", "\u212e", "\u2180" - "\u2182", "\u3041" - "\u3094", "\u30a1" - "\u30fa", "\u3105" - "\u312c", "\uac00" - "\ud7a3"] >
-}
-
-TOKEN :
-{
- < #Ideographic : ["\u4e00" - "\u9fa5", "\u3007", "\u3021" - "\u3029"] >
-}
-
-TOKEN :
-{
- < #CombiningChar : ["\u0300" - "\u0345", "\u0360" - "\u0361", "\u0483" - "\u0486", "\u0591" - "\u05a1", "\u05a3" - "\u05b9", "\u05bb" - "\u05bd", "\u05bf", "\u05c1" - "\u05c2", "\u05c4", "\u064b" - "\u0652", "\u0670", "\u06d6" - "\u06dc", "\u06dd" - "\u06df", "\u06e0" - "\u06e4", "\u06e7" - "\u06e8", "\u06ea" - "\u06ed", "\u0901" - "\u0903", "\u093c", "\u093e" - "\u094c", "\u094d", "\u0951" - "\u0954", "\u0962" - "\u0963", "\u0981" - "\u0983", "\u09bc", "\u09be", "\u09bf", "\u09c0" - "\u09c4", "\u09c7" - "\u09c8", "\u09cb" - "\u09cd", "\u09d7", "\u09e2" - "\u09e3", "\u0a02", "\u0a3c", "\u0a3e", "\u0a3f", "\u0a40" - "\u0a42", "\u0a47" - "\u0a48", "\u0a4b" - "\u0a4d", "\u0a70" - "\u0a71", "\u0a81" - "\u0a83", "\u0abc", "\u0abe" - "\u0ac5", "\u0ac7" - "\u0ac9", "\u0acb" - "\u0acd", "\u0b01" - "\u0b03", "\u0b3c", "\u0b3e" - "\u0b43", "\u0b47" - "\u0b48", "\u0b4b" - "\u0b4d", "\u0b56" - "\u0b57", "\u0b82" - "\u0b83", "\u0bbe" - "\u0bc2", "\u0bc6" - "\u0bc8", "\u0bca" - "\u0bcd", "\u0bd7", "\u0c01" - "\u0c03", "\u0c3e" - "\u0c44", "\u0c46" - "\u0c48", "\u0c4a" - "\u0c4d", "\u0c55" - "\u0c56", "\u0c82" - "\u0c83", "\u0cbe" - "\u0cc4", "\u0cc6" - "\u0cc8", "\u0cca" - "\u0ccd", "\u0cd5" - "\u0cd6", "\u0d02" - "\u0d03", "\u0d3e" - "\u0d43", "\u0d46" - "\u0d48", "\u0d4a" - "\u0d4d", "\u0d57", "\u0e31", "\u0e34" - "\u0e3a", "\u0e47" - "\u0e4e", "\u0eb1", "\u0eb4" - "\u0eb9", "\u0ebb" - "\u0ebc", "\u0ec8" - "\u0ecd", "\u0f18" - "\u0f19", "\u0f35", "\u0f37", "\u0f39", "\u0f3e", "\u0f3f", "\u0f71" - "\u0f84", "\u0f86" - "\u0f8b", "\u0f90" - "\u0f95", "\u0f97", "\u0f99" - "\u0fad", "\u0fb1" - "\u0fb7", "\u0fb9", "\u20d0" - "\u20dc", "\u20e1", "\u302a" - "\u302f", "\u3099", "\u309a"] >
-}
-
-TOKEN :
-{
- < #Digit : ["\u0030" - "\u0039", "\u0660" - "\u0669", "\u06f0" - "\u06f9", "\u0966" - "\u096f", "\u09e6" - "\u09ef", "\u0a66" - "\u0a6f", "\u0ae6" - "\u0aef", "\u0b66" - "\u0b6f", "\u0be7" - "\u0bef", "\u0c66" - "\u0c6f", "\u0ce6" - "\u0cef", "\u0d66" - "\u0d6f", "\u0e50" - "\u0e59", "\u0ed0" - "\u0ed9", "\u0f20" - "\u0f29"] >
-}
-
-TOKEN :
-{
- < #Extender : ["\u00b7", "\u02d0", "\u02d1", "\u0387", "\u0640", "\u0e46", "\u0ec6", "\u3005", "\u3031" - "\u3035", "\u309d" - "\u309e", "\u30fc" - "\u30fe"] >
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-client/pom.xml b/hyracks/hyracks-client/pom.xml
index 854a009..c86b0d3 100644
--- a/hyracks/hyracks-client/pom.xml
+++ b/hyracks/hyracks-client/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -25,22 +25,22 @@
  <dependency>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-api</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
  </dependency>
  <dependency>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-net</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
  </dependency>
  <dependency>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-comm</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
  </dependency>
   <dependency>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-dataflow-common</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
  </dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-comm/pom.xml b/hyracks/hyracks-comm/pom.xml
index c3583699..2720f95 100644
--- a/hyracks/hyracks-comm/pom.xml
+++ b/hyracks/hyracks-comm/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -25,12 +25,12 @@
  <dependency>
  	<groupId>edu.uci.ics.hyracks</groupId>
  	<artifactId>hyracks-api</artifactId>
- 	<version>0.2.3-SNAPSHOT</version>
+ 	<version>0.2.4-SNAPSHOT</version>
  </dependency>
   <dependency>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-net</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
  </dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-control/hyracks-control-cc/pom.xml b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
index 934dbb2..1730595 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-control</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -26,7 +26,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
index 3fc46ff..8e94269 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/static/javascript/adminconsole/NodeDetailsPage.js
@@ -127,7 +127,7 @@
                 netSignalingReadBWArray.push([ i, computeRate(netSignalingBytesRead, rrdPtr) ]);
                 netSignalingReadBWArray.push([ i, computeRate(datasetNetSignalingBytesRead, rrdPtr) ]);
                 netSignalingWriteBWArray.push([ i, computeRate(netSignalingBytesWritten, rrdPtr) ]);
-                netSignalingWriteBWArray.push([ i, computeRate(etSignalingBytesWritten, rrdPtr) ]);
+                netSignalingWriteBWArray.push([ i, computeRate(netSignalingBytesWritten, rrdPtr) ]);
                 ipcMessageSendRateArray.push([ i, computeRate(ipcMessagesSent, rrdPtr) ]);
                 ipcMessageBytesSendRateArray.push([ i, computeRate(ipcMessageBytesSent, rrdPtr) ]);
                 ipcMessageReceiveRateArray.push([ i, computeRate(ipcMessagesReceived, rrdPtr) ]);
@@ -237,4 +237,4 @@
     }
 
     fetchData();
-});
\ No newline at end of file
+});
diff --git a/hyracks/hyracks-control/hyracks-control-common/pom.xml b/hyracks/hyracks-control/hyracks-control-common/pom.xml
index 08f013d..75fe3c9 100644
--- a/hyracks/hyracks-control/hyracks-control-common/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-common/pom.xml
@@ -3,12 +3,12 @@
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-control-common</artifactId>
   <name>hyracks-control-common</name>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-control</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,7 +29,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
index 83c0f98..d1577bc 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/edu/uci/ics/hyracks/control/common/controllers/NCConfig.java
@@ -81,7 +81,8 @@
         cList.add(String.valueOf(maxMemory));
         cList.add("-result-manager-memory");
         cList.add(String.valueOf(resultManagerMemory));
-        if (appNCMainClass != null) {
+
+       if (appNCMainClass != null) {
             cList.add("-app-nc-main-class");
             cList.add(appNCMainClass);
         }
diff --git a/hyracks/hyracks-control/hyracks-control-nc/pom.xml b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
index 24748b3..df5c998 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-control</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -26,19 +26,19 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-net</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-comm</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
   <reporting>
diff --git a/hyracks/hyracks-control/pom.xml b/hyracks/hyracks-control/pom.xml
index 13ebf41..e1ab98d 100644
--- a/hyracks/hyracks-control/pom.xml
+++ b/hyracks/hyracks-control/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-data/hyracks-data-std/pom.xml b/hyracks/hyracks-data/hyracks-data-std/pom.xml
index d676088..fe53083 100644
--- a/hyracks/hyracks-data/hyracks-data-std/pom.xml
+++ b/hyracks/hyracks-data/hyracks-data-std/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-data</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,7 +27,7 @@
   <dependency>
   	<groupId>edu.uci.ics.hyracks</groupId>
   	<artifactId>hyracks-api</artifactId>
-  	<version>0.2.3-SNAPSHOT</version>
+  	<version>0.2.4-SNAPSHOT</version>
   </dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-data/pom.xml b/hyracks/hyracks-data/pom.xml
index db4d8e9..45460cab 100644
--- a/hyracks/hyracks-data/pom.xml
+++ b/hyracks/hyracks-data/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-dataflow-common/pom.xml b/hyracks/hyracks-dataflow-common/pom.xml
index 34cb096..c66d10e 100644
--- a/hyracks/hyracks-dataflow-common/pom.xml
+++ b/hyracks/hyracks-dataflow-common/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -26,14 +26,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-dataflow-hadoop/pom.xml b/hyracks/hyracks-dataflow-hadoop/pom.xml
index 57b59c7..18bcba7 100644
--- a/hyracks/hyracks-dataflow-hadoop/pom.xml
+++ b/hyracks/hyracks-dataflow-hadoop/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
     </plugins>
@@ -26,14 +26,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
@@ -53,7 +53,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   </dependencies>
diff --git a/hyracks/hyracks-dataflow-std/pom.xml b/hyracks/hyracks-dataflow-std/pom.xml
index 7e1a9a5..bd4a837 100644
--- a/hyracks/hyracks-dataflow-std/pom.xml
+++ b/hyracks/hyracks-dataflow-std/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -27,14 +27,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-dist/pom.xml b/hyracks/hyracks-dist/pom.xml
index c86c4e6..e79eba7 100755
--- a/hyracks/hyracks-dist/pom.xml
+++ b/hyracks/hyracks-dist/pom.xml
@@ -1,12 +1,10 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<artifactId>hyracks</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>hyracks-dist</artifactId>
@@ -23,8 +21,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 				</configuration>
 			</plugin>
 			<plugin>
diff --git a/hyracks/hyracks-dist/src/main/resources/bin/startcc.sh b/hyracks/hyracks-dist/src/main/resources/bin/startcc.sh
index efb79ce..484ecac 100755
--- a/hyracks/hyracks-dist/src/main/resources/bin/startcc.sh
+++ b/hyracks/hyracks-dist/src/main/resources/bin/startcc.sh
@@ -22,4 +22,10 @@
 
 #Launch hyracks cc script
 chmod -R 755 $HYRACKS_HOME
+if [ -f "conf/topology.xml"  ]; then
+#Launch hyracks cc script with topology
+$HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 -cluster-topology "conf/topology.xml" &> $CCLOGS_DIR/cc.log &
+else
+#Launch hyracks cc script without toplogy
 $HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 &> $CCLOGS_DIR/cc.log &
+fi
diff --git a/hyracks/hyracks-dist/src/main/resources/conf/topology-template.xml b/hyracks/hyracks-dist/src/main/resources/conf/topology-template.xml
new file mode 100755
index 0000000..4710706
--- /dev/null
+++ b/hyracks/hyracks-dist/src/main/resources/conf/topology-template.xml
@@ -0,0 +1,7 @@
+<cluster-topology>
+    <network-switch name="Global">
+        <network-switch name="local">
+            <terminal name="127.0.0.1"/>
+        </network-switch>
+    </network-switch>
+</cluster-topology>
\ No newline at end of file
diff --git a/hyracks/hyracks-documentation/pom.xml b/hyracks/hyracks-documentation/pom.xml
index 7aedd57..b5e42ad 100644
--- a/hyracks/hyracks-documentation/pom.xml
+++ b/hyracks/hyracks-documentation/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
index ebca323..64e30f9 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
@@ -6,26 +6,26 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>btree-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.btree</groupId>
   		<artifactId>btreehelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
@@ -37,8 +37,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
index ddb5b39..7f212ab 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
@@ -6,32 +6,32 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>btree-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
   <build>
@@ -41,8 +41,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/btree-example/btreeserver/pom.xml b/hyracks/hyracks-examples/btree-example/btreeserver/pom.xml
index ec6747d..93b5f4f 100644
--- a/hyracks/hyracks-examples/btree-example/btreeserver/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreeserver/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks.examples.btree</groupId>
   <artifactId>btreeserver</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>btreeserver</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>btree-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -63,20 +63,20 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.btree</groupId>
   		<artifactId>btreehelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-examples/btree-example/pom.xml b/hyracks/hyracks-examples/btree-example/pom.xml
index d8a4367..135665a 100644
--- a/hyracks/hyracks-examples/btree-example/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/pom.xml
@@ -2,14 +2,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks.examples</groupId>
   <artifactId>btree-example</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>btree-example</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-examples</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
deleted file mode 100644
index 3669616..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/conf/local_cluster.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-clusterControllerHost=localhost
-fs.default.name=file:///
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
deleted file mode 100644
index c4c3130..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file1.txt
+++ /dev/null
@@ -1,13052 +0,0 @@
-﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-
-Title: The Adventures of Sherlock Holmes
-
-Author: Arthur Conan Doyle
-
-Posting Date: April 18, 2011 [EBook #1661]
-First Posted: November 29, 2002
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-
-
-
-
-
-
-
-
-THE ADVENTURES OF SHERLOCK HOLMES
-
-by
-
-SIR ARTHUR CONAN DOYLE
-
-
-
-   I. A Scandal in Bohemia
-  II. The Red-headed League
- III. A Case of Identity
-  IV. The Boscombe Valley Mystery
-   V. The Five Orange Pips
-  VI. The Man with the Twisted Lip
- VII. The Adventure of the Blue Carbuncle
-VIII. The Adventure of the Speckled Band
-  IX. The Adventure of the Engineer's Thumb
-   X. The Adventure of the Noble Bachelor
-  XI. The Adventure of the Beryl Coronet
- XII. The Adventure of the Copper Beeches
-
-
-
-
-ADVENTURE I. A SCANDAL IN BOHEMIA
-
-I.
-
-To Sherlock Holmes she is always THE woman. I have seldom heard
-him mention her under any other name. In his eyes she eclipses
-and predominates the whole of her sex. It was not that he felt
-any emotion akin to love for Irene Adler. All emotions, and that
-one particularly, were abhorrent to his cold, precise but
-admirably balanced mind. He was, I take it, the most perfect
-reasoning and observing machine that the world has seen, but as a
-lover he would have placed himself in a false position. He never
-spoke of the softer passions, save with a gibe and a sneer. They
-were admirable things for the observer--excellent for drawing the
-veil from men's motives and actions. But for the trained reasoner
-to admit such intrusions into his own delicate and finely
-adjusted temperament was to introduce a distracting factor which
-might throw a doubt upon all his mental results. Grit in a
-sensitive instrument, or a crack in one of his own high-power
-lenses, would not be more disturbing than a strong emotion in a
-nature such as his. And yet there was but one woman to him, and
-that woman was the late Irene Adler, of dubious and questionable
-memory.
-
-I had seen little of Holmes lately. My marriage had drifted us
-away from each other. My own complete happiness, and the
-home-centred interests which rise up around the man who first
-finds himself master of his own establishment, were sufficient to
-absorb all my attention, while Holmes, who loathed every form of
-society with his whole Bohemian soul, remained in our lodgings in
-Baker Street, buried among his old books, and alternating from
-week to week between cocaine and ambition, the drowsiness of the
-drug, and the fierce energy of his own keen nature. He was still,
-as ever, deeply attracted by the study of crime, and occupied his
-immense faculties and extraordinary powers of observation in
-following out those clues, and clearing up those mysteries which
-had been abandoned as hopeless by the official police. From time
-to time I heard some vague account of his doings: of his summons
-to Odessa in the case of the Trepoff murder, of his clearing up
-of the singular tragedy of the Atkinson brothers at Trincomalee,
-and finally of the mission which he had accomplished so
-delicately and successfully for the reigning family of Holland.
-Beyond these signs of his activity, however, which I merely
-shared with all the readers of the daily press, I knew little of
-my former friend and companion.
-
-One night--it was on the twentieth of March, 1888--I was
-returning from a journey to a patient (for I had now returned to
-civil practice), when my way led me through Baker Street. As I
-passed the well-remembered door, which must always be associated
-in my mind with my wooing, and with the dark incidents of the
-Study in Scarlet, I was seized with a keen desire to see Holmes
-again, and to know how he was employing his extraordinary powers.
-His rooms were brilliantly lit, and, even as I looked up, I saw
-his tall, spare figure pass twice in a dark silhouette against
-the blind. He was pacing the room swiftly, eagerly, with his head
-sunk upon his chest and his hands clasped behind him. To me, who
-knew his every mood and habit, his attitude and manner told their
-own story. He was at work again. He had risen out of his
-drug-created dreams and was hot upon the scent of some new
-problem. I rang the bell and was shown up to the chamber which
-had formerly been in part my own.
-
-His manner was not effusive. It seldom was; but he was glad, I
-think, to see me. With hardly a word spoken, but with a kindly
-eye, he waved me to an armchair, threw across his case of cigars,
-and indicated a spirit case and a gasogene in the corner. Then he
-stood before the fire and looked me over in his singular
-introspective fashion.
-
-"Wedlock suits you," he remarked. "I think, Watson, that you have
-put on seven and a half pounds since I saw you."
-
-"Seven!" I answered.
-
-"Indeed, I should have thought a little more. Just a trifle more,
-I fancy, Watson. And in practice again, I observe. You did not
-tell me that you intended to go into harness."
-
-"Then, how do you know?"
-
-"I see it, I deduce it. How do I know that you have been getting
-yourself very wet lately, and that you have a most clumsy and
-careless servant girl?"
-
-"My dear Holmes," said I, "this is too much. You would certainly
-have been burned, had you lived a few centuries ago. It is true
-that I had a country walk on Thursday and came home in a dreadful
-mess, but as I have changed my clothes I can't imagine how you
-deduce it. As to Mary Jane, she is incorrigible, and my wife has
-given her notice, but there, again, I fail to see how you work it
-out."
-
-He chuckled to himself and rubbed his long, nervous hands
-together.
-
-"It is simplicity itself," said he; "my eyes tell me that on the
-inside of your left shoe, just where the firelight strikes it,
-the leather is scored by six almost parallel cuts. Obviously they
-have been caused by someone who has very carelessly scraped round
-the edges of the sole in order to remove crusted mud from it.
-Hence, you see, my double deduction that you had been out in vile
-weather, and that you had a particularly malignant boot-slitting
-specimen of the London slavey. As to your practice, if a
-gentleman walks into my rooms smelling of iodoform, with a black
-mark of nitrate of silver upon his right forefinger, and a bulge
-on the right side of his top-hat to show where he has secreted
-his stethoscope, I must be dull, indeed, if I do not pronounce
-him to be an active member of the medical profession."
-
-I could not help laughing at the ease with which he explained his
-process of deduction. "When I hear you give your reasons," I
-remarked, "the thing always appears to me to be so ridiculously
-simple that I could easily do it myself, though at each
-successive instance of your reasoning I am baffled until you
-explain your process. And yet I believe that my eyes are as good
-as yours."
-
-"Quite so," he answered, lighting a cigarette, and throwing
-himself down into an armchair. "You see, but you do not observe.
-The distinction is clear. For example, you have frequently seen
-the steps which lead up from the hall to this room."
-
-"Frequently."
-
-"How often?"
-
-"Well, some hundreds of times."
-
-"Then how many are there?"
-
-"How many? I don't know."
-
-"Quite so! You have not observed. And yet you have seen. That is
-just my point. Now, I know that there are seventeen steps,
-because I have both seen and observed. By-the-way, since you are
-interested in these little problems, and since you are good
-enough to chronicle one or two of my trifling experiences, you
-may be interested in this." He threw over a sheet of thick,
-pink-tinted note-paper which had been lying open upon the table.
-"It came by the last post," said he. "Read it aloud."
-
-The note was undated, and without either signature or address.
-
-"There will call upon you to-night, at a quarter to eight
-o'clock," it said, "a gentleman who desires to consult you upon a
-matter of the very deepest moment. Your recent services to one of
-the royal houses of Europe have shown that you are one who may
-safely be trusted with matters which are of an importance which
-can hardly be exaggerated. This account of you we have from all
-quarters received. Be in your chamber then at that hour, and do
-not take it amiss if your visitor wear a mask."
-
-"This is indeed a mystery," I remarked. "What do you imagine that
-it means?"
-
-"I have no data yet. It is a capital mistake to theorize before
-one has data. Insensibly one begins to twist facts to suit
-theories, instead of theories to suit facts. But the note itself.
-What do you deduce from it?"
-
-I carefully examined the writing, and the paper upon which it was
-written.
-
-"The man who wrote it was presumably well to do," I remarked,
-endeavouring to imitate my companion's processes. "Such paper
-could not be bought under half a crown a packet. It is peculiarly
-strong and stiff."
-
-"Peculiar--that is the very word," said Holmes. "It is not an
-English paper at all. Hold it up to the light."
-
-I did so, and saw a large "E" with a small "g," a "P," and a
-large "G" with a small "t" woven into the texture of the paper.
-
-"What do you make of that?" asked Holmes.
-
-"The name of the maker, no doubt; or his monogram, rather."
-
-"Not at all. The 'G' with the small 't' stands for
-'Gesellschaft,' which is the German for 'Company.' It is a
-customary contraction like our 'Co.' 'P,' of course, stands for
-'Papier.' Now for the 'Eg.' Let us glance at our Continental
-Gazetteer." He took down a heavy brown volume from his shelves.
-"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
-country--in Bohemia, not far from Carlsbad. 'Remarkable as being
-the scene of the death of Wallenstein, and for its numerous
-glass-factories and paper-mills.' Ha, ha, my boy, what do you
-make of that?" His eyes sparkled, and he sent up a great blue
-triumphant cloud from his cigarette.
-
-"The paper was made in Bohemia," I said.
-
-"Precisely. And the man who wrote the note is a German. Do you
-note the peculiar construction of the sentence--'This account of
-you we have from all quarters received.' A Frenchman or Russian
-could not have written that. It is the German who is so
-uncourteous to his verbs. It only remains, therefore, to discover
-what is wanted by this German who writes upon Bohemian paper and
-prefers wearing a mask to showing his face. And here he comes, if
-I am not mistaken, to resolve all our doubts."
-
-As he spoke there was the sharp sound of horses' hoofs and
-grating wheels against the curb, followed by a sharp pull at the
-bell. Holmes whistled.
-
-"A pair, by the sound," said he. "Yes," he continued, glancing
-out of the window. "A nice little brougham and a pair of
-beauties. A hundred and fifty guineas apiece. There's money in
-this case, Watson, if there is nothing else."
-
-"I think that I had better go, Holmes."
-
-"Not a bit, Doctor. Stay where you are. I am lost without my
-Boswell. And this promises to be interesting. It would be a pity
-to miss it."
-
-"But your client--"
-
-"Never mind him. I may want your help, and so may he. Here he
-comes. Sit down in that armchair, Doctor, and give us your best
-attention."
-
-A slow and heavy step, which had been heard upon the stairs and
-in the passage, paused immediately outside the door. Then there
-was a loud and authoritative tap.
-
-"Come in!" said Holmes.
-
-A man entered who could hardly have been less than six feet six
-inches in height, with the chest and limbs of a Hercules. His
-dress was rich with a richness which would, in England, be looked
-upon as akin to bad taste. Heavy bands of astrakhan were slashed
-across the sleeves and fronts of his double-breasted coat, while
-the deep blue cloak which was thrown over his shoulders was lined
-with flame-coloured silk and secured at the neck with a brooch
-which consisted of a single flaming beryl. Boots which extended
-halfway up his calves, and which were trimmed at the tops with
-rich brown fur, completed the impression of barbaric opulence
-which was suggested by his whole appearance. He carried a
-broad-brimmed hat in his hand, while he wore across the upper
-part of his face, extending down past the cheekbones, a black
-vizard mask, which he had apparently adjusted that very moment,
-for his hand was still raised to it as he entered. From the lower
-part of the face he appeared to be a man of strong character,
-with a thick, hanging lip, and a long, straight chin suggestive
-of resolution pushed to the length of obstinacy.
-
-"You had my note?" he asked with a deep harsh voice and a
-strongly marked German accent. "I told you that I would call." He
-looked from one to the other of us, as if uncertain which to
-address.
-
-"Pray take a seat," said Holmes. "This is my friend and
-colleague, Dr. Watson, who is occasionally good enough to help me
-in my cases. Whom have I the honour to address?"
-
-"You may address me as the Count Von Kramm, a Bohemian nobleman.
-I understand that this gentleman, your friend, is a man of honour
-and discretion, whom I may trust with a matter of the most
-extreme importance. If not, I should much prefer to communicate
-with you alone."
-
-I rose to go, but Holmes caught me by the wrist and pushed me
-back into my chair. "It is both, or none," said he. "You may say
-before this gentleman anything which you may say to me."
-
-The Count shrugged his broad shoulders. "Then I must begin," said
-he, "by binding you both to absolute secrecy for two years; at
-the end of that time the matter will be of no importance. At
-present it is not too much to say that it is of such weight it
-may have an influence upon European history."
-
-"I promise," said Holmes.
-
-"And I."
-
-"You will excuse this mask," continued our strange visitor. "The
-august person who employs me wishes his agent to be unknown to
-you, and I may confess at once that the title by which I have
-just called myself is not exactly my own."
-
-"I was aware of it," said Holmes dryly.
-
-"The circumstances are of great delicacy, and every precaution
-has to be taken to quench what might grow to be an immense
-scandal and seriously compromise one of the reigning families of
-Europe. To speak plainly, the matter implicates the great House
-of Ormstein, hereditary kings of Bohemia."
-
-"I was also aware of that," murmured Holmes, settling himself
-down in his armchair and closing his eyes.
-
-Our visitor glanced with some apparent surprise at the languid,
-lounging figure of the man who had been no doubt depicted to him
-as the most incisive reasoner and most energetic agent in Europe.
-Holmes slowly reopened his eyes and looked impatiently at his
-gigantic client.
-
-"If your Majesty would condescend to state your case," he
-remarked, "I should be better able to advise you."
-
-The man sprang from his chair and paced up and down the room in
-uncontrollable agitation. Then, with a gesture of desperation, he
-tore the mask from his face and hurled it upon the ground. "You
-are right," he cried; "I am the King. Why should I attempt to
-conceal it?"
-
-"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
-before I was aware that I was addressing Wilhelm Gottsreich
-Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
-hereditary King of Bohemia."
-
-"But you can understand," said our strange visitor, sitting down
-once more and passing his hand over his high white forehead, "you
-can understand that I am not accustomed to doing such business in
-my own person. Yet the matter was so delicate that I could not
-confide it to an agent without putting myself in his power. I
-have come incognito from Prague for the purpose of consulting
-you."
-
-"Then, pray consult," said Holmes, shutting his eyes once more.
-
-"The facts are briefly these: Some five years ago, during a
-lengthy visit to Warsaw, I made the acquaintance of the well-known
-adventuress, Irene Adler. The name is no doubt familiar to you."
-
-"Kindly look her up in my index, Doctor," murmured Holmes without
-opening his eyes. For many years he had adopted a system of
-docketing all paragraphs concerning men and things, so that it
-was difficult to name a subject or a person on which he could not
-at once furnish information. In this case I found her biography
-sandwiched in between that of a Hebrew rabbi and that of a
-staff-commander who had written a monograph upon the deep-sea
-fishes.
-
-"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
-1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
-of Warsaw--yes! Retired from operatic stage--ha! Living in
-London--quite so! Your Majesty, as I understand, became entangled
-with this young person, wrote her some compromising letters, and
-is now desirous of getting those letters back."
-
-"Precisely so. But how--"
-
-"Was there a secret marriage?"
-
-"None."
-
-"No legal papers or certificates?"
-
-"None."
-
-"Then I fail to follow your Majesty. If this young person should
-produce her letters for blackmailing or other purposes, how is
-she to prove their authenticity?"
-
-"There is the writing."
-
-"Pooh, pooh! Forgery."
-
-"My private note-paper."
-
-"Stolen."
-
-"My own seal."
-
-"Imitated."
-
-"My photograph."
-
-"Bought."
-
-"We were both in the photograph."
-
-"Oh, dear! That is very bad! Your Majesty has indeed committed an
-indiscretion."
-
-"I was mad--insane."
-
-"You have compromised yourself seriously."
-
-"I was only Crown Prince then. I was young. I am but thirty now."
-
-"It must be recovered."
-
-"We have tried and failed."
-
-"Your Majesty must pay. It must be bought."
-
-"She will not sell."
-
-"Stolen, then."
-
-"Five attempts have been made. Twice burglars in my pay ransacked
-her house. Once we diverted her luggage when she travelled. Twice
-she has been waylaid. There has been no result."
-
-"No sign of it?"
-
-"Absolutely none."
-
-Holmes laughed. "It is quite a pretty little problem," said he.
-
-"But a very serious one to me," returned the King reproachfully.
-
-"Very, indeed. And what does she propose to do with the
-photograph?"
-
-"To ruin me."
-
-"But how?"
-
-"I am about to be married."
-
-"So I have heard."
-
-"To Clotilde Lothman von Saxe-Meningen, second daughter of the
-King of Scandinavia. You may know the strict principles of her
-family. She is herself the very soul of delicacy. A shadow of a
-doubt as to my conduct would bring the matter to an end."
-
-"And Irene Adler?"
-
-"Threatens to send them the photograph. And she will do it. I
-know that she will do it. You do not know her, but she has a soul
-of steel. She has the face of the most beautiful of women, and
-the mind of the most resolute of men. Rather than I should marry
-another woman, there are no lengths to which she would not
-go--none."
-
-"You are sure that she has not sent it yet?"
-
-"I am sure."
-
-"And why?"
-
-"Because she has said that she would send it on the day when the
-betrothal was publicly proclaimed. That will be next Monday."
-
-"Oh, then we have three days yet," said Holmes with a yawn. "That
-is very fortunate, as I have one or two matters of importance to
-look into just at present. Your Majesty will, of course, stay in
-London for the present?"
-
-"Certainly. You will find me at the Langham under the name of the
-Count Von Kramm."
-
-"Then I shall drop you a line to let you know how we progress."
-
-"Pray do so. I shall be all anxiety."
-
-"Then, as to money?"
-
-"You have carte blanche."
-
-"Absolutely?"
-
-"I tell you that I would give one of the provinces of my kingdom
-to have that photograph."
-
-"And for present expenses?"
-
-The King took a heavy chamois leather bag from under his cloak
-and laid it on the table.
-
-"There are three hundred pounds in gold and seven hundred in
-notes," he said.
-
-Holmes scribbled a receipt upon a sheet of his note-book and
-handed it to him.
-
-"And Mademoiselle's address?" he asked.
-
-"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
-
-Holmes took a note of it. "One other question," said he. "Was the
-photograph a cabinet?"
-
-"It was."
-
-"Then, good-night, your Majesty, and I trust that we shall soon
-have some good news for you. And good-night, Watson," he added,
-as the wheels of the royal brougham rolled down the street. "If
-you will be good enough to call to-morrow afternoon at three
-o'clock I should like to chat this little matter over with you."
-
-
-II.
-
-At three o'clock precisely I was at Baker Street, but Holmes had
-not yet returned. The landlady informed me that he had left the
-house shortly after eight o'clock in the morning. I sat down
-beside the fire, however, with the intention of awaiting him,
-however long he might be. I was already deeply interested in his
-inquiry, for, though it was surrounded by none of the grim and
-strange features which were associated with the two crimes which
-I have already recorded, still, the nature of the case and the
-exalted station of his client gave it a character of its own.
-Indeed, apart from the nature of the investigation which my
-friend had on hand, there was something in his masterly grasp of
-a situation, and his keen, incisive reasoning, which made it a
-pleasure to me to study his system of work, and to follow the
-quick, subtle methods by which he disentangled the most
-inextricable mysteries. So accustomed was I to his invariable
-success that the very possibility of his failing had ceased to
-enter into my head.
-
-It was close upon four before the door opened, and a
-drunken-looking groom, ill-kempt and side-whiskered, with an
-inflamed face and disreputable clothes, walked into the room.
-Accustomed as I was to my friend's amazing powers in the use of
-disguises, I had to look three times before I was certain that it
-was indeed he. With a nod he vanished into the bedroom, whence he
-emerged in five minutes tweed-suited and respectable, as of old.
-Putting his hands into his pockets, he stretched out his legs in
-front of the fire and laughed heartily for some minutes.
-
-"Well, really!" he cried, and then he choked and laughed again
-until he was obliged to lie back, limp and helpless, in the
-chair.
-
-"What is it?"
-
-"It's quite too funny. I am sure you could never guess how I
-employed my morning, or what I ended by doing."
-
-"I can't imagine. I suppose that you have been watching the
-habits, and perhaps the house, of Miss Irene Adler."
-
-"Quite so; but the sequel was rather unusual. I will tell you,
-however. I left the house a little after eight o'clock this
-morning in the character of a groom out of work. There is a
-wonderful sympathy and freemasonry among horsey men. Be one of
-them, and you will know all that there is to know. I soon found
-Briony Lodge. It is a bijou villa, with a garden at the back, but
-built out in front right up to the road, two stories. Chubb lock
-to the door. Large sitting-room on the right side, well
-furnished, with long windows almost to the floor, and those
-preposterous English window fasteners which a child could open.
-Behind there was nothing remarkable, save that the passage window
-could be reached from the top of the coach-house. I walked round
-it and examined it closely from every point of view, but without
-noting anything else of interest.
-
-"I then lounged down the street and found, as I expected, that
-there was a mews in a lane which runs down by one wall of the
-garden. I lent the ostlers a hand in rubbing down their horses,
-and received in exchange twopence, a glass of half and half, two
-fills of shag tobacco, and as much information as I could desire
-about Miss Adler, to say nothing of half a dozen other people in
-the neighbourhood in whom I was not in the least interested, but
-whose biographies I was compelled to listen to."
-
-"And what of Irene Adler?" I asked.
-
-"Oh, she has turned all the men's heads down in that part. She is
-the daintiest thing under a bonnet on this planet. So say the
-Serpentine-mews, to a man. She lives quietly, sings at concerts,
-drives out at five every day, and returns at seven sharp for
-dinner. Seldom goes out at other times, except when she sings.
-Has only one male visitor, but a good deal of him. He is dark,
-handsome, and dashing, never calls less than once a day, and
-often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
-the advantages of a cabman as a confidant. They had driven him
-home a dozen times from Serpentine-mews, and knew all about him.
-When I had listened to all they had to tell, I began to walk up
-and down near Briony Lodge once more, and to think over my plan
-of campaign.
-
-"This Godfrey Norton was evidently an important factor in the
-matter. He was a lawyer. That sounded ominous. What was the
-relation between them, and what the object of his repeated
-visits? Was she his client, his friend, or his mistress? If the
-former, she had probably transferred the photograph to his
-keeping. If the latter, it was less likely. On the issue of this
-question depended whether I should continue my work at Briony
-Lodge, or turn my attention to the gentleman's chambers in the
-Temple. It was a delicate point, and it widened the field of my
-inquiry. I fear that I bore you with these details, but I have to
-let you see my little difficulties, if you are to understand the
-situation."
-
-"I am following you closely," I answered.
-
-"I was still balancing the matter in my mind when a hansom cab
-drove up to Briony Lodge, and a gentleman sprang out. He was a
-remarkably handsome man, dark, aquiline, and moustached--evidently
-the man of whom I had heard. He appeared to be in a
-great hurry, shouted to the cabman to wait, and brushed past the
-maid who opened the door with the air of a man who was thoroughly
-at home.
-
-"He was in the house about half an hour, and I could catch
-glimpses of him in the windows of the sitting-room, pacing up and
-down, talking excitedly, and waving his arms. Of her I could see
-nothing. Presently he emerged, looking even more flurried than
-before. As he stepped up to the cab, he pulled a gold watch from
-his pocket and looked at it earnestly, 'Drive like the devil,' he
-shouted, 'first to Gross & Hankey's in Regent Street, and then to
-the Church of St. Monica in the Edgeware Road. Half a guinea if
-you do it in twenty minutes!'
-
-"Away they went, and I was just wondering whether I should not do
-well to follow them when up the lane came a neat little landau,
-the coachman with his coat only half-buttoned, and his tie under
-his ear, while all the tags of his harness were sticking out of
-the buckles. It hadn't pulled up before she shot out of the hall
-door and into it. I only caught a glimpse of her at the moment,
-but she was a lovely woman, with a face that a man might die for.
-
-"'The Church of St. Monica, John,' she cried, 'and half a
-sovereign if you reach it in twenty minutes.'
-
-"This was quite too good to lose, Watson. I was just balancing
-whether I should run for it, or whether I should perch behind her
-landau when a cab came through the street. The driver looked
-twice at such a shabby fare, but I jumped in before he could
-object. 'The Church of St. Monica,' said I, 'and half a sovereign
-if you reach it in twenty minutes.' It was twenty-five minutes to
-twelve, and of course it was clear enough what was in the wind.
-
-"My cabby drove fast. I don't think I ever drove faster, but the
-others were there before us. The cab and the landau with their
-steaming horses were in front of the door when I arrived. I paid
-the man and hurried into the church. There was not a soul there
-save the two whom I had followed and a surpliced clergyman, who
-seemed to be expostulating with them. They were all three
-standing in a knot in front of the altar. I lounged up the side
-aisle like any other idler who has dropped into a church.
-Suddenly, to my surprise, the three at the altar faced round to
-me, and Godfrey Norton came running as hard as he could towards
-me.
-
-"'Thank God,' he cried. 'You'll do. Come! Come!'
-
-"'What then?' I asked.
-
-"'Come, man, come, only three minutes, or it won't be legal.'
-
-"I was half-dragged up to the altar, and before I knew where I was
-I found myself mumbling responses which were whispered in my ear,
-and vouching for things of which I knew nothing, and generally
-assisting in the secure tying up of Irene Adler, spinster, to
-Godfrey Norton, bachelor. It was all done in an instant, and
-there was the gentleman thanking me on the one side and the lady
-on the other, while the clergyman beamed on me in front. It was
-the most preposterous position in which I ever found myself in my
-life, and it was the thought of it that started me laughing just
-now. It seems that there had been some informality about their
-license, that the clergyman absolutely refused to marry them
-without a witness of some sort, and that my lucky appearance
-saved the bridegroom from having to sally out into the streets in
-search of a best man. The bride gave me a sovereign, and I mean
-to wear it on my watch-chain in memory of the occasion."
-
-"This is a very unexpected turn of affairs," said I; "and what
-then?"
-
-"Well, I found my plans very seriously menaced. It looked as if
-the pair might take an immediate departure, and so necessitate
-very prompt and energetic measures on my part. At the church
-door, however, they separated, he driving back to the Temple, and
-she to her own house. 'I shall drive out in the park at five as
-usual,' she said as she left him. I heard no more. They drove
-away in different directions, and I went off to make my own
-arrangements."
-
-"Which are?"
-
-"Some cold beef and a glass of beer," he answered, ringing the
-bell. "I have been too busy to think of food, and I am likely to
-be busier still this evening. By the way, Doctor, I shall want
-your co-operation."
-
-"I shall be delighted."
-
-"You don't mind breaking the law?"
-
-"Not in the least."
-
-"Nor running a chance of arrest?"
-
-"Not in a good cause."
-
-"Oh, the cause is excellent!"
-
-"Then I am your man."
-
-"I was sure that I might rely on you."
-
-"But what is it you wish?"
-
-"When Mrs. Turner has brought in the tray I will make it clear to
-you. Now," he said as he turned hungrily on the simple fare that
-our landlady had provided, "I must discuss it while I eat, for I
-have not much time. It is nearly five now. In two hours we must
-be on the scene of action. Miss Irene, or Madame, rather, returns
-from her drive at seven. We must be at Briony Lodge to meet her."
-
-"And what then?"
-
-"You must leave that to me. I have already arranged what is to
-occur. There is only one point on which I must insist. You must
-not interfere, come what may. You understand?"
-
-"I am to be neutral?"
-
-"To do nothing whatever. There will probably be some small
-unpleasantness. Do not join in it. It will end in my being
-conveyed into the house. Four or five minutes afterwards the
-sitting-room window will open. You are to station yourself close
-to that open window."
-
-"Yes."
-
-"You are to watch me, for I will be visible to you."
-
-"Yes."
-
-"And when I raise my hand--so--you will throw into the room what
-I give you to throw, and will, at the same time, raise the cry of
-fire. You quite follow me?"
-
-"Entirely."
-
-"It is nothing very formidable," he said, taking a long cigar-shaped
-roll from his pocket. "It is an ordinary plumber's smoke-rocket,
-fitted with a cap at either end to make it self-lighting.
-Your task is confined to that. When you raise your cry of fire,
-it will be taken up by quite a number of people. You may then
-walk to the end of the street, and I will rejoin you in ten
-minutes. I hope that I have made myself clear?"
-
-"I am to remain neutral, to get near the window, to watch you,
-and at the signal to throw in this object, then to raise the cry
-of fire, and to wait you at the corner of the street."
-
-"Precisely."
-
-"Then you may entirely rely on me."
-
-"That is excellent. I think, perhaps, it is almost time that I
-prepare for the new role I have to play."
-
-He disappeared into his bedroom and returned in a few minutes in
-the character of an amiable and simple-minded Nonconformist
-clergyman. His broad black hat, his baggy trousers, his white
-tie, his sympathetic smile, and general look of peering and
-benevolent curiosity were such as Mr. John Hare alone could have
-equalled. It was not merely that Holmes changed his costume. His
-expression, his manner, his very soul seemed to vary with every
-fresh part that he assumed. The stage lost a fine actor, even as
-science lost an acute reasoner, when he became a specialist in
-crime.
-
-It was a quarter past six when we left Baker Street, and it still
-wanted ten minutes to the hour when we found ourselves in
-Serpentine Avenue. It was already dusk, and the lamps were just
-being lighted as we paced up and down in front of Briony Lodge,
-waiting for the coming of its occupant. The house was just such
-as I had pictured it from Sherlock Holmes' succinct description,
-but the locality appeared to be less private than I expected. On
-the contrary, for a small street in a quiet neighbourhood, it was
-remarkably animated. There was a group of shabbily dressed men
-smoking and laughing in a corner, a scissors-grinder with his
-wheel, two guardsmen who were flirting with a nurse-girl, and
-several well-dressed young men who were lounging up and down with
-cigars in their mouths.
-
-"You see," remarked Holmes, as we paced to and fro in front of
-the house, "this marriage rather simplifies matters. The
-photograph becomes a double-edged weapon now. The chances are
-that she would be as averse to its being seen by Mr. Godfrey
-Norton, as our client is to its coming to the eyes of his
-princess. Now the question is, Where are we to find the
-photograph?"
-
-"Where, indeed?"
-
-"It is most unlikely that she carries it about with her. It is
-cabinet size. Too large for easy concealment about a woman's
-dress. She knows that the King is capable of having her waylaid
-and searched. Two attempts of the sort have already been made. We
-may take it, then, that she does not carry it about with her."
-
-"Where, then?"
-
-"Her banker or her lawyer. There is that double possibility. But
-I am inclined to think neither. Women are naturally secretive,
-and they like to do their own secreting. Why should she hand it
-over to anyone else? She could trust her own guardianship, but
-she could not tell what indirect or political influence might be
-brought to bear upon a business man. Besides, remember that she
-had resolved to use it within a few days. It must be where she
-can lay her hands upon it. It must be in her own house."
-
-"But it has twice been burgled."
-
-"Pshaw! They did not know how to look."
-
-"But how will you look?"
-
-"I will not look."
-
-"What then?"
-
-"I will get her to show me."
-
-"But she will refuse."
-
-"She will not be able to. But I hear the rumble of wheels. It is
-her carriage. Now carry out my orders to the letter."
-
-As he spoke the gleam of the side-lights of a carriage came round
-the curve of the avenue. It was a smart little landau which
-rattled up to the door of Briony Lodge. As it pulled up, one of
-the loafing men at the corner dashed forward to open the door in
-the hope of earning a copper, but was elbowed away by another
-loafer, who had rushed up with the same intention. A fierce
-quarrel broke out, which was increased by the two guardsmen, who
-took sides with one of the loungers, and by the scissors-grinder,
-who was equally hot upon the other side. A blow was struck, and
-in an instant the lady, who had stepped from her carriage, was
-the centre of a little knot of flushed and struggling men, who
-struck savagely at each other with their fists and sticks. Holmes
-dashed into the crowd to protect the lady; but just as he reached
-her he gave a cry and dropped to the ground, with the blood
-running freely down his face. At his fall the guardsmen took to
-their heels in one direction and the loungers in the other, while
-a number of better-dressed people, who had watched the scuffle
-without taking part in it, crowded in to help the lady and to
-attend to the injured man. Irene Adler, as I will still call her,
-had hurried up the steps; but she stood at the top with her
-superb figure outlined against the lights of the hall, looking
-back into the street.
-
-"Is the poor gentleman much hurt?" she asked.
-
-"He is dead," cried several voices.
-
-"No, no, there's life in him!" shouted another. "But he'll be
-gone before you can get him to hospital."
-
-"He's a brave fellow," said a woman. "They would have had the
-lady's purse and watch if it hadn't been for him. They were a
-gang, and a rough one, too. Ah, he's breathing now."
-
-"He can't lie in the street. May we bring him in, marm?"
-
-"Surely. Bring him into the sitting-room. There is a comfortable
-sofa. This way, please!"
-
-Slowly and solemnly he was borne into Briony Lodge and laid out
-in the principal room, while I still observed the proceedings
-from my post by the window. The lamps had been lit, but the
-blinds had not been drawn, so that I could see Holmes as he lay
-upon the couch. I do not know whether he was seized with
-compunction at that moment for the part he was playing, but I
-know that I never felt more heartily ashamed of myself in my life
-than when I saw the beautiful creature against whom I was
-conspiring, or the grace and kindliness with which she waited
-upon the injured man. And yet it would be the blackest treachery
-to Holmes to draw back now from the part which he had intrusted
-to me. I hardened my heart, and took the smoke-rocket from under
-my ulster. After all, I thought, we are not injuring her. We are
-but preventing her from injuring another.
-
-Holmes had sat up upon the couch, and I saw him motion like a man
-who is in need of air. A maid rushed across and threw open the
-window. At the same instant I saw him raise his hand and at the
-signal I tossed my rocket into the room with a cry of "Fire!" The
-word was no sooner out of my mouth than the whole crowd of
-spectators, well dressed and ill--gentlemen, ostlers, and
-servant-maids--joined in a general shriek of "Fire!" Thick clouds
-of smoke curled through the room and out at the open window. I
-caught a glimpse of rushing figures, and a moment later the voice
-of Holmes from within assuring them that it was a false alarm.
-Slipping through the shouting crowd I made my way to the corner
-of the street, and in ten minutes was rejoiced to find my
-friend's arm in mine, and to get away from the scene of uproar.
-He walked swiftly and in silence for some few minutes until we
-had turned down one of the quiet streets which lead towards the
-Edgeware Road.
-
-"You did it very nicely, Doctor," he remarked. "Nothing could
-have been better. It is all right."
-
-"You have the photograph?"
-
-"I know where it is."
-
-"And how did you find out?"
-
-"She showed me, as I told you she would."
-
-"I am still in the dark."
-
-"I do not wish to make a mystery," said he, laughing. "The matter
-was perfectly simple. You, of course, saw that everyone in the
-street was an accomplice. They were all engaged for the evening."
-
-"I guessed as much."
-
-"Then, when the row broke out, I had a little moist red paint in
-the palm of my hand. I rushed forward, fell down, clapped my hand
-to my face, and became a piteous spectacle. It is an old trick."
-
-"That also I could fathom."
-
-"Then they carried me in. She was bound to have me in. What else
-could she do? And into her sitting-room, which was the very room
-which I suspected. It lay between that and her bedroom, and I was
-determined to see which. They laid me on a couch, I motioned for
-air, they were compelled to open the window, and you had your
-chance."
-
-"How did that help you?"
-
-"It was all-important. When a woman thinks that her house is on
-fire, her instinct is at once to rush to the thing which she
-values most. It is a perfectly overpowering impulse, and I have
-more than once taken advantage of it. In the case of the
-Darlington substitution scandal it was of use to me, and also in
-the Arnsworth Castle business. A married woman grabs at her baby;
-an unmarried one reaches for her jewel-box. Now it was clear to
-me that our lady of to-day had nothing in the house more precious
-to her than what we are in quest of. She would rush to secure it.
-The alarm of fire was admirably done. The smoke and shouting were
-enough to shake nerves of steel. She responded beautifully. The
-photograph is in a recess behind a sliding panel just above the
-right bell-pull. She was there in an instant, and I caught a
-glimpse of it as she half-drew it out. When I cried out that it
-was a false alarm, she replaced it, glanced at the rocket, rushed
-from the room, and I have not seen her since. I rose, and, making
-my excuses, escaped from the house. I hesitated whether to
-attempt to secure the photograph at once; but the coachman had
-come in, and as he was watching me narrowly it seemed safer to
-wait. A little over-precipitance may ruin all."
-
-"And now?" I asked.
-
-"Our quest is practically finished. I shall call with the King
-to-morrow, and with you, if you care to come with us. We will be
-shown into the sitting-room to wait for the lady, but it is
-probable that when she comes she may find neither us nor the
-photograph. It might be a satisfaction to his Majesty to regain
-it with his own hands."
-
-"And when will you call?"
-
-"At eight in the morning. She will not be up, so that we shall
-have a clear field. Besides, we must be prompt, for this marriage
-may mean a complete change in her life and habits. I must wire to
-the King without delay."
-
-We had reached Baker Street and had stopped at the door. He was
-searching his pockets for the key when someone passing said:
-
-"Good-night, Mister Sherlock Holmes."
-
-There were several people on the pavement at the time, but the
-greeting appeared to come from a slim youth in an ulster who had
-hurried by.
-
-"I've heard that voice before," said Holmes, staring down the
-dimly lit street. "Now, I wonder who the deuce that could have
-been."
-
-
-III.
-
-I slept at Baker Street that night, and we were engaged upon our
-toast and coffee in the morning when the King of Bohemia rushed
-into the room.
-
-"You have really got it!" he cried, grasping Sherlock Holmes by
-either shoulder and looking eagerly into his face.
-
-"Not yet."
-
-"But you have hopes?"
-
-"I have hopes."
-
-"Then, come. I am all impatience to be gone."
-
-"We must have a cab."
-
-"No, my brougham is waiting."
-
-"Then that will simplify matters." We descended and started off
-once more for Briony Lodge.
-
-"Irene Adler is married," remarked Holmes.
-
-"Married! When?"
-
-"Yesterday."
-
-"But to whom?"
-
-"To an English lawyer named Norton."
-
-"But she could not love him."
-
-"I am in hopes that she does."
-
-"And why in hopes?"
-
-"Because it would spare your Majesty all fear of future
-annoyance. If the lady loves her husband, she does not love your
-Majesty. If she does not love your Majesty, there is no reason
-why she should interfere with your Majesty's plan."
-
-"It is true. And yet--Well! I wish she had been of my own
-station! What a queen she would have made!" He relapsed into a
-moody silence, which was not broken until we drew up in
-Serpentine Avenue.
-
-The door of Briony Lodge was open, and an elderly woman stood
-upon the steps. She watched us with a sardonic eye as we stepped
-from the brougham.
-
-"Mr. Sherlock Holmes, I believe?" said she.
-
-"I am Mr. Holmes," answered my companion, looking at her with a
-questioning and rather startled gaze.
-
-"Indeed! My mistress told me that you were likely to call. She
-left this morning with her husband by the 5:15 train from Charing
-Cross for the Continent."
-
-"What!" Sherlock Holmes staggered back, white with chagrin and
-surprise. "Do you mean that she has left England?"
-
-"Never to return."
-
-"And the papers?" asked the King hoarsely. "All is lost."
-
-"We shall see." He pushed past the servant and rushed into the
-drawing-room, followed by the King and myself. The furniture was
-scattered about in every direction, with dismantled shelves and
-open drawers, as if the lady had hurriedly ransacked them before
-her flight. Holmes rushed at the bell-pull, tore back a small
-sliding shutter, and, plunging in his hand, pulled out a
-photograph and a letter. The photograph was of Irene Adler
-herself in evening dress, the letter was superscribed to
-"Sherlock Holmes, Esq. To be left till called for." My friend
-tore it open and we all three read it together. It was dated at
-midnight of the preceding night and ran in this way:
-
-"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
-took me in completely. Until after the alarm of fire, I had not a
-suspicion. But then, when I found how I had betrayed myself, I
-began to think. I had been warned against you months ago. I had
-been told that if the King employed an agent it would certainly
-be you. And your address had been given me. Yet, with all this,
-you made me reveal what you wanted to know. Even after I became
-suspicious, I found it hard to think evil of such a dear, kind
-old clergyman. But, you know, I have been trained as an actress
-myself. Male costume is nothing new to me. I often take advantage
-of the freedom which it gives. I sent John, the coachman, to
-watch you, ran up stairs, got into my walking-clothes, as I call
-them, and came down just as you departed.
-
-"Well, I followed you to your door, and so made sure that I was
-really an object of interest to the celebrated Mr. Sherlock
-Holmes. Then I, rather imprudently, wished you good-night, and
-started for the Temple to see my husband.
-
-"We both thought the best resource was flight, when pursued by
-so formidable an antagonist; so you will find the nest empty when
-you call to-morrow. As to the photograph, your client may rest in
-peace. I love and am loved by a better man than he. The King may
-do what he will without hindrance from one whom he has cruelly
-wronged. I keep it only to safeguard myself, and to preserve a
-weapon which will always secure me from any steps which he might
-take in the future. I leave a photograph which he might care to
-possess; and I remain, dear Mr. Sherlock Holmes,
-
-                                      "Very truly yours,
-                                   "IRENE NORTON, née ADLER."
-
-"What a woman--oh, what a woman!" cried the King of Bohemia, when
-we had all three read this epistle. "Did I not tell you how quick
-and resolute she was? Would she not have made an admirable queen?
-Is it not a pity that she was not on my level?"
-
-"From what I have seen of the lady she seems indeed to be on a
-very different level to your Majesty," said Holmes coldly. "I am
-sorry that I have not been able to bring your Majesty's business
-to a more successful conclusion."
-
-"On the contrary, my dear sir," cried the King; "nothing could be
-more successful. I know that her word is inviolate. The
-photograph is now as safe as if it were in the fire."
-
-"I am glad to hear your Majesty say so."
-
-"I am immensely indebted to you. Pray tell me in what way I can
-reward you. This ring--" He slipped an emerald snake ring from
-his finger and held it out upon the palm of his hand.
-
-"Your Majesty has something which I should value even more
-highly," said Holmes.
-
-"You have but to name it."
-
-"This photograph!"
-
-The King stared at him in amazement.
-
-"Irene's photograph!" he cried. "Certainly, if you wish it."
-
-"I thank your Majesty. Then there is no more to be done in the
-matter. I have the honour to wish you a very good-morning." He
-bowed, and, turning away without observing the hand which the
-King had stretched out to him, he set off in my company for his
-chambers.
-
-And that was how a great scandal threatened to affect the kingdom
-of Bohemia, and how the best plans of Mr. Sherlock Holmes were
-beaten by a woman's wit. He used to make merry over the
-cleverness of women, but I have not heard him do it of late. And
-when he speaks of Irene Adler, or when he refers to her
-photograph, it is always under the honourable title of the woman.
-
-
-
-ADVENTURE II. THE RED-HEADED LEAGUE
-
-I had called upon my friend, Mr. Sherlock Holmes, one day in the
-autumn of last year and found him in deep conversation with a
-very stout, florid-faced, elderly gentleman with fiery red hair.
-With an apology for my intrusion, I was about to withdraw when
-Holmes pulled me abruptly into the room and closed the door
-behind me.
-
-"You could not possibly have come at a better time, my dear
-Watson," he said cordially.
-
-"I was afraid that you were engaged."
-
-"So I am. Very much so."
-
-"Then I can wait in the next room."
-
-"Not at all. This gentleman, Mr. Wilson, has been my partner and
-helper in many of my most successful cases, and I have no
-doubt that he will be of the utmost use to me in yours also."
-
-The stout gentleman half rose from his chair and gave a bob of
-greeting, with a quick little questioning glance from his small
-fat-encircled eyes.
-
-"Try the settee," said Holmes, relapsing into his armchair and
-putting his fingertips together, as was his custom when in
-judicial moods. "I know, my dear Watson, that you share my love
-of all that is bizarre and outside the conventions and humdrum
-routine of everyday life. You have shown your relish for it by
-the enthusiasm which has prompted you to chronicle, and, if you
-will excuse my saying so, somewhat to embellish so many of my own
-little adventures."
-
-"Your cases have indeed been of the greatest interest to me," I
-observed.
-
-"You will remember that I remarked the other day, just before we
-went into the very simple problem presented by Miss Mary
-Sutherland, that for strange effects and extraordinary
-combinations we must go to life itself, which is always far more
-daring than any effort of the imagination."
-
-"A proposition which I took the liberty of doubting."
-
-"You did, Doctor, but none the less you must come round to my
-view, for otherwise I shall keep on piling fact upon fact on you
-until your reason breaks down under them and acknowledges me to
-be right. Now, Mr. Jabez Wilson here has been good enough to call
-upon me this morning, and to begin a narrative which promises to
-be one of the most singular which I have listened to for some
-time. You have heard me remark that the strangest and most unique
-things are very often connected not with the larger but with the
-smaller crimes, and occasionally, indeed, where there is room for
-doubt whether any positive crime has been committed. As far as I
-have heard it is impossible for me to say whether the present
-case is an instance of crime or not, but the course of events is
-certainly among the most singular that I have ever listened to.
-Perhaps, Mr. Wilson, you would have the great kindness to
-recommence your narrative. I ask you not merely because my friend
-Dr. Watson has not heard the opening part but also because the
-peculiar nature of the story makes me anxious to have every
-possible detail from your lips. As a rule, when I have heard some
-slight indication of the course of events, I am able to guide
-myself by the thousands of other similar cases which occur to my
-memory. In the present instance I am forced to admit that the
-facts are, to the best of my belief, unique."
-
-The portly client puffed out his chest with an appearance of some
-little pride and pulled a dirty and wrinkled newspaper from the
-inside pocket of his greatcoat. As he glanced down the
-advertisement column, with his head thrust forward and the paper
-flattened out upon his knee, I took a good look at the man and
-endeavoured, after the fashion of my companion, to read the
-indications which might be presented by his dress or appearance.
-
-I did not gain very much, however, by my inspection. Our visitor
-bore every mark of being an average commonplace British
-tradesman, obese, pompous, and slow. He wore rather baggy grey
-shepherd's check trousers, a not over-clean black frock-coat,
-unbuttoned in the front, and a drab waistcoat with a heavy brassy
-Albert chain, and a square pierced bit of metal dangling down as
-an ornament. A frayed top-hat and a faded brown overcoat with a
-wrinkled velvet collar lay upon a chair beside him. Altogether,
-look as I would, there was nothing remarkable about the man save
-his blazing red head, and the expression of extreme chagrin and
-discontent upon his features.
-
-Sherlock Holmes' quick eye took in my occupation, and he shook
-his head with a smile as he noticed my questioning glances.
-"Beyond the obvious facts that he has at some time done manual
-labour, that he takes snuff, that he is a Freemason, that he has
-been in China, and that he has done a considerable amount of
-writing lately, I can deduce nothing else."
-
-Mr. Jabez Wilson started up in his chair, with his forefinger
-upon the paper, but his eyes upon my companion.
-
-"How, in the name of good-fortune, did you know all that, Mr.
-Holmes?" he asked. "How did you know, for example, that I did
-manual labour. It's as true as gospel, for I began as a ship's
-carpenter."
-
-"Your hands, my dear sir. Your right hand is quite a size larger
-than your left. You have worked with it, and the muscles are more
-developed."
-
-"Well, the snuff, then, and the Freemasonry?"
-
-"I won't insult your intelligence by telling you how I read that,
-especially as, rather against the strict rules of your order, you
-use an arc-and-compass breastpin."
-
-"Ah, of course, I forgot that. But the writing?"
-
-"What else can be indicated by that right cuff so very shiny for
-five inches, and the left one with the smooth patch near the
-elbow where you rest it upon the desk?"
-
-"Well, but China?"
-
-"The fish that you have tattooed immediately above your right
-wrist could only have been done in China. I have made a small
-study of tattoo marks and have even contributed to the literature
-of the subject. That trick of staining the fishes' scales of a
-delicate pink is quite peculiar to China. When, in addition, I
-see a Chinese coin hanging from your watch-chain, the matter
-becomes even more simple."
-
-Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
-thought at first that you had done something clever, but I see
-that there was nothing in it, after all."
-
-"I begin to think, Watson," said Holmes, "that I make a mistake
-in explaining. 'Omne ignotum pro magnifico,' you know, and my
-poor little reputation, such as it is, will suffer shipwreck if I
-am so candid. Can you not find the advertisement, Mr. Wilson?"
-
-"Yes, I have got it now," he answered with his thick red finger
-planted halfway down the column. "Here it is. This is what began
-it all. You just read it for yourself, sir."
-
-I took the paper from him and read as follows:
-
-"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
-Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
-another vacancy open which entitles a member of the League to a
-salary of 4 pounds a week for purely nominal services. All
-red-headed men who are sound in body and mind and above the age
-of twenty-one years, are eligible. Apply in person on Monday, at
-eleven o'clock, to Duncan Ross, at the offices of the League, 7
-Pope's Court, Fleet Street."
-
-"What on earth does this mean?" I ejaculated after I had twice
-read over the extraordinary announcement.
-
-Holmes chuckled and wriggled in his chair, as was his habit when
-in high spirits. "It is a little off the beaten track, isn't it?"
-said he. "And now, Mr. Wilson, off you go at scratch and tell us
-all about yourself, your household, and the effect which this
-advertisement had upon your fortunes. You will first make a note,
-Doctor, of the paper and the date."
-
-"It is The Morning Chronicle of April 27, 1890. Just two months
-ago."
-
-"Very good. Now, Mr. Wilson?"
-
-"Well, it is just as I have been telling you, Mr. Sherlock
-Holmes," said Jabez Wilson, mopping his forehead; "I have a small
-pawnbroker's business at Coburg Square, near the City. It's not a
-very large affair, and of late years it has not done more than
-just give me a living. I used to be able to keep two assistants,
-but now I only keep one; and I would have a job to pay him but
-that he is willing to come for half wages so as to learn the
-business."
-
-"What is the name of this obliging youth?" asked Sherlock Holmes.
-
-"His name is Vincent Spaulding, and he's not such a youth,
-either. It's hard to say his age. I should not wish a smarter
-assistant, Mr. Holmes; and I know very well that he could better
-himself and earn twice what I am able to give him. But, after
-all, if he is satisfied, why should I put ideas in his head?"
-
-"Why, indeed? You seem most fortunate in having an employé who
-comes under the full market price. It is not a common experience
-among employers in this age. I don't know that your assistant is
-not as remarkable as your advertisement."
-
-"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
-fellow for photography. Snapping away with a camera when he ought
-to be improving his mind, and then diving down into the cellar
-like a rabbit into its hole to develop his pictures. That is his
-main fault, but on the whole he's a good worker. There's no vice
-in him."
-
-"He is still with you, I presume?"
-
-"Yes, sir. He and a girl of fourteen, who does a bit of simple
-cooking and keeps the place clean--that's all I have in the
-house, for I am a widower and never had any family. We live very
-quietly, sir, the three of us; and we keep a roof over our heads
-and pay our debts, if we do nothing more.
-
-"The first thing that put us out was that advertisement.
-Spaulding, he came down into the office just this day eight
-weeks, with this very paper in his hand, and he says:
-
-"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
-
-"'Why that?' I asks.
-
-"'Why,' says he, 'here's another vacancy on the League of the
-Red-headed Men. It's worth quite a little fortune to any man who
-gets it, and I understand that there are more vacancies than
-there are men, so that the trustees are at their wits' end what
-to do with the money. If my hair would only change colour, here's
-a nice little crib all ready for me to step into.'
-
-"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
-very stay-at-home man, and as my business came to me instead of
-my having to go to it, I was often weeks on end without putting
-my foot over the door-mat. In that way I didn't know much of what
-was going on outside, and I was always glad of a bit of news.
-
-"'Have you never heard of the League of the Red-headed Men?' he
-asked with his eyes open.
-
-"'Never.'
-
-"'Why, I wonder at that, for you are eligible yourself for one
-of the vacancies.'
-
-"'And what are they worth?' I asked.
-
-"'Oh, merely a couple of hundred a year, but the work is slight,
-and it need not interfere very much with one's other
-occupations.'
-
-"Well, you can easily think that that made me prick up my ears,
-for the business has not been over-good for some years, and an
-extra couple of hundred would have been very handy.
-
-"'Tell me all about it,' said I.
-
-"'Well,' said he, showing me the advertisement, 'you can see for
-yourself that the League has a vacancy, and there is the address
-where you should apply for particulars. As far as I can make out,
-the League was founded by an American millionaire, Ezekiah
-Hopkins, who was very peculiar in his ways. He was himself
-red-headed, and he had a great sympathy for all red-headed men;
-so when he died it was found that he had left his enormous
-fortune in the hands of trustees, with instructions to apply the
-interest to the providing of easy berths to men whose hair is of
-that colour. From all I hear it is splendid pay and very little to
-do.'
-
-"'But,' said I, 'there would be millions of red-headed men who
-would apply.'
-
-"'Not so many as you might think,' he answered. 'You see it is
-really confined to Londoners, and to grown men. This American had
-started from London when he was young, and he wanted to do the
-old town a good turn. Then, again, I have heard it is no use your
-applying if your hair is light red, or dark red, or anything but
-real bright, blazing, fiery red. Now, if you cared to apply, Mr.
-Wilson, you would just walk in; but perhaps it would hardly be
-worth your while to put yourself out of the way for the sake of a
-few hundred pounds.'
-
-"Now, it is a fact, gentlemen, as you may see for yourselves,
-that my hair is of a very full and rich tint, so that it seemed
-to me that if there was to be any competition in the matter I
-stood as good a chance as any man that I had ever met. Vincent
-Spaulding seemed to know so much about it that I thought he might
-prove useful, so I just ordered him to put up the shutters for
-the day and to come right away with me. He was very willing to
-have a holiday, so we shut the business up and started off for
-the address that was given us in the advertisement.
-
-"I never hope to see such a sight as that again, Mr. Holmes. From
-north, south, east, and west every man who had a shade of red in
-his hair had tramped into the city to answer the advertisement.
-Fleet Street was choked with red-headed folk, and Pope's Court
-looked like a coster's orange barrow. I should not have thought
-there were so many in the whole country as were brought together
-by that single advertisement. Every shade of colour they
-were--straw, lemon, orange, brick, Irish-setter, liver, clay;
-but, as Spaulding said, there were not many who had the real
-vivid flame-coloured tint. When I saw how many were waiting, I
-would have given it up in despair; but Spaulding would not hear
-of it. How he did it I could not imagine, but he pushed and
-pulled and butted until he got me through the crowd, and right up
-to the steps which led to the office. There was a double stream
-upon the stair, some going up in hope, and some coming back
-dejected; but we wedged in as well as we could and soon found
-ourselves in the office."
-
-"Your experience has been a most entertaining one," remarked
-Holmes as his client paused and refreshed his memory with a huge
-pinch of snuff. "Pray continue your very interesting statement."
-
-"There was nothing in the office but a couple of wooden chairs
-and a deal table, behind which sat a small man with a head that
-was even redder than mine. He said a few words to each candidate
-as he came up, and then he always managed to find some fault in
-them which would disqualify them. Getting a vacancy did not seem
-to be such a very easy matter, after all. However, when our turn
-came the little man was much more favourable to me than to any of
-the others, and he closed the door as we entered, so that he
-might have a private word with us.
-
-"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
-willing to fill a vacancy in the League.'
-
-"'And he is admirably suited for it,' the other answered. 'He has
-every requirement. I cannot recall when I have seen anything so
-fine.' He took a step backward, cocked his head on one side, and
-gazed at my hair until I felt quite bashful. Then suddenly he
-plunged forward, wrung my hand, and congratulated me warmly on my
-success.
-
-"'It would be injustice to hesitate,' said he. 'You will,
-however, I am sure, excuse me for taking an obvious precaution.'
-With that he seized my hair in both his hands, and tugged until I
-yelled with the pain. 'There is water in your eyes,' said he as
-he released me. 'I perceive that all is as it should be. But we
-have to be careful, for we have twice been deceived by wigs and
-once by paint. I could tell you tales of cobbler's wax which
-would disgust you with human nature.' He stepped over to the
-window and shouted through it at the top of his voice that the
-vacancy was filled. A groan of disappointment came up from below,
-and the folk all trooped away in different directions until there
-was not a red-head to be seen except my own and that of the
-manager.
-
-"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
-the pensioners upon the fund left by our noble benefactor. Are
-you a married man, Mr. Wilson? Have you a family?'
-
-"I answered that I had not.
-
-"His face fell immediately.
-
-"'Dear me!' he said gravely, 'that is very serious indeed! I am
-sorry to hear you say that. The fund was, of course, for the
-propagation and spread of the red-heads as well as for their
-maintenance. It is exceedingly unfortunate that you should be a
-bachelor.'
-
-"My face lengthened at this, Mr. Holmes, for I thought that I was
-not to have the vacancy after all; but after thinking it over for
-a few minutes he said that it would be all right.
-
-"'In the case of another,' said he, 'the objection might be
-fatal, but we must stretch a point in favour of a man with such a
-head of hair as yours. When shall you be able to enter upon your
-new duties?'
-
-"'Well, it is a little awkward, for I have a business already,'
-said I.
-
-"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
-'I should be able to look after that for you.'
-
-"'What would be the hours?' I asked.
-
-"'Ten to two.'
-
-"Now a pawnbroker's business is mostly done of an evening, Mr.
-Holmes, especially Thursday and Friday evening, which is just
-before pay-day; so it would suit me very well to earn a little in
-the mornings. Besides, I knew that my assistant was a good man,
-and that he would see to anything that turned up.
-
-"'That would suit me very well,' said I. 'And the pay?'
-
-"'Is 4 pounds a week.'
-
-"'And the work?'
-
-"'Is purely nominal.'
-
-"'What do you call purely nominal?'
-
-"'Well, you have to be in the office, or at least in the
-building, the whole time. If you leave, you forfeit your whole
-position forever. The will is very clear upon that point. You
-don't comply with the conditions if you budge from the office
-during that time.'
-
-"'It's only four hours a day, and I should not think of leaving,'
-said I.
-
-"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
-nor business nor anything else. There you must stay, or you lose
-your billet.'
-
-"'And the work?'
-
-"'Is to copy out the "Encyclopaedia Britannica." There is the first
-volume of it in that press. You must find your own ink, pens, and
-blotting-paper, but we provide this table and chair. Will you be
-ready to-morrow?'
-
-"'Certainly,' I answered.
-
-"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
-once more on the important position which you have been fortunate
-enough to gain.' He bowed me out of the room and I went home with
-my assistant, hardly knowing what to say or do, I was so pleased
-at my own good fortune.
-
-"Well, I thought over the matter all day, and by evening I was in
-low spirits again; for I had quite persuaded myself that the
-whole affair must be some great hoax or fraud, though what its
-object might be I could not imagine. It seemed altogether past
-belief that anyone could make such a will, or that they would pay
-such a sum for doing anything so simple as copying out the
-'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
-cheer me up, but by bedtime I had reasoned myself out of the
-whole thing. However, in the morning I determined to have a look
-at it anyhow, so I bought a penny bottle of ink, and with a
-quill-pen, and seven sheets of foolscap paper, I started off for
-Pope's Court.
-
-"Well, to my surprise and delight, everything was as right as
-possible. The table was set out ready for me, and Mr. Duncan Ross
-was there to see that I got fairly to work. He started me off
-upon the letter A, and then he left me; but he would drop in from
-time to time to see that all was right with me. At two o'clock he
-bade me good-day, complimented me upon the amount that I had
-written, and locked the door of the office after me.
-
-"This went on day after day, Mr. Holmes, and on Saturday the
-manager came in and planked down four golden sovereigns for my
-week's work. It was the same next week, and the same the week
-after. Every morning I was there at ten, and every afternoon I
-left at two. By degrees Mr. Duncan Ross took to coming in only
-once of a morning, and then, after a time, he did not come in at
-all. Still, of course, I never dared to leave the room for an
-instant, for I was not sure when he might come, and the billet
-was such a good one, and suited me so well, that I would not risk
-the loss of it.
-
-"Eight weeks passed away like this, and I had written about
-Abbots and Archery and Armour and Architecture and Attica, and
-hoped with diligence that I might get on to the B's before very
-long. It cost me something in foolscap, and I had pretty nearly
-filled a shelf with my writings. And then suddenly the whole
-business came to an end."
-
-"To an end?"
-
-"Yes, sir. And no later than this morning. I went to my work as
-usual at ten o'clock, but the door was shut and locked, with a
-little square of cardboard hammered on to the middle of the
-panel with a tack. Here it is, and you can read for yourself."
-
-He held up a piece of white cardboard about the size of a sheet
-of note-paper. It read in this fashion:
-
-                  THE RED-HEADED LEAGUE
-
-                           IS
-
-                        DISSOLVED.
-
-                     October 9, 1890.
-
-Sherlock Holmes and I surveyed this curt announcement and the
-rueful face behind it, until the comical side of the affair so
-completely overtopped every other consideration that we both
-burst out into a roar of laughter.
-
-"I cannot see that there is anything very funny," cried our
-client, flushing up to the roots of his flaming head. "If you can
-do nothing better than laugh at me, I can go elsewhere."
-
-"No, no," cried Holmes, shoving him back into the chair from
-which he had half risen. "I really wouldn't miss your case for
-the world. It is most refreshingly unusual. But there is, if you
-will excuse my saying so, something just a little funny about it.
-Pray what steps did you take when you found the card upon the
-door?"
-
-"I was staggered, sir. I did not know what to do. Then I called
-at the offices round, but none of them seemed to know anything
-about it. Finally, I went to the landlord, who is an accountant
-living on the ground-floor, and I asked him if he could tell me
-what had become of the Red-headed League. He said that he had
-never heard of any such body. Then I asked him who Mr. Duncan
-Ross was. He answered that the name was new to him.
-
-"'Well,' said I, 'the gentleman at No. 4.'
-
-"'What, the red-headed man?'
-
-"'Yes.'
-
-"'Oh,' said he, 'his name was William Morris. He was a solicitor
-and was using my room as a temporary convenience until his new
-premises were ready. He moved out yesterday.'
-
-"'Where could I find him?'
-
-"'Oh, at his new offices. He did tell me the address. Yes, 17
-King Edward Street, near St. Paul's.'
-
-"I started off, Mr. Holmes, but when I got to that address it was
-a manufactory of artificial knee-caps, and no one in it had ever
-heard of either Mr. William Morris or Mr. Duncan Ross."
-
-"And what did you do then?" asked Holmes.
-
-"I went home to Saxe-Coburg Square, and I took the advice of my
-assistant. But he could not help me in any way. He could only say
-that if I waited I should hear by post. But that was not quite
-good enough, Mr. Holmes. I did not wish to lose such a place
-without a struggle, so, as I had heard that you were good enough
-to give advice to poor folk who were in need of it, I came right
-away to you."
-
-"And you did very wisely," said Holmes. "Your case is an
-exceedingly remarkable one, and I shall be happy to look into it.
-From what you have told me I think that it is possible that
-graver issues hang from it than might at first sight appear."
-
-"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
-pound a week."
-
-"As far as you are personally concerned," remarked Holmes, "I do
-not see that you have any grievance against this extraordinary
-league. On the contrary, you are, as I understand, richer by some
-30 pounds, to say nothing of the minute knowledge which you have
-gained on every subject which comes under the letter A. You have
-lost nothing by them."
-
-"No, sir. But I want to find out about them, and who they are,
-and what their object was in playing this prank--if it was a
-prank--upon me. It was a pretty expensive joke for them, for it
-cost them two and thirty pounds."
-
-"We shall endeavour to clear up these points for you. And, first,
-one or two questions, Mr. Wilson. This assistant of yours who
-first called your attention to the advertisement--how long had he
-been with you?"
-
-"About a month then."
-
-"How did he come?"
-
-"In answer to an advertisement."
-
-"Was he the only applicant?"
-
-"No, I had a dozen."
-
-"Why did you pick him?"
-
-"Because he was handy and would come cheap."
-
-"At half-wages, in fact."
-
-"Yes."
-
-"What is he like, this Vincent Spaulding?"
-
-"Small, stout-built, very quick in his ways, no hair on his face,
-though he's not short of thirty. Has a white splash of acid upon
-his forehead."
-
-Holmes sat up in his chair in considerable excitement. "I thought
-as much," said he. "Have you ever observed that his ears are
-pierced for earrings?"
-
-"Yes, sir. He told me that a gipsy had done it for him when he
-was a lad."
-
-"Hum!" said Holmes, sinking back in deep thought. "He is still
-with you?"
-
-"Oh, yes, sir; I have only just left him."
-
-"And has your business been attended to in your absence?"
-
-"Nothing to complain of, sir. There's never very much to do of a
-morning."
-
-"That will do, Mr. Wilson. I shall be happy to give you an
-opinion upon the subject in the course of a day or two. To-day is
-Saturday, and I hope that by Monday we may come to a conclusion."
-
-"Well, Watson," said Holmes when our visitor had left us, "what
-do you make of it all?"
-
-"I make nothing of it," I answered frankly. "It is a most
-mysterious business."
-
-"As a rule," said Holmes, "the more bizarre a thing is the less
-mysterious it proves to be. It is your commonplace, featureless
-crimes which are really puzzling, just as a commonplace face is
-the most difficult to identify. But I must be prompt over this
-matter."
-
-"What are you going to do, then?" I asked.
-
-"To smoke," he answered. "It is quite a three pipe problem, and I
-beg that you won't speak to me for fifty minutes." He curled
-himself up in his chair, with his thin knees drawn up to his
-hawk-like nose, and there he sat with his eyes closed and his
-black clay pipe thrusting out like the bill of some strange bird.
-I had come to the conclusion that he had dropped asleep, and
-indeed was nodding myself, when he suddenly sprang out of his
-chair with the gesture of a man who has made up his mind and put
-his pipe down upon the mantelpiece.
-
-"Sarasate plays at the St. James's Hall this afternoon," he
-remarked. "What do you think, Watson? Could your patients spare
-you for a few hours?"
-
-"I have nothing to do to-day. My practice is never very
-absorbing."
-
-"Then put on your hat and come. I am going through the City
-first, and we can have some lunch on the way. I observe that
-there is a good deal of German music on the programme, which is
-rather more to my taste than Italian or French. It is
-introspective, and I want to introspect. Come along!"
-
-We travelled by the Underground as far as Aldersgate; and a short
-walk took us to Saxe-Coburg Square, the scene of the singular
-story which we had listened to in the morning. It was a poky,
-little, shabby-genteel place, where four lines of dingy
-two-storied brick houses looked out into a small railed-in
-enclosure, where a lawn of weedy grass and a few clumps of faded
-laurel-bushes made a hard fight against a smoke-laden and
-uncongenial atmosphere. Three gilt balls and a brown board with
-"JABEZ WILSON" in white letters, upon a corner house, announced
-the place where our red-headed client carried on his business.
-Sherlock Holmes stopped in front of it with his head on one side
-and looked it all over, with his eyes shining brightly between
-puckered lids. Then he walked slowly up the street, and then down
-again to the corner, still looking keenly at the houses. Finally
-he returned to the pawnbroker's, and, having thumped vigorously
-upon the pavement with his stick two or three times, he went up
-to the door and knocked. It was instantly opened by a
-bright-looking, clean-shaven young fellow, who asked him to step
-in.
-
-"Thank you," said Holmes, "I only wished to ask you how you would
-go from here to the Strand."
-
-"Third right, fourth left," answered the assistant promptly,
-closing the door.
-
-"Smart fellow, that," observed Holmes as we walked away. "He is,
-in my judgment, the fourth smartest man in London, and for daring
-I am not sure that he has not a claim to be third. I have known
-something of him before."
-
-"Evidently," said I, "Mr. Wilson's assistant counts for a good
-deal in this mystery of the Red-headed League. I am sure that you
-inquired your way merely in order that you might see him."
-
-"Not him."
-
-"What then?"
-
-"The knees of his trousers."
-
-"And what did you see?"
-
-"What I expected to see."
-
-"Why did you beat the pavement?"
-
-"My dear doctor, this is a time for observation, not for talk. We
-are spies in an enemy's country. We know something of Saxe-Coburg
-Square. Let us now explore the parts which lie behind it."
-
-The road in which we found ourselves as we turned round the
-corner from the retired Saxe-Coburg Square presented as great a
-contrast to it as the front of a picture does to the back. It was
-one of the main arteries which conveyed the traffic of the City
-to the north and west. The roadway was blocked with the immense
-stream of commerce flowing in a double tide inward and outward,
-while the footpaths were black with the hurrying swarm of
-pedestrians. It was difficult to realise as we looked at the line
-of fine shops and stately business premises that they really
-abutted on the other side upon the faded and stagnant square
-which we had just quitted.
-
-"Let me see," said Holmes, standing at the corner and glancing
-along the line, "I should like just to remember the order of the
-houses here. It is a hobby of mine to have an exact knowledge of
-London. There is Mortimer's, the tobacconist, the little
-newspaper shop, the Coburg branch of the City and Suburban Bank,
-the Vegetarian Restaurant, and McFarlane's carriage-building
-depot. That carries us right on to the other block. And now,
-Doctor, we've done our work, so it's time we had some play. A
-sandwich and a cup of coffee, and then off to violin-land, where
-all is sweetness and delicacy and harmony, and there are no
-red-headed clients to vex us with their conundrums."
-
-My friend was an enthusiastic musician, being himself not only a
-very capable performer but a composer of no ordinary merit. All
-the afternoon he sat in the stalls wrapped in the most perfect
-happiness, gently waving his long, thin fingers in time to the
-music, while his gently smiling face and his languid, dreamy eyes
-were as unlike those of Holmes the sleuth-hound, Holmes the
-relentless, keen-witted, ready-handed criminal agent, as it was
-possible to conceive. In his singular character the dual nature
-alternately asserted itself, and his extreme exactness and
-astuteness represented, as I have often thought, the reaction
-against the poetic and contemplative mood which occasionally
-predominated in him. The swing of his nature took him from
-extreme languor to devouring energy; and, as I knew well, he was
-never so truly formidable as when, for days on end, he had been
-lounging in his armchair amid his improvisations and his
-black-letter editions. Then it was that the lust of the chase
-would suddenly come upon him, and that his brilliant reasoning
-power would rise to the level of intuition, until those who were
-unacquainted with his methods would look askance at him as on a
-man whose knowledge was not that of other mortals. When I saw him
-that afternoon so enwrapped in the music at St. James's Hall I
-felt that an evil time might be coming upon those whom he had set
-himself to hunt down.
-
-"You want to go home, no doubt, Doctor," he remarked as we
-emerged.
-
-"Yes, it would be as well."
-
-"And I have some business to do which will take some hours. This
-business at Coburg Square is serious."
-
-"Why serious?"
-
-"A considerable crime is in contemplation. I have every reason to
-believe that we shall be in time to stop it. But to-day being
-Saturday rather complicates matters. I shall want your help
-to-night."
-
-"At what time?"
-
-"Ten will be early enough."
-
-"I shall be at Baker Street at ten."
-
-"Very well. And, I say, Doctor, there may be some little danger,
-so kindly put your army revolver in your pocket." He waved his
-hand, turned on his heel, and disappeared in an instant among the
-crowd.
-
-I trust that I am not more dense than my neighbours, but I was
-always oppressed with a sense of my own stupidity in my dealings
-with Sherlock Holmes. Here I had heard what he had heard, I had
-seen what he had seen, and yet from his words it was evident that
-he saw clearly not only what had happened but what was about to
-happen, while to me the whole business was still confused and
-grotesque. As I drove home to my house in Kensington I thought
-over it all, from the extraordinary story of the red-headed
-copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
-Square, and the ominous words with which he had parted from me.
-What was this nocturnal expedition, and why should I go armed?
-Where were we going, and what were we to do? I had the hint from
-Holmes that this smooth-faced pawnbroker's assistant was a
-formidable man--a man who might play a deep game. I tried to
-puzzle it out, but gave it up in despair and set the matter aside
-until night should bring an explanation.
-
-It was a quarter-past nine when I started from home and made my
-way across the Park, and so through Oxford Street to Baker
-Street. Two hansoms were standing at the door, and as I entered
-the passage I heard the sound of voices from above. On entering
-his room I found Holmes in animated conversation with two men,
-one of whom I recognised as Peter Jones, the official police
-agent, while the other was a long, thin, sad-faced man, with a
-very shiny hat and oppressively respectable frock-coat.
-
-"Ha! Our party is complete," said Holmes, buttoning up his
-pea-jacket and taking his heavy hunting crop from the rack.
-"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
-introduce you to Mr. Merryweather, who is to be our companion in
-to-night's adventure."
-
-"We're hunting in couples again, Doctor, you see," said Jones in
-his consequential way. "Our friend here is a wonderful man for
-starting a chase. All he wants is an old dog to help him to do
-the running down."
-
-"I hope a wild goose may not prove to be the end of our chase,"
-observed Mr. Merryweather gloomily.
-
-"You may place considerable confidence in Mr. Holmes, sir," said
-the police agent loftily. "He has his own little methods, which
-are, if he won't mind my saying so, just a little too theoretical
-and fantastic, but he has the makings of a detective in him. It
-is not too much to say that once or twice, as in that business of
-the Sholto murder and the Agra treasure, he has been more nearly
-correct than the official force."
-
-"Oh, if you say so, Mr. Jones, it is all right," said the
-stranger with deference. "Still, I confess that I miss my rubber.
-It is the first Saturday night for seven-and-twenty years that I
-have not had my rubber."
-
-"I think you will find," said Sherlock Holmes, "that you will
-play for a higher stake to-night than you have ever done yet, and
-that the play will be more exciting. For you, Mr. Merryweather,
-the stake will be some 30,000 pounds; and for you, Jones, it will
-be the man upon whom you wish to lay your hands."
-
-"John Clay, the murderer, thief, smasher, and forger. He's a
-young man, Mr. Merryweather, but he is at the head of his
-profession, and I would rather have my bracelets on him than on
-any criminal in London. He's a remarkable man, is young John
-Clay. His grandfather was a royal duke, and he himself has been
-to Eton and Oxford. His brain is as cunning as his fingers, and
-though we meet signs of him at every turn, we never know where to
-find the man himself. He'll crack a crib in Scotland one week,
-and be raising money to build an orphanage in Cornwall the next.
-I've been on his track for years and have never set eyes on him
-yet."
-
-"I hope that I may have the pleasure of introducing you to-night.
-I've had one or two little turns also with Mr. John Clay, and I
-agree with you that he is at the head of his profession. It is
-past ten, however, and quite time that we started. If you two
-will take the first hansom, Watson and I will follow in the
-second."
-
-Sherlock Holmes was not very communicative during the long drive
-and lay back in the cab humming the tunes which he had heard in
-the afternoon. We rattled through an endless labyrinth of gas-lit
-streets until we emerged into Farrington Street.
-
-"We are close there now," my friend remarked. "This fellow
-Merryweather is a bank director, and personally interested in the
-matter. I thought it as well to have Jones with us also. He is
-not a bad fellow, though an absolute imbecile in his profession.
-He has one positive virtue. He is as brave as a bulldog and as
-tenacious as a lobster if he gets his claws upon anyone. Here we
-are, and they are waiting for us."
-
-We had reached the same crowded thoroughfare in which we had
-found ourselves in the morning. Our cabs were dismissed, and,
-following the guidance of Mr. Merryweather, we passed down a
-narrow passage and through a side door, which he opened for us.
-Within there was a small corridor, which ended in a very massive
-iron gate. This also was opened, and led down a flight of winding
-stone steps, which terminated at another formidable gate. Mr.
-Merryweather stopped to light a lantern, and then conducted us
-down a dark, earth-smelling passage, and so, after opening a
-third door, into a huge vault or cellar, which was piled all
-round with crates and massive boxes.
-
-"You are not very vulnerable from above," Holmes remarked as he
-held up the lantern and gazed about him.
-
-"Nor from below," said Mr. Merryweather, striking his stick upon
-the flags which lined the floor. "Why, dear me, it sounds quite
-hollow!" he remarked, looking up in surprise.
-
-"I must really ask you to be a little more quiet!" said Holmes
-severely. "You have already imperilled the whole success of our
-expedition. Might I beg that you would have the goodness to sit
-down upon one of those boxes, and not to interfere?"
-
-The solemn Mr. Merryweather perched himself upon a crate, with a
-very injured expression upon his face, while Holmes fell upon his
-knees upon the floor and, with the lantern and a magnifying lens,
-began to examine minutely the cracks between the stones. A few
-seconds sufficed to satisfy him, for he sprang to his feet again
-and put his glass in his pocket.
-
-"We have at least an hour before us," he remarked, "for they can
-hardly take any steps until the good pawnbroker is safely in bed.
-Then they will not lose a minute, for the sooner they do their
-work the longer time they will have for their escape. We are at
-present, Doctor--as no doubt you have divined--in the cellar of
-the City branch of one of the principal London banks. Mr.
-Merryweather is the chairman of directors, and he will explain to
-you that there are reasons why the more daring criminals of
-London should take a considerable interest in this cellar at
-present."
-
-"It is our French gold," whispered the director. "We have had
-several warnings that an attempt might be made upon it."
-
-"Your French gold?"
-
-"Yes. We had occasion some months ago to strengthen our resources
-and borrowed for that purpose 30,000 napoleons from the Bank of
-France. It has become known that we have never had occasion to
-unpack the money, and that it is still lying in our cellar. The
-crate upon which I sit contains 2,000 napoleons packed between
-layers of lead foil. Our reserve of bullion is much larger at
-present than is usually kept in a single branch office, and the
-directors have had misgivings upon the subject."
-
-"Which were very well justified," observed Holmes. "And now it is
-time that we arranged our little plans. I expect that within an
-hour matters will come to a head. In the meantime Mr.
-Merryweather, we must put the screen over that dark lantern."
-
-"And sit in the dark?"
-
-"I am afraid so. I had brought a pack of cards in my pocket, and
-I thought that, as we were a partie carrée, you might have your
-rubber after all. But I see that the enemy's preparations have
-gone so far that we cannot risk the presence of a light. And,
-first of all, we must choose our positions. These are daring men,
-and though we shall take them at a disadvantage, they may do us
-some harm unless we are careful. I shall stand behind this crate,
-and do you conceal yourselves behind those. Then, when I flash a
-light upon them, close in swiftly. If they fire, Watson, have no
-compunction about shooting them down."
-
-I placed my revolver, cocked, upon the top of the wooden case
-behind which I crouched. Holmes shot the slide across the front
-of his lantern and left us in pitch darkness--such an absolute
-darkness as I have never before experienced. The smell of hot
-metal remained to assure us that the light was still there, ready
-to flash out at a moment's notice. To me, with my nerves worked
-up to a pitch of expectancy, there was something depressing and
-subduing in the sudden gloom, and in the cold dank air of the
-vault.
-
-"They have but one retreat," whispered Holmes. "That is back
-through the house into Saxe-Coburg Square. I hope that you have
-done what I asked you, Jones?"
-
-"I have an inspector and two officers waiting at the front door."
-
-"Then we have stopped all the holes. And now we must be silent
-and wait."
-
-What a time it seemed! From comparing notes afterwards it was but
-an hour and a quarter, yet it appeared to me that the night must
-have almost gone and the dawn be breaking above us. My limbs
-were weary and stiff, for I feared to change my position; yet my
-nerves were worked up to the highest pitch of tension, and my
-hearing was so acute that I could not only hear the gentle
-breathing of my companions, but I could distinguish the deeper,
-heavier in-breath of the bulky Jones from the thin, sighing note
-of the bank director. From my position I could look over the case
-in the direction of the floor. Suddenly my eyes caught the glint
-of a light.
-
-At first it was but a lurid spark upon the stone pavement. Then
-it lengthened out until it became a yellow line, and then,
-without any warning or sound, a gash seemed to open and a hand
-appeared, a white, almost womanly hand, which felt about in the
-centre of the little area of light. For a minute or more the
-hand, with its writhing fingers, protruded out of the floor. Then
-it was withdrawn as suddenly as it appeared, and all was dark
-again save the single lurid spark which marked a chink between
-the stones.
-
-Its disappearance, however, was but momentary. With a rending,
-tearing sound, one of the broad, white stones turned over upon
-its side and left a square, gaping hole, through which streamed
-the light of a lantern. Over the edge there peeped a clean-cut,
-boyish face, which looked keenly about it, and then, with a hand
-on either side of the aperture, drew itself shoulder-high and
-waist-high, until one knee rested upon the edge. In another
-instant he stood at the side of the hole and was hauling after
-him a companion, lithe and small like himself, with a pale face
-and a shock of very red hair.
-
-"It's all clear," he whispered. "Have you the chisel and the
-bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
-
-Sherlock Holmes had sprung out and seized the intruder by the
-collar. The other dived down the hole, and I heard the sound of
-rending cloth as Jones clutched at his skirts. The light flashed
-upon the barrel of a revolver, but Holmes' hunting crop came
-down on the man's wrist, and the pistol clinked upon the stone
-floor.
-
-"It's no use, John Clay," said Holmes blandly. "You have no
-chance at all."
-
-"So I see," the other answered with the utmost coolness. "I fancy
-that my pal is all right, though I see you have got his
-coat-tails."
-
-"There are three men waiting for him at the door," said Holmes.
-
-"Oh, indeed! You seem to have done the thing very completely. I
-must compliment you."
-
-"And I you," Holmes answered. "Your red-headed idea was very new
-and effective."
-
-"You'll see your pal again presently," said Jones. "He's quicker
-at climbing down holes than I am. Just hold out while I fix the
-derbies."
-
-"I beg that you will not touch me with your filthy hands,"
-remarked our prisoner as the handcuffs clattered upon his wrists.
-"You may not be aware that I have royal blood in my veins. Have
-the goodness, also, when you address me always to say 'sir' and
-'please.'"
-
-"All right," said Jones with a stare and a snigger. "Well, would
-you please, sir, march upstairs, where we can get a cab to carry
-your Highness to the police-station?"
-
-"That is better," said John Clay serenely. He made a sweeping bow
-to the three of us and walked quietly off in the custody of the
-detective.
-
-"Really, Mr. Holmes," said Mr. Merryweather as we followed them
-from the cellar, "I do not know how the bank can thank you or
-repay you. There is no doubt that you have detected and defeated
-in the most complete manner one of the most determined attempts
-at bank robbery that have ever come within my experience."
-
-"I have had one or two little scores of my own to settle with Mr.
-John Clay," said Holmes. "I have been at some small expense over
-this matter, which I shall expect the bank to refund, but beyond
-that I am amply repaid by having had an experience which is in
-many ways unique, and by hearing the very remarkable narrative of
-the Red-headed League."
-
-
-"You see, Watson," he explained in the early hours of the morning
-as we sat over a glass of whisky and soda in Baker Street, "it
-was perfectly obvious from the first that the only possible
-object of this rather fantastic business of the advertisement of
-the League, and the copying of the 'Encyclopaedia,' must be to get
-this not over-bright pawnbroker out of the way for a number of
-hours every day. It was a curious way of managing it, but,
-really, it would be difficult to suggest a better. The method was
-no doubt suggested to Clay's ingenious mind by the colour of his
-accomplice's hair. The 4 pounds a week was a lure which must draw
-him, and what was it to them, who were playing for thousands?
-They put in the advertisement, one rogue has the temporary
-office, the other rogue incites the man to apply for it, and
-together they manage to secure his absence every morning in the
-week. From the time that I heard of the assistant having come for
-half wages, it was obvious to me that he had some strong motive
-for securing the situation."
-
-"But how could you guess what the motive was?"
-
-"Had there been women in the house, I should have suspected a
-mere vulgar intrigue. That, however, was out of the question. The
-man's business was a small one, and there was nothing in his
-house which could account for such elaborate preparations, and
-such an expenditure as they were at. It must, then, be something
-out of the house. What could it be? I thought of the assistant's
-fondness for photography, and his trick of vanishing into the
-cellar. The cellar! There was the end of this tangled clue. Then
-I made inquiries as to this mysterious assistant and found that I
-had to deal with one of the coolest and most daring criminals in
-London. He was doing something in the cellar--something which
-took many hours a day for months on end. What could it be, once
-more? I could think of nothing save that he was running a tunnel
-to some other building.
-
-"So far I had got when we went to visit the scene of action. I
-surprised you by beating upon the pavement with my stick. I was
-ascertaining whether the cellar stretched out in front or behind.
-It was not in front. Then I rang the bell, and, as I hoped, the
-assistant answered it. We have had some skirmishes, but we had
-never set eyes upon each other before. I hardly looked at his
-face. His knees were what I wished to see. You must yourself have
-remarked how worn, wrinkled, and stained they were. They spoke of
-those hours of burrowing. The only remaining point was what they
-were burrowing for. I walked round the corner, saw the City and
-Suburban Bank abutted on our friend's premises, and felt that I
-had solved my problem. When you drove home after the concert I
-called upon Scotland Yard and upon the chairman of the bank
-directors, with the result that you have seen."
-
-"And how could you tell that they would make their attempt
-to-night?" I asked.
-
-"Well, when they closed their League offices that was a sign that
-they cared no longer about Mr. Jabez Wilson's presence--in other
-words, that they had completed their tunnel. But it was essential
-that they should use it soon, as it might be discovered, or the
-bullion might be removed. Saturday would suit them better than
-any other day, as it would give them two days for their escape.
-For all these reasons I expected them to come to-night."
-
-"You reasoned it out beautifully," I exclaimed in unfeigned
-admiration. "It is so long a chain, and yet every link rings
-true."
-
-"It saved me from ennui," he answered, yawning. "Alas! I already
-feel it closing in upon me. My life is spent in one long effort
-to escape from the commonplaces of existence. These little
-problems help me to do so."
-
-"And you are a benefactor of the race," said I.
-
-He shrugged his shoulders. "Well, perhaps, after all, it is of
-some little use," he remarked. "'L'homme c'est rien--l'oeuvre
-c'est tout,' as Gustave Flaubert wrote to George Sand."
-
-
-
-ADVENTURE III. A CASE OF IDENTITY
-
-"My dear fellow," said Sherlock Holmes as we sat on either side
-of the fire in his lodgings at Baker Street, "life is infinitely
-stranger than anything which the mind of man could invent. We
-would not dare to conceive the things which are really mere
-commonplaces of existence. If we could fly out of that window
-hand in hand, hover over this great city, gently remove the
-roofs, and peep in at the queer things which are going on, the
-strange coincidences, the plannings, the cross-purposes, the
-wonderful chains of events, working through generations, and
-leading to the most outré results, it would make all fiction with
-its conventionalities and foreseen conclusions most stale and
-unprofitable."
-
-"And yet I am not convinced of it," I answered. "The cases which
-come to light in the papers are, as a rule, bald enough, and
-vulgar enough. We have in our police reports realism pushed to
-its extreme limits, and yet the result is, it must be confessed,
-neither fascinating nor artistic."
-
-"A certain selection and discretion must be used in producing a
-realistic effect," remarked Holmes. "This is wanting in the
-police report, where more stress is laid, perhaps, upon the
-platitudes of the magistrate than upon the details, which to an
-observer contain the vital essence of the whole matter. Depend
-upon it, there is nothing so unnatural as the commonplace."
-
-I smiled and shook my head. "I can quite understand your thinking
-so," I said. "Of course, in your position of unofficial adviser
-and helper to everybody who is absolutely puzzled, throughout
-three continents, you are brought in contact with all that is
-strange and bizarre. But here"--I picked up the morning paper
-from the ground--"let us put it to a practical test. Here is the
-first heading upon which I come. 'A husband's cruelty to his
-wife.' There is half a column of print, but I know without
-reading it that it is all perfectly familiar to me. There is, of
-course, the other woman, the drink, the push, the blow, the
-bruise, the sympathetic sister or landlady. The crudest of
-writers could invent nothing more crude."
-
-"Indeed, your example is an unfortunate one for your argument,"
-said Holmes, taking the paper and glancing his eye down it. "This
-is the Dundas separation case, and, as it happens, I was engaged
-in clearing up some small points in connection with it. The
-husband was a teetotaler, there was no other woman, and the
-conduct complained of was that he had drifted into the habit of
-winding up every meal by taking out his false teeth and hurling
-them at his wife, which, you will allow, is not an action likely
-to occur to the imagination of the average story-teller. Take a
-pinch of snuff, Doctor, and acknowledge that I have scored over
-you in your example."
-
-He held out his snuffbox of old gold, with a great amethyst in
-the centre of the lid. Its splendour was in such contrast to his
-homely ways and simple life that I could not help commenting upon
-it.
-
-"Ah," said he, "I forgot that I had not seen you for some weeks.
-It is a little souvenir from the King of Bohemia in return for my
-assistance in the case of the Irene Adler papers."
-
-"And the ring?" I asked, glancing at a remarkable brilliant which
-sparkled upon his finger.
-
-"It was from the reigning family of Holland, though the matter in
-which I served them was of such delicacy that I cannot confide it
-even to you, who have been good enough to chronicle one or two of
-my little problems."
-
-"And have you any on hand just now?" I asked with interest.
-
-"Some ten or twelve, but none which present any feature of
-interest. They are important, you understand, without being
-interesting. Indeed, I have found that it is usually in
-unimportant matters that there is a field for the observation,
-and for the quick analysis of cause and effect which gives the
-charm to an investigation. The larger crimes are apt to be the
-simpler, for the bigger the crime the more obvious, as a rule, is
-the motive. In these cases, save for one rather intricate matter
-which has been referred to me from Marseilles, there is nothing
-which presents any features of interest. It is possible, however,
-that I may have something better before very many minutes are
-over, for this is one of my clients, or I am much mistaken."
-
-He had risen from his chair and was standing between the parted
-blinds gazing down into the dull neutral-tinted London street.
-Looking over his shoulder, I saw that on the pavement opposite
-there stood a large woman with a heavy fur boa round her neck,
-and a large curling red feather in a broad-brimmed hat which was
-tilted in a coquettish Duchess of Devonshire fashion over her
-ear. From under this great panoply she peeped up in a nervous,
-hesitating fashion at our windows, while her body oscillated
-backward and forward, and her fingers fidgeted with her glove
-buttons. Suddenly, with a plunge, as of the swimmer who leaves
-the bank, she hurried across the road, and we heard the sharp
-clang of the bell.
-
-"I have seen those symptoms before," said Holmes, throwing his
-cigarette into the fire. "Oscillation upon the pavement always
-means an affaire de coeur. She would like advice, but is not sure
-that the matter is not too delicate for communication. And yet
-even here we may discriminate. When a woman has been seriously
-wronged by a man she no longer oscillates, and the usual symptom
-is a broken bell wire. Here we may take it that there is a love
-matter, but that the maiden is not so much angry as perplexed, or
-grieved. But here she comes in person to resolve our doubts."
-
-As he spoke there was a tap at the door, and the boy in buttons
-entered to announce Miss Mary Sutherland, while the lady herself
-loomed behind his small black figure like a full-sailed
-merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
-her with the easy courtesy for which he was remarkable, and,
-having closed the door and bowed her into an armchair, he looked
-her over in the minute and yet abstracted fashion which was
-peculiar to him.
-
-"Do you not find," he said, "that with your short sight it is a
-little trying to do so much typewriting?"
-
-"I did at first," she answered, "but now I know where the letters
-are without looking." Then, suddenly realising the full purport
-of his words, she gave a violent start and looked up, with fear
-and astonishment upon her broad, good-humoured face. "You've
-heard about me, Mr. Holmes," she cried, "else how could you know
-all that?"
-
-"Never mind," said Holmes, laughing; "it is my business to know
-things. Perhaps I have trained myself to see what others
-overlook. If not, why should you come to consult me?"
-
-"I came to you, sir, because I heard of you from Mrs. Etherege,
-whose husband you found so easy when the police and everyone had
-given him up for dead. Oh, Mr. Holmes, I wish you would do as
-much for me. I'm not rich, but still I have a hundred a year in
-my own right, besides the little that I make by the machine, and
-I would give it all to know what has become of Mr. Hosmer Angel."
-
-"Why did you come away to consult me in such a hurry?" asked
-Sherlock Holmes, with his finger-tips together and his eyes to
-the ceiling.
-
-Again a startled look came over the somewhat vacuous face of Miss
-Mary Sutherland. "Yes, I did bang out of the house," she said,
-"for it made me angry to see the easy way in which Mr.
-Windibank--that is, my father--took it all. He would not go to
-the police, and he would not go to you, and so at last, as he
-would do nothing and kept on saying that there was no harm done,
-it made me mad, and I just on with my things and came right away
-to you."
-
-"Your father," said Holmes, "your stepfather, surely, since the
-name is different."
-
-"Yes, my stepfather. I call him father, though it sounds funny,
-too, for he is only five years and two months older than myself."
-
-"And your mother is alive?"
-
-"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
-Holmes, when she married again so soon after father's death, and
-a man who was nearly fifteen years younger than herself. Father
-was a plumber in the Tottenham Court Road, and he left a tidy
-business behind him, which mother carried on with Mr. Hardy, the
-foreman; but when Mr. Windibank came he made her sell the
-business, for he was very superior, being a traveller in wines.
-They got 4700 pounds for the goodwill and interest, which wasn't
-near as much as father could have got if he had been alive."
-
-I had expected to see Sherlock Holmes impatient under this
-rambling and inconsequential narrative, but, on the contrary, he
-had listened with the greatest concentration of attention.
-
-"Your own little income," he asked, "does it come out of the
-business?"
-
-"Oh, no, sir. It is quite separate and was left me by my uncle
-Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
-cent. Two thousand five hundred pounds was the amount, but I can
-only touch the interest."
-
-"You interest me extremely," said Holmes. "And since you draw so
-large a sum as a hundred a year, with what you earn into the
-bargain, you no doubt travel a little and indulge yourself in
-every way. I believe that a single lady can get on very nicely
-upon an income of about 60 pounds."
-
-"I could do with much less than that, Mr. Holmes, but you
-understand that as long as I live at home I don't wish to be a
-burden to them, and so they have the use of the money just while
-I am staying with them. Of course, that is only just for the
-time. Mr. Windibank draws my interest every quarter and pays it
-over to mother, and I find that I can do pretty well with what I
-earn at typewriting. It brings me twopence a sheet, and I can
-often do from fifteen to twenty sheets in a day."
-
-"You have made your position very clear to me," said Holmes.
-"This is my friend, Dr. Watson, before whom you can speak as
-freely as before myself. Kindly tell us now all about your
-connection with Mr. Hosmer Angel."
-
-A flush stole over Miss Sutherland's face, and she picked
-nervously at the fringe of her jacket. "I met him first at the
-gasfitters' ball," she said. "They used to send father tickets
-when he was alive, and then afterwards they remembered us, and
-sent them to mother. Mr. Windibank did not wish us to go. He
-never did wish us to go anywhere. He would get quite mad if I
-wanted so much as to join a Sunday-school treat. But this time I
-was set on going, and I would go; for what right had he to
-prevent? He said the folk were not fit for us to know, when all
-father's friends were to be there. And he said that I had nothing
-fit to wear, when I had my purple plush that I had never so much
-as taken out of the drawer. At last, when nothing else would do,
-he went off to France upon the business of the firm, but we went,
-mother and I, with Mr. Hardy, who used to be our foreman, and it
-was there I met Mr. Hosmer Angel."
-
-"I suppose," said Holmes, "that when Mr. Windibank came back from
-France he was very annoyed at your having gone to the ball."
-
-"Oh, well, he was very good about it. He laughed, I remember, and
-shrugged his shoulders, and said there was no use denying
-anything to a woman, for she would have her way."
-
-"I see. Then at the gasfitters' ball you met, as I understand, a
-gentleman called Mr. Hosmer Angel."
-
-"Yes, sir. I met him that night, and he called next day to ask if
-we had got home all safe, and after that we met him--that is to
-say, Mr. Holmes, I met him twice for walks, but after that father
-came back again, and Mr. Hosmer Angel could not come to the house
-any more."
-
-"No?"
-
-"Well, you know father didn't like anything of the sort. He
-wouldn't have any visitors if he could help it, and he used to
-say that a woman should be happy in her own family circle. But
-then, as I used to say to mother, a woman wants her own circle to
-begin with, and I had not got mine yet."
-
-"But how about Mr. Hosmer Angel? Did he make no attempt to see
-you?"
-
-"Well, father was going off to France again in a week, and Hosmer
-wrote and said that it would be safer and better not to see each
-other until he had gone. We could write in the meantime, and he
-used to write every day. I took the letters in in the morning, so
-there was no need for father to know."
-
-"Were you engaged to the gentleman at this time?"
-
-"Oh, yes, Mr. Holmes. We were engaged after the first walk that
-we took. Hosmer--Mr. Angel--was a cashier in an office in
-Leadenhall Street--and--"
-
-"What office?"
-
-"That's the worst of it, Mr. Holmes, I don't know."
-
-"Where did he live, then?"
-
-"He slept on the premises."
-
-"And you don't know his address?"
-
-"No--except that it was Leadenhall Street."
-
-"Where did you address your letters, then?"
-
-"To the Leadenhall Street Post Office, to be left till called
-for. He said that if they were sent to the office he would be
-chaffed by all the other clerks about having letters from a lady,
-so I offered to typewrite them, like he did his, but he wouldn't
-have that, for he said that when I wrote them they seemed to come
-from me, but when they were typewritten he always felt that the
-machine had come between us. That will just show you how fond he
-was of me, Mr. Holmes, and the little things that he would think
-of."
-
-"It was most suggestive," said Holmes. "It has long been an axiom
-of mine that the little things are infinitely the most important.
-Can you remember any other little things about Mr. Hosmer Angel?"
-
-"He was a very shy man, Mr. Holmes. He would rather walk with me
-in the evening than in the daylight, for he said that he hated to
-be conspicuous. Very retiring and gentlemanly he was. Even his
-voice was gentle. He'd had the quinsy and swollen glands when he
-was young, he told me, and it had left him with a weak throat,
-and a hesitating, whispering fashion of speech. He was always
-well dressed, very neat and plain, but his eyes were weak, just
-as mine are, and he wore tinted glasses against the glare."
-
-"Well, and what happened when Mr. Windibank, your stepfather,
-returned to France?"
-
-"Mr. Hosmer Angel came to the house again and proposed that we
-should marry before father came back. He was in dreadful earnest
-and made me swear, with my hands on the Testament, that whatever
-happened I would always be true to him. Mother said he was quite
-right to make me swear, and that it was a sign of his passion.
-Mother was all in his favour from the first and was even fonder
-of him than I was. Then, when they talked of marrying within the
-week, I began to ask about father; but they both said never to
-mind about father, but just to tell him afterwards, and mother
-said she would make it all right with him. I didn't quite like
-that, Mr. Holmes. It seemed funny that I should ask his leave, as
-he was only a few years older than me; but I didn't want to do
-anything on the sly, so I wrote to father at Bordeaux, where the
-company has its French offices, but the letter came back to me on
-the very morning of the wedding."
-
-"It missed him, then?"
-
-"Yes, sir; for he had started to England just before it arrived."
-
-"Ha! that was unfortunate. Your wedding was arranged, then, for
-the Friday. Was it to be in church?"
-
-"Yes, sir, but very quietly. It was to be at St. Saviour's, near
-King's Cross, and we were to have breakfast afterwards at the St.
-Pancras Hotel. Hosmer came for us in a hansom, but as there were
-two of us he put us both into it and stepped himself into a
-four-wheeler, which happened to be the only other cab in the
-street. We got to the church first, and when the four-wheeler
-drove up we waited for him to step out, but he never did, and
-when the cabman got down from the box and looked there was no one
-there! The cabman said that he could not imagine what had become
-of him, for he had seen him get in with his own eyes. That was
-last Friday, Mr. Holmes, and I have never seen or heard anything
-since then to throw any light upon what became of him."
-
-"It seems to me that you have been very shamefully treated," said
-Holmes.
-
-"Oh, no, sir! He was too good and kind to leave me so. Why, all
-the morning he was saying to me that, whatever happened, I was to
-be true; and that even if something quite unforeseen occurred to
-separate us, I was always to remember that I was pledged to him,
-and that he would claim his pledge sooner or later. It seemed
-strange talk for a wedding-morning, but what has happened since
-gives a meaning to it."
-
-"Most certainly it does. Your own opinion is, then, that some
-unforeseen catastrophe has occurred to him?"
-
-"Yes, sir. I believe that he foresaw some danger, or else he
-would not have talked so. And then I think that what he foresaw
-happened."
-
-"But you have no notion as to what it could have been?"
-
-"None."
-
-"One more question. How did your mother take the matter?"
-
-"She was angry, and said that I was never to speak of the matter
-again."
-
-"And your father? Did you tell him?"
-
-"Yes; and he seemed to think, with me, that something had
-happened, and that I should hear of Hosmer again. As he said,
-what interest could anyone have in bringing me to the doors of
-the church, and then leaving me? Now, if he had borrowed my
-money, or if he had married me and got my money settled on him,
-there might be some reason, but Hosmer was very independent about
-money and never would look at a shilling of mine. And yet, what
-could have happened? And why could he not write? Oh, it drives me
-half-mad to think of it, and I can't sleep a wink at night." She
-pulled a little handkerchief out of her muff and began to sob
-heavily into it.
-
-"I shall glance into the case for you," said Holmes, rising, "and
-I have no doubt that we shall reach some definite result. Let the
-weight of the matter rest upon me now, and do not let your mind
-dwell upon it further. Above all, try to let Mr. Hosmer Angel
-vanish from your memory, as he has done from your life."
-
-"Then you don't think I'll see him again?"
-
-"I fear not."
-
-"Then what has happened to him?"
-
-"You will leave that question in my hands. I should like an
-accurate description of him and any letters of his which you can
-spare."
-
-"I advertised for him in last Saturday's Chronicle," said she.
-"Here is the slip and here are four letters from him."
-
-"Thank you. And your address?"
-
-"No. 31 Lyon Place, Camberwell."
-
-"Mr. Angel's address you never had, I understand. Where is your
-father's place of business?"
-
-"He travels for Westhouse & Marbank, the great claret importers
-of Fenchurch Street."
-
-"Thank you. You have made your statement very clearly. You will
-leave the papers here, and remember the advice which I have given
-you. Let the whole incident be a sealed book, and do not allow it
-to affect your life."
-
-"You are very kind, Mr. Holmes, but I cannot do that. I shall be
-true to Hosmer. He shall find me ready when he comes back."
-
-For all the preposterous hat and the vacuous face, there was
-something noble in the simple faith of our visitor which
-compelled our respect. She laid her little bundle of papers upon
-the table and went her way, with a promise to come again whenever
-she might be summoned.
-
-Sherlock Holmes sat silent for a few minutes with his fingertips
-still pressed together, his legs stretched out in front of him,
-and his gaze directed upward to the ceiling. Then he took down
-from the rack the old and oily clay pipe, which was to him as a
-counsellor, and, having lit it, he leaned back in his chair, with
-the thick blue cloud-wreaths spinning up from him, and a look of
-infinite languor in his face.
-
-"Quite an interesting study, that maiden," he observed. "I found
-her more interesting than her little problem, which, by the way,
-is rather a trite one. You will find parallel cases, if you
-consult my index, in Andover in '77, and there was something of
-the sort at The Hague last year. Old as is the idea, however,
-there were one or two details which were new to me. But the
-maiden herself was most instructive."
-
-"You appeared to read a good deal upon her which was quite
-invisible to me," I remarked.
-
-"Not invisible but unnoticed, Watson. You did not know where to
-look, and so you missed all that was important. I can never bring
-you to realise the importance of sleeves, the suggestiveness of
-thumb-nails, or the great issues that may hang from a boot-lace.
-Now, what did you gather from that woman's appearance? Describe
-it."
-
-"Well, she had a slate-coloured, broad-brimmed straw hat, with a
-feather of a brickish red. Her jacket was black, with black beads
-sewn upon it, and a fringe of little black jet ornaments. Her
-dress was brown, rather darker than coffee colour, with a little
-purple plush at the neck and sleeves. Her gloves were greyish and
-were worn through at the right forefinger. Her boots I didn't
-observe. She had small round, hanging gold earrings, and a
-general air of being fairly well-to-do in a vulgar, comfortable,
-easy-going way."
-
-Sherlock Holmes clapped his hands softly together and chuckled.
-
-"'Pon my word, Watson, you are coming along wonderfully. You have
-really done very well indeed. It is true that you have missed
-everything of importance, but you have hit upon the method, and
-you have a quick eye for colour. Never trust to general
-impressions, my boy, but concentrate yourself upon details. My
-first glance is always at a woman's sleeve. In a man it is
-perhaps better first to take the knee of the trouser. As you
-observe, this woman had plush upon her sleeves, which is a most
-useful material for showing traces. The double line a little
-above the wrist, where the typewritist presses against the table,
-was beautifully defined. The sewing-machine, of the hand type,
-leaves a similar mark, but only on the left arm, and on the side
-of it farthest from the thumb, instead of being right across the
-broadest part, as this was. I then glanced at her face, and,
-observing the dint of a pince-nez at either side of her nose, I
-ventured a remark upon short sight and typewriting, which seemed
-to surprise her."
-
-"It surprised me."
-
-"But, surely, it was obvious. I was then much surprised and
-interested on glancing down to observe that, though the boots
-which she was wearing were not unlike each other, they were
-really odd ones; the one having a slightly decorated toe-cap, and
-the other a plain one. One was buttoned only in the two lower
-buttons out of five, and the other at the first, third, and
-fifth. Now, when you see that a young lady, otherwise neatly
-dressed, has come away from home with odd boots, half-buttoned,
-it is no great deduction to say that she came away in a hurry."
-
-"And what else?" I asked, keenly interested, as I always was, by
-my friend's incisive reasoning.
-
-"I noted, in passing, that she had written a note before leaving
-home but after being fully dressed. You observed that her right
-glove was torn at the forefinger, but you did not apparently see
-that both glove and finger were stained with violet ink. She had
-written in a hurry and dipped her pen too deep. It must have been
-this morning, or the mark would not remain clear upon the finger.
-All this is amusing, though rather elementary, but I must go back
-to business, Watson. Would you mind reading me the advertised
-description of Mr. Hosmer Angel?"
-
-I held the little printed slip to the light.
-
-"Missing," it said, "on the morning of the fourteenth, a gentleman
-named Hosmer Angel. About five ft. seven in. in height;
-strongly built, sallow complexion, black hair, a little bald in
-the centre, bushy, black side-whiskers and moustache; tinted
-glasses, slight infirmity of speech. Was dressed, when last seen,
-in black frock-coat faced with silk, black waistcoat, gold Albert
-chain, and grey Harris tweed trousers, with brown gaiters over
-elastic-sided boots. Known to have been employed in an office in
-Leadenhall Street. Anybody bringing--"
-
-"That will do," said Holmes. "As to the letters," he continued,
-glancing over them, "they are very commonplace. Absolutely no
-clue in them to Mr. Angel, save that he quotes Balzac once. There
-is one remarkable point, however, which will no doubt strike
-you."
-
-"They are typewritten," I remarked.
-
-"Not only that, but the signature is typewritten. Look at the
-neat little 'Hosmer Angel' at the bottom. There is a date, you
-see, but no superscription except Leadenhall Street, which is
-rather vague. The point about the signature is very suggestive--in
-fact, we may call it conclusive."
-
-"Of what?"
-
-"My dear fellow, is it possible you do not see how strongly it
-bears upon the case?"
-
-"I cannot say that I do unless it were that he wished to be able
-to deny his signature if an action for breach of promise were
-instituted."
-
-"No, that was not the point. However, I shall write two letters,
-which should settle the matter. One is to a firm in the City, the
-other is to the young lady's stepfather, Mr. Windibank, asking
-him whether he could meet us here at six o'clock tomorrow
-evening. It is just as well that we should do business with the
-male relatives. And now, Doctor, we can do nothing until the
-answers to those letters come, so we may put our little problem
-upon the shelf for the interim."
-
-I had had so many reasons to believe in my friend's subtle powers
-of reasoning and extraordinary energy in action that I felt that
-he must have some solid grounds for the assured and easy
-demeanour with which he treated the singular mystery which he had
-been called upon to fathom. Once only had I known him to fail, in
-the case of the King of Bohemia and of the Irene Adler
-photograph; but when I looked back to the weird business of the
-Sign of Four, and the extraordinary circumstances connected with
-the Study in Scarlet, I felt that it would be a strange tangle
-indeed which he could not unravel.
-
-I left him then, still puffing at his black clay pipe, with the
-conviction that when I came again on the next evening I would
-find that he held in his hands all the clues which would lead up
-to the identity of the disappearing bridegroom of Miss Mary
-Sutherland.
-
-A professional case of great gravity was engaging my own
-attention at the time, and the whole of next day I was busy at
-the bedside of the sufferer. It was not until close upon six
-o'clock that I found myself free and was able to spring into a
-hansom and drive to Baker Street, half afraid that I might be too
-late to assist at the dénouement of the little mystery. I found
-Sherlock Holmes alone, however, half asleep, with his long, thin
-form curled up in the recesses of his armchair. A formidable
-array of bottles and test-tubes, with the pungent cleanly smell
-of hydrochloric acid, told me that he had spent his day in the
-chemical work which was so dear to him.
-
-"Well, have you solved it?" I asked as I entered.
-
-"Yes. It was the bisulphate of baryta."
-
-"No, no, the mystery!" I cried.
-
-"Oh, that! I thought of the salt that I have been working upon.
-There was never any mystery in the matter, though, as I said
-yesterday, some of the details are of interest. The only drawback
-is that there is no law, I fear, that can touch the scoundrel."
-
-"Who was he, then, and what was his object in deserting Miss
-Sutherland?"
-
-The question was hardly out of my mouth, and Holmes had not yet
-opened his lips to reply, when we heard a heavy footfall in the
-passage and a tap at the door.
-
-"This is the girl's stepfather, Mr. James Windibank," said
-Holmes. "He has written to me to say that he would be here at
-six. Come in!"
-
-The man who entered was a sturdy, middle-sized fellow, some
-thirty years of age, clean-shaven, and sallow-skinned, with a
-bland, insinuating manner, and a pair of wonderfully sharp and
-penetrating grey eyes. He shot a questioning glance at each of
-us, placed his shiny top-hat upon the sideboard, and with a
-slight bow sidled down into the nearest chair.
-
-"Good-evening, Mr. James Windibank," said Holmes. "I think that
-this typewritten letter is from you, in which you made an
-appointment with me for six o'clock?"
-
-"Yes, sir. I am afraid that I am a little late, but I am not
-quite my own master, you know. I am sorry that Miss Sutherland
-has troubled you about this little matter, for I think it is far
-better not to wash linen of the sort in public. It was quite
-against my wishes that she came, but she is a very excitable,
-impulsive girl, as you may have noticed, and she is not easily
-controlled when she has made up her mind on a point. Of course, I
-did not mind you so much, as you are not connected with the
-official police, but it is not pleasant to have a family
-misfortune like this noised abroad. Besides, it is a useless
-expense, for how could you possibly find this Hosmer Angel?"
-
-"On the contrary," said Holmes quietly; "I have every reason to
-believe that I will succeed in discovering Mr. Hosmer Angel."
-
-Mr. Windibank gave a violent start and dropped his gloves. "I am
-delighted to hear it," he said.
-
-"It is a curious thing," remarked Holmes, "that a typewriter has
-really quite as much individuality as a man's handwriting. Unless
-they are quite new, no two of them write exactly alike. Some
-letters get more worn than others, and some wear only on one
-side. Now, you remark in this note of yours, Mr. Windibank, that
-in every case there is some little slurring over of the 'e,' and
-a slight defect in the tail of the 'r.' There are fourteen other
-characteristics, but those are the more obvious."
-
-"We do all our correspondence with this machine at the office,
-and no doubt it is a little worn," our visitor answered, glancing
-keenly at Holmes with his bright little eyes.
-
-"And now I will show you what is really a very interesting study,
-Mr. Windibank," Holmes continued. "I think of writing another
-little monograph some of these days on the typewriter and its
-relation to crime. It is a subject to which I have devoted some
-little attention. I have here four letters which purport to come
-from the missing man. They are all typewritten. In each case, not
-only are the 'e's' slurred and the 'r's' tailless, but you will
-observe, if you care to use my magnifying lens, that the fourteen
-other characteristics to which I have alluded are there as well."
-
-Mr. Windibank sprang out of his chair and picked up his hat. "I
-cannot waste time over this sort of fantastic talk, Mr. Holmes,"
-he said. "If you can catch the man, catch him, and let me know
-when you have done it."
-
-"Certainly," said Holmes, stepping over and turning the key in
-the door. "I let you know, then, that I have caught him!"
-
-"What! where?" shouted Mr. Windibank, turning white to his lips
-and glancing about him like a rat in a trap.
-
-"Oh, it won't do--really it won't," said Holmes suavely. "There
-is no possible getting out of it, Mr. Windibank. It is quite too
-transparent, and it was a very bad compliment when you said that
-it was impossible for me to solve so simple a question. That's
-right! Sit down and let us talk it over."
-
-Our visitor collapsed into a chair, with a ghastly face and a
-glitter of moisture on his brow. "It--it's not actionable," he
-stammered.
-
-"I am very much afraid that it is not. But between ourselves,
-Windibank, it was as cruel and selfish and heartless a trick in a
-petty way as ever came before me. Now, let me just run over the
-course of events, and you will contradict me if I go wrong."
-
-The man sat huddled up in his chair, with his head sunk upon his
-breast, like one who is utterly crushed. Holmes stuck his feet up
-on the corner of the mantelpiece and, leaning back with his hands
-in his pockets, began talking, rather to himself, as it seemed,
-than to us.
-
-"The man married a woman very much older than himself for her
-money," said he, "and he enjoyed the use of the money of the
-daughter as long as she lived with them. It was a considerable
-sum, for people in their position, and the loss of it would have
-made a serious difference. It was worth an effort to preserve it.
-The daughter was of a good, amiable disposition, but affectionate
-and warm-hearted in her ways, so that it was evident that with
-her fair personal advantages, and her little income, she would
-not be allowed to remain single long. Now her marriage would
-mean, of course, the loss of a hundred a year, so what does her
-stepfather do to prevent it? He takes the obvious course of
-keeping her at home and forbidding her to seek the company of
-people of her own age. But soon he found that that would not
-answer forever. She became restive, insisted upon her rights, and
-finally announced her positive intention of going to a certain
-ball. What does her clever stepfather do then? He conceives an
-idea more creditable to his head than to his heart. With the
-connivance and assistance of his wife he disguised himself,
-covered those keen eyes with tinted glasses, masked the face with
-a moustache and a pair of bushy whiskers, sunk that clear voice
-into an insinuating whisper, and doubly secure on account of the
-girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
-other lovers by making love himself."
-
-"It was only a joke at first," groaned our visitor. "We never
-thought that she would have been so carried away."
-
-"Very likely not. However that may be, the young lady was very
-decidedly carried away, and, having quite made up her mind that
-her stepfather was in France, the suspicion of treachery never
-for an instant entered her mind. She was flattered by the
-gentleman's attentions, and the effect was increased by the
-loudly expressed admiration of her mother. Then Mr. Angel began
-to call, for it was obvious that the matter should be pushed as
-far as it would go if a real effect were to be produced. There
-were meetings, and an engagement, which would finally secure the
-girl's affections from turning towards anyone else. But the
-deception could not be kept up forever. These pretended journeys
-to France were rather cumbrous. The thing to do was clearly to
-bring the business to an end in such a dramatic manner that it
-would leave a permanent impression upon the young lady's mind and
-prevent her from looking upon any other suitor for some time to
-come. Hence those vows of fidelity exacted upon a Testament, and
-hence also the allusions to a possibility of something happening
-on the very morning of the wedding. James Windibank wished Miss
-Sutherland to be so bound to Hosmer Angel, and so uncertain as to
-his fate, that for ten years to come, at any rate, she would not
-listen to another man. As far as the church door he brought her,
-and then, as he could go no farther, he conveniently vanished
-away by the old trick of stepping in at one door of a
-four-wheeler and out at the other. I think that was the chain of
-events, Mr. Windibank!"
-
-Our visitor had recovered something of his assurance while Holmes
-had been talking, and he rose from his chair now with a cold
-sneer upon his pale face.
-
-"It may be so, or it may not, Mr. Holmes," said he, "but if you
-are so very sharp you ought to be sharp enough to know that it is
-you who are breaking the law now, and not me. I have done nothing
-actionable from the first, but as long as you keep that door
-locked you lay yourself open to an action for assault and illegal
-constraint."
-
-"The law cannot, as you say, touch you," said Holmes, unlocking
-and throwing open the door, "yet there never was a man who
-deserved punishment more. If the young lady has a brother or a
-friend, he ought to lay a whip across your shoulders. By Jove!"
-he continued, flushing up at the sight of the bitter sneer upon
-the man's face, "it is not part of my duties to my client, but
-here's a hunting crop handy, and I think I shall just treat
-myself to--" He took two swift steps to the whip, but before he
-could grasp it there was a wild clatter of steps upon the stairs,
-the heavy hall door banged, and from the window we could see Mr.
-James Windibank running at the top of his speed down the road.
-
-"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
-threw himself down into his chair once more. "That fellow will
-rise from crime to crime until he does something very bad, and
-ends on a gallows. The case has, in some respects, been not
-entirely devoid of interest."
-
-"I cannot now entirely see all the steps of your reasoning," I
-remarked.
-
-"Well, of course it was obvious from the first that this Mr.
-Hosmer Angel must have some strong object for his curious
-conduct, and it was equally clear that the only man who really
-profited by the incident, as far as we could see, was the
-stepfather. Then the fact that the two men were never together,
-but that the one always appeared when the other was away, was
-suggestive. So were the tinted spectacles and the curious voice,
-which both hinted at a disguise, as did the bushy whiskers. My
-suspicions were all confirmed by his peculiar action in
-typewriting his signature, which, of course, inferred that his
-handwriting was so familiar to her that she would recognise even
-the smallest sample of it. You see all these isolated facts,
-together with many minor ones, all pointed in the same
-direction."
-
-"And how did you verify them?"
-
-"Having once spotted my man, it was easy to get corroboration. I
-knew the firm for which this man worked. Having taken the printed
-description. I eliminated everything from it which could be the
-result of a disguise--the whiskers, the glasses, the voice, and I
-sent it to the firm, with a request that they would inform me
-whether it answered to the description of any of their
-travellers. I had already noticed the peculiarities of the
-typewriter, and I wrote to the man himself at his business
-address asking him if he would come here. As I expected, his
-reply was typewritten and revealed the same trivial but
-characteristic defects. The same post brought me a letter from
-Westhouse & Marbank, of Fenchurch Street, to say that the
-description tallied in every respect with that of their employé,
-James Windibank. Voilà tout!"
-
-"And Miss Sutherland?"
-
-"If I tell her she will not believe me. You may remember the old
-Persian saying, 'There is danger for him who taketh the tiger
-cub, and danger also for whoso snatches a delusion from a woman.'
-There is as much sense in Hafiz as in Horace, and as much
-knowledge of the world."
-
-
-
-ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
-
-We were seated at breakfast one morning, my wife and I, when the
-maid brought in a telegram. It was from Sherlock Holmes and ran
-in this way:
-
-"Have you a couple of days to spare? Have just been wired for from
-the west of England in connection with Boscombe Valley tragedy.
-Shall be glad if you will come with me. Air and scenery perfect.
-Leave Paddington by the 11:15."
-
-"What do you say, dear?" said my wife, looking across at me.
-"Will you go?"
-
-"I really don't know what to say. I have a fairly long list at
-present."
-
-"Oh, Anstruther would do your work for you. You have been looking
-a little pale lately. I think that the change would do you good,
-and you are always so interested in Mr. Sherlock Holmes' cases."
-
-"I should be ungrateful if I were not, seeing what I gained
-through one of them," I answered. "But if I am to go, I must pack
-at once, for I have only half an hour."
-
-My experience of camp life in Afghanistan had at least had the
-effect of making me a prompt and ready traveller. My wants were
-few and simple, so that in less than the time stated I was in a
-cab with my valise, rattling away to Paddington Station. Sherlock
-Holmes was pacing up and down the platform, his tall, gaunt
-figure made even gaunter and taller by his long grey
-travelling-cloak and close-fitting cloth cap.
-
-"It is really very good of you to come, Watson," said he. "It
-makes a considerable difference to me, having someone with me on
-whom I can thoroughly rely. Local aid is always either worthless
-or else biassed. If you will keep the two corner seats I shall
-get the tickets."
-
-We had the carriage to ourselves save for an immense litter of
-papers which Holmes had brought with him. Among these he rummaged
-and read, with intervals of note-taking and of meditation, until
-we were past Reading. Then he suddenly rolled them all into a
-gigantic ball and tossed them up onto the rack.
-
-"Have you heard anything of the case?" he asked.
-
-"Not a word. I have not seen a paper for some days."
-
-"The London press has not had very full accounts. I have just
-been looking through all the recent papers in order to master the
-particulars. It seems, from what I gather, to be one of those
-simple cases which are so extremely difficult."
-
-"That sounds a little paradoxical."
-
-"But it is profoundly true. Singularity is almost invariably a
-clue. The more featureless and commonplace a crime is, the more
-difficult it is to bring it home. In this case, however, they
-have established a very serious case against the son of the
-murdered man."
-
-"It is a murder, then?"
-
-"Well, it is conjectured to be so. I shall take nothing for
-granted until I have the opportunity of looking personally into
-it. I will explain the state of things to you, as far as I have
-been able to understand it, in a very few words.
-
-"Boscombe Valley is a country district not very far from Ross, in
-Herefordshire. The largest landed proprietor in that part is a
-Mr. John Turner, who made his money in Australia and returned
-some years ago to the old country. One of the farms which he
-held, that of Hatherley, was let to Mr. Charles McCarthy, who was
-also an ex-Australian. The men had known each other in the
-colonies, so that it was not unnatural that when they came to
-settle down they should do so as near each other as possible.
-Turner was apparently the richer man, so McCarthy became his
-tenant but still remained, it seems, upon terms of perfect
-equality, as they were frequently together. McCarthy had one son,
-a lad of eighteen, and Turner had an only daughter of the same
-age, but neither of them had wives living. They appear to have
-avoided the society of the neighbouring English families and to
-have led retired lives, though both the McCarthys were fond of
-sport and were frequently seen at the race-meetings of the
-neighbourhood. McCarthy kept two servants--a man and a girl.
-Turner had a considerable household, some half-dozen at the
-least. That is as much as I have been able to gather about the
-families. Now for the facts.
-
-"On June 3rd, that is, on Monday last, McCarthy left his house at
-Hatherley about three in the afternoon and walked down to the
-Boscombe Pool, which is a small lake formed by the spreading out
-of the stream which runs down the Boscombe Valley. He had been
-out with his serving-man in the morning at Ross, and he had told
-the man that he must hurry, as he had an appointment of
-importance to keep at three. From that appointment he never came
-back alive.
-
-"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
-mile, and two people saw him as he passed over this ground. One
-was an old woman, whose name is not mentioned, and the other was
-William Crowder, a game-keeper in the employ of Mr. Turner. Both
-these witnesses depose that Mr. McCarthy was walking alone. The
-game-keeper adds that within a few minutes of his seeing Mr.
-McCarthy pass he had seen his son, Mr. James McCarthy, going the
-same way with a gun under his arm. To the best of his belief, the
-father was actually in sight at the time, and the son was
-following him. He thought no more of the matter until he heard in
-the evening of the tragedy that had occurred.
-
-"The two McCarthys were seen after the time when William Crowder,
-the game-keeper, lost sight of them. The Boscombe Pool is thickly
-wooded round, with just a fringe of grass and of reeds round the
-edge. A girl of fourteen, Patience Moran, who is the daughter of
-the lodge-keeper of the Boscombe Valley estate, was in one of the
-woods picking flowers. She states that while she was there she
-saw, at the border of the wood and close by the lake, Mr.
-McCarthy and his son, and that they appeared to be having a
-violent quarrel. She heard Mr. McCarthy the elder using very
-strong language to his son, and she saw the latter raise up his
-hand as if to strike his father. She was so frightened by their
-violence that she ran away and told her mother when she reached
-home that she had left the two McCarthys quarrelling near
-Boscombe Pool, and that she was afraid that they were going to
-fight. She had hardly said the words when young Mr. McCarthy came
-running up to the lodge to say that he had found his father dead
-in the wood, and to ask for the help of the lodge-keeper. He was
-much excited, without either his gun or his hat, and his right
-hand and sleeve were observed to be stained with fresh blood. On
-following him they found the dead body stretched out upon the
-grass beside the pool. The head had been beaten in by repeated
-blows of some heavy and blunt weapon. The injuries were such as
-might very well have been inflicted by the butt-end of his son's
-gun, which was found lying on the grass within a few paces of the
-body. Under these circumstances the young man was instantly
-arrested, and a verdict of 'wilful murder' having been returned
-at the inquest on Tuesday, he was on Wednesday brought before the
-magistrates at Ross, who have referred the case to the next
-Assizes. Those are the main facts of the case as they came out
-before the coroner and the police-court."
-
-"I could hardly imagine a more damning case," I remarked. "If
-ever circumstantial evidence pointed to a criminal it does so
-here."
-
-"Circumstantial evidence is a very tricky thing," answered Holmes
-thoughtfully. "It may seem to point very straight to one thing,
-but if you shift your own point of view a little, you may find it
-pointing in an equally uncompromising manner to something
-entirely different. It must be confessed, however, that the case
-looks exceedingly grave against the young man, and it is very
-possible that he is indeed the culprit. There are several people
-in the neighbourhood, however, and among them Miss Turner, the
-daughter of the neighbouring landowner, who believe in his
-innocence, and who have retained Lestrade, whom you may recollect
-in connection with the Study in Scarlet, to work out the case in
-his interest. Lestrade, being rather puzzled, has referred the
-case to me, and hence it is that two middle-aged gentlemen are
-flying westward at fifty miles an hour instead of quietly
-digesting their breakfasts at home."
-
-"I am afraid," said I, "that the facts are so obvious that you
-will find little credit to be gained out of this case."
-
-"There is nothing more deceptive than an obvious fact," he
-answered, laughing. "Besides, we may chance to hit upon some
-other obvious facts which may have been by no means obvious to
-Mr. Lestrade. You know me too well to think that I am boasting
-when I say that I shall either confirm or destroy his theory by
-means which he is quite incapable of employing, or even of
-understanding. To take the first example to hand, I very clearly
-perceive that in your bedroom the window is upon the right-hand
-side, and yet I question whether Mr. Lestrade would have noted
-even so self-evident a thing as that."
-
-"How on earth--"
-
-"My dear fellow, I know you well. I know the military neatness
-which characterises you. You shave every morning, and in this
-season you shave by the sunlight; but since your shaving is less
-and less complete as we get farther back on the left side, until
-it becomes positively slovenly as we get round the angle of the
-jaw, it is surely very clear that that side is less illuminated
-than the other. I could not imagine a man of your habits looking
-at himself in an equal light and being satisfied with such a
-result. I only quote this as a trivial example of observation and
-inference. Therein lies my métier, and it is just possible that
-it may be of some service in the investigation which lies before
-us. There are one or two minor points which were brought out in
-the inquest, and which are worth considering."
-
-"What are they?"
-
-"It appears that his arrest did not take place at once, but after
-the return to Hatherley Farm. On the inspector of constabulary
-informing him that he was a prisoner, he remarked that he was not
-surprised to hear it, and that it was no more than his deserts.
-This observation of his had the natural effect of removing any
-traces of doubt which might have remained in the minds of the
-coroner's jury."
-
-"It was a confession," I ejaculated.
-
-"No, for it was followed by a protestation of innocence."
-
-"Coming on the top of such a damning series of events, it was at
-least a most suspicious remark."
-
-"On the contrary," said Holmes, "it is the brightest rift which I
-can at present see in the clouds. However innocent he might be,
-he could not be such an absolute imbecile as not to see that the
-circumstances were very black against him. Had he appeared
-surprised at his own arrest, or feigned indignation at it, I
-should have looked upon it as highly suspicious, because such
-surprise or anger would not be natural under the circumstances,
-and yet might appear to be the best policy to a scheming man. His
-frank acceptance of the situation marks him as either an innocent
-man, or else as a man of considerable self-restraint and
-firmness. As to his remark about his deserts, it was also not
-unnatural if you consider that he stood beside the dead body of
-his father, and that there is no doubt that he had that very day
-so far forgotten his filial duty as to bandy words with him, and
-even, according to the little girl whose evidence is so
-important, to raise his hand as if to strike him. The
-self-reproach and contrition which are displayed in his remark
-appear to me to be the signs of a healthy mind rather than of a
-guilty one."
-
-I shook my head. "Many men have been hanged on far slighter
-evidence," I remarked.
-
-"So they have. And many men have been wrongfully hanged."
-
-"What is the young man's own account of the matter?"
-
-"It is, I am afraid, not very encouraging to his supporters,
-though there are one or two points in it which are suggestive.
-You will find it here, and may read it for yourself."
-
-He picked out from his bundle a copy of the local Herefordshire
-paper, and having turned down the sheet he pointed out the
-paragraph in which the unfortunate young man had given his own
-statement of what had occurred. I settled myself down in the
-corner of the carriage and read it very carefully. It ran in this
-way:
-
-"Mr. James McCarthy, the only son of the deceased, was then called
-and gave evidence as follows: 'I had been away from home for
-three days at Bristol, and had only just returned upon the
-morning of last Monday, the 3rd. My father was absent from home at
-the time of my arrival, and I was informed by the maid that he
-had driven over to Ross with John Cobb, the groom. Shortly after
-my return I heard the wheels of his trap in the yard, and,
-looking out of my window, I saw him get out and walk rapidly out
-of the yard, though I was not aware in which direction he was
-going. I then took my gun and strolled out in the direction of
-the Boscombe Pool, with the intention of visiting the rabbit
-warren which is upon the other side. On my way I saw William
-Crowder, the game-keeper, as he had stated in his evidence; but
-he is mistaken in thinking that I was following my father. I had
-no idea that he was in front of me. When about a hundred yards
-from the pool I heard a cry of "Cooee!" which was a usual signal
-between my father and myself. I then hurried forward, and found
-him standing by the pool. He appeared to be much surprised at
-seeing me and asked me rather roughly what I was doing there. A
-conversation ensued which led to high words and almost to blows,
-for my father was a man of a very violent temper. Seeing that his
-passion was becoming ungovernable, I left him and returned
-towards Hatherley Farm. I had not gone more than 150 yards,
-however, when I heard a hideous outcry behind me, which caused me
-to run back again. I found my father expiring upon the ground,
-with his head terribly injured. I dropped my gun and held him in
-my arms, but he almost instantly expired. I knelt beside him for
-some minutes, and then made my way to Mr. Turner's lodge-keeper,
-his house being the nearest, to ask for assistance. I saw no one
-near my father when I returned, and I have no idea how he came by
-his injuries. He was not a popular man, being somewhat cold and
-forbidding in his manners, but he had, as far as I know, no
-active enemies. I know nothing further of the matter.'
-
-"The Coroner: Did your father make any statement to you before
-he died?
-
-"Witness: He mumbled a few words, but I could only catch some
-allusion to a rat.
-
-"The Coroner: What did you understand by that?
-
-"Witness: It conveyed no meaning to me. I thought that he was
-delirious.
-
-"The Coroner: What was the point upon which you and your father
-had this final quarrel?
-
-"Witness: I should prefer not to answer.
-
-"The Coroner: I am afraid that I must press it.
-
-"Witness: It is really impossible for me to tell you. I can
-assure you that it has nothing to do with the sad tragedy which
-followed.
-
-"The Coroner: That is for the court to decide. I need not point
-out to you that your refusal to answer will prejudice your case
-considerably in any future proceedings which may arise.
-
-"Witness: I must still refuse.
-
-"The Coroner: I understand that the cry of 'Cooee' was a common
-signal between you and your father?
-
-"Witness: It was.
-
-"The Coroner: How was it, then, that he uttered it before he saw
-you, and before he even knew that you had returned from Bristol?
-
-"Witness (with considerable confusion): I do not know.
-
-"A Juryman: Did you see nothing which aroused your suspicions
-when you returned on hearing the cry and found your father
-fatally injured?
-
-"Witness: Nothing definite.
-
-"The Coroner: What do you mean?
-
-"Witness: I was so disturbed and excited as I rushed out into
-the open, that I could think of nothing except of my father. Yet
-I have a vague impression that as I ran forward something lay
-upon the ground to the left of me. It seemed to me to be
-something grey in colour, a coat of some sort, or a plaid perhaps.
-When I rose from my father I looked round for it, but it was
-gone.
-
-"'Do you mean that it disappeared before you went for help?'
-
-"'Yes, it was gone.'
-
-"'You cannot say what it was?'
-
-"'No, I had a feeling something was there.'
-
-"'How far from the body?'
-
-"'A dozen yards or so.'
-
-"'And how far from the edge of the wood?'
-
-"'About the same.'
-
-"'Then if it was removed it was while you were within a dozen
-yards of it?'
-
-"'Yes, but with my back towards it.'
-
-"This concluded the examination of the witness."
-
-"I see," said I as I glanced down the column, "that the coroner
-in his concluding remarks was rather severe upon young McCarthy.
-He calls attention, and with reason, to the discrepancy about his
-father having signalled to him before seeing him, also to his
-refusal to give details of his conversation with his father, and
-his singular account of his father's dying words. They are all,
-as he remarks, very much against the son."
-
-Holmes laughed softly to himself and stretched himself out upon
-the cushioned seat. "Both you and the coroner have been at some
-pains," said he, "to single out the very strongest points in the
-young man's favour. Don't you see that you alternately give him
-credit for having too much imagination and too little? Too
-little, if he could not invent a cause of quarrel which would
-give him the sympathy of the jury; too much, if he evolved from
-his own inner consciousness anything so outré as a dying
-reference to a rat, and the incident of the vanishing cloth. No,
-sir, I shall approach this case from the point of view that what
-this young man says is true, and we shall see whither that
-hypothesis will lead us. And now here is my pocket Petrarch, and
-not another word shall I say of this case until we are on the
-scene of action. We lunch at Swindon, and I see that we shall be
-there in twenty minutes."
-
-It was nearly four o'clock when we at last, after passing through
-the beautiful Stroud Valley, and over the broad gleaming Severn,
-found ourselves at the pretty little country-town of Ross. A
-lean, ferret-like man, furtive and sly-looking, was waiting for
-us upon the platform. In spite of the light brown dustcoat and
-leather-leggings which he wore in deference to his rustic
-surroundings, I had no difficulty in recognising Lestrade, of
-Scotland Yard. With him we drove to the Hereford Arms where a
-room had already been engaged for us.
-
-"I have ordered a carriage," said Lestrade as we sat over a cup
-of tea. "I knew your energetic nature, and that you would not be
-happy until you had been on the scene of the crime."
-
-"It was very nice and complimentary of you," Holmes answered. "It
-is entirely a question of barometric pressure."
-
-Lestrade looked startled. "I do not quite follow," he said.
-
-"How is the glass? Twenty-nine, I see. No wind, and not a cloud
-in the sky. I have a caseful of cigarettes here which need
-smoking, and the sofa is very much superior to the usual country
-hotel abomination. I do not think that it is probable that I
-shall use the carriage to-night."
-
-Lestrade laughed indulgently. "You have, no doubt, already formed
-your conclusions from the newspapers," he said. "The case is as
-plain as a pikestaff, and the more one goes into it the plainer
-it becomes. Still, of course, one can't refuse a lady, and such a
-very positive one, too. She has heard of you, and would have your
-opinion, though I repeatedly told her that there was nothing
-which you could do which I had not already done. Why, bless my
-soul! here is her carriage at the door."
-
-He had hardly spoken before there rushed into the room one of the
-most lovely young women that I have ever seen in my life. Her
-violet eyes shining, her lips parted, a pink flush upon her
-cheeks, all thought of her natural reserve lost in her
-overpowering excitement and concern.
-
-"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
-other of us, and finally, with a woman's quick intuition,
-fastening upon my companion, "I am so glad that you have come. I
-have driven down to tell you so. I know that James didn't do it.
-I know it, and I want you to start upon your work knowing it,
-too. Never let yourself doubt upon that point. We have known each
-other since we were little children, and I know his faults as no
-one else does; but he is too tender-hearted to hurt a fly. Such a
-charge is absurd to anyone who really knows him."
-
-"I hope we may clear him, Miss Turner," said Sherlock Holmes.
-"You may rely upon my doing all that I can."
-
-"But you have read the evidence. You have formed some conclusion?
-Do you not see some loophole, some flaw? Do you not yourself
-think that he is innocent?"
-
-"I think that it is very probable."
-
-"There, now!" she cried, throwing back her head and looking
-defiantly at Lestrade. "You hear! He gives me hopes."
-
-Lestrade shrugged his shoulders. "I am afraid that my colleague
-has been a little quick in forming his conclusions," he said.
-
-"But he is right. Oh! I know that he is right. James never did
-it. And about his quarrel with his father, I am sure that the
-reason why he would not speak about it to the coroner was because
-I was concerned in it."
-
-"In what way?" asked Holmes.
-
-"It is no time for me to hide anything. James and his father had
-many disagreements about me. Mr. McCarthy was very anxious that
-there should be a marriage between us. James and I have always
-loved each other as brother and sister; but of course he is young
-and has seen very little of life yet, and--and--well, he
-naturally did not wish to do anything like that yet. So there
-were quarrels, and this, I am sure, was one of them."
-
-"And your father?" asked Holmes. "Was he in favour of such a
-union?"
-
-"No, he was averse to it also. No one but Mr. McCarthy was in
-favour of it." A quick blush passed over her fresh young face as
-Holmes shot one of his keen, questioning glances at her.
-
-"Thank you for this information," said he. "May I see your father
-if I call to-morrow?"
-
-"I am afraid the doctor won't allow it."
-
-"The doctor?"
-
-"Yes, have you not heard? Poor father has never been strong for
-years back, but this has broken him down completely. He has taken
-to his bed, and Dr. Willows says that he is a wreck and that his
-nervous system is shattered. Mr. McCarthy was the only man alive
-who had known dad in the old days in Victoria."
-
-"Ha! In Victoria! That is important."
-
-"Yes, at the mines."
-
-"Quite so; at the gold-mines, where, as I understand, Mr. Turner
-made his money."
-
-"Yes, certainly."
-
-"Thank you, Miss Turner. You have been of material assistance to
-me."
-
-"You will tell me if you have any news to-morrow. No doubt you
-will go to the prison to see James. Oh, if you do, Mr. Holmes, do
-tell him that I know him to be innocent."
-
-"I will, Miss Turner."
-
-"I must go home now, for dad is very ill, and he misses me so if
-I leave him. Good-bye, and God help you in your undertaking." She
-hurried from the room as impulsively as she had entered, and we
-heard the wheels of her carriage rattle off down the street.
-
-"I am ashamed of you, Holmes," said Lestrade with dignity after a
-few minutes' silence. "Why should you raise up hopes which you
-are bound to disappoint? I am not over-tender of heart, but I
-call it cruel."
-
-"I think that I see my way to clearing James McCarthy," said
-Holmes. "Have you an order to see him in prison?"
-
-"Yes, but only for you and me."
-
-"Then I shall reconsider my resolution about going out. We have
-still time to take a train to Hereford and see him to-night?"
-
-"Ample."
-
-"Then let us do so. Watson, I fear that you will find it very
-slow, but I shall only be away a couple of hours."
-
-I walked down to the station with them, and then wandered through
-the streets of the little town, finally returning to the hotel,
-where I lay upon the sofa and tried to interest myself in a
-yellow-backed novel. The puny plot of the story was so thin,
-however, when compared to the deep mystery through which we were
-groping, and I found my attention wander so continually from the
-action to the fact, that I at last flung it across the room and
-gave myself up entirely to a consideration of the events of the
-day. Supposing that this unhappy young man's story were
-absolutely true, then what hellish thing, what absolutely
-unforeseen and extraordinary calamity could have occurred between
-the time when he parted from his father, and the moment when,
-drawn back by his screams, he rushed into the glade? It was
-something terrible and deadly. What could it be? Might not the
-nature of the injuries reveal something to my medical instincts?
-I rang the bell and called for the weekly county paper, which
-contained a verbatim account of the inquest. In the surgeon's
-deposition it was stated that the posterior third of the left
-parietal bone and the left half of the occipital bone had been
-shattered by a heavy blow from a blunt weapon. I marked the spot
-upon my own head. Clearly such a blow must have been struck from
-behind. That was to some extent in favour of the accused, as when
-seen quarrelling he was face to face with his father. Still, it
-did not go for very much, for the older man might have turned his
-back before the blow fell. Still, it might be worth while to call
-Holmes' attention to it. Then there was the peculiar dying
-reference to a rat. What could that mean? It could not be
-delirium. A man dying from a sudden blow does not commonly become
-delirious. No, it was more likely to be an attempt to explain how
-he met his fate. But what could it indicate? I cudgelled my
-brains to find some possible explanation. And then the incident
-of the grey cloth seen by young McCarthy. If that were true the
-murderer must have dropped some part of his dress, presumably his
-overcoat, in his flight, and must have had the hardihood to
-return and to carry it away at the instant when the son was
-kneeling with his back turned not a dozen paces off. What a
-tissue of mysteries and improbabilities the whole thing was! I
-did not wonder at Lestrade's opinion, and yet I had so much faith
-in Sherlock Holmes' insight that I could not lose hope as long
-as every fresh fact seemed to strengthen his conviction of young
-McCarthy's innocence.
-
-It was late before Sherlock Holmes returned. He came back alone,
-for Lestrade was staying in lodgings in the town.
-
-"The glass still keeps very high," he remarked as he sat down.
-"It is of importance that it should not rain before we are able
-to go over the ground. On the other hand, a man should be at his
-very best and keenest for such nice work as that, and I did not
-wish to do it when fagged by a long journey. I have seen young
-McCarthy."
-
-"And what did you learn from him?"
-
-"Nothing."
-
-"Could he throw no light?"
-
-"None at all. I was inclined to think at one time that he knew
-who had done it and was screening him or her, but I am convinced
-now that he is as puzzled as everyone else. He is not a very
-quick-witted youth, though comely to look at and, I should think,
-sound at heart."
-
-"I cannot admire his taste," I remarked, "if it is indeed a fact
-that he was averse to a marriage with so charming a young lady as
-this Miss Turner."
-
-"Ah, thereby hangs a rather painful tale. This fellow is madly,
-insanely, in love with her, but some two years ago, when he was
-only a lad, and before he really knew her, for she had been away
-five years at a boarding-school, what does the idiot do but get
-into the clutches of a barmaid in Bristol and marry her at a
-registry office? No one knows a word of the matter, but you can
-imagine how maddening it must be to him to be upbraided for not
-doing what he would give his very eyes to do, but what he knows
-to be absolutely impossible. It was sheer frenzy of this sort
-which made him throw his hands up into the air when his father,
-at their last interview, was goading him on to propose to Miss
-Turner. On the other hand, he had no means of supporting himself,
-and his father, who was by all accounts a very hard man, would
-have thrown him over utterly had he known the truth. It was with
-his barmaid wife that he had spent the last three days in
-Bristol, and his father did not know where he was. Mark that
-point. It is of importance. Good has come out of evil, however,
-for the barmaid, finding from the papers that he is in serious
-trouble and likely to be hanged, has thrown him over utterly and
-has written to him to say that she has a husband already in the
-Bermuda Dockyard, so that there is really no tie between them. I
-think that that bit of news has consoled young McCarthy for all
-that he has suffered."
-
-"But if he is innocent, who has done it?"
-
-"Ah! who? I would call your attention very particularly to two
-points. One is that the murdered man had an appointment with
-someone at the pool, and that the someone could not have been his
-son, for his son was away, and he did not know when he would
-return. The second is that the murdered man was heard to cry
-'Cooee!' before he knew that his son had returned. Those are the
-crucial points upon which the case depends. And now let us talk
-about George Meredith, if you please, and we shall leave all
-minor matters until to-morrow."
-
-There was no rain, as Holmes had foretold, and the morning broke
-bright and cloudless. At nine o'clock Lestrade called for us with
-the carriage, and we set off for Hatherley Farm and the Boscombe
-Pool.
-
-"There is serious news this morning," Lestrade observed. "It is
-said that Mr. Turner, of the Hall, is so ill that his life is
-despaired of."
-
-"An elderly man, I presume?" said Holmes.
-
-"About sixty; but his constitution has been shattered by his life
-abroad, and he has been in failing health for some time. This
-business has had a very bad effect upon him. He was an old friend
-of McCarthy's, and, I may add, a great benefactor to him, for I
-have learned that he gave him Hatherley Farm rent free."
-
-"Indeed! That is interesting," said Holmes.
-
-"Oh, yes! In a hundred other ways he has helped him. Everybody
-about here speaks of his kindness to him."
-
-"Really! Does it not strike you as a little singular that this
-McCarthy, who appears to have had little of his own, and to have
-been under such obligations to Turner, should still talk of
-marrying his son to Turner's daughter, who is, presumably,
-heiress to the estate, and that in such a very cocksure manner,
-as if it were merely a case of a proposal and all else would
-follow? It is the more strange, since we know that Turner himself
-was averse to the idea. The daughter told us as much. Do you not
-deduce something from that?"
-
-"We have got to the deductions and the inferences," said
-Lestrade, winking at me. "I find it hard enough to tackle facts,
-Holmes, without flying away after theories and fancies."
-
-"You are right," said Holmes demurely; "you do find it very hard
-to tackle the facts."
-
-"Anyhow, I have grasped one fact which you seem to find it
-difficult to get hold of," replied Lestrade with some warmth.
-
-"And that is--"
-
-"That McCarthy senior met his death from McCarthy junior and that
-all theories to the contrary are the merest moonshine."
-
-"Well, moonshine is a brighter thing than fog," said Holmes,
-laughing. "But I am very much mistaken if this is not Hatherley
-Farm upon the left."
-
-"Yes, that is it." It was a widespread, comfortable-looking
-building, two-storied, slate-roofed, with great yellow blotches
-of lichen upon the grey walls. The drawn blinds and the smokeless
-chimneys, however, gave it a stricken look, as though the weight
-of this horror still lay heavy upon it. We called at the door,
-when the maid, at Holmes' request, showed us the boots which her
-master wore at the time of his death, and also a pair of the
-son's, though not the pair which he had then had. Having measured
-these very carefully from seven or eight different points, Holmes
-desired to be led to the court-yard, from which we all followed
-the winding track which led to Boscombe Pool.
-
-Sherlock Holmes was transformed when he was hot upon such a scent
-as this. Men who had only known the quiet thinker and logician of
-Baker Street would have failed to recognise him. His face flushed
-and darkened. His brows were drawn into two hard black lines,
-while his eyes shone out from beneath them with a steely glitter.
-His face was bent downward, his shoulders bowed, his lips
-compressed, and the veins stood out like whipcord in his long,
-sinewy neck. His nostrils seemed to dilate with a purely animal
-lust for the chase, and his mind was so absolutely concentrated
-upon the matter before him that a question or remark fell
-unheeded upon his ears, or, at the most, only provoked a quick,
-impatient snarl in reply. Swiftly and silently he made his way
-along the track which ran through the meadows, and so by way of
-the woods to the Boscombe Pool. It was damp, marshy ground, as is
-all that district, and there were marks of many feet, both upon
-the path and amid the short grass which bounded it on either
-side. Sometimes Holmes would hurry on, sometimes stop dead, and
-once he made quite a little detour into the meadow. Lestrade and
-I walked behind him, the detective indifferent and contemptuous,
-while I watched my friend with the interest which sprang from the
-conviction that every one of his actions was directed towards a
-definite end.
-
-The Boscombe Pool, which is a little reed-girt sheet of water
-some fifty yards across, is situated at the boundary between the
-Hatherley Farm and the private park of the wealthy Mr. Turner.
-Above the woods which lined it upon the farther side we could see
-the red, jutting pinnacles which marked the site of the rich
-landowner's dwelling. On the Hatherley side of the pool the woods
-grew very thick, and there was a narrow belt of sodden grass
-twenty paces across between the edge of the trees and the reeds
-which lined the lake. Lestrade showed us the exact spot at which
-the body had been found, and, indeed, so moist was the ground,
-that I could plainly see the traces which had been left by the
-fall of the stricken man. To Holmes, as I could see by his eager
-face and peering eyes, very many other things were to be read
-upon the trampled grass. He ran round, like a dog who is picking
-up a scent, and then turned upon my companion.
-
-"What did you go into the pool for?" he asked.
-
-"I fished about with a rake. I thought there might be some weapon
-or other trace. But how on earth--"
-
-"Oh, tut, tut! I have no time! That left foot of yours with its
-inward twist is all over the place. A mole could trace it, and
-there it vanishes among the reeds. Oh, how simple it would all
-have been had I been here before they came like a herd of buffalo
-and wallowed all over it. Here is where the party with the
-lodge-keeper came, and they have covered all tracks for six or
-eight feet round the body. But here are three separate tracks of
-the same feet." He drew out a lens and lay down upon his
-waterproof to have a better view, talking all the time rather to
-himself than to us. "These are young McCarthy's feet. Twice he
-was walking, and once he ran swiftly, so that the soles are
-deeply marked and the heels hardly visible. That bears out his
-story. He ran when he saw his father on the ground. Then here are
-the father's feet as he paced up and down. What is this, then? It
-is the butt-end of the gun as the son stood listening. And this?
-Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
-unusual boots! They come, they go, they come again--of course
-that was for the cloak. Now where did they come from?" He ran up
-and down, sometimes losing, sometimes finding the track until we
-were well within the edge of the wood and under the shadow of a
-great beech, the largest tree in the neighbourhood. Holmes traced
-his way to the farther side of this and lay down once more upon
-his face with a little cry of satisfaction. For a long time he
-remained there, turning over the leaves and dried sticks,
-gathering up what seemed to me to be dust into an envelope and
-examining with his lens not only the ground but even the bark of
-the tree as far as he could reach. A jagged stone was lying among
-the moss, and this also he carefully examined and retained. Then
-he followed a pathway through the wood until he came to the
-highroad, where all traces were lost.
-
-"It has been a case of considerable interest," he remarked,
-returning to his natural manner. "I fancy that this grey house on
-the right must be the lodge. I think that I will go in and have a
-word with Moran, and perhaps write a little note. Having done
-that, we may drive back to our luncheon. You may walk to the cab,
-and I shall be with you presently."
-
-It was about ten minutes before we regained our cab and drove
-back into Ross, Holmes still carrying with him the stone which he
-had picked up in the wood.
-
-"This may interest you, Lestrade," he remarked, holding it out.
-"The murder was done with it."
-
-"I see no marks."
-
-"There are none."
-
-"How do you know, then?"
-
-"The grass was growing under it. It had only lain there a few
-days. There was no sign of a place whence it had been taken. It
-corresponds with the injuries. There is no sign of any other
-weapon."
-
-"And the murderer?"
-
-"Is a tall man, left-handed, limps with the right leg, wears
-thick-soled shooting-boots and a grey cloak, smokes Indian
-cigars, uses a cigar-holder, and carries a blunt pen-knife in his
-pocket. There are several other indications, but these may be
-enough to aid us in our search."
-
-Lestrade laughed. "I am afraid that I am still a sceptic," he
-said. "Theories are all very well, but we have to deal with a
-hard-headed British jury."
-
-"Nous verrons," answered Holmes calmly. "You work your own
-method, and I shall work mine. I shall be busy this afternoon,
-and shall probably return to London by the evening train."
-
-"And leave your case unfinished?"
-
-"No, finished."
-
-"But the mystery?"
-
-"It is solved."
-
-"Who was the criminal, then?"
-
-"The gentleman I describe."
-
-"But who is he?"
-
-"Surely it would not be difficult to find out. This is not such a
-populous neighbourhood."
-
-Lestrade shrugged his shoulders. "I am a practical man," he said,
-"and I really cannot undertake to go about the country looking
-for a left-handed gentleman with a game leg. I should become the
-laughing-stock of Scotland Yard."
-
-"All right," said Holmes quietly. "I have given you the chance.
-Here are your lodgings. Good-bye. I shall drop you a line before
-I leave."
-
-Having left Lestrade at his rooms, we drove to our hotel, where
-we found lunch upon the table. Holmes was silent and buried in
-thought with a pained expression upon his face, as one who finds
-himself in a perplexing position.
-
-"Look here, Watson," he said when the cloth was cleared "just sit
-down in this chair and let me preach to you for a little. I don't
-know quite what to do, and I should value your advice. Light a
-cigar and let me expound."
-
- "Pray do so."
-
-"Well, now, in considering this case there are two points about
-young McCarthy's narrative which struck us both instantly,
-although they impressed me in his favour and you against him. One
-was the fact that his father should, according to his account,
-cry 'Cooee!' before seeing him. The other was his singular dying
-reference to a rat. He mumbled several words, you understand, but
-that was all that caught the son's ear. Now from this double
-point our research must commence, and we will begin it by
-presuming that what the lad says is absolutely true."
-
-"What of this 'Cooee!' then?"
-
-"Well, obviously it could not have been meant for the son. The
-son, as far as he knew, was in Bristol. It was mere chance that
-he was within earshot. The 'Cooee!' was meant to attract the
-attention of whoever it was that he had the appointment with. But
-'Cooee' is a distinctly Australian cry, and one which is used
-between Australians. There is a strong presumption that the
-person whom McCarthy expected to meet him at Boscombe Pool was
-someone who had been in Australia."
-
-"What of the rat, then?"
-
-Sherlock Holmes took a folded paper from his pocket and flattened
-it out on the table. "This is a map of the Colony of Victoria,"
-he said. "I wired to Bristol for it last night." He put his hand
-over part of the map. "What do you read?"
-
-"ARAT," I read.
-
-"And now?" He raised his hand.
-
-"BALLARAT."
-
-"Quite so. That was the word the man uttered, and of which his
-son only caught the last two syllables. He was trying to utter
-the name of his murderer. So and so, of Ballarat."
-
-"It is wonderful!" I exclaimed.
-
-"It is obvious. And now, you see, I had narrowed the field down
-considerably. The possession of a grey garment was a third point
-which, granting the son's statement to be correct, was a
-certainty. We have come now out of mere vagueness to the definite
-conception of an Australian from Ballarat with a grey cloak."
-
-"Certainly."
-
-"And one who was at home in the district, for the pool can only
-be approached by the farm or by the estate, where strangers could
-hardly wander."
-
-"Quite so."
-
-"Then comes our expedition of to-day. By an examination of the
-ground I gained the trifling details which I gave to that
-imbecile Lestrade, as to the personality of the criminal."
-
-"But how did you gain them?"
-
-"You know my method. It is founded upon the observation of
-trifles."
-
-"His height I know that you might roughly judge from the length
-of his stride. His boots, too, might be told from their traces."
-
-"Yes, they were peculiar boots."
-
-"But his lameness?"
-
-"The impression of his right foot was always less distinct than
-his left. He put less weight upon it. Why? Because he limped--he
-was lame."
-
-"But his left-handedness."
-
-"You were yourself struck by the nature of the injury as recorded
-by the surgeon at the inquest. The blow was struck from
-immediately behind, and yet was upon the left side. Now, how can
-that be unless it were by a left-handed man? He had stood behind
-that tree during the interview between the father and son. He had
-even smoked there. I found the ash of a cigar, which my special
-knowledge of tobacco ashes enables me to pronounce as an Indian
-cigar. I have, as you know, devoted some attention to this, and
-written a little monograph on the ashes of 140 different
-varieties of pipe, cigar, and cigarette tobacco. Having found the
-ash, I then looked round and discovered the stump among the moss
-where he had tossed it. It was an Indian cigar, of the variety
-which are rolled in Rotterdam."
-
-"And the cigar-holder?"
-
-"I could see that the end had not been in his mouth. Therefore he
-used a holder. The tip had been cut off, not bitten off, but the
-cut was not a clean one, so I deduced a blunt pen-knife."
-
-"Holmes," I said, "you have drawn a net round this man from which
-he cannot escape, and you have saved an innocent human life as
-truly as if you had cut the cord which was hanging him. I see the
-direction in which all this points. The culprit is--"
-
-"Mr. John Turner," cried the hotel waiter, opening the door of
-our sitting-room, and ushering in a visitor.
-
-The man who entered was a strange and impressive figure. His
-slow, limping step and bowed shoulders gave the appearance of
-decrepitude, and yet his hard, deep-lined, craggy features, and
-his enormous limbs showed that he was possessed of unusual
-strength of body and of character. His tangled beard, grizzled
-hair, and outstanding, drooping eyebrows combined to give an air
-of dignity and power to his appearance, but his face was of an
-ashen white, while his lips and the corners of his nostrils were
-tinged with a shade of blue. It was clear to me at a glance that
-he was in the grip of some deadly and chronic disease.
-
-"Pray sit down on the sofa," said Holmes gently. "You had my
-note?"
-
-"Yes, the lodge-keeper brought it up. You said that you wished to
-see me here to avoid scandal."
-
-"I thought people would talk if I went to the Hall."
-
-"And why did you wish to see me?" He looked across at my
-companion with despair in his weary eyes, as though his question
-was already answered.
-
-"Yes," said Holmes, answering the look rather than the words. "It
-is so. I know all about McCarthy."
-
-The old man sank his face in his hands. "God help me!" he cried.
-"But I would not have let the young man come to harm. I give you
-my word that I would have spoken out if it went against him at
-the Assizes."
-
-"I am glad to hear you say so," said Holmes gravely.
-
-"I would have spoken now had it not been for my dear girl. It
-would break her heart--it will break her heart when she hears
-that I am arrested."
-
-"It may not come to that," said Holmes.
-
-"What?"
-
-"I am no official agent. I understand that it was your daughter
-who required my presence here, and I am acting in her interests.
-Young McCarthy must be got off, however."
-
-"I am a dying man," said old Turner. "I have had diabetes for
-years. My doctor says it is a question whether I shall live a
-month. Yet I would rather die under my own roof than in a gaol."
-
-Holmes rose and sat down at the table with his pen in his hand
-and a bundle of paper before him. "Just tell us the truth," he
-said. "I shall jot down the facts. You will sign it, and Watson
-here can witness it. Then I could produce your confession at the
-last extremity to save young McCarthy. I promise you that I shall
-not use it unless it is absolutely needed."
-
-"It's as well," said the old man; "it's a question whether I
-shall live to the Assizes, so it matters little to me, but I
-should wish to spare Alice the shock. And now I will make the
-thing clear to you; it has been a long time in the acting, but
-will not take me long to tell.
-
-"You didn't know this dead man, McCarthy. He was a devil
-incarnate. I tell you that. God keep you out of the clutches of
-such a man as he. His grip has been upon me these twenty years,
-and he has blasted my life. I'll tell you first how I came to be
-in his power.
-
-"It was in the early '60's at the diggings. I was a young chap
-then, hot-blooded and reckless, ready to turn my hand at
-anything; I got among bad companions, took to drink, had no luck
-with my claim, took to the bush, and in a word became what you
-would call over here a highway robber. There were six of us, and
-we had a wild, free life of it, sticking up a station from time
-to time, or stopping the wagons on the road to the diggings.
-Black Jack of Ballarat was the name I went under, and our party
-is still remembered in the colony as the Ballarat Gang.
-
-"One day a gold convoy came down from Ballarat to Melbourne, and
-we lay in wait for it and attacked it. There were six troopers
-and six of us, so it was a close thing, but we emptied four of
-their saddles at the first volley. Three of our boys were killed,
-however, before we got the swag. I put my pistol to the head of
-the wagon-driver, who was this very man McCarthy. I wish to the
-Lord that I had shot him then, but I spared him, though I saw his
-wicked little eyes fixed on my face, as though to remember every
-feature. We got away with the gold, became wealthy men, and made
-our way over to England without being suspected. There I parted
-from my old pals and determined to settle down to a quiet and
-respectable life. I bought this estate, which chanced to be in
-the market, and I set myself to do a little good with my money,
-to make up for the way in which I had earned it. I married, too,
-and though my wife died young she left me my dear little Alice.
-Even when she was just a baby her wee hand seemed to lead me down
-the right path as nothing else had ever done. In a word, I turned
-over a new leaf and did my best to make up for the past. All was
-going well when McCarthy laid his grip upon me.
-
-"I had gone up to town about an investment, and I met him in
-Regent Street with hardly a coat to his back or a boot to his
-foot.
-
-"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
-as good as a family to you. There's two of us, me and my son, and
-you can have the keeping of us. If you don't--it's a fine,
-law-abiding country is England, and there's always a policeman
-within hail.'
-
-"Well, down they came to the west country, there was no shaking
-them off, and there they have lived rent free on my best land
-ever since. There was no rest for me, no peace, no forgetfulness;
-turn where I would, there was his cunning, grinning face at my
-elbow. It grew worse as Alice grew up, for he soon saw I was more
-afraid of her knowing my past than of the police. Whatever he
-wanted he must have, and whatever it was I gave him without
-question, land, money, houses, until at last he asked a thing
-which I could not give. He asked for Alice.
-
-"His son, you see, had grown up, and so had my girl, and as I was
-known to be in weak health, it seemed a fine stroke to him that
-his lad should step into the whole property. But there I was
-firm. I would not have his cursed stock mixed with mine; not that
-I had any dislike to the lad, but his blood was in him, and that
-was enough. I stood firm. McCarthy threatened. I braved him to do
-his worst. We were to meet at the pool midway between our houses
-to talk it over.
-
-"When I went down there I found him talking with his son, so I
-smoked a cigar and waited behind a tree until he should be alone.
-But as I listened to his talk all that was black and bitter in
-me seemed to come uppermost. He was urging his son to marry my
-daughter with as little regard for what she might think as if she
-were a slut from off the streets. It drove me mad to think that I
-and all that I held most dear should be in the power of such a
-man as this. Could I not snap the bond? I was already a dying and
-a desperate man. Though clear of mind and fairly strong of limb,
-I knew that my own fate was sealed. But my memory and my girl!
-Both could be saved if I could but silence that foul tongue. I
-did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
-I have led a life of martyrdom to atone for it. But that my girl
-should be entangled in the same meshes which held me was more
-than I could suffer. I struck him down with no more compunction
-than if he had been some foul and venomous beast. His cry brought
-back his son; but I had gained the cover of the wood, though I
-was forced to go back to fetch the cloak which I had dropped in
-my flight. That is the true story, gentlemen, of all that
-occurred."
-
-"Well, it is not for me to judge you," said Holmes as the old man
-signed the statement which had been drawn out. "I pray that we
-may never be exposed to such a temptation."
-
-"I pray not, sir. And what do you intend to do?"
-
-"In view of your health, nothing. You are yourself aware that you
-will soon have to answer for your deed at a higher court than the
-Assizes. I will keep your confession, and if McCarthy is
-condemned I shall be forced to use it. If not, it shall never be
-seen by mortal eye; and your secret, whether you be alive or
-dead, shall be safe with us."
-
-"Farewell, then," said the old man solemnly. "Your own deathbeds,
-when they come, will be the easier for the thought of the peace
-which you have given to mine." Tottering and shaking in all his
-giant frame, he stumbled slowly from the room.
-
-"God help us!" said Holmes after a long silence. "Why does fate
-play such tricks with poor, helpless worms? I never hear of such
-a case as this that I do not think of Baxter's words, and say,
-'There, but for the grace of God, goes Sherlock Holmes.'"
-
-James McCarthy was acquitted at the Assizes on the strength of a
-number of objections which had been drawn out by Holmes and
-submitted to the defending counsel. Old Turner lived for seven
-months after our interview, but he is now dead; and there is
-every prospect that the son and daughter may come to live happily
-together in ignorance of the black cloud which rests upon their
-past.
-
-
-
-ADVENTURE V. THE FIVE ORANGE PIPS
-
-When I glance over my notes and records of the Sherlock Holmes
-cases between the years '82 and '90, I am faced by so many which
-present strange and interesting features that it is no easy
-matter to know which to choose and which to leave. Some, however,
-have already gained publicity through the papers, and others have
-not offered a field for those peculiar qualities which my friend
-possessed in so high a degree, and which it is the object of
-these papers to illustrate. Some, too, have baffled his
-analytical skill, and would be, as narratives, beginnings without
-an ending, while others have been but partially cleared up, and
-have their explanations founded rather upon conjecture and
-surmise than on that absolute logical proof which was so dear to
-him. There is, however, one of these last which was so remarkable
-in its details and so startling in its results that I am tempted
-to give some account of it in spite of the fact that there are
-points in connection with it which never have been, and probably
-never will be, entirely cleared up.
-
-The year '87 furnished us with a long series of cases of greater
-or less interest, of which I retain the records. Among my
-headings under this one twelve months I find an account of the
-adventure of the Paradol Chamber, of the Amateur Mendicant
-Society, who held a luxurious club in the lower vault of a
-furniture warehouse, of the facts connected with the loss of the
-British barque "Sophy Anderson", of the singular adventures of the
-Grice Patersons in the island of Uffa, and finally of the
-Camberwell poisoning case. In the latter, as may be remembered,
-Sherlock Holmes was able, by winding up the dead man's watch, to
-prove that it had been wound up two hours before, and that
-therefore the deceased had gone to bed within that time--a
-deduction which was of the greatest importance in clearing up the
-case. All these I may sketch out at some future date, but none of
-them present such singular features as the strange train of
-circumstances which I have now taken up my pen to describe.
-
-It was in the latter days of September, and the equinoctial gales
-had set in with exceptional violence. All day the wind had
-screamed and the rain had beaten against the windows, so that
-even here in the heart of great, hand-made London we were forced
-to raise our minds for the instant from the routine of life and
-to recognise the presence of those great elemental forces which
-shriek at mankind through the bars of his civilisation, like
-untamed beasts in a cage. As evening drew in, the storm grew
-higher and louder, and the wind cried and sobbed like a child in
-the chimney. Sherlock Holmes sat moodily at one side of the
-fireplace cross-indexing his records of crime, while I at the
-other was deep in one of Clark Russell's fine sea-stories until
-the howl of the gale from without seemed to blend with the text,
-and the splash of the rain to lengthen out into the long swash of
-the sea waves. My wife was on a visit to her mother's, and for a
-few days I was a dweller once more in my old quarters at Baker
-Street.
-
-"Why," said I, glancing up at my companion, "that was surely the
-bell. Who could come to-night? Some friend of yours, perhaps?"
-
-"Except yourself I have none," he answered. "I do not encourage
-visitors."
-
-"A client, then?"
-
-"If so, it is a serious case. Nothing less would bring a man out
-on such a day and at such an hour. But I take it that it is more
-likely to be some crony of the landlady's."
-
-Sherlock Holmes was wrong in his conjecture, however, for there
-came a step in the passage and a tapping at the door. He
-stretched out his long arm to turn the lamp away from himself and
-towards the vacant chair upon which a newcomer must sit.
-
-"Come in!" said he.
-
-The man who entered was young, some two-and-twenty at the
-outside, well-groomed and trimly clad, with something of
-refinement and delicacy in his bearing. The streaming umbrella
-which he held in his hand, and his long shining waterproof told
-of the fierce weather through which he had come. He looked about
-him anxiously in the glare of the lamp, and I could see that his
-face was pale and his eyes heavy, like those of a man who is
-weighed down with some great anxiety.
-
-"I owe you an apology," he said, raising his golden pince-nez to
-his eyes. "I trust that I am not intruding. I fear that I have
-brought some traces of the storm and rain into your snug
-chamber."
-
-"Give me your coat and umbrella," said Holmes. "They may rest
-here on the hook and will be dry presently. You have come up from
-the south-west, I see."
-
-"Yes, from Horsham."
-
-"That clay and chalk mixture which I see upon your toe caps is
-quite distinctive."
-
-"I have come for advice."
-
-"That is easily got."
-
-"And help."
-
-"That is not always so easy."
-
-"I have heard of you, Mr. Holmes. I heard from Major Prendergast
-how you saved him in the Tankerville Club scandal."
-
-"Ah, of course. He was wrongfully accused of cheating at cards."
-
-"He said that you could solve anything."
-
-"He said too much."
-
-"That you are never beaten."
-
-"I have been beaten four times--three times by men, and once by a
-woman."
-
-"But what is that compared with the number of your successes?"
-
-"It is true that I have been generally successful."
-
-"Then you may be so with me."
-
-"I beg that you will draw your chair up to the fire and favour me
-with some details as to your case."
-
-"It is no ordinary one."
-
-"None of those which come to me are. I am the last court of
-appeal."
-
-"And yet I question, sir, whether, in all your experience, you
-have ever listened to a more mysterious and inexplicable chain of
-events than those which have happened in my own family."
-
-"You fill me with interest," said Holmes. "Pray give us the
-essential facts from the commencement, and I can afterwards
-question you as to those details which seem to me to be most
-important."
-
-The young man pulled his chair up and pushed his wet feet out
-towards the blaze.
-
-"My name," said he, "is John Openshaw, but my own affairs have,
-as far as I can understand, little to do with this awful
-business. It is a hereditary matter; so in order to give you an
-idea of the facts, I must go back to the commencement of the
-affair.
-
-"You must know that my grandfather had two sons--my uncle Elias
-and my father Joseph. My father had a small factory at Coventry,
-which he enlarged at the time of the invention of bicycling. He
-was a patentee of the Openshaw unbreakable tire, and his business
-met with such success that he was able to sell it and to retire
-upon a handsome competence.
-
-"My uncle Elias emigrated to America when he was a young man and
-became a planter in Florida, where he was reported to have done
-very well. At the time of the war he fought in Jackson's army,
-and afterwards under Hood, where he rose to be a colonel. When
-Lee laid down his arms my uncle returned to his plantation, where
-he remained for three or four years. About 1869 or 1870 he came
-back to Europe and took a small estate in Sussex, near Horsham.
-He had made a very considerable fortune in the States, and his
-reason for leaving them was his aversion to the negroes, and his
-dislike of the Republican policy in extending the franchise to
-them. He was a singular man, fierce and quick-tempered, very
-foul-mouthed when he was angry, and of a most retiring
-disposition. During all the years that he lived at Horsham, I
-doubt if ever he set foot in the town. He had a garden and two or
-three fields round his house, and there he would take his
-exercise, though very often for weeks on end he would never leave
-his room. He drank a great deal of brandy and smoked very
-heavily, but he would see no society and did not want any
-friends, not even his own brother.
-
-"He didn't mind me; in fact, he took a fancy to me, for at the
-time when he saw me first I was a youngster of twelve or so. This
-would be in the year 1878, after he had been eight or nine years
-in England. He begged my father to let me live with him and he
-was very kind to me in his way. When he was sober he used to be
-fond of playing backgammon and draughts with me, and he would
-make me his representative both with the servants and with the
-tradespeople, so that by the time that I was sixteen I was quite
-master of the house. I kept all the keys and could go where I
-liked and do what I liked, so long as I did not disturb him in
-his privacy. There was one singular exception, however, for he
-had a single room, a lumber-room up among the attics, which was
-invariably locked, and which he would never permit either me or
-anyone else to enter. With a boy's curiosity I have peeped
-through the keyhole, but I was never able to see more than such a
-collection of old trunks and bundles as would be expected in such
-a room.
-
-"One day--it was in March, 1883--a letter with a foreign stamp
-lay upon the table in front of the colonel's plate. It was not a
-common thing for him to receive letters, for his bills were all
-paid in ready money, and he had no friends of any sort. 'From
-India!' said he as he took it up, 'Pondicherry postmark! What can
-this be?' Opening it hurriedly, out there jumped five little
-dried orange pips, which pattered down upon his plate. I began to
-laugh at this, but the laugh was struck from my lips at the sight
-of his face. His lip had fallen, his eyes were protruding, his
-skin the colour of putty, and he glared at the envelope which he
-still held in his trembling hand, 'K. K. K.!' he shrieked, and
-then, 'My God, my God, my sins have overtaken me!'
-
-"'What is it, uncle?' I cried.
-
-"'Death,' said he, and rising from the table he retired to his
-room, leaving me palpitating with horror. I took up the envelope
-and saw scrawled in red ink upon the inner flap, just above the
-gum, the letter K three times repeated. There was nothing else
-save the five dried pips. What could be the reason of his
-overpowering terror? I left the breakfast-table, and as I
-ascended the stair I met him coming down with an old rusty key,
-which must have belonged to the attic, in one hand, and a small
-brass box, like a cashbox, in the other.
-
-"'They may do what they like, but I'll checkmate them still,'
-said he with an oath. 'Tell Mary that I shall want a fire in my
-room to-day, and send down to Fordham, the Horsham lawyer.'
-
-"I did as he ordered, and when the lawyer arrived I was asked to
-step up to the room. The fire was burning brightly, and in the
-grate there was a mass of black, fluffy ashes, as of burned
-paper, while the brass box stood open and empty beside it. As I
-glanced at the box I noticed, with a start, that upon the lid was
-printed the treble K which I had read in the morning upon the
-envelope.
-
-"'I wish you, John,' said my uncle, 'to witness my will. I leave
-my estate, with all its advantages and all its disadvantages, to
-my brother, your father, whence it will, no doubt, descend to
-you. If you can enjoy it in peace, well and good! If you find you
-cannot, take my advice, my boy, and leave it to your deadliest
-enemy. I am sorry to give you such a two-edged thing, but I can't
-say what turn things are going to take. Kindly sign the paper
-where Mr. Fordham shows you.'
-
-"I signed the paper as directed, and the lawyer took it away with
-him. The singular incident made, as you may think, the deepest
-impression upon me, and I pondered over it and turned it every
-way in my mind without being able to make anything of it. Yet I
-could not shake off the vague feeling of dread which it left
-behind, though the sensation grew less keen as the weeks passed
-and nothing happened to disturb the usual routine of our lives. I
-could see a change in my uncle, however. He drank more than ever,
-and he was less inclined for any sort of society. Most of his
-time he would spend in his room, with the door locked upon the
-inside, but sometimes he would emerge in a sort of drunken frenzy
-and would burst out of the house and tear about the garden with a
-revolver in his hand, screaming out that he was afraid of no man,
-and that he was not to be cooped up, like a sheep in a pen, by
-man or devil. When these hot fits were over, however, he would
-rush tumultuously in at the door and lock and bar it behind him,
-like a man who can brazen it out no longer against the terror
-which lies at the roots of his soul. At such times I have seen
-his face, even on a cold day, glisten with moisture, as though it
-were new raised from a basin.
-
-"Well, to come to an end of the matter, Mr. Holmes, and not to
-abuse your patience, there came a night when he made one of those
-drunken sallies from which he never came back. We found him, when
-we went to search for him, face downward in a little
-green-scummed pool, which lay at the foot of the garden. There
-was no sign of any violence, and the water was but two feet deep,
-so that the jury, having regard to his known eccentricity,
-brought in a verdict of 'suicide.' But I, who knew how he winced
-from the very thought of death, had much ado to persuade myself
-that he had gone out of his way to meet it. The matter passed,
-however, and my father entered into possession of the estate, and
-of some 14,000 pounds, which lay to his credit at the bank."
-
-"One moment," Holmes interposed, "your statement is, I foresee,
-one of the most remarkable to which I have ever listened. Let me
-have the date of the reception by your uncle of the letter, and
-the date of his supposed suicide."
-
-"The letter arrived on March 10, 1883. His death was seven weeks
-later, upon the night of May 2nd."
-
-"Thank you. Pray proceed."
-
-"When my father took over the Horsham property, he, at my
-request, made a careful examination of the attic, which had been
-always locked up. We found the brass box there, although its
-contents had been destroyed. On the inside of the cover was a
-paper label, with the initials of K. K. K. repeated upon it, and
-'Letters, memoranda, receipts, and a register' written beneath.
-These, we presume, indicated the nature of the papers which had
-been destroyed by Colonel Openshaw. For the rest, there was
-nothing of much importance in the attic save a great many
-scattered papers and note-books bearing upon my uncle's life in
-America. Some of them were of the war time and showed that he had
-done his duty well and had borne the repute of a brave soldier.
-Others were of a date during the reconstruction of the Southern
-states, and were mostly concerned with politics, for he had
-evidently taken a strong part in opposing the carpet-bag
-politicians who had been sent down from the North.
-
-"Well, it was the beginning of '84 when my father came to live at
-Horsham, and all went as well as possible with us until the
-January of '85. On the fourth day after the new year I heard my
-father give a sharp cry of surprise as we sat together at the
-breakfast-table. There he was, sitting with a newly opened
-envelope in one hand and five dried orange pips in the
-outstretched palm of the other one. He had always laughed at what
-he called my cock-and-bull story about the colonel, but he looked
-very scared and puzzled now that the same thing had come upon
-himself.
-
-"'Why, what on earth does this mean, John?' he stammered.
-
-"My heart had turned to lead. 'It is K. K. K.,' said I.
-
-"He looked inside the envelope. 'So it is,' he cried. 'Here are
-the very letters. But what is this written above them?'
-
-"'Put the papers on the sundial,' I read, peeping over his
-shoulder.
-
-"'What papers? What sundial?' he asked.
-
-"'The sundial in the garden. There is no other,' said I; 'but the
-papers must be those that are destroyed.'
-
-"'Pooh!' said he, gripping hard at his courage. 'We are in a
-civilised land here, and we can't have tomfoolery of this kind.
-Where does the thing come from?'
-
-"'From Dundee,' I answered, glancing at the postmark.
-
-"'Some preposterous practical joke,' said he. 'What have I to do
-with sundials and papers? I shall take no notice of such
-nonsense.'
-
-"'I should certainly speak to the police,' I said.
-
-"'And be laughed at for my pains. Nothing of the sort.'
-
-"'Then let me do so?'
-
-"'No, I forbid you. I won't have a fuss made about such
-nonsense.'
-
-"It was in vain to argue with him, for he was a very obstinate
-man. I went about, however, with a heart which was full of
-forebodings.
-
-"On the third day after the coming of the letter my father went
-from home to visit an old friend of his, Major Freebody, who is
-in command of one of the forts upon Portsdown Hill. I was glad
-that he should go, for it seemed to me that he was farther from
-danger when he was away from home. In that, however, I was in
-error. Upon the second day of his absence I received a telegram
-from the major, imploring me to come at once. My father had
-fallen over one of the deep chalk-pits which abound in the
-neighbourhood, and was lying senseless, with a shattered skull. I
-hurried to him, but he passed away without having ever recovered
-his consciousness. He had, as it appears, been returning from
-Fareham in the twilight, and as the country was unknown to him,
-and the chalk-pit unfenced, the jury had no hesitation in
-bringing in a verdict of 'death from accidental causes.'
-Carefully as I examined every fact connected with his death, I
-was unable to find anything which could suggest the idea of
-murder. There were no signs of violence, no footmarks, no
-robbery, no record of strangers having been seen upon the roads.
-And yet I need not tell you that my mind was far from at ease,
-and that I was well-nigh certain that some foul plot had been
-woven round him.
-
-"In this sinister way I came into my inheritance. You will ask me
-why I did not dispose of it? I answer, because I was well
-convinced that our troubles were in some way dependent upon an
-incident in my uncle's life, and that the danger would be as
-pressing in one house as in another.
-
-"It was in January, '85, that my poor father met his end, and two
-years and eight months have elapsed since then. During that time
-I have lived happily at Horsham, and I had begun to hope that
-this curse had passed away from the family, and that it had ended
-with the last generation. I had begun to take comfort too soon,
-however; yesterday morning the blow fell in the very shape in
-which it had come upon my father."
-
-The young man took from his waistcoat a crumpled envelope, and
-turning to the table he shook out upon it five little dried
-orange pips.
-
-"This is the envelope," he continued. "The postmark is
-London--eastern division. Within are the very words which were
-upon my father's last message: 'K. K. K.'; and then 'Put the
-papers on the sundial.'"
-
-"What have you done?" asked Holmes.
-
-"Nothing."
-
-"Nothing?"
-
-"To tell the truth"--he sank his face into his thin, white
-hands--"I have felt helpless. I have felt like one of those poor
-rabbits when the snake is writhing towards it. I seem to be in
-the grasp of some resistless, inexorable evil, which no foresight
-and no precautions can guard against."
-
-"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
-lost. Nothing but energy can save you. This is no time for
-despair."
-
-"I have seen the police."
-
-"Ah!"
-
-"But they listened to my story with a smile. I am convinced that
-the inspector has formed the opinion that the letters are all
-practical jokes, and that the deaths of my relations were really
-accidents, as the jury stated, and were not to be connected with
-the warnings."
-
-Holmes shook his clenched hands in the air. "Incredible
-imbecility!" he cried.
-
-"They have, however, allowed me a policeman, who may remain in
-the house with me."
-
-"Has he come with you to-night?"
-
-"No. His orders were to stay in the house."
-
-Again Holmes raved in the air.
-
-"Why did you come to me," he cried, "and, above all, why did you
-not come at once?"
-
-"I did not know. It was only to-day that I spoke to Major
-Prendergast about my troubles and was advised by him to come to
-you."
-
-"It is really two days since you had the letter. We should have
-acted before this. You have no further evidence, I suppose, than
-that which you have placed before us--no suggestive detail which
-might help us?"
-
-"There is one thing," said John Openshaw. He rummaged in his coat
-pocket, and, drawing out a piece of discoloured, blue-tinted
-paper, he laid it out upon the table. "I have some remembrance,"
-said he, "that on the day when my uncle burned the papers I
-observed that the small, unburned margins which lay amid the
-ashes were of this particular colour. I found this single sheet
-upon the floor of his room, and I am inclined to think that it
-may be one of the papers which has, perhaps, fluttered out from
-among the others, and in that way has escaped destruction. Beyond
-the mention of pips, I do not see that it helps us much. I think
-myself that it is a page from some private diary. The writing is
-undoubtedly my uncle's."
-
-Holmes moved the lamp, and we both bent over the sheet of paper,
-which showed by its ragged edge that it had indeed been torn from
-a book. It was headed, "March, 1869," and beneath were the
-following enigmatical notices:
-
-"4th. Hudson came. Same old platform.
-
-"7th. Set the pips on McCauley, Paramore, and
-      John Swain, of St. Augustine.
-
-"9th. McCauley cleared.
-
-"10th. John Swain cleared.
-
-"12th. Visited Paramore. All well."
-
-"Thank you!" said Holmes, folding up the paper and returning it
-to our visitor. "And now you must on no account lose another
-instant. We cannot spare time even to discuss what you have told
-me. You must get home instantly and act."
-
-"What shall I do?"
-
-"There is but one thing to do. It must be done at once. You must
-put this piece of paper which you have shown us into the brass
-box which you have described. You must also put in a note to say
-that all the other papers were burned by your uncle, and that
-this is the only one which remains. You must assert that in such
-words as will carry conviction with them. Having done this, you
-must at once put the box out upon the sundial, as directed. Do
-you understand?"
-
-"Entirely."
-
-"Do not think of revenge, or anything of the sort, at present. I
-think that we may gain that by means of the law; but we have our
-web to weave, while theirs is already woven. The first
-consideration is to remove the pressing danger which threatens
-you. The second is to clear up the mystery and to punish the
-guilty parties."
-
-"I thank you," said the young man, rising and pulling on his
-overcoat. "You have given me fresh life and hope. I shall
-certainly do as you advise."
-
-"Do not lose an instant. And, above all, take care of yourself in
-the meanwhile, for I do not think that there can be a doubt that
-you are threatened by a very real and imminent danger. How do you
-go back?"
-
-"By train from Waterloo."
-
-"It is not yet nine. The streets will be crowded, so I trust that
-you may be in safety. And yet you cannot guard yourself too
-closely."
-
-"I am armed."
-
-"That is well. To-morrow I shall set to work upon your case."
-
-"I shall see you at Horsham, then?"
-
-"No, your secret lies in London. It is there that I shall seek
-it."
-
-"Then I shall call upon you in a day, or in two days, with news
-as to the box and the papers. I shall take your advice in every
-particular." He shook hands with us and took his leave. Outside
-the wind still screamed and the rain splashed and pattered
-against the windows. This strange, wild story seemed to have come
-to us from amid the mad elements--blown in upon us like a sheet
-of sea-weed in a gale--and now to have been reabsorbed by them
-once more.
-
-Sherlock Holmes sat for some time in silence, with his head sunk
-forward and his eyes bent upon the red glow of the fire. Then he
-lit his pipe, and leaning back in his chair he watched the blue
-smoke-rings as they chased each other up to the ceiling.
-
-"I think, Watson," he remarked at last, "that of all our cases we
-have had none more fantastic than this."
-
-"Save, perhaps, the Sign of Four."
-
-"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
-to me to be walking amid even greater perils than did the
-Sholtos."
-
-"But have you," I asked, "formed any definite conception as to
-what these perils are?"
-
-"There can be no question as to their nature," he answered.
-
-"Then what are they? Who is this K. K. K., and why does he pursue
-this unhappy family?"
-
-Sherlock Holmes closed his eyes and placed his elbows upon the
-arms of his chair, with his finger-tips together. "The ideal
-reasoner," he remarked, "would, when he had once been shown a
-single fact in all its bearings, deduce from it not only all the
-chain of events which led up to it but also all the results which
-would follow from it. As Cuvier could correctly describe a whole
-animal by the contemplation of a single bone, so the observer who
-has thoroughly understood one link in a series of incidents
-should be able to accurately state all the other ones, both
-before and after. We have not yet grasped the results which the
-reason alone can attain to. Problems may be solved in the study
-which have baffled all those who have sought a solution by the
-aid of their senses. To carry the art, however, to its highest
-pitch, it is necessary that the reasoner should be able to
-utilise all the facts which have come to his knowledge; and this
-in itself implies, as you will readily see, a possession of all
-knowledge, which, even in these days of free education and
-encyclopaedias, is a somewhat rare accomplishment. It is not so
-impossible, however, that a man should possess all knowledge
-which is likely to be useful to him in his work, and this I have
-endeavoured in my case to do. If I remember rightly, you on one
-occasion, in the early days of our friendship, defined my limits
-in a very precise fashion."
-
-"Yes," I answered, laughing. "It was a singular document.
-Philosophy, astronomy, and politics were marked at zero, I
-remember. Botany variable, geology profound as regards the
-mud-stains from any region within fifty miles of town, chemistry
-eccentric, anatomy unsystematic, sensational literature and crime
-records unique, violin-player, boxer, swordsman, lawyer, and
-self-poisoner by cocaine and tobacco. Those, I think, were the
-main points of my analysis."
-
-Holmes grinned at the last item. "Well," he said, "I say now, as
-I said then, that a man should keep his little brain-attic
-stocked with all the furniture that he is likely to use, and the
-rest he can put away in the lumber-room of his library, where he
-can get it if he wants it. Now, for such a case as the one which
-has been submitted to us to-night, we need certainly to muster
-all our resources. Kindly hand me down the letter K of the
-'American Encyclopaedia' which stands upon the shelf beside you.
-Thank you. Now let us consider the situation and see what may be
-deduced from it. In the first place, we may start with a strong
-presumption that Colonel Openshaw had some very strong reason for
-leaving America. Men at his time of life do not change all their
-habits and exchange willingly the charming climate of Florida for
-the lonely life of an English provincial town. His extreme love
-of solitude in England suggests the idea that he was in fear of
-someone or something, so we may assume as a working hypothesis
-that it was fear of someone or something which drove him from
-America. As to what it was he feared, we can only deduce that by
-considering the formidable letters which were received by himself
-and his successors. Did you remark the postmarks of those
-letters?"
-
-"The first was from Pondicherry, the second from Dundee, and the
-third from London."
-
-"From East London. What do you deduce from that?"
-
-"They are all seaports. That the writer was on board of a ship."
-
-"Excellent. We have already a clue. There can be no doubt that
-the probability--the strong probability--is that the writer was
-on board of a ship. And now let us consider another point. In the
-case of Pondicherry, seven weeks elapsed between the threat and
-its fulfilment, in Dundee it was only some three or four days.
-Does that suggest anything?"
-
-"A greater distance to travel."
-
-"But the letter had also a greater distance to come."
-
-"Then I do not see the point."
-
-"There is at least a presumption that the vessel in which the man
-or men are is a sailing-ship. It looks as if they always send
-their singular warning or token before them when starting upon
-their mission. You see how quickly the deed followed the sign
-when it came from Dundee. If they had come from Pondicherry in a
-steamer they would have arrived almost as soon as their letter.
-But, as a matter of fact, seven weeks elapsed. I think that those
-seven weeks represented the difference between the mail-boat which
-brought the letter and the sailing vessel which brought the
-writer."
-
-"It is possible."
-
-"More than that. It is probable. And now you see the deadly
-urgency of this new case, and why I urged young Openshaw to
-caution. The blow has always fallen at the end of the time which
-it would take the senders to travel the distance. But this one
-comes from London, and therefore we cannot count upon delay."
-
-"Good God!" I cried. "What can it mean, this relentless
-persecution?"
-
-"The papers which Openshaw carried are obviously of vital
-importance to the person or persons in the sailing-ship. I think
-that it is quite clear that there must be more than one of them.
-A single man could not have carried out two deaths in such a way
-as to deceive a coroner's jury. There must have been several in
-it, and they must have been men of resource and determination.
-Their papers they mean to have, be the holder of them who it may.
-In this way you see K. K. K. ceases to be the initials of an
-individual and becomes the badge of a society."
-
-"But of what society?"
-
-"Have you never--" said Sherlock Holmes, bending forward and
-sinking his voice--"have you never heard of the Ku Klux Klan?"
-
-"I never have."
-
-Holmes turned over the leaves of the book upon his knee. "Here it
-is," said he presently:
-
-"'Ku Klux Klan. A name derived from the fanciful resemblance to
-the sound produced by cocking a rifle. This terrible secret
-society was formed by some ex-Confederate soldiers in the
-Southern states after the Civil War, and it rapidly formed local
-branches in different parts of the country, notably in Tennessee,
-Louisiana, the Carolinas, Georgia, and Florida. Its power was
-used for political purposes, principally for the terrorising of
-the negro voters and the murdering and driving from the country
-of those who were opposed to its views. Its outrages were usually
-preceded by a warning sent to the marked man in some fantastic
-but generally recognised shape--a sprig of oak-leaves in some
-parts, melon seeds or orange pips in others. On receiving this
-the victim might either openly abjure his former ways, or might
-fly from the country. If he braved the matter out, death would
-unfailingly come upon him, and usually in some strange and
-unforeseen manner. So perfect was the organisation of the
-society, and so systematic its methods, that there is hardly a
-case upon record where any man succeeded in braving it with
-impunity, or in which any of its outrages were traced home to the
-perpetrators. For some years the organisation flourished in spite
-of the efforts of the United States government and of the better
-classes of the community in the South. Eventually, in the year
-1869, the movement rather suddenly collapsed, although there have
-been sporadic outbreaks of the same sort since that date.'
-
-"You will observe," said Holmes, laying down the volume, "that
-the sudden breaking up of the society was coincident with the
-disappearance of Openshaw from America with their papers. It may
-well have been cause and effect. It is no wonder that he and his
-family have some of the more implacable spirits upon their track.
-You can understand that this register and diary may implicate
-some of the first men in the South, and that there may be many
-who will not sleep easy at night until it is recovered."
-
-"Then the page we have seen--"
-
-"Is such as we might expect. It ran, if I remember right, 'sent
-the pips to A, B, and C'--that is, sent the society's warning to
-them. Then there are successive entries that A and B cleared, or
-left the country, and finally that C was visited, with, I fear, a
-sinister result for C. Well, I think, Doctor, that we may let
-some light into this dark place, and I believe that the only
-chance young Openshaw has in the meantime is to do what I have
-told him. There is nothing more to be said or to be done
-to-night, so hand me over my violin and let us try to forget for
-half an hour the miserable weather and the still more miserable
-ways of our fellow-men."
-
-
-It had cleared in the morning, and the sun was shining with a
-subdued brightness through the dim veil which hangs over the
-great city. Sherlock Holmes was already at breakfast when I came
-down.
-
-"You will excuse me for not waiting for you," said he; "I have, I
-foresee, a very busy day before me in looking into this case of
-young Openshaw's."
-
-"What steps will you take?" I asked.
-
-"It will very much depend upon the results of my first inquiries.
-I may have to go down to Horsham, after all."
-
-"You will not go there first?"
-
-"No, I shall commence with the City. Just ring the bell and the
-maid will bring up your coffee."
-
-As I waited, I lifted the unopened newspaper from the table and
-glanced my eye over it. It rested upon a heading which sent a
-chill to my heart.
-
-"Holmes," I cried, "you are too late."
-
-"Ah!" said he, laying down his cup, "I feared as much. How was it
-done?" He spoke calmly, but I could see that he was deeply moved.
-
-"My eye caught the name of Openshaw, and the heading 'Tragedy
-Near Waterloo Bridge.' Here is the account:
-
-"Between nine and ten last night Police-Constable Cook, of the H
-Division, on duty near Waterloo Bridge, heard a cry for help and
-a splash in the water. The night, however, was extremely dark and
-stormy, so that, in spite of the help of several passers-by, it
-was quite impossible to effect a rescue. The alarm, however, was
-given, and, by the aid of the water-police, the body was
-eventually recovered. It proved to be that of a young gentleman
-whose name, as it appears from an envelope which was found in his
-pocket, was John Openshaw, and whose residence is near Horsham.
-It is conjectured that he may have been hurrying down to catch
-the last train from Waterloo Station, and that in his haste and
-the extreme darkness he missed his path and walked over the edge
-of one of the small landing-places for river steamboats. The body
-exhibited no traces of violence, and there can be no doubt that
-the deceased had been the victim of an unfortunate accident,
-which should have the effect of calling the attention of the
-authorities to the condition of the riverside landing-stages."
-
-We sat in silence for some minutes, Holmes more depressed and
-shaken than I had ever seen him.
-
-"That hurts my pride, Watson," he said at last. "It is a petty
-feeling, no doubt, but it hurts my pride. It becomes a personal
-matter with me now, and, if God sends me health, I shall set my
-hand upon this gang. That he should come to me for help, and that
-I should send him away to his death--!" He sprang from his chair
-and paced about the room in uncontrollable agitation, with a
-flush upon his sallow cheeks and a nervous clasping and
-unclasping of his long thin hands.
-
-"They must be cunning devils," he exclaimed at last. "How could
-they have decoyed him down there? The Embankment is not on the
-direct line to the station. The bridge, no doubt, was too
-crowded, even on such a night, for their purpose. Well, Watson,
-we shall see who will win in the long run. I am going out now!"
-
-"To the police?"
-
-"No; I shall be my own police. When I have spun the web they may
-take the flies, but not before."
-
-All day I was engaged in my professional work, and it was late in
-the evening before I returned to Baker Street. Sherlock Holmes
-had not come back yet. It was nearly ten o'clock before he
-entered, looking pale and worn. He walked up to the sideboard,
-and tearing a piece from the loaf he devoured it voraciously,
-washing it down with a long draught of water.
-
-"You are hungry," I remarked.
-
-"Starving. It had escaped my memory. I have had nothing since
-breakfast."
-
-"Nothing?"
-
-"Not a bite. I had no time to think of it."
-
-"And how have you succeeded?"
-
-"Well."
-
-"You have a clue?"
-
-"I have them in the hollow of my hand. Young Openshaw shall not
-long remain unavenged. Why, Watson, let us put their own devilish
-trade-mark upon them. It is well thought of!"
-
-"What do you mean?"
-
-He took an orange from the cupboard, and tearing it to pieces he
-squeezed out the pips upon the table. Of these he took five and
-thrust them into an envelope. On the inside of the flap he wrote
-"S. H. for J. O." Then he sealed it and addressed it to "Captain
-James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
-
-"That will await him when he enters port," said he, chuckling.
-"It may give him a sleepless night. He will find it as sure a
-precursor of his fate as Openshaw did before him."
-
-"And who is this Captain Calhoun?"
-
-"The leader of the gang. I shall have the others, but he first."
-
-"How did you trace it, then?"
-
-He took a large sheet of paper from his pocket, all covered with
-dates and names.
-
-"I have spent the whole day," said he, "over Lloyd's registers
-and files of the old papers, following the future career of every
-vessel which touched at Pondicherry in January and February in
-'83. There were thirty-six ships of fair tonnage which were
-reported there during those months. Of these, one, the 'Lone Star,'
-instantly attracted my attention, since, although it was reported
-as having cleared from London, the name is that which is given to
-one of the states of the Union."
-
-"Texas, I think."
-
-"I was not and am not sure which; but I knew that the ship must
-have an American origin."
-
-"What then?"
-
-"I searched the Dundee records, and when I found that the barque
-'Lone Star' was there in January, '85, my suspicion became a
-certainty. I then inquired as to the vessels which lay at present
-in the port of London."
-
-"Yes?"
-
-"The 'Lone Star' had arrived here last week. I went down to the
-Albert Dock and found that she had been taken down the river by
-the early tide this morning, homeward bound to Savannah. I wired
-to Gravesend and learned that she had passed some time ago, and
-as the wind is easterly I have no doubt that she is now past the
-Goodwins and not very far from the Isle of Wight."
-
-"What will you do, then?"
-
-"Oh, I have my hand upon him. He and the two mates, are as I
-learn, the only native-born Americans in the ship. The others are
-Finns and Germans. I know, also, that they were all three away
-from the ship last night. I had it from the stevedore who has
-been loading their cargo. By the time that their sailing-ship
-reaches Savannah the mail-boat will have carried this letter, and
-the cable will have informed the police of Savannah that these
-three gentlemen are badly wanted here upon a charge of murder."
-
-There is ever a flaw, however, in the best laid of human plans,
-and the murderers of John Openshaw were never to receive the
-orange pips which would show them that another, as cunning and as
-resolute as themselves, was upon their track. Very long and very
-severe were the equinoctial gales that year. We waited long for
-news of the "Lone Star" of Savannah, but none ever reached us. We
-did at last hear that somewhere far out in the Atlantic a
-shattered stern-post of a boat was seen swinging in the trough
-of a wave, with the letters "L. S." carved upon it, and that is
-all which we shall ever know of the fate of the "Lone Star."
-
-
-
-ADVENTURE VI. THE MAN WITH THE TWISTED LIP
-
-Isa Whitney, brother of the late Elias Whitney, D.D., Principal
-of the Theological College of St. George's, was much addicted to
-opium. The habit grew upon him, as I understand, from some
-foolish freak when he was at college; for having read De
-Quincey's description of his dreams and sensations, he had
-drenched his tobacco with laudanum in an attempt to produce the
-same effects. He found, as so many more have done, that the
-practice is easier to attain than to get rid of, and for many
-years he continued to be a slave to the drug, an object of
-mingled horror and pity to his friends and relatives. I can see
-him now, with yellow, pasty face, drooping lids, and pin-point
-pupils, all huddled in a chair, the wreck and ruin of a noble
-man.
-
-One night--it was in June, '89--there came a ring to my bell,
-about the hour when a man gives his first yawn and glances at the
-clock. I sat up in my chair, and my wife laid her needle-work
-down in her lap and made a little face of disappointment.
-
-"A patient!" said she. "You'll have to go out."
-
-I groaned, for I was newly come back from a weary day.
-
-We heard the door open, a few hurried words, and then quick steps
-upon the linoleum. Our own door flew open, and a lady, clad in
-some dark-coloured stuff, with a black veil, entered the room.
-
-"You will excuse my calling so late," she began, and then,
-suddenly losing her self-control, she ran forward, threw her arms
-about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
-such trouble!" she cried; "I do so want a little help."
-
-"Why," said my wife, pulling up her veil, "it is Kate Whitney.
-How you startled me, Kate! I had not an idea who you were when
-you came in."
-
-"I didn't know what to do, so I came straight to you." That was
-always the way. Folk who were in grief came to my wife like birds
-to a light-house.
-
-"It was very sweet of you to come. Now, you must have some wine
-and water, and sit here comfortably and tell us all about it. Or
-should you rather that I sent James off to bed?"
-
-"Oh, no, no! I want the doctor's advice and help, too. It's about
-Isa. He has not been home for two days. I am so frightened about
-him!"
-
-It was not the first time that she had spoken to us of her
-husband's trouble, to me as a doctor, to my wife as an old friend
-and school companion. We soothed and comforted her by such words
-as we could find. Did she know where her husband was? Was it
-possible that we could bring him back to her?
-
-It seems that it was. She had the surest information that of late
-he had, when the fit was on him, made use of an opium den in the
-farthest east of the City. Hitherto his orgies had always been
-confined to one day, and he had come back, twitching and
-shattered, in the evening. But now the spell had been upon him
-eight-and-forty hours, and he lay there, doubtless among the
-dregs of the docks, breathing in the poison or sleeping off the
-effects. There he was to be found, she was sure of it, at the Bar
-of Gold, in Upper Swandam Lane. But what was she to do? How could
-she, a young and timid woman, make her way into such a place and
-pluck her husband out from among the ruffians who surrounded him?
-
-There was the case, and of course there was but one way out of
-it. Might I not escort her to this place? And then, as a second
-thought, why should she come at all? I was Isa Whitney's medical
-adviser, and as such I had influence over him. I could manage it
-better if I were alone. I promised her on my word that I would
-send him home in a cab within two hours if he were indeed at the
-address which she had given me. And so in ten minutes I had left
-my armchair and cheery sitting-room behind me, and was speeding
-eastward in a hansom on a strange errand, as it seemed to me at
-the time, though the future only could show how strange it was to
-be.
-
-But there was no great difficulty in the first stage of my
-adventure. Upper Swandam Lane is a vile alley lurking behind the
-high wharves which line the north side of the river to the east
-of London Bridge. Between a slop-shop and a gin-shop, approached
-by a steep flight of steps leading down to a black gap like the
-mouth of a cave, I found the den of which I was in search.
-Ordering my cab to wait, I passed down the steps, worn hollow in
-the centre by the ceaseless tread of drunken feet; and by the
-light of a flickering oil-lamp above the door I found the latch
-and made my way into a long, low room, thick and heavy with the
-brown opium smoke, and terraced with wooden berths, like the
-forecastle of an emigrant ship.
-
-Through the gloom one could dimly catch a glimpse of bodies lying
-in strange fantastic poses, bowed shoulders, bent knees, heads
-thrown back, and chins pointing upward, with here and there a
-dark, lack-lustre eye turned upon the newcomer. Out of the black
-shadows there glimmered little red circles of light, now bright,
-now faint, as the burning poison waxed or waned in the bowls of
-the metal pipes. The most lay silent, but some muttered to
-themselves, and others talked together in a strange, low,
-monotonous voice, their conversation coming in gushes, and then
-suddenly tailing off into silence, each mumbling out his own
-thoughts and paying little heed to the words of his neighbour. At
-the farther end was a small brazier of burning charcoal, beside
-which on a three-legged wooden stool there sat a tall, thin old
-man, with his jaw resting upon his two fists, and his elbows upon
-his knees, staring into the fire.
-
-As I entered, a sallow Malay attendant had hurried up with a pipe
-for me and a supply of the drug, beckoning me to an empty berth.
-
-"Thank you. I have not come to stay," said I. "There is a friend
-of mine here, Mr. Isa Whitney, and I wish to speak with him."
-
-There was a movement and an exclamation from my right, and
-peering through the gloom, I saw Whitney, pale, haggard, and
-unkempt, staring out at me.
-
-"My God! It's Watson," said he. He was in a pitiable state of
-reaction, with every nerve in a twitter. "I say, Watson, what
-o'clock is it?"
-
-"Nearly eleven."
-
-"Of what day?"
-
-"Of Friday, June 19th."
-
-"Good heavens! I thought it was Wednesday. It is Wednesday. What
-d'you want to frighten a chap for?" He sank his face onto his
-arms and began to sob in a high treble key.
-
-"I tell you that it is Friday, man. Your wife has been waiting
-this two days for you. You should be ashamed of yourself!"
-
-"So I am. But you've got mixed, Watson, for I have only been here
-a few hours, three pipes, four pipes--I forget how many. But I'll
-go home with you. I wouldn't frighten Kate--poor little Kate.
-Give me your hand! Have you a cab?"
-
-"Yes, I have one waiting."
-
-"Then I shall go in it. But I must owe something. Find what I
-owe, Watson. I am all off colour. I can do nothing for myself."
-
-I walked down the narrow passage between the double row of
-sleepers, holding my breath to keep out the vile, stupefying
-fumes of the drug, and looking about for the manager. As I passed
-the tall man who sat by the brazier I felt a sudden pluck at my
-skirt, and a low voice whispered, "Walk past me, and then look
-back at me." The words fell quite distinctly upon my ear. I
-glanced down. They could only have come from the old man at my
-side, and yet he sat now as absorbed as ever, very thin, very
-wrinkled, bent with age, an opium pipe dangling down from between
-his knees, as though it had dropped in sheer lassitude from his
-fingers. I took two steps forward and looked back. It took all my
-self-control to prevent me from breaking out into a cry of
-astonishment. He had turned his back so that none could see him
-but I. His form had filled out, his wrinkles were gone, the dull
-eyes had regained their fire, and there, sitting by the fire and
-grinning at my surprise, was none other than Sherlock Holmes. He
-made a slight motion to me to approach him, and instantly, as he
-turned his face half round to the company once more, subsided
-into a doddering, loose-lipped senility.
-
-"Holmes!" I whispered, "what on earth are you doing in this den?"
-
-"As low as you can," he answered; "I have excellent ears. If you
-would have the great kindness to get rid of that sottish friend
-of yours I should be exceedingly glad to have a little talk with
-you."
-
-"I have a cab outside."
-
-"Then pray send him home in it. You may safely trust him, for he
-appears to be too limp to get into any mischief. I should
-recommend you also to send a note by the cabman to your wife to
-say that you have thrown in your lot with me. If you will wait
-outside, I shall be with you in five minutes."
-
-It was difficult to refuse any of Sherlock Holmes' requests, for
-they were always so exceedingly definite, and put forward with
-such a quiet air of mastery. I felt, however, that when Whitney
-was once confined in the cab my mission was practically
-accomplished; and for the rest, I could not wish anything better
-than to be associated with my friend in one of those singular
-adventures which were the normal condition of his existence. In a
-few minutes I had written my note, paid Whitney's bill, led him
-out to the cab, and seen him driven through the darkness. In a
-very short time a decrepit figure had emerged from the opium den,
-and I was walking down the street with Sherlock Holmes. For two
-streets he shuffled along with a bent back and an uncertain foot.
-Then, glancing quickly round, he straightened himself out and
-burst into a hearty fit of laughter.
-
-"I suppose, Watson," said he, "that you imagine that I have added
-opium-smoking to cocaine injections, and all the other little
-weaknesses on which you have favoured me with your medical
-views."
-
-"I was certainly surprised to find you there."
-
-"But not more so than I to find you."
-
-"I came to find a friend."
-
-"And I to find an enemy."
-
-"An enemy?"
-
-"Yes; one of my natural enemies, or, shall I say, my natural
-prey. Briefly, Watson, I am in the midst of a very remarkable
-inquiry, and I have hoped to find a clue in the incoherent
-ramblings of these sots, as I have done before now. Had I been
-recognised in that den my life would not have been worth an
-hour's purchase; for I have used it before now for my own
-purposes, and the rascally Lascar who runs it has sworn to have
-vengeance upon me. There is a trap-door at the back of that
-building, near the corner of Paul's Wharf, which could tell some
-strange tales of what has passed through it upon the moonless
-nights."
-
-"What! You do not mean bodies?"
-
-"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
-for every poor devil who has been done to death in that den. It
-is the vilest murder-trap on the whole riverside, and I fear that
-Neville St. Clair has entered it never to leave it more. But our
-trap should be here." He put his two forefingers between his
-teeth and whistled shrilly--a signal which was answered by a
-similar whistle from the distance, followed shortly by the rattle
-of wheels and the clink of horses' hoofs.
-
-"Now, Watson," said Holmes, as a tall dog-cart dashed up through
-the gloom, throwing out two golden tunnels of yellow light from
-its side lanterns. "You'll come with me, won't you?"
-
-"If I can be of use."
-
-"Oh, a trusty comrade is always of use; and a chronicler still
-more so. My room at The Cedars is a double-bedded one."
-
-"The Cedars?"
-
-"Yes; that is Mr. St. Clair's house. I am staying there while I
-conduct the inquiry."
-
-"Where is it, then?"
-
-"Near Lee, in Kent. We have a seven-mile drive before us."
-
-"But I am all in the dark."
-
-"Of course you are. You'll know all about it presently. Jump up
-here. All right, John; we shall not need you. Here's half a
-crown. Look out for me to-morrow, about eleven. Give her her
-head. So long, then!"
-
-He flicked the horse with his whip, and we dashed away through
-the endless succession of sombre and deserted streets, which
-widened gradually, until we were flying across a broad
-balustraded bridge, with the murky river flowing sluggishly
-beneath us. Beyond lay another dull wilderness of bricks and
-mortar, its silence broken only by the heavy, regular footfall of
-the policeman, or the songs and shouts of some belated party of
-revellers. A dull wrack was drifting slowly across the sky, and a
-star or two twinkled dimly here and there through the rifts of
-the clouds. Holmes drove in silence, with his head sunk upon his
-breast, and the air of a man who is lost in thought, while I sat
-beside him, curious to learn what this new quest might be which
-seemed to tax his powers so sorely, and yet afraid to break in
-upon the current of his thoughts. We had driven several miles,
-and were beginning to get to the fringe of the belt of suburban
-villas, when he shook himself, shrugged his shoulders, and lit up
-his pipe with the air of a man who has satisfied himself that he
-is acting for the best.
-
-"You have a grand gift of silence, Watson," said he. "It makes
-you quite invaluable as a companion. 'Pon my word, it is a great
-thing for me to have someone to talk to, for my own thoughts are
-not over-pleasant. I was wondering what I should say to this dear
-little woman to-night when she meets me at the door."
-
-"You forget that I know nothing about it."
-
-"I shall just have time to tell you the facts of the case before
-we get to Lee. It seems absurdly simple, and yet, somehow I can
-get nothing to go upon. There's plenty of thread, no doubt, but I
-can't get the end of it into my hand. Now, I'll state the case
-clearly and concisely to you, Watson, and maybe you can see a
-spark where all is dark to me."
-
-"Proceed, then."
-
-"Some years ago--to be definite, in May, 1884--there came to Lee
-a gentleman, Neville St. Clair by name, who appeared to have
-plenty of money. He took a large villa, laid out the grounds very
-nicely, and lived generally in good style. By degrees he made
-friends in the neighbourhood, and in 1887 he married the daughter
-of a local brewer, by whom he now has two children. He had no
-occupation, but was interested in several companies and went into
-town as a rule in the morning, returning by the 5:14 from Cannon
-Street every night. Mr. St. Clair is now thirty-seven years of
-age, is a man of temperate habits, a good husband, a very
-affectionate father, and a man who is popular with all who know
-him. I may add that his whole debts at the present moment, as far
-as we have been able to ascertain, amount to 88 pounds 10s., while
-he has 220 pounds standing to his credit in the Capital and
-Counties Bank. There is no reason, therefore, to think that money
-troubles have been weighing upon his mind.
-
-"Last Monday Mr. Neville St. Clair went into town rather earlier
-than usual, remarking before he started that he had two important
-commissions to perform, and that he would bring his little boy
-home a box of bricks. Now, by the merest chance, his wife
-received a telegram upon this same Monday, very shortly after his
-departure, to the effect that a small parcel of considerable
-value which she had been expecting was waiting for her at the
-offices of the Aberdeen Shipping Company. Now, if you are well up
-in your London, you will know that the office of the company is
-in Fresno Street, which branches out of Upper Swandam Lane, where
-you found me to-night. Mrs. St. Clair had her lunch, started for
-the City, did some shopping, proceeded to the company's office,
-got her packet, and found herself at exactly 4:35 walking through
-Swandam Lane on her way back to the station. Have you followed me
-so far?"
-
-"It is very clear."
-
-"If you remember, Monday was an exceedingly hot day, and Mrs. St.
-Clair walked slowly, glancing about in the hope of seeing a cab,
-as she did not like the neighbourhood in which she found herself.
-While she was walking in this way down Swandam Lane, she suddenly
-heard an ejaculation or cry, and was struck cold to see her
-husband looking down at her and, as it seemed to her, beckoning
-to her from a second-floor window. The window was open, and she
-distinctly saw his face, which she describes as being terribly
-agitated. He waved his hands frantically to her, and then
-vanished from the window so suddenly that it seemed to her that
-he had been plucked back by some irresistible force from behind.
-One singular point which struck her quick feminine eye was that
-although he wore some dark coat, such as he had started to town
-in, he had on neither collar nor necktie.
-
-"Convinced that something was amiss with him, she rushed down the
-steps--for the house was none other than the opium den in which
-you found me to-night--and running through the front room she
-attempted to ascend the stairs which led to the first floor. At
-the foot of the stairs, however, she met this Lascar scoundrel of
-whom I have spoken, who thrust her back and, aided by a Dane, who
-acts as assistant there, pushed her out into the street. Filled
-with the most maddening doubts and fears, she rushed down the
-lane and, by rare good-fortune, met in Fresno Street a number of
-constables with an inspector, all on their way to their beat. The
-inspector and two men accompanied her back, and in spite of the
-continued resistance of the proprietor, they made their way to
-the room in which Mr. St. Clair had last been seen. There was no
-sign of him there. In fact, in the whole of that floor there was
-no one to be found save a crippled wretch of hideous aspect, who,
-it seems, made his home there. Both he and the Lascar stoutly
-swore that no one else had been in the front room during the
-afternoon. So determined was their denial that the inspector was
-staggered, and had almost come to believe that Mrs. St. Clair had
-been deluded when, with a cry, she sprang at a small deal box
-which lay upon the table and tore the lid from it. Out there fell
-a cascade of children's bricks. It was the toy which he had
-promised to bring home.
-
-"This discovery, and the evident confusion which the cripple
-showed, made the inspector realise that the matter was serious.
-The rooms were carefully examined, and results all pointed to an
-abominable crime. The front room was plainly furnished as a
-sitting-room and led into a small bedroom, which looked out upon
-the back of one of the wharves. Between the wharf and the bedroom
-window is a narrow strip, which is dry at low tide but is covered
-at high tide with at least four and a half feet of water. The
-bedroom window was a broad one and opened from below. On
-examination traces of blood were to be seen upon the windowsill,
-and several scattered drops were visible upon the wooden floor of
-the bedroom. Thrust away behind a curtain in the front room were
-all the clothes of Mr. Neville St. Clair, with the exception of
-his coat. His boots, his socks, his hat, and his watch--all were
-there. There were no signs of violence upon any of these
-garments, and there were no other traces of Mr. Neville St.
-Clair. Out of the window he must apparently have gone for no
-other exit could be discovered, and the ominous bloodstains upon
-the sill gave little promise that he could save himself by
-swimming, for the tide was at its very highest at the moment of
-the tragedy.
-
-"And now as to the villains who seemed to be immediately
-implicated in the matter. The Lascar was known to be a man of the
-vilest antecedents, but as, by Mrs. St. Clair's story, he was
-known to have been at the foot of the stair within a very few
-seconds of her husband's appearance at the window, he could
-hardly have been more than an accessory to the crime. His defence
-was one of absolute ignorance, and he protested that he had no
-knowledge as to the doings of Hugh Boone, his lodger, and that he
-could not account in any way for the presence of the missing
-gentleman's clothes.
-
-"So much for the Lascar manager. Now for the sinister cripple who
-lives upon the second floor of the opium den, and who was
-certainly the last human being whose eyes rested upon Neville St.
-Clair. His name is Hugh Boone, and his hideous face is one which
-is familiar to every man who goes much to the City. He is a
-professional beggar, though in order to avoid the police
-regulations he pretends to a small trade in wax vestas. Some
-little distance down Threadneedle Street, upon the left-hand
-side, there is, as you may have remarked, a small angle in the
-wall. Here it is that this creature takes his daily seat,
-cross-legged with his tiny stock of matches on his lap, and as he
-is a piteous spectacle a small rain of charity descends into the
-greasy leather cap which lies upon the pavement beside him. I
-have watched the fellow more than once before ever I thought of
-making his professional acquaintance, and I have been surprised
-at the harvest which he has reaped in a short time. His
-appearance, you see, is so remarkable that no one can pass him
-without observing him. A shock of orange hair, a pale face
-disfigured by a horrible scar, which, by its contraction, has
-turned up the outer edge of his upper lip, a bulldog chin, and a
-pair of very penetrating dark eyes, which present a singular
-contrast to the colour of his hair, all mark him out from amid
-the common crowd of mendicants and so, too, does his wit, for he
-is ever ready with a reply to any piece of chaff which may be
-thrown at him by the passers-by. This is the man whom we now
-learn to have been the lodger at the opium den, and to have been
-the last man to see the gentleman of whom we are in quest."
-
-"But a cripple!" said I. "What could he have done single-handed
-against a man in the prime of life?"
-
-"He is a cripple in the sense that he walks with a limp; but in
-other respects he appears to be a powerful and well-nurtured man.
-Surely your medical experience would tell you, Watson, that
-weakness in one limb is often compensated for by exceptional
-strength in the others."
-
-"Pray continue your narrative."
-
-"Mrs. St. Clair had fainted at the sight of the blood upon the
-window, and she was escorted home in a cab by the police, as her
-presence could be of no help to them in their investigations.
-Inspector Barton, who had charge of the case, made a very careful
-examination of the premises, but without finding anything which
-threw any light upon the matter. One mistake had been made in not
-arresting Boone instantly, as he was allowed some few minutes
-during which he might have communicated with his friend the
-Lascar, but this fault was soon remedied, and he was seized and
-searched, without anything being found which could incriminate
-him. There were, it is true, some blood-stains upon his right
-shirt-sleeve, but he pointed to his ring-finger, which had been
-cut near the nail, and explained that the bleeding came from
-there, adding that he had been to the window not long before, and
-that the stains which had been observed there came doubtless from
-the same source. He denied strenuously having ever seen Mr.
-Neville St. Clair and swore that the presence of the clothes in
-his room was as much a mystery to him as to the police. As to
-Mrs. St. Clair's assertion that she had actually seen her husband
-at the window, he declared that she must have been either mad or
-dreaming. He was removed, loudly protesting, to the
-police-station, while the inspector remained upon the premises in
-the hope that the ebbing tide might afford some fresh clue.
-
-"And it did, though they hardly found upon the mud-bank what they
-had feared to find. It was Neville St. Clair's coat, and not
-Neville St. Clair, which lay uncovered as the tide receded. And
-what do you think they found in the pockets?"
-
-"I cannot imagine."
-
-"No, I don't think you would guess. Every pocket stuffed with
-pennies and half-pennies--421 pennies and 270 half-pennies. It
-was no wonder that it had not been swept away by the tide. But a
-human body is a different matter. There is a fierce eddy between
-the wharf and the house. It seemed likely enough that the
-weighted coat had remained when the stripped body had been sucked
-away into the river."
-
-"But I understand that all the other clothes were found in the
-room. Would the body be dressed in a coat alone?"
-
-"No, sir, but the facts might be met speciously enough. Suppose
-that this man Boone had thrust Neville St. Clair through the
-window, there is no human eye which could have seen the deed.
-What would he do then? It would of course instantly strike him
-that he must get rid of the tell-tale garments. He would seize
-the coat, then, and be in the act of throwing it out, when it
-would occur to him that it would swim and not sink. He has little
-time, for he has heard the scuffle downstairs when the wife tried
-to force her way up, and perhaps he has already heard from his
-Lascar confederate that the police are hurrying up the street.
-There is not an instant to be lost. He rushes to some secret
-hoard, where he has accumulated the fruits of his beggary, and he
-stuffs all the coins upon which he can lay his hands into the
-pockets to make sure of the coat's sinking. He throws it out, and
-would have done the same with the other garments had not he heard
-the rush of steps below, and only just had time to close the
-window when the police appeared."
-
-"It certainly sounds feasible."
-
-"Well, we will take it as a working hypothesis for want of a
-better. Boone, as I have told you, was arrested and taken to the
-station, but it could not be shown that there had ever before
-been anything against him. He had for years been known as a
-professional beggar, but his life appeared to have been a very
-quiet and innocent one. There the matter stands at present, and
-the questions which have to be solved--what Neville St. Clair was
-doing in the opium den, what happened to him when there, where is
-he now, and what Hugh Boone had to do with his disappearance--are
-all as far from a solution as ever. I confess that I cannot
-recall any case within my experience which looked at the first
-glance so simple and yet which presented such difficulties."
-
-While Sherlock Holmes had been detailing this singular series of
-events, we had been whirling through the outskirts of the great
-town until the last straggling houses had been left behind, and
-we rattled along with a country hedge upon either side of us.
-Just as he finished, however, we drove through two scattered
-villages, where a few lights still glimmered in the windows.
-
-"We are on the outskirts of Lee," said my companion. "We have
-touched on three English counties in our short drive, starting in
-Middlesex, passing over an angle of Surrey, and ending in Kent.
-See that light among the trees? That is The Cedars, and beside
-that lamp sits a woman whose anxious ears have already, I have
-little doubt, caught the clink of our horse's feet."
-
-"But why are you not conducting the case from Baker Street?" I
-asked.
-
-"Because there are many inquiries which must be made out here.
-Mrs. St. Clair has most kindly put two rooms at my disposal, and
-you may rest assured that she will have nothing but a welcome for
-my friend and colleague. I hate to meet her, Watson, when I have
-no news of her husband. Here we are. Whoa, there, whoa!"
-
-We had pulled up in front of a large villa which stood within its
-own grounds. A stable-boy had run out to the horse's head, and
-springing down, I followed Holmes up the small, winding
-gravel-drive which led to the house. As we approached, the door
-flew open, and a little blonde woman stood in the opening, clad
-in some sort of light mousseline de soie, with a touch of fluffy
-pink chiffon at her neck and wrists. She stood with her figure
-outlined against the flood of light, one hand upon the door, one
-half-raised in her eagerness, her body slightly bent, her head
-and face protruded, with eager eyes and parted lips, a standing
-question.
-
-"Well?" she cried, "well?" And then, seeing that there were two
-of us, she gave a cry of hope which sank into a groan as she saw
-that my companion shook his head and shrugged his shoulders.
-
-"No good news?"
-
-"None."
-
-"No bad?"
-
-"No."
-
-"Thank God for that. But come in. You must be weary, for you have
-had a long day."
-
-"This is my friend, Dr. Watson. He has been of most vital use to
-me in several of my cases, and a lucky chance has made it
-possible for me to bring him out and associate him with this
-investigation."
-
-"I am delighted to see you," said she, pressing my hand warmly.
-"You will, I am sure, forgive anything that may be wanting in our
-arrangements, when you consider the blow which has come so
-suddenly upon us."
-
-"My dear madam," said I, "I am an old campaigner, and if I were
-not I can very well see that no apology is needed. If I can be of
-any assistance, either to you or to my friend here, I shall be
-indeed happy."
-
-"Now, Mr. Sherlock Holmes," said the lady as we entered a
-well-lit dining-room, upon the table of which a cold supper had
-been laid out, "I should very much like to ask you one or two
-plain questions, to which I beg that you will give a plain
-answer."
-
-"Certainly, madam."
-
-"Do not trouble about my feelings. I am not hysterical, nor given
-to fainting. I simply wish to hear your real, real opinion."
-
-"Upon what point?"
-
-"In your heart of hearts, do you think that Neville is alive?"
-
-Sherlock Holmes seemed to be embarrassed by the question.
-"Frankly, now!" she repeated, standing upon the rug and looking
-keenly down at him as he leaned back in a basket-chair.
-
-"Frankly, then, madam, I do not."
-
-"You think that he is dead?"
-
-"I do."
-
-"Murdered?"
-
-"I don't say that. Perhaps."
-
-"And on what day did he meet his death?"
-
-"On Monday."
-
-"Then perhaps, Mr. Holmes, you will be good enough to explain how
-it is that I have received a letter from him to-day."
-
-Sherlock Holmes sprang out of his chair as if he had been
-galvanised.
-
-"What!" he roared.
-
-"Yes, to-day." She stood smiling, holding up a little slip of
-paper in the air.
-
-"May I see it?"
-
-"Certainly."
-
-He snatched it from her in his eagerness, and smoothing it out
-upon the table he drew over the lamp and examined it intently. I
-had left my chair and was gazing at it over his shoulder. The
-envelope was a very coarse one and was stamped with the Gravesend
-postmark and with the date of that very day, or rather of the day
-before, for it was considerably after midnight.
-
-"Coarse writing," murmured Holmes. "Surely this is not your
-husband's writing, madam."
-
-"No, but the enclosure is."
-
-"I perceive also that whoever addressed the envelope had to go
-and inquire as to the address."
-
-"How can you tell that?"
-
-"The name, you see, is in perfectly black ink, which has dried
-itself. The rest is of the greyish colour, which shows that
-blotting-paper has been used. If it had been written straight
-off, and then blotted, none would be of a deep black shade. This
-man has written the name, and there has then been a pause before
-he wrote the address, which can only mean that he was not
-familiar with it. It is, of course, a trifle, but there is
-nothing so important as trifles. Let us now see the letter. Ha!
-there has been an enclosure here!"
-
-"Yes, there was a ring. His signet-ring."
-
-"And you are sure that this is your husband's hand?"
-
-"One of his hands."
-
-"One?"
-
-"His hand when he wrote hurriedly. It is very unlike his usual
-writing, and yet I know it well."
-
-"'Dearest do not be frightened. All will come well. There is a
-huge error which it may take some little time to rectify.
-Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
-of a book, octavo size, no water-mark. Hum! Posted to-day in
-Gravesend by a man with a dirty thumb. Ha! And the flap has been
-gummed, if I am not very much in error, by a person who had been
-chewing tobacco. And you have no doubt that it is your husband's
-hand, madam?"
-
-"None. Neville wrote those words."
-
-"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
-the clouds lighten, though I should not venture to say that the
-danger is over."
-
-"But he must be alive, Mr. Holmes."
-
-"Unless this is a clever forgery to put us on the wrong scent.
-The ring, after all, proves nothing. It may have been taken from
-him."
-
-"No, no; it is, it is his very own writing!"
-
-"Very well. It may, however, have been written on Monday and only
-posted to-day."
-
-"That is possible."
-
-"If so, much may have happened between."
-
-"Oh, you must not discourage me, Mr. Holmes. I know that all is
-well with him. There is so keen a sympathy between us that I
-should know if evil came upon him. On the very day that I saw him
-last he cut himself in the bedroom, and yet I in the dining-room
-rushed upstairs instantly with the utmost certainty that
-something had happened. Do you think that I would respond to such
-a trifle and yet be ignorant of his death?"
-
-"I have seen too much not to know that the impression of a woman
-may be more valuable than the conclusion of an analytical
-reasoner. And in this letter you certainly have a very strong
-piece of evidence to corroborate your view. But if your husband
-is alive and able to write letters, why should he remain away
-from you?"
-
-"I cannot imagine. It is unthinkable."
-
-"And on Monday he made no remarks before leaving you?"
-
-"No."
-
-"And you were surprised to see him in Swandam Lane?"
-
-"Very much so."
-
-"Was the window open?"
-
-"Yes."
-
-"Then he might have called to you?"
-
-"He might."
-
-"He only, as I understand, gave an inarticulate cry?"
-
-"Yes."
-
-"A call for help, you thought?"
-
-"Yes. He waved his hands."
-
-"But it might have been a cry of surprise. Astonishment at the
-unexpected sight of you might cause him to throw up his hands?"
-
-"It is possible."
-
-"And you thought he was pulled back?"
-
-"He disappeared so suddenly."
-
-"He might have leaped back. You did not see anyone else in the
-room?"
-
-"No, but this horrible man confessed to having been there, and
-the Lascar was at the foot of the stairs."
-
-"Quite so. Your husband, as far as you could see, had his
-ordinary clothes on?"
-
-"But without his collar or tie. I distinctly saw his bare
-throat."
-
-"Had he ever spoken of Swandam Lane?"
-
-"Never."
-
-"Had he ever showed any signs of having taken opium?"
-
-"Never."
-
-"Thank you, Mrs. St. Clair. Those are the principal points about
-which I wished to be absolutely clear. We shall now have a little
-supper and then retire, for we may have a very busy day
-to-morrow."
-
-A large and comfortable double-bedded room had been placed at our
-disposal, and I was quickly between the sheets, for I was weary
-after my night of adventure. Sherlock Holmes was a man, however,
-who, when he had an unsolved problem upon his mind, would go for
-days, and even for a week, without rest, turning it over,
-rearranging his facts, looking at it from every point of view
-until he had either fathomed it or convinced himself that his
-data were insufficient. It was soon evident to me that he was now
-preparing for an all-night sitting. He took off his coat and
-waistcoat, put on a large blue dressing-gown, and then wandered
-about the room collecting pillows from his bed and cushions from
-the sofa and armchairs. With these he constructed a sort of
-Eastern divan, upon which he perched himself cross-legged, with
-an ounce of shag tobacco and a box of matches laid out in front
-of him. In the dim light of the lamp I saw him sitting there, an
-old briar pipe between his lips, his eyes fixed vacantly upon the
-corner of the ceiling, the blue smoke curling up from him,
-silent, motionless, with the light shining upon his strong-set
-aquiline features. So he sat as I dropped off to sleep, and so he
-sat when a sudden ejaculation caused me to wake up, and I found
-the summer sun shining into the apartment. The pipe was still
-between his lips, the smoke still curled upward, and the room was
-full of a dense tobacco haze, but nothing remained of the heap of
-shag which I had seen upon the previous night.
-
-"Awake, Watson?" he asked.
-
-"Yes."
-
-"Game for a morning drive?"
-
-"Certainly."
-
-"Then dress. No one is stirring yet, but I know where the
-stable-boy sleeps, and we shall soon have the trap out." He
-chuckled to himself as he spoke, his eyes twinkled, and he seemed
-a different man to the sombre thinker of the previous night.
-
-As I dressed I glanced at my watch. It was no wonder that no one
-was stirring. It was twenty-five minutes past four. I had hardly
-finished when Holmes returned with the news that the boy was
-putting in the horse.
-
-"I want to test a little theory of mine," said he, pulling on his
-boots. "I think, Watson, that you are now standing in the
-presence of one of the most absolute fools in Europe. I deserve
-to be kicked from here to Charing Cross. But I think I have the
-key of the affair now."
-
-"And where is it?" I asked, smiling.
-
-"In the bathroom," he answered. "Oh, yes, I am not joking," he
-continued, seeing my look of incredulity. "I have just been
-there, and I have taken it out, and I have got it in this
-Gladstone bag. Come on, my boy, and we shall see whether it will
-not fit the lock."
-
-We made our way downstairs as quietly as possible, and out into
-the bright morning sunshine. In the road stood our horse and
-trap, with the half-clad stable-boy waiting at the head. We both
-sprang in, and away we dashed down the London Road. A few country
-carts were stirring, bearing in vegetables to the metropolis, but
-the lines of villas on either side were as silent and lifeless as
-some city in a dream.
-
-"It has been in some points a singular case," said Holmes,
-flicking the horse on into a gallop. "I confess that I have been
-as blind as a mole, but it is better to learn wisdom late than
-never to learn it at all."
-
-In town the earliest risers were just beginning to look sleepily
-from their windows as we drove through the streets of the Surrey
-side. Passing down the Waterloo Bridge Road we crossed over the
-river, and dashing up Wellington Street wheeled sharply to the
-right and found ourselves in Bow Street. Sherlock Holmes was well
-known to the force, and the two constables at the door saluted
-him. One of them held the horse's head while the other led us in.
-
-"Who is on duty?" asked Holmes.
-
-"Inspector Bradstreet, sir."
-
-"Ah, Bradstreet, how are you?" A tall, stout official had come
-down the stone-flagged passage, in a peaked cap and frogged
-jacket. "I wish to have a quiet word with you, Bradstreet."
-"Certainly, Mr. Holmes. Step into my room here." It was a small,
-office-like room, with a huge ledger upon the table, and a
-telephone projecting from the wall. The inspector sat down at his
-desk.
-
-"What can I do for you, Mr. Holmes?"
-
-"I called about that beggarman, Boone--the one who was charged
-with being concerned in the disappearance of Mr. Neville St.
-Clair, of Lee."
-
-"Yes. He was brought up and remanded for further inquiries."
-
-"So I heard. You have him here?"
-
-"In the cells."
-
-"Is he quiet?"
-
-"Oh, he gives no trouble. But he is a dirty scoundrel."
-
-"Dirty?"
-
-"Yes, it is all we can do to make him wash his hands, and his
-face is as black as a tinker's. Well, when once his case has been
-settled, he will have a regular prison bath; and I think, if you
-saw him, you would agree with me that he needed it."
-
-"I should like to see him very much."
-
-"Would you? That is easily done. Come this way. You can leave
-your bag."
-
-"No, I think that I'll take it."
-
-"Very good. Come this way, if you please." He led us down a
-passage, opened a barred door, passed down a winding stair, and
-brought us to a whitewashed corridor with a line of doors on each
-side.
-
-"The third on the right is his," said the inspector. "Here it
-is!" He quietly shot back a panel in the upper part of the door
-and glanced through.
-
-"He is asleep," said he. "You can see him very well."
-
-We both put our eyes to the grating. The prisoner lay with his
-face towards us, in a very deep sleep, breathing slowly and
-heavily. He was a middle-sized man, coarsely clad as became his
-calling, with a coloured shirt protruding through the rent in his
-tattered coat. He was, as the inspector had said, extremely
-dirty, but the grime which covered his face could not conceal its
-repulsive ugliness. A broad wheal from an old scar ran right
-across it from eye to chin, and by its contraction had turned up
-one side of the upper lip, so that three teeth were exposed in a
-perpetual snarl. A shock of very bright red hair grew low over
-his eyes and forehead.
-
-"He's a beauty, isn't he?" said the inspector.
-
-"He certainly needs a wash," remarked Holmes. "I had an idea that
-he might, and I took the liberty of bringing the tools with me."
-He opened the Gladstone bag as he spoke, and took out, to my
-astonishment, a very large bath-sponge.
-
-"He! he! You are a funny one," chuckled the inspector.
-
-"Now, if you will have the great goodness to open that door very
-quietly, we will soon make him cut a much more respectable
-figure."
-
-"Well, I don't know why not," said the inspector. "He doesn't
-look a credit to the Bow Street cells, does he?" He slipped his
-key into the lock, and we all very quietly entered the cell. The
-sleeper half turned, and then settled down once more into a deep
-slumber. Holmes stooped to the water-jug, moistened his sponge,
-and then rubbed it twice vigorously across and down the
-prisoner's face.
-
-"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
-Lee, in the county of Kent."
-
-Never in my life have I seen such a sight. The man's face peeled
-off under the sponge like the bark from a tree. Gone was the
-coarse brown tint! Gone, too, was the horrid scar which had
-seamed it across, and the twisted lip which had given the
-repulsive sneer to the face! A twitch brought away the tangled
-red hair, and there, sitting up in his bed, was a pale,
-sad-faced, refined-looking man, black-haired and smooth-skinned,
-rubbing his eyes and staring about him with sleepy bewilderment.
-Then suddenly realising the exposure, he broke into a scream and
-threw himself down with his face to the pillow.
-
-"Great heavens!" cried the inspector, "it is, indeed, the missing
-man. I know him from the photograph."
-
-The prisoner turned with the reckless air of a man who abandons
-himself to his destiny. "Be it so," said he. "And pray what am I
-charged with?"
-
-"With making away with Mr. Neville St.-- Oh, come, you can't be
-charged with that unless they make a case of attempted suicide of
-it," said the inspector with a grin. "Well, I have been
-twenty-seven years in the force, but this really takes the cake."
-
-"If I am Mr. Neville St. Clair, then it is obvious that no crime
-has been committed, and that, therefore, I am illegally
-detained."
-
-"No crime, but a very great error has been committed," said
-Holmes. "You would have done better to have trusted your wife."
-
-"It was not the wife; it was the children," groaned the prisoner.
-"God help me, I would not have them ashamed of their father. My
-God! What an exposure! What can I do?"
-
-Sherlock Holmes sat down beside him on the couch and patted him
-kindly on the shoulder.
-
-"If you leave it to a court of law to clear the matter up," said
-he, "of course you can hardly avoid publicity. On the other hand,
-if you convince the police authorities that there is no possible
-case against you, I do not know that there is any reason that the
-details should find their way into the papers. Inspector
-Bradstreet would, I am sure, make notes upon anything which you
-might tell us and submit it to the proper authorities. The case
-would then never go into court at all."
-
-"God bless you!" cried the prisoner passionately. "I would have
-endured imprisonment, ay, even execution, rather than have left
-my miserable secret as a family blot to my children.
-
-"You are the first who have ever heard my story. My father was a
-schoolmaster in Chesterfield, where I received an excellent
-education. I travelled in my youth, took to the stage, and
-finally became a reporter on an evening paper in London. One day
-my editor wished to have a series of articles upon begging in the
-metropolis, and I volunteered to supply them. There was the point
-from which all my adventures started. It was only by trying
-begging as an amateur that I could get the facts upon which to
-base my articles. When an actor I had, of course, learned all the
-secrets of making up, and had been famous in the green-room for
-my skill. I took advantage now of my attainments. I painted my
-face, and to make myself as pitiable as possible I made a good
-scar and fixed one side of my lip in a twist by the aid of a
-small slip of flesh-coloured plaster. Then with a red head of
-hair, and an appropriate dress, I took my station in the business
-part of the city, ostensibly as a match-seller but really as a
-beggar. For seven hours I plied my trade, and when I returned
-home in the evening I found to my surprise that I had received no
-less than 26s. 4d.
-
-"I wrote my articles and thought little more of the matter until,
-some time later, I backed a bill for a friend and had a writ
-served upon me for 25 pounds. I was at my wit's end where to get
-the money, but a sudden idea came to me. I begged a fortnight's
-grace from the creditor, asked for a holiday from my employers,
-and spent the time in begging in the City under my disguise. In
-ten days I had the money and had paid the debt.
-
-"Well, you can imagine how hard it was to settle down to arduous
-work at 2 pounds a week when I knew that I could earn as much in
-a day by smearing my face with a little paint, laying my cap on
-the ground, and sitting still. It was a long fight between my
-pride and the money, but the dollars won at last, and I threw up
-reporting and sat day after day in the corner which I had first
-chosen, inspiring pity by my ghastly face and filling my pockets
-with coppers. Only one man knew my secret. He was the keeper of a
-low den in which I used to lodge in Swandam Lane, where I could
-every morning emerge as a squalid beggar and in the evenings
-transform myself into a well-dressed man about town. This fellow,
-a Lascar, was well paid by me for his rooms, so that I knew that
-my secret was safe in his possession.
-
-"Well, very soon I found that I was saving considerable sums of
-money. I do not mean that any beggar in the streets of London
-could earn 700 pounds a year--which is less than my average
-takings--but I had exceptional advantages in my power of making
-up, and also in a facility of repartee, which improved by
-practice and made me quite a recognised character in the City.
-All day a stream of pennies, varied by silver, poured in upon me,
-and it was a very bad day in which I failed to take 2 pounds.
-
-"As I grew richer I grew more ambitious, took a house in the
-country, and eventually married, without anyone having a
-suspicion as to my real occupation. My dear wife knew that I had
-business in the City. She little knew what.
-
-"Last Monday I had finished for the day and was dressing in my
-room above the opium den when I looked out of my window and saw,
-to my horror and astonishment, that my wife was standing in the
-street, with her eyes fixed full upon me. I gave a cry of
-surprise, threw up my arms to cover my face, and, rushing to my
-confidant, the Lascar, entreated him to prevent anyone from
-coming up to me. I heard her voice downstairs, but I knew that
-she could not ascend. Swiftly I threw off my clothes, pulled on
-those of a beggar, and put on my pigments and wig. Even a wife's
-eyes could not pierce so complete a disguise. But then it
-occurred to me that there might be a search in the room, and that
-the clothes might betray me. I threw open the window, reopening
-by my violence a small cut which I had inflicted upon myself in
-the bedroom that morning. Then I seized my coat, which was
-weighted by the coppers which I had just transferred to it from
-the leather bag in which I carried my takings. I hurled it out of
-the window, and it disappeared into the Thames. The other clothes
-would have followed, but at that moment there was a rush of
-constables up the stair, and a few minutes after I found, rather,
-I confess, to my relief, that instead of being identified as Mr.
-Neville St. Clair, I was arrested as his murderer.
-
-"I do not know that there is anything else for me to explain. I
-was determined to preserve my disguise as long as possible, and
-hence my preference for a dirty face. Knowing that my wife would
-be terribly anxious, I slipped off my ring and confided it to the
-Lascar at a moment when no constable was watching me, together
-with a hurried scrawl, telling her that she had no cause to
-fear."
-
-"That note only reached her yesterday," said Holmes.
-
-"Good God! What a week she must have spent!"
-
-"The police have watched this Lascar," said Inspector Bradstreet,
-"and I can quite understand that he might find it difficult to
-post a letter unobserved. Probably he handed it to some sailor
-customer of his, who forgot all about it for some days."
-
-"That was it," said Holmes, nodding approvingly; "I have no doubt
-of it. But have you never been prosecuted for begging?"
-
-"Many times; but what was a fine to me?"
-
-"It must stop here, however," said Bradstreet. "If the police are
-to hush this thing up, there must be no more of Hugh Boone."
-
-"I have sworn it by the most solemn oaths which a man can take."
-
-"In that case I think that it is probable that no further steps
-may be taken. But if you are found again, then all must come out.
-I am sure, Mr. Holmes, that we are very much indebted to you for
-having cleared the matter up. I wish I knew how you reach your
-results."
-
-"I reached this one," said my friend, "by sitting upon five
-pillows and consuming an ounce of shag. I think, Watson, that if
-we drive to Baker Street we shall just be in time for breakfast."
-
-
-
-VII. THE ADVENTURE OF THE BLUE CARBUNCLE
-
-I had called upon my friend Sherlock Holmes upon the second
-morning after Christmas, with the intention of wishing him the
-compliments of the season. He was lounging upon the sofa in a
-purple dressing-gown, a pipe-rack within his reach upon the
-right, and a pile of crumpled morning papers, evidently newly
-studied, near at hand. Beside the couch was a wooden chair, and
-on the angle of the back hung a very seedy and disreputable
-hard-felt hat, much the worse for wear, and cracked in several
-places. A lens and a forceps lying upon the seat of the chair
-suggested that the hat had been suspended in this manner for the
-purpose of examination.
-
-"You are engaged," said I; "perhaps I interrupt you."
-
-"Not at all. I am glad to have a friend with whom I can discuss
-my results. The matter is a perfectly trivial one"--he jerked his
-thumb in the direction of the old hat--"but there are points in
-connection with it which are not entirely devoid of interest and
-even of instruction."
-
-I seated myself in his armchair and warmed my hands before his
-crackling fire, for a sharp frost had set in, and the windows
-were thick with the ice crystals. "I suppose," I remarked, "that,
-homely as it looks, this thing has some deadly story linked on to
-it--that it is the clue which will guide you in the solution of
-some mystery and the punishment of some crime."
-
-"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
-those whimsical little incidents which will happen when you have
-four million human beings all jostling each other within the
-space of a few square miles. Amid the action and reaction of so
-dense a swarm of humanity, every possible combination of events
-may be expected to take place, and many a little problem will be
-presented which may be striking and bizarre without being
-criminal. We have already had experience of such."
-
-"So much so," I remarked, "that of the last six cases which I
-have added to my notes, three have been entirely free of any
-legal crime."
-
-"Precisely. You allude to my attempt to recover the Irene Adler
-papers, to the singular case of Miss Mary Sutherland, and to the
-adventure of the man with the twisted lip. Well, I have no doubt
-that this small matter will fall into the same innocent category.
-You know Peterson, the commissionaire?"
-
-"Yes."
-
-"It is to him that this trophy belongs."
-
-"It is his hat."
-
-"No, no, he found it. Its owner is unknown. I beg that you will
-look upon it not as a battered billycock but as an intellectual
-problem. And, first, as to how it came here. It arrived upon
-Christmas morning, in company with a good fat goose, which is, I
-have no doubt, roasting at this moment in front of Peterson's
-fire. The facts are these: about four o'clock on Christmas
-morning, Peterson, who, as you know, is a very honest fellow, was
-returning from some small jollification and was making his way
-homeward down Tottenham Court Road. In front of him he saw, in
-the gaslight, a tallish man, walking with a slight stagger, and
-carrying a white goose slung over his shoulder. As he reached the
-corner of Goodge Street, a row broke out between this stranger
-and a little knot of roughs. One of the latter knocked off the
-man's hat, on which he raised his stick to defend himself and,
-swinging it over his head, smashed the shop window behind him.
-Peterson had rushed forward to protect the stranger from his
-assailants; but the man, shocked at having broken the window, and
-seeing an official-looking person in uniform rushing towards him,
-dropped his goose, took to his heels, and vanished amid the
-labyrinth of small streets which lie at the back of Tottenham
-Court Road. The roughs had also fled at the appearance of
-Peterson, so that he was left in possession of the field of
-battle, and also of the spoils of victory in the shape of this
-battered hat and a most unimpeachable Christmas goose."
-
-"Which surely he restored to their owner?"
-
-"My dear fellow, there lies the problem. It is true that 'For
-Mrs. Henry Baker' was printed upon a small card which was tied to
-the bird's left leg, and it is also true that the initials 'H.
-B.' are legible upon the lining of this hat, but as there are
-some thousands of Bakers, and some hundreds of Henry Bakers in
-this city of ours, it is not easy to restore lost property to any
-one of them."
-
-"What, then, did Peterson do?"
-
-"He brought round both hat and goose to me on Christmas morning,
-knowing that even the smallest problems are of interest to me.
-The goose we retained until this morning, when there were signs
-that, in spite of the slight frost, it would be well that it
-should be eaten without unnecessary delay. Its finder has carried
-it off, therefore, to fulfil the ultimate destiny of a goose,
-while I continue to retain the hat of the unknown gentleman who
-lost his Christmas dinner."
-
-"Did he not advertise?"
-
-"No."
-
-"Then, what clue could you have as to his identity?"
-
-"Only as much as we can deduce."
-
-"From his hat?"
-
-"Precisely."
-
-"But you are joking. What can you gather from this old battered
-felt?"
-
-"Here is my lens. You know my methods. What can you gather
-yourself as to the individuality of the man who has worn this
-article?"
-
-I took the tattered object in my hands and turned it over rather
-ruefully. It was a very ordinary black hat of the usual round
-shape, hard and much the worse for wear. The lining had been of
-red silk, but was a good deal discoloured. There was no maker's
-name; but, as Holmes had remarked, the initials "H. B." were
-scrawled upon one side. It was pierced in the brim for a
-hat-securer, but the elastic was missing. For the rest, it was
-cracked, exceedingly dusty, and spotted in several places,
-although there seemed to have been some attempt to hide the
-discoloured patches by smearing them with ink.
-
-"I can see nothing," said I, handing it back to my friend.
-
-"On the contrary, Watson, you can see everything. You fail,
-however, to reason from what you see. You are too timid in
-drawing your inferences."
-
-"Then, pray tell me what it is that you can infer from this hat?"
-
-He picked it up and gazed at it in the peculiar introspective
-fashion which was characteristic of him. "It is perhaps less
-suggestive than it might have been," he remarked, "and yet there
-are a few inferences which are very distinct, and a few others
-which represent at least a strong balance of probability. That
-the man was highly intellectual is of course obvious upon the
-face of it, and also that he was fairly well-to-do within the
-last three years, although he has now fallen upon evil days. He
-had foresight, but has less now than formerly, pointing to a
-moral retrogression, which, when taken with the decline of his
-fortunes, seems to indicate some evil influence, probably drink,
-at work upon him. This may account also for the obvious fact that
-his wife has ceased to love him."
-
-"My dear Holmes!"
-
-"He has, however, retained some degree of self-respect," he
-continued, disregarding my remonstrance. "He is a man who leads a
-sedentary life, goes out little, is out of training entirely, is
-middle-aged, has grizzled hair which he has had cut within the
-last few days, and which he anoints with lime-cream. These are
-the more patent facts which are to be deduced from his hat. Also,
-by the way, that it is extremely improbable that he has gas laid
-on in his house."
-
-"You are certainly joking, Holmes."
-
-"Not in the least. Is it possible that even now, when I give you
-these results, you are unable to see how they are attained?"
-
-"I have no doubt that I am very stupid, but I must confess that I
-am unable to follow you. For example, how did you deduce that
-this man was intellectual?"
-
-For answer Holmes clapped the hat upon his head. It came right
-over the forehead and settled upon the bridge of his nose. "It is
-a question of cubic capacity," said he; "a man with so large a
-brain must have something in it."
-
-"The decline of his fortunes, then?"
-
-"This hat is three years old. These flat brims curled at the edge
-came in then. It is a hat of the very best quality. Look at the
-band of ribbed silk and the excellent lining. If this man could
-afford to buy so expensive a hat three years ago, and has had no
-hat since, then he has assuredly gone down in the world."
-
-"Well, that is clear enough, certainly. But how about the
-foresight and the moral retrogression?"
-
-Sherlock Holmes laughed. "Here is the foresight," said he putting
-his finger upon the little disc and loop of the hat-securer.
-"They are never sold upon hats. If this man ordered one, it is a
-sign of a certain amount of foresight, since he went out of his
-way to take this precaution against the wind. But since we see
-that he has broken the elastic and has not troubled to replace
-it, it is obvious that he has less foresight now than formerly,
-which is a distinct proof of a weakening nature. On the other
-hand, he has endeavoured to conceal some of these stains upon the
-felt by daubing them with ink, which is a sign that he has not
-entirely lost his self-respect."
-
-"Your reasoning is certainly plausible."
-
-"The further points, that he is middle-aged, that his hair is
-grizzled, that it has been recently cut, and that he uses
-lime-cream, are all to be gathered from a close examination of the
-lower part of the lining. The lens discloses a large number of
-hair-ends, clean cut by the scissors of the barber. They all
-appear to be adhesive, and there is a distinct odour of
-lime-cream. This dust, you will observe, is not the gritty, grey
-dust of the street but the fluffy brown dust of the house,
-showing that it has been hung up indoors most of the time, while
-the marks of moisture upon the inside are proof positive that the
-wearer perspired very freely, and could therefore, hardly be in
-the best of training."
-
-"But his wife--you said that she had ceased to love him."
-
-"This hat has not been brushed for weeks. When I see you, my dear
-Watson, with a week's accumulation of dust upon your hat, and
-when your wife allows you to go out in such a state, I shall fear
-that you also have been unfortunate enough to lose your wife's
-affection."
-
-"But he might be a bachelor."
-
-"Nay, he was bringing home the goose as a peace-offering to his
-wife. Remember the card upon the bird's leg."
-
-"You have an answer to everything. But how on earth do you deduce
-that the gas is not laid on in his house?"
-
-"One tallow stain, or even two, might come by chance; but when I
-see no less than five, I think that there can be little doubt
-that the individual must be brought into frequent contact with
-burning tallow--walks upstairs at night probably with his hat in
-one hand and a guttering candle in the other. Anyhow, he never
-got tallow-stains from a gas-jet. Are you satisfied?"
-
-"Well, it is very ingenious," said I, laughing; "but since, as
-you said just now, there has been no crime committed, and no harm
-done save the loss of a goose, all this seems to be rather a
-waste of energy."
-
-Sherlock Holmes had opened his mouth to reply, when the door flew
-open, and Peterson, the commissionaire, rushed into the apartment
-with flushed cheeks and the face of a man who is dazed with
-astonishment.
-
-"The goose, Mr. Holmes! The goose, sir!" he gasped.
-
-"Eh? What of it, then? Has it returned to life and flapped off
-through the kitchen window?" Holmes twisted himself round upon
-the sofa to get a fairer view of the man's excited face.
-
-"See here, sir! See what my wife found in its crop!" He held out
-his hand and displayed upon the centre of the palm a brilliantly
-scintillating blue stone, rather smaller than a bean in size, but
-of such purity and radiance that it twinkled like an electric
-point in the dark hollow of his hand.
-
-Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
-he, "this is treasure trove indeed. I suppose you know what you
-have got?"
-
-"A diamond, sir? A precious stone. It cuts into glass as though
-it were putty."
-
-"It's more than a precious stone. It is the precious stone."
-
-"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
-
-"Precisely so. I ought to know its size and shape, seeing that I
-have read the advertisement about it in The Times every day
-lately. It is absolutely unique, and its value can only be
-conjectured, but the reward offered of 1000 pounds is certainly
-not within a twentieth part of the market price."
-
-"A thousand pounds! Great Lord of mercy!" The commissionaire
-plumped down into a chair and stared from one to the other of us.
-
-"That is the reward, and I have reason to know that there are
-sentimental considerations in the background which would induce
-the Countess to part with half her fortune if she could but
-recover the gem."
-
-"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
-remarked.
-
-"Precisely so, on December 22nd, just five days ago. John Horner,
-a plumber, was accused of having abstracted it from the lady's
-jewel-case. The evidence against him was so strong that the case
-has been referred to the Assizes. I have some account of the
-matter here, I believe." He rummaged amid his newspapers,
-glancing over the dates, until at last he smoothed one out,
-doubled it over, and read the following paragraph:
-
-"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
-brought up upon the charge of having upon the 22nd inst.,
-abstracted from the jewel-case of the Countess of Morcar the
-valuable gem known as the blue carbuncle. James Ryder,
-upper-attendant at the hotel, gave his evidence to the effect
-that he had shown Horner up to the dressing-room of the Countess
-of Morcar upon the day of the robbery in order that he might
-solder the second bar of the grate, which was loose. He had
-remained with Horner some little time, but had finally been
-called away. On returning, he found that Horner had disappeared,
-that the bureau had been forced open, and that the small morocco
-casket in which, as it afterwards transpired, the Countess was
-accustomed to keep her jewel, was lying empty upon the
-dressing-table. Ryder instantly gave the alarm, and Horner was
-arrested the same evening; but the stone could not be found
-either upon his person or in his rooms. Catherine Cusack, maid to
-the Countess, deposed to having heard Ryder's cry of dismay on
-discovering the robbery, and to having rushed into the room,
-where she found matters as described by the last witness.
-Inspector Bradstreet, B division, gave evidence as to the arrest
-of Horner, who struggled frantically, and protested his innocence
-in the strongest terms. Evidence of a previous conviction for
-robbery having been given against the prisoner, the magistrate
-refused to deal summarily with the offence, but referred it to
-the Assizes. Horner, who had shown signs of intense emotion
-during the proceedings, fainted away at the conclusion and was
-carried out of court."
-
-"Hum! So much for the police-court," said Holmes thoughtfully,
-tossing aside the paper. "The question for us now to solve is the
-sequence of events leading from a rifled jewel-case at one end to
-the crop of a goose in Tottenham Court Road at the other. You
-see, Watson, our little deductions have suddenly assumed a much
-more important and less innocent aspect. Here is the stone; the
-stone came from the goose, and the goose came from Mr. Henry
-Baker, the gentleman with the bad hat and all the other
-characteristics with which I have bored you. So now we must set
-ourselves very seriously to finding this gentleman and
-ascertaining what part he has played in this little mystery. To
-do this, we must try the simplest means first, and these lie
-undoubtedly in an advertisement in all the evening papers. If
-this fail, I shall have recourse to other methods."
-
-"What will you say?"
-
-"Give me a pencil and that slip of paper. Now, then: 'Found at
-the corner of Goodge Street, a goose and a black felt hat. Mr.
-Henry Baker can have the same by applying at 6:30 this evening at
-221B, Baker Street.' That is clear and concise."
-
-"Very. But will he see it?"
-
-"Well, he is sure to keep an eye on the papers, since, to a poor
-man, the loss was a heavy one. He was clearly so scared by his
-mischance in breaking the window and by the approach of Peterson
-that he thought of nothing but flight, but since then he must
-have bitterly regretted the impulse which caused him to drop his
-bird. Then, again, the introduction of his name will cause him to
-see it, for everyone who knows him will direct his attention to
-it. Here you are, Peterson, run down to the advertising agency
-and have this put in the evening papers."
-
-"In which, sir?"
-
-"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
-Standard, Echo, and any others that occur to you."
-
-"Very well, sir. And this stone?"
-
-"Ah, yes, I shall keep the stone. Thank you. And, I say,
-Peterson, just buy a goose on your way back and leave it here
-with me, for we must have one to give to this gentleman in place
-of the one which your family is now devouring."
-
-When the commissionaire had gone, Holmes took up the stone and
-held it against the light. "It's a bonny thing," said he. "Just
-see how it glints and sparkles. Of course it is a nucleus and
-focus of crime. Every good stone is. They are the devil's pet
-baits. In the larger and older jewels every facet may stand for a
-bloody deed. This stone is not yet twenty years old. It was found
-in the banks of the Amoy River in southern China and is remarkable
-in having every characteristic of the carbuncle, save that it is
-blue in shade instead of ruby red. In spite of its youth, it has
-already a sinister history. There have been two murders, a
-vitriol-throwing, a suicide, and several robberies brought about
-for the sake of this forty-grain weight of crystallised charcoal.
-Who would think that so pretty a toy would be a purveyor to the
-gallows and the prison? I'll lock it up in my strong box now and
-drop a line to the Countess to say that we have it."
-
-"Do you think that this man Horner is innocent?"
-
-"I cannot tell."
-
-"Well, then, do you imagine that this other one, Henry Baker, had
-anything to do with the matter?"
-
-"It is, I think, much more likely that Henry Baker is an
-absolutely innocent man, who had no idea that the bird which he
-was carrying was of considerably more value than if it were made
-of solid gold. That, however, I shall determine by a very simple
-test if we have an answer to our advertisement."
-
-"And you can do nothing until then?"
-
-"Nothing."
-
-"In that case I shall continue my professional round. But I shall
-come back in the evening at the hour you have mentioned, for I
-should like to see the solution of so tangled a business."
-
-"Very glad to see you. I dine at seven. There is a woodcock, I
-believe. By the way, in view of recent occurrences, perhaps I
-ought to ask Mrs. Hudson to examine its crop."
-
-I had been delayed at a case, and it was a little after half-past
-six when I found myself in Baker Street once more. As I
-approached the house I saw a tall man in a Scotch bonnet with a
-coat which was buttoned up to his chin waiting outside in the
-bright semicircle which was thrown from the fanlight. Just as I
-arrived the door was opened, and we were shown up together to
-Holmes' room.
-
-"Mr. Henry Baker, I believe," said he, rising from his armchair
-and greeting his visitor with the easy air of geniality which he
-could so readily assume. "Pray take this chair by the fire, Mr.
-Baker. It is a cold night, and I observe that your circulation is
-more adapted for summer than for winter. Ah, Watson, you have
-just come at the right time. Is that your hat, Mr. Baker?"
-
-"Yes, sir, that is undoubtedly my hat."
-
-He was a large man with rounded shoulders, a massive head, and a
-broad, intelligent face, sloping down to a pointed beard of
-grizzled brown. A touch of red in nose and cheeks, with a slight
-tremor of his extended hand, recalled Holmes' surmise as to his
-habits. His rusty black frock-coat was buttoned right up in
-front, with the collar turned up, and his lank wrists protruded
-from his sleeves without a sign of cuff or shirt. He spoke in a
-slow staccato fashion, choosing his words with care, and gave the
-impression generally of a man of learning and letters who had had
-ill-usage at the hands of fortune.
-
-"We have retained these things for some days," said Holmes,
-"because we expected to see an advertisement from you giving your
-address. I am at a loss to know now why you did not advertise."
-
-Our visitor gave a rather shamefaced laugh. "Shillings have not
-been so plentiful with me as they once were," he remarked. "I had
-no doubt that the gang of roughs who assaulted me had carried off
-both my hat and the bird. I did not care to spend more money in a
-hopeless attempt at recovering them."
-
-"Very naturally. By the way, about the bird, we were compelled to
-eat it."
-
-"To eat it!" Our visitor half rose from his chair in his
-excitement.
-
-"Yes, it would have been of no use to anyone had we not done so.
-But I presume that this other goose upon the sideboard, which is
-about the same weight and perfectly fresh, will answer your
-purpose equally well?"
-
-"Oh, certainly, certainly," answered Mr. Baker with a sigh of
-relief.
-
-"Of course, we still have the feathers, legs, crop, and so on of
-your own bird, so if you wish--"
-
-The man burst into a hearty laugh. "They might be useful to me as
-relics of my adventure," said he, "but beyond that I can hardly
-see what use the disjecta membra of my late acquaintance are
-going to be to me. No, sir, I think that, with your permission, I
-will confine my attentions to the excellent bird which I perceive
-upon the sideboard."
-
-Sherlock Holmes glanced sharply across at me with a slight shrug
-of his shoulders.
-
-"There is your hat, then, and there your bird," said he. "By the
-way, would it bore you to tell me where you got the other one
-from? I am somewhat of a fowl fancier, and I have seldom seen a
-better grown goose."
-
-"Certainly, sir," said Baker, who had risen and tucked his newly
-gained property under his arm. "There are a few of us who
-frequent the Alpha Inn, near the Museum--we are to be found in
-the Museum itself during the day, you understand. This year our
-good host, Windigate by name, instituted a goose club, by which,
-on consideration of some few pence every week, we were each to
-receive a bird at Christmas. My pence were duly paid, and the
-rest is familiar to you. I am much indebted to you, sir, for a
-Scotch bonnet is fitted neither to my years nor my gravity." With
-a comical pomposity of manner he bowed solemnly to both of us and
-strode off upon his way.
-
-"So much for Mr. Henry Baker," said Holmes when he had closed the
-door behind him. "It is quite certain that he knows nothing
-whatever about the matter. Are you hungry, Watson?"
-
-"Not particularly."
-
-"Then I suggest that we turn our dinner into a supper and follow
-up this clue while it is still hot."
-
-"By all means."
-
-It was a bitter night, so we drew on our ulsters and wrapped
-cravats about our throats. Outside, the stars were shining coldly
-in a cloudless sky, and the breath of the passers-by blew out
-into smoke like so many pistol shots. Our footfalls rang out
-crisply and loudly as we swung through the doctors' quarter,
-Wimpole Street, Harley Street, and so through Wigmore Street into
-Oxford Street. In a quarter of an hour we were in Bloomsbury at
-the Alpha Inn, which is a small public-house at the corner of one
-of the streets which runs down into Holborn. Holmes pushed open
-the door of the private bar and ordered two glasses of beer from
-the ruddy-faced, white-aproned landlord.
-
-"Your beer should be excellent if it is as good as your geese,"
-said he.
-
-"My geese!" The man seemed surprised.
-
-"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
-who was a member of your goose club."
-
-"Ah! yes, I see. But you see, sir, them's not our geese."
-
-"Indeed! Whose, then?"
-
-"Well, I got the two dozen from a salesman in Covent Garden."
-
-"Indeed? I know some of them. Which was it?"
-
-"Breckinridge is his name."
-
-"Ah! I don't know him. Well, here's your good health landlord,
-and prosperity to your house. Good-night."
-
-"Now for Mr. Breckinridge," he continued, buttoning up his coat
-as we came out into the frosty air. "Remember, Watson that though
-we have so homely a thing as a goose at one end of this chain, we
-have at the other a man who will certainly get seven years' penal
-servitude unless we can establish his innocence. It is possible
-that our inquiry may but confirm his guilt; but, in any case, we
-have a line of investigation which has been missed by the police,
-and which a singular chance has placed in our hands. Let us
-follow it out to the bitter end. Faces to the south, then, and
-quick march!"
-
-We passed across Holborn, down Endell Street, and so through a
-zigzag of slums to Covent Garden Market. One of the largest
-stalls bore the name of Breckinridge upon it, and the proprietor
-a horsey-looking man, with a sharp face and trim side-whiskers was
-helping a boy to put up the shutters.
-
-"Good-evening. It's a cold night," said Holmes.
-
-The salesman nodded and shot a questioning glance at my
-companion.
-
-"Sold out of geese, I see," continued Holmes, pointing at the
-bare slabs of marble.
-
-"Let you have five hundred to-morrow morning."
-
-"That's no good."
-
-"Well, there are some on the stall with the gas-flare."
-
-"Ah, but I was recommended to you."
-
-"Who by?"
-
-"The landlord of the Alpha."
-
-"Oh, yes; I sent him a couple of dozen."
-
-"Fine birds they were, too. Now where did you get them from?"
-
-To my surprise the question provoked a burst of anger from the
-salesman.
-
-"Now, then, mister," said he, with his head cocked and his arms
-akimbo, "what are you driving at? Let's have it straight, now."
-
-"It is straight enough. I should like to know who sold you the
-geese which you supplied to the Alpha."
-
-"Well then, I shan't tell you. So now!"
-
-"Oh, it is a matter of no importance; but I don't know why you
-should be so warm over such a trifle."
-
-"Warm! You'd be as warm, maybe, if you were as pestered as I am.
-When I pay good money for a good article there should be an end
-of the business; but it's 'Where are the geese?' and 'Who did you
-sell the geese to?' and 'What will you take for the geese?' One
-would think they were the only geese in the world, to hear the
-fuss that is made over them."
-
-"Well, I have no connection with any other people who have been
-making inquiries," said Holmes carelessly. "If you won't tell us
-the bet is off, that is all. But I'm always ready to back my
-opinion on a matter of fowls, and I have a fiver on it that the
-bird I ate is country bred."
-
-"Well, then, you've lost your fiver, for it's town bred," snapped
-the salesman.
-
-"It's nothing of the kind."
-
-"I say it is."
-
-"I don't believe it."
-
-"D'you think you know more about fowls than I, who have handled
-them ever since I was a nipper? I tell you, all those birds that
-went to the Alpha were town bred."
-
-"You'll never persuade me to believe that."
-
-"Will you bet, then?"
-
-"It's merely taking your money, for I know that I am right. But
-I'll have a sovereign on with you, just to teach you not to be
-obstinate."
-
-The salesman chuckled grimly. "Bring me the books, Bill," said
-he.
-
-The small boy brought round a small thin volume and a great
-greasy-backed one, laying them out together beneath the hanging
-lamp.
-
-"Now then, Mr. Cocksure," said the salesman, "I thought that I
-was out of geese, but before I finish you'll find that there is
-still one left in my shop. You see this little book?"
-
-"Well?"
-
-"That's the list of the folk from whom I buy. D'you see? Well,
-then, here on this page are the country folk, and the numbers
-after their names are where their accounts are in the big ledger.
-Now, then! You see this other page in red ink? Well, that is a
-list of my town suppliers. Now, look at that third name. Just
-read it out to me."
-
-"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
-
-"Quite so. Now turn that up in the ledger."
-
-Holmes turned to the page indicated. "Here you are, 'Mrs.
-Oakshott, 117, Brixton Road, egg and poultry supplier.'"
-
-"Now, then, what's the last entry?"
-
-"'December 22nd. Twenty-four geese at 7s. 6d.'"
-
-"Quite so. There you are. And underneath?"
-
-"'Sold to Mr. Windigate of the Alpha, at 12s.'"
-
-"What have you to say now?"
-
-Sherlock Holmes looked deeply chagrined. He drew a sovereign from
-his pocket and threw it down upon the slab, turning away with the
-air of a man whose disgust is too deep for words. A few yards off
-he stopped under a lamp-post and laughed in the hearty, noiseless
-fashion which was peculiar to him.
-
-"When you see a man with whiskers of that cut and the 'Pink 'un'
-protruding out of his pocket, you can always draw him by a bet,"
-said he. "I daresay that if I had put 100 pounds down in front of
-him, that man would not have given me such complete information
-as was drawn from him by the idea that he was doing me on a
-wager. Well, Watson, we are, I fancy, nearing the end of our
-quest, and the only point which remains to be determined is
-whether we should go on to this Mrs. Oakshott to-night, or
-whether we should reserve it for to-morrow. It is clear from what
-that surly fellow said that there are others besides ourselves
-who are anxious about the matter, and I should--"
-
-His remarks were suddenly cut short by a loud hubbub which broke
-out from the stall which we had just left. Turning round we saw a
-little rat-faced fellow standing in the centre of the circle of
-yellow light which was thrown by the swinging lamp, while
-Breckinridge, the salesman, framed in the door of his stall, was
-shaking his fists fiercely at the cringing figure.
-
-"I've had enough of you and your geese," he shouted. "I wish you
-were all at the devil together. If you come pestering me any more
-with your silly talk I'll set the dog at you. You bring Mrs.
-Oakshott here and I'll answer her, but what have you to do with
-it? Did I buy the geese off you?"
-
-"No; but one of them was mine all the same," whined the little
-man.
-
-"Well, then, ask Mrs. Oakshott for it."
-
-"She told me to ask you."
-
-"Well, you can ask the King of Proosia, for all I care. I've had
-enough of it. Get out of this!" He rushed fiercely forward, and
-the inquirer flitted away into the darkness.
-
-"Ha! this may save us a visit to Brixton Road," whispered Holmes.
-"Come with me, and we will see what is to be made of this
-fellow." Striding through the scattered knots of people who
-lounged round the flaring stalls, my companion speedily overtook
-the little man and touched him upon the shoulder. He sprang
-round, and I could see in the gas-light that every vestige of
-colour had been driven from his face.
-
-"Who are you, then? What do you want?" he asked in a quavering
-voice.
-
-"You will excuse me," said Holmes blandly, "but I could not help
-overhearing the questions which you put to the salesman just now.
-I think that I could be of assistance to you."
-
-"You? Who are you? How could you know anything of the matter?"
-
-"My name is Sherlock Holmes. It is my business to know what other
-people don't know."
-
-"But you can know nothing of this?"
-
-"Excuse me, I know everything of it. You are endeavouring to
-trace some geese which were sold by Mrs. Oakshott, of Brixton
-Road, to a salesman named Breckinridge, by him in turn to Mr.
-Windigate, of the Alpha, and by him to his club, of which Mr.
-Henry Baker is a member."
-
-"Oh, sir, you are the very man whom I have longed to meet," cried
-the little fellow with outstretched hands and quivering fingers.
-"I can hardly explain to you how interested I am in this matter."
-
-Sherlock Holmes hailed a four-wheeler which was passing. "In that
-case we had better discuss it in a cosy room rather than in this
-wind-swept market-place," said he. "But pray tell me, before we
-go farther, who it is that I have the pleasure of assisting."
-
-The man hesitated for an instant. "My name is John Robinson," he
-answered with a sidelong glance.
-
-"No, no; the real name," said Holmes sweetly. "It is always
-awkward doing business with an alias."
-
-A flush sprang to the white cheeks of the stranger. "Well then,"
-said he, "my real name is James Ryder."
-
-"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
-step into the cab, and I shall soon be able to tell you
-everything which you would wish to know."
-
-The little man stood glancing from one to the other of us with
-half-frightened, half-hopeful eyes, as one who is not sure
-whether he is on the verge of a windfall or of a catastrophe.
-Then he stepped into the cab, and in half an hour we were back in
-the sitting-room at Baker Street. Nothing had been said during
-our drive, but the high, thin breathing of our new companion, and
-the claspings and unclaspings of his hands, spoke of the nervous
-tension within him.
-
-"Here we are!" said Holmes cheerily as we filed into the room.
-"The fire looks very seasonable in this weather. You look cold,
-Mr. Ryder. Pray take the basket-chair. I will just put on my
-slippers before we settle this little matter of yours. Now, then!
-You want to know what became of those geese?"
-
-"Yes, sir."
-
-"Or rather, I fancy, of that goose. It was one bird, I imagine in
-which you were interested--white, with a black bar across the
-tail."
-
-Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
-me where it went to?"
-
-"It came here."
-
-"Here?"
-
-"Yes, and a most remarkable bird it proved. I don't wonder that
-you should take an interest in it. It laid an egg after it was
-dead--the bonniest, brightest little blue egg that ever was seen.
-I have it here in my museum."
-
-Our visitor staggered to his feet and clutched the mantelpiece
-with his right hand. Holmes unlocked his strong-box and held up
-the blue carbuncle, which shone out like a star, with a cold,
-brilliant, many-pointed radiance. Ryder stood glaring with a
-drawn face, uncertain whether to claim or to disown it.
-
-"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
-you'll be into the fire! Give him an arm back into his chair,
-Watson. He's not got blood enough to go in for felony with
-impunity. Give him a dash of brandy. So! Now he looks a little
-more human. What a shrimp it is, to be sure!"
-
-For a moment he had staggered and nearly fallen, but the brandy
-brought a tinge of colour into his cheeks, and he sat staring
-with frightened eyes at his accuser.
-
-"I have almost every link in my hands, and all the proofs which I
-could possibly need, so there is little which you need tell me.
-Still, that little may as well be cleared up to make the case
-complete. You had heard, Ryder, of this blue stone of the
-Countess of Morcar's?"
-
-"It was Catherine Cusack who told me of it," said he in a
-crackling voice.
-
-"I see--her ladyship's waiting-maid. Well, the temptation of
-sudden wealth so easily acquired was too much for you, as it has
-been for better men before you; but you were not very scrupulous
-in the means you used. It seems to me, Ryder, that there is the
-making of a very pretty villain in you. You knew that this man
-Horner, the plumber, had been concerned in some such matter
-before, and that suspicion would rest the more readily upon him.
-What did you do, then? You made some small job in my lady's
-room--you and your confederate Cusack--and you managed that he
-should be the man sent for. Then, when he had left, you rifled
-the jewel-case, raised the alarm, and had this unfortunate man
-arrested. You then--"
-
-Ryder threw himself down suddenly upon the rug and clutched at my
-companion's knees. "For God's sake, have mercy!" he shrieked.
-"Think of my father! Of my mother! It would break their hearts. I
-never went wrong before! I never will again. I swear it. I'll
-swear it on a Bible. Oh, don't bring it into court! For Christ's
-sake, don't!"
-
-"Get back into your chair!" said Holmes sternly. "It is very well
-to cringe and crawl now, but you thought little enough of this
-poor Horner in the dock for a crime of which he knew nothing."
-
-"I will fly, Mr. Holmes. I will leave the country, sir. Then the
-charge against him will break down."
-
-"Hum! We will talk about that. And now let us hear a true account
-of the next act. How came the stone into the goose, and how came
-the goose into the open market? Tell us the truth, for there lies
-your only hope of safety."
-
-Ryder passed his tongue over his parched lips. "I will tell you
-it just as it happened, sir," said he. "When Horner had been
-arrested, it seemed to me that it would be best for me to get
-away with the stone at once, for I did not know at what moment
-the police might not take it into their heads to search me and my
-room. There was no place about the hotel where it would be safe.
-I went out, as if on some commission, and I made for my sister's
-house. She had married a man named Oakshott, and lived in Brixton
-Road, where she fattened fowls for the market. All the way there
-every man I met seemed to me to be a policeman or a detective;
-and, for all that it was a cold night, the sweat was pouring down
-my face before I came to the Brixton Road. My sister asked me
-what was the matter, and why I was so pale; but I told her that I
-had been upset by the jewel robbery at the hotel. Then I went
-into the back yard and smoked a pipe and wondered what it would
-be best to do.
-
-"I had a friend once called Maudsley, who went to the bad, and
-has just been serving his time in Pentonville. One day he had met
-me, and fell into talk about the ways of thieves, and how they
-could get rid of what they stole. I knew that he would be true to
-me, for I knew one or two things about him; so I made up my mind
-to go right on to Kilburn, where he lived, and take him into my
-confidence. He would show me how to turn the stone into money.
-But how to get to him in safety? I thought of the agonies I had
-gone through in coming from the hotel. I might at any moment be
-seized and searched, and there would be the stone in my waistcoat
-pocket. I was leaning against the wall at the time and looking at
-the geese which were waddling about round my feet, and suddenly
-an idea came into my head which showed me how I could beat the
-best detective that ever lived.
-
-"My sister had told me some weeks before that I might have the
-pick of her geese for a Christmas present, and I knew that she
-was always as good as her word. I would take my goose now, and in
-it I would carry my stone to Kilburn. There was a little shed in
-the yard, and behind this I drove one of the birds--a fine big
-one, white, with a barred tail. I caught it, and prying its bill
-open, I thrust the stone down its throat as far as my finger
-could reach. The bird gave a gulp, and I felt the stone pass
-along its gullet and down into its crop. But the creature flapped
-and struggled, and out came my sister to know what was the
-matter. As I turned to speak to her the brute broke loose and
-fluttered off among the others.
-
-"'Whatever were you doing with that bird, Jem?' says she.
-
-"'Well,' said I, 'you said you'd give me one for Christmas, and I
-was feeling which was the fattest.'
-
-"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
-call it. It's the big white one over yonder. There's twenty-six
-of them, which makes one for you, and one for us, and two dozen
-for the market.'
-
-"'Thank you, Maggie,' says I; 'but if it is all the same to you,
-I'd rather have that one I was handling just now.'
-
-"'The other is a good three pound heavier,' said she, 'and we
-fattened it expressly for you.'
-
-"'Never mind. I'll have the other, and I'll take it now,' said I.
-
-"'Oh, just as you like,' said she, a little huffed. 'Which is it
-you want, then?'
-
-"'That white one with the barred tail, right in the middle of the
-flock.'
-
-"'Oh, very well. Kill it and take it with you.'
-
-"Well, I did what she said, Mr. Holmes, and I carried the bird
-all the way to Kilburn. I told my pal what I had done, for he was
-a man that it was easy to tell a thing like that to. He laughed
-until he choked, and we got a knife and opened the goose. My
-heart turned to water, for there was no sign of the stone, and I
-knew that some terrible mistake had occurred. I left the bird,
-rushed back to my sister's, and hurried into the back yard. There
-was not a bird to be seen there.
-
-"'Where are they all, Maggie?' I cried.
-
-"'Gone to the dealer's, Jem.'
-
-"'Which dealer's?'
-
-"'Breckinridge, of Covent Garden.'
-
-"'But was there another with a barred tail?' I asked, 'the same
-as the one I chose?'
-
-"'Yes, Jem; there were two barred-tailed ones, and I could never
-tell them apart.'
-
-"Well, then, of course I saw it all, and I ran off as hard as my
-feet would carry me to this man Breckinridge; but he had sold the
-lot at once, and not one word would he tell me as to where they
-had gone. You heard him yourselves to-night. Well, he has always
-answered me like that. My sister thinks that I am going mad.
-Sometimes I think that I am myself. And now--and now I am myself
-a branded thief, without ever having touched the wealth for which
-I sold my character. God help me! God help me!" He burst into
-convulsive sobbing, with his face buried in his hands.
-
-There was a long silence, broken only by his heavy breathing and
-by the measured tapping of Sherlock Holmes' finger-tips upon the
-edge of the table. Then my friend rose and threw open the door.
-
-"Get out!" said he.
-
-"What, sir! Oh, Heaven bless you!"
-
-"No more words. Get out!"
-
-And no more words were needed. There was a rush, a clatter upon
-the stairs, the bang of a door, and the crisp rattle of running
-footfalls from the street.
-
-"After all, Watson," said Holmes, reaching up his hand for his
-clay pipe, "I am not retained by the police to supply their
-deficiencies. If Horner were in danger it would be another thing;
-but this fellow will not appear against him, and the case must
-collapse. I suppose that I am commuting a felony, but it is just
-possible that I am saving a soul. This fellow will not go wrong
-again; he is too terribly frightened. Send him to gaol now, and
-you make him a gaol-bird for life. Besides, it is the season of
-forgiveness. Chance has put in our way a most singular and
-whimsical problem, and its solution is its own reward. If you
-will have the goodness to touch the bell, Doctor, we will begin
-another investigation, in which, also a bird will be the chief
-feature."
-
-
-
-VIII. THE ADVENTURE OF THE SPECKLED BAND
-
-On glancing over my notes of the seventy odd cases in which I
-have during the last eight years studied the methods of my friend
-Sherlock Holmes, I find many tragic, some comic, a large number
-merely strange, but none commonplace; for, working as he did
-rather for the love of his art than for the acquirement of
-wealth, he refused to associate himself with any investigation
-which did not tend towards the unusual, and even the fantastic.
-Of all these varied cases, however, I cannot recall any which
-presented more singular features than that which was associated
-with the well-known Surrey family of the Roylotts of Stoke Moran.
-The events in question occurred in the early days of my
-association with Holmes, when we were sharing rooms as bachelors
-in Baker Street. It is possible that I might have placed them
-upon record before, but a promise of secrecy was made at the
-time, from which I have only been freed during the last month by
-the untimely death of the lady to whom the pledge was given. It
-is perhaps as well that the facts should now come to light, for I
-have reasons to know that there are widespread rumours as to the
-death of Dr. Grimesby Roylott which tend to make the matter even
-more terrible than the truth.
-
-It was early in April in the year '83 that I woke one morning to
-find Sherlock Holmes standing, fully dressed, by the side of my
-bed. He was a late riser, as a rule, and as the clock on the
-mantelpiece showed me that it was only a quarter-past seven, I
-blinked up at him in some surprise, and perhaps just a little
-resentment, for I was myself regular in my habits.
-
-"Very sorry to knock you up, Watson," said he, "but it's the
-common lot this morning. Mrs. Hudson has been knocked up, she
-retorted upon me, and I on you."
-
-"What is it, then--a fire?"
-
-"No; a client. It seems that a young lady has arrived in a
-considerable state of excitement, who insists upon seeing me. She
-is waiting now in the sitting-room. Now, when young ladies wander
-about the metropolis at this hour of the morning, and knock
-sleepy people up out of their beds, I presume that it is
-something very pressing which they have to communicate. Should it
-prove to be an interesting case, you would, I am sure, wish to
-follow it from the outset. I thought, at any rate, that I should
-call you and give you the chance."
-
-"My dear fellow, I would not miss it for anything."
-
-I had no keener pleasure than in following Holmes in his
-professional investigations, and in admiring the rapid
-deductions, as swift as intuitions, and yet always founded on a
-logical basis with which he unravelled the problems which were
-submitted to him. I rapidly threw on my clothes and was ready in
-a few minutes to accompany my friend down to the sitting-room. A
-lady dressed in black and heavily veiled, who had been sitting in
-the window, rose as we entered.
-
-"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
-Holmes. This is my intimate friend and associate, Dr. Watson,
-before whom you can speak as freely as before myself. Ha! I am
-glad to see that Mrs. Hudson has had the good sense to light the
-fire. Pray draw up to it, and I shall order you a cup of hot
-coffee, for I observe that you are shivering."
-
-"It is not cold which makes me shiver," said the woman in a low
-voice, changing her seat as requested.
-
-"What, then?"
-
-"It is fear, Mr. Holmes. It is terror." She raised her veil as
-she spoke, and we could see that she was indeed in a pitiable
-state of agitation, her face all drawn and grey, with restless
-frightened eyes, like those of some hunted animal. Her features
-and figure were those of a woman of thirty, but her hair was shot
-with premature grey, and her expression was weary and haggard.
-Sherlock Holmes ran her over with one of his quick,
-all-comprehensive glances.
-
-"You must not fear," said he soothingly, bending forward and
-patting her forearm. "We shall soon set matters right, I have no
-doubt. You have come in by train this morning, I see."
-
-"You know me, then?"
-
-"No, but I observe the second half of a return ticket in the palm
-of your left glove. You must have started early, and yet you had
-a good drive in a dog-cart, along heavy roads, before you reached
-the station."
-
-The lady gave a violent start and stared in bewilderment at my
-companion.
-
-"There is no mystery, my dear madam," said he, smiling. "The left
-arm of your jacket is spattered with mud in no less than seven
-places. The marks are perfectly fresh. There is no vehicle save a
-dog-cart which throws up mud in that way, and then only when you
-sit on the left-hand side of the driver."
-
-"Whatever your reasons may be, you are perfectly correct," said
-she. "I started from home before six, reached Leatherhead at
-twenty past, and came in by the first train to Waterloo. Sir, I
-can stand this strain no longer; I shall go mad if it continues.
-I have no one to turn to--none, save only one, who cares for me,
-and he, poor fellow, can be of little aid. I have heard of you,
-Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
-helped in the hour of her sore need. It was from her that I had
-your address. Oh, sir, do you not think that you could help me,
-too, and at least throw a little light through the dense darkness
-which surrounds me? At present it is out of my power to reward
-you for your services, but in a month or six weeks I shall be
-married, with the control of my own income, and then at least you
-shall not find me ungrateful."
-
-Holmes turned to his desk and, unlocking it, drew out a small
-case-book, which he consulted.
-
-"Farintosh," said he. "Ah yes, I recall the case; it was
-concerned with an opal tiara. I think it was before your time,
-Watson. I can only say, madam, that I shall be happy to devote
-the same care to your case as I did to that of your friend. As to
-reward, my profession is its own reward; but you are at liberty
-to defray whatever expenses I may be put to, at the time which
-suits you best. And now I beg that you will lay before us
-everything that may help us in forming an opinion upon the
-matter."
-
-"Alas!" replied our visitor, "the very horror of my situation
-lies in the fact that my fears are so vague, and my suspicions
-depend so entirely upon small points, which might seem trivial to
-another, that even he to whom of all others I have a right to
-look for help and advice looks upon all that I tell him about it
-as the fancies of a nervous woman. He does not say so, but I can
-read it from his soothing answers and averted eyes. But I have
-heard, Mr. Holmes, that you can see deeply into the manifold
-wickedness of the human heart. You may advise me how to walk amid
-the dangers which encompass me."
-
-"I am all attention, madam."
-
-"My name is Helen Stoner, and I am living with my stepfather, who
-is the last survivor of one of the oldest Saxon families in
-England, the Roylotts of Stoke Moran, on the western border of
-Surrey."
-
-Holmes nodded his head. "The name is familiar to me," said he.
-
-"The family was at one time among the richest in England, and the
-estates extended over the borders into Berkshire in the north,
-and Hampshire in the west. In the last century, however, four
-successive heirs were of a dissolute and wasteful disposition,
-and the family ruin was eventually completed by a gambler in the
-days of the Regency. Nothing was left save a few acres of ground,
-and the two-hundred-year-old house, which is itself crushed under
-a heavy mortgage. The last squire dragged out his existence
-there, living the horrible life of an aristocratic pauper; but
-his only son, my stepfather, seeing that he must adapt himself to
-the new conditions, obtained an advance from a relative, which
-enabled him to take a medical degree and went out to Calcutta,
-where, by his professional skill and his force of character, he
-established a large practice. In a fit of anger, however, caused
-by some robberies which had been perpetrated in the house, he
-beat his native butler to death and narrowly escaped a capital
-sentence. As it was, he suffered a long term of imprisonment and
-afterwards returned to England a morose and disappointed man.
-
-"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
-the young widow of Major-General Stoner, of the Bengal Artillery.
-My sister Julia and I were twins, and we were only two years old
-at the time of my mother's re-marriage. She had a considerable
-sum of money--not less than 1000 pounds a year--and this she
-bequeathed to Dr. Roylott entirely while we resided with him,
-with a provision that a certain annual sum should be allowed to
-each of us in the event of our marriage. Shortly after our return
-to England my mother died--she was killed eight years ago in a
-railway accident near Crewe. Dr. Roylott then abandoned his
-attempts to establish himself in practice in London and took us
-to live with him in the old ancestral house at Stoke Moran. The
-money which my mother had left was enough for all our wants, and
-there seemed to be no obstacle to our happiness.
-
-"But a terrible change came over our stepfather about this time.
-Instead of making friends and exchanging visits with our
-neighbours, who had at first been overjoyed to see a Roylott of
-Stoke Moran back in the old family seat, he shut himself up in
-his house and seldom came out save to indulge in ferocious
-quarrels with whoever might cross his path. Violence of temper
-approaching to mania has been hereditary in the men of the
-family, and in my stepfather's case it had, I believe, been
-intensified by his long residence in the tropics. A series of
-disgraceful brawls took place, two of which ended in the
-police-court, until at last he became the terror of the village,
-and the folks would fly at his approach, for he is a man of
-immense strength, and absolutely uncontrollable in his anger.
-
-"Last week he hurled the local blacksmith over a parapet into a
-stream, and it was only by paying over all the money which I
-could gather together that I was able to avert another public
-exposure. He had no friends at all save the wandering gipsies,
-and he would give these vagabonds leave to encamp upon the few
-acres of bramble-covered land which represent the family estate,
-and would accept in return the hospitality of their tents,
-wandering away with them sometimes for weeks on end. He has a
-passion also for Indian animals, which are sent over to him by a
-correspondent, and he has at this moment a cheetah and a baboon,
-which wander freely over his grounds and are feared by the
-villagers almost as much as their master.
-
-"You can imagine from what I say that my poor sister Julia and I
-had no great pleasure in our lives. No servant would stay with
-us, and for a long time we did all the work of the house. She was
-but thirty at the time of her death, and yet her hair had already
-begun to whiten, even as mine has."
-
-"Your sister is dead, then?"
-
-"She died just two years ago, and it is of her death that I wish
-to speak to you. You can understand that, living the life which I
-have described, we were little likely to see anyone of our own
-age and position. We had, however, an aunt, my mother's maiden
-sister, Miss Honoria Westphail, who lives near Harrow, and we
-were occasionally allowed to pay short visits at this lady's
-house. Julia went there at Christmas two years ago, and met there
-a half-pay major of marines, to whom she became engaged. My
-stepfather learned of the engagement when my sister returned and
-offered no objection to the marriage; but within a fortnight of
-the day which had been fixed for the wedding, the terrible event
-occurred which has deprived me of my only companion."
-
-Sherlock Holmes had been leaning back in his chair with his eyes
-closed and his head sunk in a cushion, but he half opened his
-lids now and glanced across at his visitor.
-
-"Pray be precise as to details," said he.
-
-"It is easy for me to be so, for every event of that dreadful
-time is seared into my memory. The manor-house is, as I have
-already said, very old, and only one wing is now inhabited. The
-bedrooms in this wing are on the ground floor, the sitting-rooms
-being in the central block of the buildings. Of these bedrooms
-the first is Dr. Roylott's, the second my sister's, and the third
-my own. There is no communication between them, but they all open
-out into the same corridor. Do I make myself plain?"
-
-"Perfectly so."
-
-"The windows of the three rooms open out upon the lawn. That
-fatal night Dr. Roylott had gone to his room early, though we
-knew that he had not retired to rest, for my sister was troubled
-by the smell of the strong Indian cigars which it was his custom
-to smoke. She left her room, therefore, and came into mine, where
-she sat for some time, chatting about her approaching wedding. At
-eleven o'clock she rose to leave me, but she paused at the door
-and looked back.
-
-"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
-in the dead of the night?'
-
-"'Never,' said I.
-
-"'I suppose that you could not possibly whistle, yourself, in
-your sleep?'
-
-"'Certainly not. But why?'
-
-"'Because during the last few nights I have always, about three
-in the morning, heard a low, clear whistle. I am a light sleeper,
-and it has awakened me. I cannot tell where it came from--perhaps
-from the next room, perhaps from the lawn. I thought that I would
-just ask you whether you had heard it.'
-
-"'No, I have not. It must be those wretched gipsies in the
-plantation.'
-
-"'Very likely. And yet if it were on the lawn, I wonder that you
-did not hear it also.'
-
-"'Ah, but I sleep more heavily than you.'
-
-"'Well, it is of no great consequence, at any rate.' She smiled
-back at me, closed my door, and a few moments later I heard her
-key turn in the lock."
-
-"Indeed," said Holmes. "Was it your custom always to lock
-yourselves in at night?"
-
-"Always."
-
-"And why?"
-
-"I think that I mentioned to you that the doctor kept a cheetah
-and a baboon. We had no feeling of security unless our doors were
-locked."
-
-"Quite so. Pray proceed with your statement."
-
-"I could not sleep that night. A vague feeling of impending
-misfortune impressed me. My sister and I, you will recollect,
-were twins, and you know how subtle are the links which bind two
-souls which are so closely allied. It was a wild night. The wind
-was howling outside, and the rain was beating and splashing
-against the windows. Suddenly, amid all the hubbub of the gale,
-there burst forth the wild scream of a terrified woman. I knew
-that it was my sister's voice. I sprang from my bed, wrapped a
-shawl round me, and rushed into the corridor. As I opened my door
-I seemed to hear a low whistle, such as my sister described, and
-a few moments later a clanging sound, as if a mass of metal had
-fallen. As I ran down the passage, my sister's door was unlocked,
-and revolved slowly upon its hinges. I stared at it
-horror-stricken, not knowing what was about to issue from it. By
-the light of the corridor-lamp I saw my sister appear at the
-opening, her face blanched with terror, her hands groping for
-help, her whole figure swaying to and fro like that of a
-drunkard. I ran to her and threw my arms round her, but at that
-moment her knees seemed to give way and she fell to the ground.
-She writhed as one who is in terrible pain, and her limbs were
-dreadfully convulsed. At first I thought that she had not
-recognised me, but as I bent over her she suddenly shrieked out
-in a voice which I shall never forget, 'Oh, my God! Helen! It was
-the band! The speckled band!' There was something else which she
-would fain have said, and she stabbed with her finger into the
-air in the direction of the doctor's room, but a fresh convulsion
-seized her and choked her words. I rushed out, calling loudly for
-my stepfather, and I met him hastening from his room in his
-dressing-gown. When he reached my sister's side she was
-unconscious, and though he poured brandy down her throat and sent
-for medical aid from the village, all efforts were in vain, for
-she slowly sank and died without having recovered her
-consciousness. Such was the dreadful end of my beloved sister."
-
-"One moment," said Holmes, "are you sure about this whistle and
-metallic sound? Could you swear to it?"
-
-"That was what the county coroner asked me at the inquiry. It is
-my strong impression that I heard it, and yet, among the crash of
-the gale and the creaking of an old house, I may possibly have
-been deceived."
-
-"Was your sister dressed?"
-
-"No, she was in her night-dress. In her right hand was found the
-charred stump of a match, and in her left a match-box."
-
-"Showing that she had struck a light and looked about her when
-the alarm took place. That is important. And what conclusions did
-the coroner come to?"
-
-"He investigated the case with great care, for Dr. Roylott's
-conduct had long been notorious in the county, but he was unable
-to find any satisfactory cause of death. My evidence showed that
-the door had been fastened upon the inner side, and the windows
-were blocked by old-fashioned shutters with broad iron bars,
-which were secured every night. The walls were carefully sounded,
-and were shown to be quite solid all round, and the flooring was
-also thoroughly examined, with the same result. The chimney is
-wide, but is barred up by four large staples. It is certain,
-therefore, that my sister was quite alone when she met her end.
-Besides, there were no marks of any violence upon her."
-
-"How about poison?"
-
-"The doctors examined her for it, but without success."
-
-"What do you think that this unfortunate lady died of, then?"
-
-"It is my belief that she died of pure fear and nervous shock,
-though what it was that frightened her I cannot imagine."
-
-"Were there gipsies in the plantation at the time?"
-
-"Yes, there are nearly always some there."
-
-"Ah, and what did you gather from this allusion to a band--a
-speckled band?"
-
-"Sometimes I have thought that it was merely the wild talk of
-delirium, sometimes that it may have referred to some band of
-people, perhaps to these very gipsies in the plantation. I do not
-know whether the spotted handkerchiefs which so many of them wear
-over their heads might have suggested the strange adjective which
-she used."
-
-Holmes shook his head like a man who is far from being satisfied.
-
-"These are very deep waters," said he; "pray go on with your
-narrative."
-
-"Two years have passed since then, and my life has been until
-lately lonelier than ever. A month ago, however, a dear friend,
-whom I have known for many years, has done me the honour to ask
-my hand in marriage. His name is Armitage--Percy Armitage--the
-second son of Mr. Armitage, of Crane Water, near Reading. My
-stepfather has offered no opposition to the match, and we are to
-be married in the course of the spring. Two days ago some repairs
-were started in the west wing of the building, and my bedroom
-wall has been pierced, so that I have had to move into the
-chamber in which my sister died, and to sleep in the very bed in
-which she slept. Imagine, then, my thrill of terror when last
-night, as I lay awake, thinking over her terrible fate, I
-suddenly heard in the silence of the night the low whistle which
-had been the herald of her own death. I sprang up and lit the
-lamp, but nothing was to be seen in the room. I was too shaken to
-go to bed again, however, so I dressed, and as soon as it was
-daylight I slipped down, got a dog-cart at the Crown Inn, which
-is opposite, and drove to Leatherhead, from whence I have come on
-this morning with the one object of seeing you and asking your
-advice."
-
-"You have done wisely," said my friend. "But have you told me
-all?"
-
-"Yes, all."
-
-"Miss Roylott, you have not. You are screening your stepfather."
-
-"Why, what do you mean?"
-
-For answer Holmes pushed back the frill of black lace which
-fringed the hand that lay upon our visitor's knee. Five little
-livid spots, the marks of four fingers and a thumb, were printed
-upon the white wrist.
-
-"You have been cruelly used," said Holmes.
-
-The lady coloured deeply and covered over her injured wrist. "He
-is a hard man," she said, "and perhaps he hardly knows his own
-strength."
-
-There was a long silence, during which Holmes leaned his chin
-upon his hands and stared into the crackling fire.
-
-"This is a very deep business," he said at last. "There are a
-thousand details which I should desire to know before I decide
-upon our course of action. Yet we have not a moment to lose. If
-we were to come to Stoke Moran to-day, would it be possible for
-us to see over these rooms without the knowledge of your
-stepfather?"
-
-"As it happens, he spoke of coming into town to-day upon some
-most important business. It is probable that he will be away all
-day, and that there would be nothing to disturb you. We have a
-housekeeper now, but she is old and foolish, and I could easily
-get her out of the way."
-
-"Excellent. You are not averse to this trip, Watson?"
-
-"By no means."
-
-"Then we shall both come. What are you going to do yourself?"
-
-"I have one or two things which I would wish to do now that I am
-in town. But I shall return by the twelve o'clock train, so as to
-be there in time for your coming."
-
-"And you may expect us early in the afternoon. I have myself some
-small business matters to attend to. Will you not wait and
-breakfast?"
-
-"No, I must go. My heart is lightened already since I have
-confided my trouble to you. I shall look forward to seeing you
-again this afternoon." She dropped her thick black veil over her
-face and glided from the room.
-
-"And what do you think of it all, Watson?" asked Sherlock Holmes,
-leaning back in his chair.
-
-"It seems to me to be a most dark and sinister business."
-
-"Dark enough and sinister enough."
-
-"Yet if the lady is correct in saying that the flooring and walls
-are sound, and that the door, window, and chimney are impassable,
-then her sister must have been undoubtedly alone when she met her
-mysterious end."
-
-"What becomes, then, of these nocturnal whistles, and what of the
-very peculiar words of the dying woman?"
-
-"I cannot think."
-
-"When you combine the ideas of whistles at night, the presence of
-a band of gipsies who are on intimate terms with this old doctor,
-the fact that we have every reason to believe that the doctor has
-an interest in preventing his stepdaughter's marriage, the dying
-allusion to a band, and, finally, the fact that Miss Helen Stoner
-heard a metallic clang, which might have been caused by one of
-those metal bars that secured the shutters falling back into its
-place, I think that there is good ground to think that the
-mystery may be cleared along those lines."
-
-"But what, then, did the gipsies do?"
-
-"I cannot imagine."
-
-"I see many objections to any such theory."
-
-"And so do I. It is precisely for that reason that we are going
-to Stoke Moran this day. I want to see whether the objections are
-fatal, or if they may be explained away. But what in the name of
-the devil!"
-
-The ejaculation had been drawn from my companion by the fact that
-our door had been suddenly dashed open, and that a huge man had
-framed himself in the aperture. His costume was a peculiar
-mixture of the professional and of the agricultural, having a
-black top-hat, a long frock-coat, and a pair of high gaiters,
-with a hunting-crop swinging in his hand. So tall was he that his
-hat actually brushed the cross bar of the doorway, and his
-breadth seemed to span it across from side to side. A large face,
-seared with a thousand wrinkles, burned yellow with the sun, and
-marked with every evil passion, was turned from one to the other
-of us, while his deep-set, bile-shot eyes, and his high, thin,
-fleshless nose, gave him somewhat the resemblance to a fierce old
-bird of prey.
-
-"Which of you is Holmes?" asked this apparition.
-
-"My name, sir; but you have the advantage of me," said my
-companion quietly.
-
-"I am Dr. Grimesby Roylott, of Stoke Moran."
-
-"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
-
-"I will do nothing of the kind. My stepdaughter has been here. I
-have traced her. What has she been saying to you?"
-
-"It is a little cold for the time of the year," said Holmes.
-
-"What has she been saying to you?" screamed the old man
-furiously.
-
-"But I have heard that the crocuses promise well," continued my
-companion imperturbably.
-
-"Ha! You put me off, do you?" said our new visitor, taking a step
-forward and shaking his hunting-crop. "I know you, you scoundrel!
-I have heard of you before. You are Holmes, the meddler."
-
-My friend smiled.
-
-"Holmes, the busybody!"
-
-His smile broadened.
-
-"Holmes, the Scotland Yard Jack-in-office!"
-
-Holmes chuckled heartily. "Your conversation is most
-entertaining," said he. "When you go out close the door, for
-there is a decided draught."
-
-"I will go when I have said my say. Don't you dare to meddle with
-my affairs. I know that Miss Stoner has been here. I traced her!
-I am a dangerous man to fall foul of! See here." He stepped
-swiftly forward, seized the poker, and bent it into a curve with
-his huge brown hands.
-
-"See that you keep yourself out of my grip," he snarled, and
-hurling the twisted poker into the fireplace he strode out of the
-room.
-
-"He seems a very amiable person," said Holmes, laughing. "I am
-not quite so bulky, but if he had remained I might have shown him
-that my grip was not much more feeble than his own." As he spoke
-he picked up the steel poker and, with a sudden effort,
-straightened it out again.
-
-"Fancy his having the insolence to confound me with the official
-detective force! This incident gives zest to our investigation,
-however, and I only trust that our little friend will not suffer
-from her imprudence in allowing this brute to trace her. And now,
-Watson, we shall order breakfast, and afterwards I shall walk
-down to Doctors' Commons, where I hope to get some data which may
-help us in this matter."
-
-
-It was nearly one o'clock when Sherlock Holmes returned from his
-excursion. He held in his hand a sheet of blue paper, scrawled
-over with notes and figures.
-
-"I have seen the will of the deceased wife," said he. "To
-determine its exact meaning I have been obliged to work out the
-present prices of the investments with which it is concerned. The
-total income, which at the time of the wife's death was little
-short of 1100 pounds, is now, through the fall in agricultural
-prices, not more than 750 pounds. Each daughter can claim an
-income of 250 pounds, in case of marriage. It is evident,
-therefore, that if both girls had married, this beauty would have
-had a mere pittance, while even one of them would cripple him to
-a very serious extent. My morning's work has not been wasted,
-since it has proved that he has the very strongest motives for
-standing in the way of anything of the sort. And now, Watson,
-this is too serious for dawdling, especially as the old man is
-aware that we are interesting ourselves in his affairs; so if you
-are ready, we shall call a cab and drive to Waterloo. I should be
-very much obliged if you would slip your revolver into your
-pocket. An Eley's No. 2 is an excellent argument with gentlemen
-who can twist steel pokers into knots. That and a tooth-brush
-are, I think, all that we need."
-
-At Waterloo we were fortunate in catching a train for
-Leatherhead, where we hired a trap at the station inn and drove
-for four or five miles through the lovely Surrey lanes. It was a
-perfect day, with a bright sun and a few fleecy clouds in the
-heavens. The trees and wayside hedges were just throwing out
-their first green shoots, and the air was full of the pleasant
-smell of the moist earth. To me at least there was a strange
-contrast between the sweet promise of the spring and this
-sinister quest upon which we were engaged. My companion sat in
-the front of the trap, his arms folded, his hat pulled down over
-his eyes, and his chin sunk upon his breast, buried in the
-deepest thought. Suddenly, however, he started, tapped me on the
-shoulder, and pointed over the meadows.
-
-"Look there!" said he.
-
-A heavily timbered park stretched up in a gentle slope,
-thickening into a grove at the highest point. From amid the
-branches there jutted out the grey gables and high roof-tree of a
-very old mansion.
-
-"Stoke Moran?" said he.
-
-"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
-the driver.
-
-"There is some building going on there," said Holmes; "that is
-where we are going."
-
-"There's the village," said the driver, pointing to a cluster of
-roofs some distance to the left; "but if you want to get to the
-house, you'll find it shorter to get over this stile, and so by
-the foot-path over the fields. There it is, where the lady is
-walking."
-
-"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
-his eyes. "Yes, I think we had better do as you suggest."
-
-We got off, paid our fare, and the trap rattled back on its way
-to Leatherhead.
-
-"I thought it as well," said Holmes as we climbed the stile,
-"that this fellow should think we had come here as architects, or
-on some definite business. It may stop his gossip.
-Good-afternoon, Miss Stoner. You see that we have been as good as
-our word."
-
-Our client of the morning had hurried forward to meet us with a
-face which spoke her joy. "I have been waiting so eagerly for
-you," she cried, shaking hands with us warmly. "All has turned
-out splendidly. Dr. Roylott has gone to town, and it is unlikely
-that he will be back before evening."
-
-"We have had the pleasure of making the doctor's acquaintance,"
-said Holmes, and in a few words he sketched out what had
-occurred. Miss Stoner turned white to the lips as she listened.
-
-"Good heavens!" she cried, "he has followed me, then."
-
-"So it appears."
-
-"He is so cunning that I never know when I am safe from him. What
-will he say when he returns?"
-
-"He must guard himself, for he may find that there is someone
-more cunning than himself upon his track. You must lock yourself
-up from him to-night. If he is violent, we shall take you away to
-your aunt's at Harrow. Now, we must make the best use of our
-time, so kindly take us at once to the rooms which we are to
-examine."
-
-The building was of grey, lichen-blotched stone, with a high
-central portion and two curving wings, like the claws of a crab,
-thrown out on each side. In one of these wings the windows were
-broken and blocked with wooden boards, while the roof was partly
-caved in, a picture of ruin. The central portion was in little
-better repair, but the right-hand block was comparatively modern,
-and the blinds in the windows, with the blue smoke curling up
-from the chimneys, showed that this was where the family resided.
-Some scaffolding had been erected against the end wall, and the
-stone-work had been broken into, but there were no signs of any
-workmen at the moment of our visit. Holmes walked slowly up and
-down the ill-trimmed lawn and examined with deep attention the
-outsides of the windows.
-
-"This, I take it, belongs to the room in which you used to sleep,
-the centre one to your sister's, and the one next to the main
-building to Dr. Roylott's chamber?"
-
-"Exactly so. But I am now sleeping in the middle one."
-
-"Pending the alterations, as I understand. By the way, there does
-not seem to be any very pressing need for repairs at that end
-wall."
-
-"There were none. I believe that it was an excuse to move me from
-my room."
-
-"Ah! that is suggestive. Now, on the other side of this narrow
-wing runs the corridor from which these three rooms open. There
-are windows in it, of course?"
-
-"Yes, but very small ones. Too narrow for anyone to pass
-through."
-
-"As you both locked your doors at night, your rooms were
-unapproachable from that side. Now, would you have the kindness
-to go into your room and bar your shutters?"
-
-Miss Stoner did so, and Holmes, after a careful examination
-through the open window, endeavoured in every way to force the
-shutter open, but without success. There was no slit through
-which a knife could be passed to raise the bar. Then with his
-lens he tested the hinges, but they were of solid iron, built
-firmly into the massive masonry. "Hum!" said he, scratching his
-chin in some perplexity, "my theory certainly presents some
-difficulties. No one could pass these shutters if they were
-bolted. Well, we shall see if the inside throws any light upon
-the matter."
-
-A small side door led into the whitewashed corridor from which
-the three bedrooms opened. Holmes refused to examine the third
-chamber, so we passed at once to the second, that in which Miss
-Stoner was now sleeping, and in which her sister had met with her
-fate. It was a homely little room, with a low ceiling and a
-gaping fireplace, after the fashion of old country-houses. A
-brown chest of drawers stood in one corner, a narrow
-white-counterpaned bed in another, and a dressing-table on the
-left-hand side of the window. These articles, with two small
-wicker-work chairs, made up all the furniture in the room save
-for a square of Wilton carpet in the centre. The boards round and
-the panelling of the walls were of brown, worm-eaten oak, so old
-and discoloured that it may have dated from the original building
-of the house. Holmes drew one of the chairs into a corner and sat
-silent, while his eyes travelled round and round and up and down,
-taking in every detail of the apartment.
-
-"Where does that bell communicate with?" he asked at last
-pointing to a thick bell-rope which hung down beside the bed, the
-tassel actually lying upon the pillow.
-
-"It goes to the housekeeper's room."
-
-"It looks newer than the other things?"
-
-"Yes, it was only put there a couple of years ago."
-
-"Your sister asked for it, I suppose?"
-
-"No, I never heard of her using it. We used always to get what we
-wanted for ourselves."
-
-"Indeed, it seemed unnecessary to put so nice a bell-pull there.
-You will excuse me for a few minutes while I satisfy myself as to
-this floor." He threw himself down upon his face with his lens in
-his hand and crawled swiftly backward and forward, examining
-minutely the cracks between the boards. Then he did the same with
-the wood-work with which the chamber was panelled. Finally he
-walked over to the bed and spent some time in staring at it and
-in running his eye up and down the wall. Finally he took the
-bell-rope in his hand and gave it a brisk tug.
-
-"Why, it's a dummy," said he.
-
-"Won't it ring?"
-
-"No, it is not even attached to a wire. This is very interesting.
-You can see now that it is fastened to a hook just above where
-the little opening for the ventilator is."
-
-"How very absurd! I never noticed that before."
-
-"Very strange!" muttered Holmes, pulling at the rope. "There are
-one or two very singular points about this room. For example,
-what a fool a builder must be to open a ventilator into another
-room, when, with the same trouble, he might have communicated
-with the outside air!"
-
-"That is also quite modern," said the lady.
-
-"Done about the same time as the bell-rope?" remarked Holmes.
-
-"Yes, there were several little changes carried out about that
-time."
-
-"They seem to have been of a most interesting character--dummy
-bell-ropes, and ventilators which do not ventilate. With your
-permission, Miss Stoner, we shall now carry our researches into
-the inner apartment."
-
-Dr. Grimesby Roylott's chamber was larger than that of his
-step-daughter, but was as plainly furnished. A camp-bed, a small
-wooden shelf full of books, mostly of a technical character, an
-armchair beside the bed, a plain wooden chair against the wall, a
-round table, and a large iron safe were the principal things
-which met the eye. Holmes walked slowly round and examined each
-and all of them with the keenest interest.
-
-"What's in here?" he asked, tapping the safe.
-
-"My stepfather's business papers."
-
-"Oh! you have seen inside, then?"
-
-"Only once, some years ago. I remember that it was full of
-papers."
-
-"There isn't a cat in it, for example?"
-
-"No. What a strange idea!"
-
-"Well, look at this!" He took up a small saucer of milk which
-stood on the top of it.
-
-"No; we don't keep a cat. But there is a cheetah and a baboon."
-
-"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
-saucer of milk does not go very far in satisfying its wants, I
-daresay. There is one point which I should wish to determine." He
-squatted down in front of the wooden chair and examined the seat
-of it with the greatest attention.
-
-"Thank you. That is quite settled," said he, rising and putting
-his lens in his pocket. "Hullo! Here is something interesting!"
-
-The object which had caught his eye was a small dog lash hung on
-one corner of the bed. The lash, however, was curled upon itself
-and tied so as to make a loop of whipcord.
-
-"What do you make of that, Watson?"
-
-"It's a common enough lash. But I don't know why it should be
-tied."
-
-"That is not quite so common, is it? Ah, me! it's a wicked world,
-and when a clever man turns his brains to crime it is the worst
-of all. I think that I have seen enough now, Miss Stoner, and
-with your permission we shall walk out upon the lawn."
-
-I had never seen my friend's face so grim or his brow so dark as
-it was when we turned from the scene of this investigation. We
-had walked several times up and down the lawn, neither Miss
-Stoner nor myself liking to break in upon his thoughts before he
-roused himself from his reverie.
-
-"It is very essential, Miss Stoner," said he, "that you should
-absolutely follow my advice in every respect."
-
-"I shall most certainly do so."
-
-"The matter is too serious for any hesitation. Your life may
-depend upon your compliance."
-
-"I assure you that I am in your hands."
-
-"In the first place, both my friend and I must spend the night in
-your room."
-
-Both Miss Stoner and I gazed at him in astonishment.
-
-"Yes, it must be so. Let me explain. I believe that that is the
-village inn over there?"
-
-"Yes, that is the Crown."
-
-"Very good. Your windows would be visible from there?"
-
-"Certainly."
-
-"You must confine yourself to your room, on pretence of a
-headache, when your stepfather comes back. Then when you hear him
-retire for the night, you must open the shutters of your window,
-undo the hasp, put your lamp there as a signal to us, and then
-withdraw quietly with everything which you are likely to want
-into the room which you used to occupy. I have no doubt that, in
-spite of the repairs, you could manage there for one night."
-
-"Oh, yes, easily."
-
-"The rest you will leave in our hands."
-
-"But what will you do?"
-
-"We shall spend the night in your room, and we shall investigate
-the cause of this noise which has disturbed you."
-
-"I believe, Mr. Holmes, that you have already made up your mind,"
-said Miss Stoner, laying her hand upon my companion's sleeve.
-
-"Perhaps I have."
-
-"Then, for pity's sake, tell me what was the cause of my sister's
-death."
-
-"I should prefer to have clearer proofs before I speak."
-
-"You can at least tell me whether my own thought is correct, and
-if she died from some sudden fright."
-
-"No, I do not think so. I think that there was probably some more
-tangible cause. And now, Miss Stoner, we must leave you for if
-Dr. Roylott returned and saw us our journey would be in vain.
-Good-bye, and be brave, for if you will do what I have told you,
-you may rest assured that we shall soon drive away the dangers
-that threaten you."
-
-Sherlock Holmes and I had no difficulty in engaging a bedroom and
-sitting-room at the Crown Inn. They were on the upper floor, and
-from our window we could command a view of the avenue gate, and
-of the inhabited wing of Stoke Moran Manor House. At dusk we saw
-Dr. Grimesby Roylott drive past, his huge form looming up beside
-the little figure of the lad who drove him. The boy had some
-slight difficulty in undoing the heavy iron gates, and we heard
-the hoarse roar of the doctor's voice and saw the fury with which
-he shook his clinched fists at him. The trap drove on, and a few
-minutes later we saw a sudden light spring up among the trees as
-the lamp was lit in one of the sitting-rooms.
-
-"Do you know, Watson," said Holmes as we sat together in the
-gathering darkness, "I have really some scruples as to taking you
-to-night. There is a distinct element of danger."
-
-"Can I be of assistance?"
-
-"Your presence might be invaluable."
-
-"Then I shall certainly come."
-
-"It is very kind of you."
-
-"You speak of danger. You have evidently seen more in these rooms
-than was visible to me."
-
-"No, but I fancy that I may have deduced a little more. I imagine
-that you saw all that I did."
-
-"I saw nothing remarkable save the bell-rope, and what purpose
-that could answer I confess is more than I can imagine."
-
-"You saw the ventilator, too?"
-
-"Yes, but I do not think that it is such a very unusual thing to
-have a small opening between two rooms. It was so small that a
-rat could hardly pass through."
-
-"I knew that we should find a ventilator before ever we came to
-Stoke Moran."
-
-"My dear Holmes!"
-
-"Oh, yes, I did. You remember in her statement she said that her
-sister could smell Dr. Roylott's cigar. Now, of course that
-suggested at once that there must be a communication between the
-two rooms. It could only be a small one, or it would have been
-remarked upon at the coroner's inquiry. I deduced a ventilator."
-
-"But what harm can there be in that?"
-
-"Well, there is at least a curious coincidence of dates. A
-ventilator is made, a cord is hung, and a lady who sleeps in the
-bed dies. Does not that strike you?"
-
-"I cannot as yet see any connection."
-
-"Did you observe anything very peculiar about that bed?"
-
-"No."
-
-"It was clamped to the floor. Did you ever see a bed fastened
-like that before?"
-
-"I cannot say that I have."
-
-"The lady could not move her bed. It must always be in the same
-relative position to the ventilator and to the rope--or so we may
-call it, since it was clearly never meant for a bell-pull."
-
-"Holmes," I cried, "I seem to see dimly what you are hinting at.
-We are only just in time to prevent some subtle and horrible
-crime."
-
-"Subtle enough and horrible enough. When a doctor does go wrong
-he is the first of criminals. He has nerve and he has knowledge.
-Palmer and Pritchard were among the heads of their profession.
-This man strikes even deeper, but I think, Watson, that we shall
-be able to strike deeper still. But we shall have horrors enough
-before the night is over; for goodness' sake let us have a quiet
-pipe and turn our minds for a few hours to something more
-cheerful."
-
-
-About nine o'clock the light among the trees was extinguished,
-and all was dark in the direction of the Manor House. Two hours
-passed slowly away, and then, suddenly, just at the stroke of
-eleven, a single bright light shone out right in front of us.
-
-"That is our signal," said Holmes, springing to his feet; "it
-comes from the middle window."
-
-As we passed out he exchanged a few words with the landlord,
-explaining that we were going on a late visit to an acquaintance,
-and that it was possible that we might spend the night there. A
-moment later we were out on the dark road, a chill wind blowing
-in our faces, and one yellow light twinkling in front of us
-through the gloom to guide us on our sombre errand.
-
-There was little difficulty in entering the grounds, for
-unrepaired breaches gaped in the old park wall. Making our way
-among the trees, we reached the lawn, crossed it, and were about
-to enter through the window when out from a clump of laurel
-bushes there darted what seemed to be a hideous and distorted
-child, who threw itself upon the grass with writhing limbs and
-then ran swiftly across the lawn into the darkness.
-
-"My God!" I whispered; "did you see it?"
-
-Holmes was for the moment as startled as I. His hand closed like
-a vice upon my wrist in his agitation. Then he broke into a low
-laugh and put his lips to my ear.
-
-"It is a nice household," he murmured. "That is the baboon."
-
-I had forgotten the strange pets which the doctor affected. There
-was a cheetah, too; perhaps we might find it upon our shoulders
-at any moment. I confess that I felt easier in my mind when,
-after following Holmes' example and slipping off my shoes, I
-found myself inside the bedroom. My companion noiselessly closed
-the shutters, moved the lamp onto the table, and cast his eyes
-round the room. All was as we had seen it in the daytime. Then
-creeping up to me and making a trumpet of his hand, he whispered
-into my ear again so gently that it was all that I could do to
-distinguish the words:
-
-"The least sound would be fatal to our plans."
-
-I nodded to show that I had heard.
-
-"We must sit without light. He would see it through the
-ventilator."
-
-I nodded again.
-
-"Do not go asleep; your very life may depend upon it. Have your
-pistol ready in case we should need it. I will sit on the side of
-the bed, and you in that chair."
-
-I took out my revolver and laid it on the corner of the table.
-
-Holmes had brought up a long thin cane, and this he placed upon
-the bed beside him. By it he laid the box of matches and the
-stump of a candle. Then he turned down the lamp, and we were left
-in darkness.
-
-How shall I ever forget that dreadful vigil? I could not hear a
-sound, not even the drawing of a breath, and yet I knew that my
-companion sat open-eyed, within a few feet of me, in the same
-state of nervous tension in which I was myself. The shutters cut
-off the least ray of light, and we waited in absolute darkness.
-
-From outside came the occasional cry of a night-bird, and once at
-our very window a long drawn catlike whine, which told us that
-the cheetah was indeed at liberty. Far away we could hear the
-deep tones of the parish clock, which boomed out every quarter of
-an hour. How long they seemed, those quarters! Twelve struck, and
-one and two and three, and still we sat waiting silently for
-whatever might befall.
-
-Suddenly there was the momentary gleam of a light up in the
-direction of the ventilator, which vanished immediately, but was
-succeeded by a strong smell of burning oil and heated metal.
-Someone in the next room had lit a dark-lantern. I heard a gentle
-sound of movement, and then all was silent once more, though the
-smell grew stronger. For half an hour I sat with straining ears.
-Then suddenly another sound became audible--a very gentle,
-soothing sound, like that of a small jet of steam escaping
-continually from a kettle. The instant that we heard it, Holmes
-sprang from the bed, struck a match, and lashed furiously with
-his cane at the bell-pull.
-
-"You see it, Watson?" he yelled. "You see it?"
-
-But I saw nothing. At the moment when Holmes struck the light I
-heard a low, clear whistle, but the sudden glare flashing into my
-weary eyes made it impossible for me to tell what it was at which
-my friend lashed so savagely. I could, however, see that his face
-was deadly pale and filled with horror and loathing. He had
-ceased to strike and was gazing up at the ventilator when
-suddenly there broke from the silence of the night the most
-horrible cry to which I have ever listened. It swelled up louder
-and louder, a hoarse yell of pain and fear and anger all mingled
-in the one dreadful shriek. They say that away down in the
-village, and even in the distant parsonage, that cry raised the
-sleepers from their beds. It struck cold to our hearts, and I
-stood gazing at Holmes, and he at me, until the last echoes of it
-had died away into the silence from which it rose.
-
-"What can it mean?" I gasped.
-
-"It means that it is all over," Holmes answered. "And perhaps,
-after all, it is for the best. Take your pistol, and we will
-enter Dr. Roylott's room."
-
-With a grave face he lit the lamp and led the way down the
-corridor. Twice he struck at the chamber door without any reply
-from within. Then he turned the handle and entered, I at his
-heels, with the cocked pistol in my hand.
-
-It was a singular sight which met our eyes. On the table stood a
-dark-lantern with the shutter half open, throwing a brilliant
-beam of light upon the iron safe, the door of which was ajar.
-Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
-clad in a long grey dressing-gown, his bare ankles protruding
-beneath, and his feet thrust into red heelless Turkish slippers.
-Across his lap lay the short stock with the long lash which we
-had noticed during the day. His chin was cocked upward and his
-eyes were fixed in a dreadful, rigid stare at the corner of the
-ceiling. Round his brow he had a peculiar yellow band, with
-brownish speckles, which seemed to be bound tightly round his
-head. As we entered he made neither sound nor motion.
-
-"The band! the speckled band!" whispered Holmes.
-
-I took a step forward. In an instant his strange headgear began
-to move, and there reared itself from among his hair the squat
-diamond-shaped head and puffed neck of a loathsome serpent.
-
-"It is a swamp adder!" cried Holmes; "the deadliest snake in
-India. He has died within ten seconds of being bitten. Violence
-does, in truth, recoil upon the violent, and the schemer falls
-into the pit which he digs for another. Let us thrust this
-creature back into its den, and we can then remove Miss Stoner to
-some place of shelter and let the county police know what has
-happened."
-
-As he spoke he drew the dog-whip swiftly from the dead man's lap,
-and throwing the noose round the reptile's neck he drew it from
-its horrid perch and, carrying it at arm's length, threw it into
-the iron safe, which he closed upon it.
-
-Such are the true facts of the death of Dr. Grimesby Roylott, of
-Stoke Moran. It is not necessary that I should prolong a
-narrative which has already run to too great a length by telling
-how we broke the sad news to the terrified girl, how we conveyed
-her by the morning train to the care of her good aunt at Harrow,
-of how the slow process of official inquiry came to the
-conclusion that the doctor met his fate while indiscreetly
-playing with a dangerous pet. The little which I had yet to learn
-of the case was told me by Sherlock Holmes as we travelled back
-next day.
-
-"I had," said he, "come to an entirely erroneous conclusion which
-shows, my dear Watson, how dangerous it always is to reason from
-insufficient data. The presence of the gipsies, and the use of
-the word 'band,' which was used by the poor girl, no doubt, to
-explain the appearance which she had caught a hurried glimpse of
-by the light of her match, were sufficient to put me upon an
-entirely wrong scent. I can only claim the merit that I instantly
-reconsidered my position when, however, it became clear to me
-that whatever danger threatened an occupant of the room could not
-come either from the window or the door. My attention was
-speedily drawn, as I have already remarked to you, to this
-ventilator, and to the bell-rope which hung down to the bed. The
-discovery that this was a dummy, and that the bed was clamped to
-the floor, instantly gave rise to the suspicion that the rope was
-there as a bridge for something passing through the hole and
-coming to the bed. The idea of a snake instantly occurred to me,
-and when I coupled it with my knowledge that the doctor was
-furnished with a supply of creatures from India, I felt that I
-was probably on the right track. The idea of using a form of
-poison which could not possibly be discovered by any chemical
-test was just such a one as would occur to a clever and ruthless
-man who had had an Eastern training. The rapidity with which such
-a poison would take effect would also, from his point of view, be
-an advantage. It would be a sharp-eyed coroner, indeed, who could
-distinguish the two little dark punctures which would show where
-the poison fangs had done their work. Then I thought of the
-whistle. Of course he must recall the snake before the morning
-light revealed it to the victim. He had trained it, probably by
-the use of the milk which we saw, to return to him when summoned.
-He would put it through this ventilator at the hour that he
-thought best, with the certainty that it would crawl down the
-rope and land on the bed. It might or might not bite the
-occupant, perhaps she might escape every night for a week, but
-sooner or later she must fall a victim.
-
-"I had come to these conclusions before ever I had entered his
-room. An inspection of his chair showed me that he had been in
-the habit of standing on it, which of course would be necessary
-in order that he should reach the ventilator. The sight of the
-safe, the saucer of milk, and the loop of whipcord were enough to
-finally dispel any doubts which may have remained. The metallic
-clang heard by Miss Stoner was obviously caused by her stepfather
-hastily closing the door of his safe upon its terrible occupant.
-Having once made up my mind, you know the steps which I took in
-order to put the matter to the proof. I heard the creature hiss
-as I have no doubt that you did also, and I instantly lit the
-light and attacked it."
-
-"With the result of driving it through the ventilator."
-
-"And also with the result of causing it to turn upon its master
-at the other side. Some of the blows of my cane came home and
-roused its snakish temper, so that it flew upon the first person
-it saw. In this way I am no doubt indirectly responsible for Dr.
-Grimesby Roylott's death, and I cannot say that it is likely to
-weigh very heavily upon my conscience."
-
-
-
-IX. THE ADVENTURE OF THE ENGINEER'S THUMB
-
-Of all the problems which have been submitted to my friend, Mr.
-Sherlock Holmes, for solution during the years of our intimacy,
-there were only two which I was the means of introducing to his
-notice--that of Mr. Hatherley's thumb, and that of Colonel
-Warburton's madness. Of these the latter may have afforded a
-finer field for an acute and original observer, but the other was
-so strange in its inception and so dramatic in its details that
-it may be the more worthy of being placed upon record, even if it
-gave my friend fewer openings for those deductive methods of
-reasoning by which he achieved such remarkable results. The story
-has, I believe, been told more than once in the newspapers, but,
-like all such narratives, its effect is much less striking when
-set forth en bloc in a single half-column of print than when the
-facts slowly evolve before your own eyes, and the mystery clears
-gradually away as each new discovery furnishes a step which leads
-on to the complete truth. At the time the circumstances made a
-deep impression upon me, and the lapse of two years has hardly
-served to weaken the effect.
-
-It was in the summer of '89, not long after my marriage, that the
-events occurred which I am now about to summarise. I had returned
-to civil practice and had finally abandoned Holmes in his Baker
-Street rooms, although I continually visited him and occasionally
-even persuaded him to forgo his Bohemian habits so far as to come
-and visit us. My practice had steadily increased, and as I
-happened to live at no very great distance from Paddington
-Station, I got a few patients from among the officials. One of
-these, whom I had cured of a painful and lingering disease, was
-never weary of advertising my virtues and of endeavouring to send
-me on every sufferer over whom he might have any influence.
-
-One morning, at a little before seven o'clock, I was awakened by
-the maid tapping at the door to announce that two men had come
-from Paddington and were waiting in the consulting-room. I
-dressed hurriedly, for I knew by experience that railway cases
-were seldom trivial, and hastened downstairs. As I descended, my
-old ally, the guard, came out of the room and closed the door
-tightly behind him.
-
-"I've got him here," he whispered, jerking his thumb over his
-shoulder; "he's all right."
-
-"What is it, then?" I asked, for his manner suggested that it was
-some strange creature which he had caged up in my room.
-
-"It's a new patient," he whispered. "I thought I'd bring him
-round myself; then he couldn't slip away. There he is, all safe
-and sound. I must go now, Doctor; I have my dooties, just the
-same as you." And off he went, this trusty tout, without even
-giving me time to thank him.
-
-I entered my consulting-room and found a gentleman seated by the
-table. He was quietly dressed in a suit of heather tweed with a
-soft cloth cap which he had laid down upon my books. Round one of
-his hands he had a handkerchief wrapped, which was mottled all
-over with bloodstains. He was young, not more than
-five-and-twenty, I should say, with a strong, masculine face; but
-he was exceedingly pale and gave me the impression of a man who
-was suffering from some strong agitation, which it took all his
-strength of mind to control.
-
-"I am sorry to knock you up so early, Doctor," said he, "but I
-have had a very serious accident during the night. I came in by
-train this morning, and on inquiring at Paddington as to where I
-might find a doctor, a worthy fellow very kindly escorted me
-here. I gave the maid a card, but I see that she has left it upon
-the side-table."
-
-I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
-engineer, 16A, Victoria Street (3rd floor)." That was the name,
-style, and abode of my morning visitor. "I regret that I have
-kept you waiting," said I, sitting down in my library-chair. "You
-are fresh from a night journey, I understand, which is in itself
-a monotonous occupation."
-
-"Oh, my night could not be called monotonous," said he, and
-laughed. He laughed very heartily, with a high, ringing note,
-leaning back in his chair and shaking his sides. All my medical
-instincts rose up against that laugh.
-
-"Stop it!" I cried; "pull yourself together!" and I poured out
-some water from a caraffe.
-
-It was useless, however. He was off in one of those hysterical
-outbursts which come upon a strong nature when some great crisis
-is over and gone. Presently he came to himself once more, very
-weary and pale-looking.
-
-"I have been making a fool of myself," he gasped.
-
-"Not at all. Drink this." I dashed some brandy into the water,
-and the colour began to come back to his bloodless cheeks.
-
-"That's better!" said he. "And now, Doctor, perhaps you would
-kindly attend to my thumb, or rather to the place where my thumb
-used to be."
-
-He unwound the handkerchief and held out his hand. It gave even
-my hardened nerves a shudder to look at it. There were four
-protruding fingers and a horrid red, spongy surface where the
-thumb should have been. It had been hacked or torn right out from
-the roots.
-
-"Good heavens!" I cried, "this is a terrible injury. It must have
-bled considerably."
-
-"Yes, it did. I fainted when it was done, and I think that I must
-have been senseless for a long time. When I came to I found that
-it was still bleeding, so I tied one end of my handkerchief very
-tightly round the wrist and braced it up with a twig."
-
-"Excellent! You should have been a surgeon."
-
-"It is a question of hydraulics, you see, and came within my own
-province."
-
-"This has been done," said I, examining the wound, "by a very
-heavy and sharp instrument."
-
-"A thing like a cleaver," said he.
-
-"An accident, I presume?"
-
-"By no means."
-
-"What! a murderous attack?"
-
-"Very murderous indeed."
-
-"You horrify me."
-
-I sponged the wound, cleaned it, dressed it, and finally covered
-it over with cotton wadding and carbolised bandages. He lay back
-without wincing, though he bit his lip from time to time.
-
-"How is that?" I asked when I had finished.
-
-"Capital! Between your brandy and your bandage, I feel a new man.
-I was very weak, but I have had a good deal to go through."
-
-"Perhaps you had better not speak of the matter. It is evidently
-trying to your nerves."
-
-"Oh, no, not now. I shall have to tell my tale to the police;
-but, between ourselves, if it were not for the convincing
-evidence of this wound of mine, I should be surprised if they
-believed my statement, for it is a very extraordinary one, and I
-have not much in the way of proof with which to back it up; and,
-even if they believe me, the clues which I can give them are so
-vague that it is a question whether justice will be done."
-
-"Ha!" cried I, "if it is anything in the nature of a problem
-which you desire to see solved, I should strongly recommend you
-to come to my friend, Mr. Sherlock Holmes, before you go to the
-official police."
-
-"Oh, I have heard of that fellow," answered my visitor, "and I
-should be very glad if he would take the matter up, though of
-course I must use the official police as well. Would you give me
-an introduction to him?"
-
-"I'll do better. I'll take you round to him myself."
-
-"I should be immensely obliged to you."
-
-"We'll call a cab and go together. We shall just be in time to
-have a little breakfast with him. Do you feel equal to it?"
-
-"Yes; I shall not feel easy until I have told my story."
-
-"Then my servant will call a cab, and I shall be with you in an
-instant." I rushed upstairs, explained the matter shortly to my
-wife, and in five minutes was inside a hansom, driving with my
-new acquaintance to Baker Street.
-
-Sherlock Holmes was, as I expected, lounging about his
-sitting-room in his dressing-gown, reading the agony column of The
-Times and smoking his before-breakfast pipe, which was composed
-of all the plugs and dottles left from his smokes of the day
-before, all carefully dried and collected on the corner of the
-mantelpiece. He received us in his quietly genial fashion,
-ordered fresh rashers and eggs, and joined us in a hearty meal.
-When it was concluded he settled our new acquaintance upon the
-sofa, placed a pillow beneath his head, and laid a glass of
-brandy and water within his reach.
-
-"It is easy to see that your experience has been no common one,
-Mr. Hatherley," said he. "Pray, lie down there and make yourself
-absolutely at home. Tell us what you can, but stop when you are
-tired and keep up your strength with a little stimulant."
-
-"Thank you," said my patient, "but I have felt another man since
-the doctor bandaged me, and I think that your breakfast has
-completed the cure. I shall take up as little of your valuable
-time as possible, so I shall start at once upon my peculiar
-experiences."
-
-Holmes sat in his big armchair with the weary, heavy-lidded
-expression which veiled his keen and eager nature, while I sat
-opposite to him, and we listened in silence to the strange story
-which our visitor detailed to us.
-
-"You must know," said he, "that I am an orphan and a bachelor,
-residing alone in lodgings in London. By profession I am a
-hydraulic engineer, and I have had considerable experience of my
-work during the seven years that I was apprenticed to Venner &
-Matheson, the well-known firm, of Greenwich. Two years ago,
-having served my time, and having also come into a fair sum of
-money through my poor father's death, I determined to start in
-business for myself and took professional chambers in Victoria
-Street.
-
-"I suppose that everyone finds his first independent start in
-business a dreary experience. To me it has been exceptionally so.
-During two years I have had three consultations and one small
-job, and that is absolutely all that my profession has brought
-me. My gross takings amount to 27 pounds 10s. Every day, from
-nine in the morning until four in the afternoon, I waited in my
-little den, until at last my heart began to sink, and I came to
-believe that I should never have any practice at all.
-
-"Yesterday, however, just as I was thinking of leaving the
-office, my clerk entered to say there was a gentleman waiting who
-wished to see me upon business. He brought up a card, too, with
-the name of 'Colonel Lysander Stark' engraved upon it. Close at
-his heels came the colonel himself, a man rather over the middle
-size, but of an exceeding thinness. I do not think that I have
-ever seen so thin a man. His whole face sharpened away into nose
-and chin, and the skin of his cheeks was drawn quite tense over
-his outstanding bones. Yet this emaciation seemed to be his
-natural habit, and due to no disease, for his eye was bright, his
-step brisk, and his bearing assured. He was plainly but neatly
-dressed, and his age, I should judge, would be nearer forty than
-thirty.
-
-"'Mr. Hatherley?' said he, with something of a German accent.
-'You have been recommended to me, Mr. Hatherley, as being a man
-who is not only proficient in his profession but is also discreet
-and capable of preserving a secret.'
-
-"I bowed, feeling as flattered as any young man would at such an
-address. 'May I ask who it was who gave me so good a character?'
-
-"'Well, perhaps it is better that I should not tell you that just
-at this moment. I have it from the same source that you are both
-an orphan and a bachelor and are residing alone in London.'
-
-"'That is quite correct,' I answered; 'but you will excuse me if
-I say that I cannot see how all this bears upon my professional
-qualifications. I understand that it was on a professional matter
-that you wished to speak to me?'
-
-"'Undoubtedly so. But you will find that all I say is really to
-the point. I have a professional commission for you, but absolute
-secrecy is quite essential--absolute secrecy, you understand, and
-of course we may expect that more from a man who is alone than
-from one who lives in the bosom of his family.'
-
-"'If I promise to keep a secret,' said I, 'you may absolutely
-depend upon my doing so.'
-
-"He looked very hard at me as I spoke, and it seemed to me that I
-had never seen so suspicious and questioning an eye.
-
-"'Do you promise, then?' said he at last.
-
-"'Yes, I promise.'
-
-"'Absolute and complete silence before, during, and after? No
-reference to the matter at all, either in word or writing?'
-
-"'I have already given you my word.'
-
-"'Very good.' He suddenly sprang up, and darting like lightning
-across the room he flung open the door. The passage outside was
-empty.
-
-"'That's all right,' said he, coming back. 'I know that clerks are
-sometimes curious as to their master's affairs. Now we can talk
-in safety.' He drew up his chair very close to mine and began to
-stare at me again with the same questioning and thoughtful look.
-
-"A feeling of repulsion, and of something akin to fear had begun
-to rise within me at the strange antics of this fleshless man.
-Even my dread of losing a client could not restrain me from
-showing my impatience.
-
-"'I beg that you will state your business, sir,' said I; 'my time
-is of value.' Heaven forgive me for that last sentence, but the
-words came to my lips.
-
-"'How would fifty guineas for a night's work suit you?' he asked.
-
-"'Most admirably.'
-
-"'I say a night's work, but an hour's would be nearer the mark. I
-simply want your opinion about a hydraulic stamping machine which
-has got out of gear. If you show us what is wrong we shall soon
-set it right ourselves. What do you think of such a commission as
-that?'
-
-"'The work appears to be light and the pay munificent.'
-
-"'Precisely so. We shall want you to come to-night by the last
-train.'
-
-"'Where to?'
-
-"'To Eyford, in Berkshire. It is a little place near the borders
-of Oxfordshire, and within seven miles of Reading. There is a
-train from Paddington which would bring you there at about
-11:15.'
-
-"'Very good.'
-
-"'I shall come down in a carriage to meet you.'
-
-"'There is a drive, then?'
-
-"'Yes, our little place is quite out in the country. It is a good
-seven miles from Eyford Station.'
-
-"'Then we can hardly get there before midnight. I suppose there
-would be no chance of a train back. I should be compelled to stop
-the night.'
-
-"'Yes, we could easily give you a shake-down.'
-
-"'That is very awkward. Could I not come at some more convenient
-hour?'
-
-"'We have judged it best that you should come late. It is to
-recompense you for any inconvenience that we are paying to you, a
-young and unknown man, a fee which would buy an opinion from the
-very heads of your profession. Still, of course, if you would
-like to draw out of the business, there is plenty of time to do
-so.'
-
-"I thought of the fifty guineas, and of how very useful they
-would be to me. 'Not at all,' said I, 'I shall be very happy to
-accommodate myself to your wishes. I should like, however, to
-understand a little more clearly what it is that you wish me to
-do.'
-
-"'Quite so. It is very natural that the pledge of secrecy which
-we have exacted from you should have aroused your curiosity. I
-have no wish to commit you to anything without your having it all
-laid before you. I suppose that we are absolutely safe from
-eavesdroppers?'
-
-"'Entirely.'
-
-"'Then the matter stands thus. You are probably aware that
-fuller's-earth is a valuable product, and that it is only found
-in one or two places in England?'
-
-"'I have heard so.'
-
-"'Some little time ago I bought a small place--a very small
-place--within ten miles of Reading. I was fortunate enough to
-discover that there was a deposit of fuller's-earth in one of my
-fields. On examining it, however, I found that this deposit was a
-comparatively small one, and that it formed a link between two
-very much larger ones upon the right and left--both of them,
-however, in the grounds of my neighbours. These good people were
-absolutely ignorant that their land contained that which was
-quite as valuable as a gold-mine. Naturally, it was to my
-interest to buy their land before they discovered its true value,
-but unfortunately I had no capital by which I could do this. I
-took a few of my friends into the secret, however, and they
-suggested that we should quietly and secretly work our own little
-deposit and that in this way we should earn the money which would
-enable us to buy the neighbouring fields. This we have now been
-doing for some time, and in order to help us in our operations we
-erected a hydraulic press. This press, as I have already
-explained, has got out of order, and we wish your advice upon the
-subject. We guard our secret very jealously, however, and if it
-once became known that we had hydraulic engineers coming to our
-little house, it would soon rouse inquiry, and then, if the facts
-came out, it would be good-bye to any chance of getting these
-fields and carrying out our plans. That is why I have made you
-promise me that you will not tell a human being that you are
-going to Eyford to-night. I hope that I make it all plain?'
-
-"'I quite follow you,' said I. 'The only point which I could not
-quite understand was what use you could make of a hydraulic press
-in excavating fuller's-earth, which, as I understand, is dug out
-like gravel from a pit.'
-
-"'Ah!' said he carelessly, 'we have our own process. We compress
-the earth into bricks, so as to remove them without revealing
-what they are. But that is a mere detail. I have taken you fully
-into my confidence now, Mr. Hatherley, and I have shown you how I
-trust you.' He rose as he spoke. 'I shall expect you, then, at
-Eyford at 11:15.'
-
-"'I shall certainly be there.'
-
-"'And not a word to a soul.' He looked at me with a last long,
-questioning gaze, and then, pressing my hand in a cold, dank
-grasp, he hurried from the room.
-
-"Well, when I came to think it all over in cool blood I was very
-much astonished, as you may both think, at this sudden commission
-which had been intrusted to me. On the one hand, of course, I was
-glad, for the fee was at least tenfold what I should have asked
-had I set a price upon my own services, and it was possible that
-this order might lead to other ones. On the other hand, the face
-and manner of my patron had made an unpleasant impression upon
-me, and I could not think that his explanation of the
-fuller's-earth was sufficient to explain the necessity for my
-coming at midnight, and his extreme anxiety lest I should tell
-anyone of my errand. However, I threw all fears to the winds, ate
-a hearty supper, drove to Paddington, and started off, having
-obeyed to the letter the injunction as to holding my tongue.
-
-"At Reading I had to change not only my carriage but my station.
-However, I was in time for the last train to Eyford, and I
-reached the little dim-lit station after eleven o'clock. I was the
-only passenger who got out there, and there was no one upon the
-platform save a single sleepy porter with a lantern. As I passed
-out through the wicket gate, however, I found my acquaintance of
-the morning waiting in the shadow upon the other side. Without a
-word he grasped my arm and hurried me into a carriage, the door
-of which was standing open. He drew up the windows on either
-side, tapped on the wood-work, and away we went as fast as the
-horse could go."
-
-"One horse?" interjected Holmes.
-
-"Yes, only one."
-
-"Did you observe the colour?"
-
-"Yes, I saw it by the side-lights when I was stepping into the
-carriage. It was a chestnut."
-
-"Tired-looking or fresh?"
-
-"Oh, fresh and glossy."
-
-"Thank you. I am sorry to have interrupted you. Pray continue
-your most interesting statement."
-
-"Away we went then, and we drove for at least an hour. Colonel
-Lysander Stark had said that it was only seven miles, but I
-should think, from the rate that we seemed to go, and from the
-time that we took, that it must have been nearer twelve. He sat
-at my side in silence all the time, and I was aware, more than
-once when I glanced in his direction, that he was looking at me
-with great intensity. The country roads seem to be not very good
-in that part of the world, for we lurched and jolted terribly. I
-tried to look out of the windows to see something of where we
-were, but they were made of frosted glass, and I could make out
-nothing save the occasional bright blur of a passing light. Now
-and then I hazarded some remark to break the monotony of the
-journey, but the colonel answered only in monosyllables, and the
-conversation soon flagged. At last, however, the bumping of the
-road was exchanged for the crisp smoothness of a gravel-drive,
-and the carriage came to a stand. Colonel Lysander Stark sprang
-out, and, as I followed after him, pulled me swiftly into a porch
-which gaped in front of us. We stepped, as it were, right out of
-the carriage and into the hall, so that I failed to catch the
-most fleeting glance of the front of the house. The instant that
-I had crossed the threshold the door slammed heavily behind us,
-and I heard faintly the rattle of the wheels as the carriage
-drove away.
-
-"It was pitch dark inside the house, and the colonel fumbled
-about looking for matches and muttering under his breath.
-Suddenly a door opened at the other end of the passage, and a
-long, golden bar of light shot out in our direction. It grew
-broader, and a woman appeared with a lamp in her hand, which she
-held above her head, pushing her face forward and peering at us.
-I could see that she was pretty, and from the gloss with which
-the light shone upon her dark dress I knew that it was a rich
-material. She spoke a few words in a foreign tongue in a tone as
-though asking a question, and when my companion answered in a
-gruff monosyllable she gave such a start that the lamp nearly
-fell from her hand. Colonel Stark went up to her, whispered
-something in her ear, and then, pushing her back into the room
-from whence she had come, he walked towards me again with the
-lamp in his hand.
-
-"'Perhaps you will have the kindness to wait in this room for a
-few minutes,' said he, throwing open another door. It was a
-quiet, little, plainly furnished room, with a round table in the
-centre, on which several German books were scattered. Colonel
-Stark laid down the lamp on the top of a harmonium beside the
-door. 'I shall not keep you waiting an instant,' said he, and
-vanished into the darkness.
-
-"I glanced at the books upon the table, and in spite of my
-ignorance of German I could see that two of them were treatises
-on science, the others being volumes of poetry. Then I walked
-across to the window, hoping that I might catch some glimpse of
-the country-side, but an oak shutter, heavily barred, was folded
-across it. It was a wonderfully silent house. There was an old
-clock ticking loudly somewhere in the passage, but otherwise
-everything was deadly still. A vague feeling of uneasiness began
-to steal over me. Who were these German people, and what were
-they doing living in this strange, out-of-the-way place? And
-where was the place? I was ten miles or so from Eyford, that was
-all I knew, but whether north, south, east, or west I had no
-idea. For that matter, Reading, and possibly other large towns,
-were within that radius, so the place might not be so secluded,
-after all. Yet it was quite certain, from the absolute stillness,
-that we were in the country. I paced up and down the room,
-humming a tune under my breath to keep up my spirits and feeling
-that I was thoroughly earning my fifty-guinea fee.
-
-"Suddenly, without any preliminary sound in the midst of the
-utter stillness, the door of my room swung slowly open. The woman
-was standing in the aperture, the darkness of the hall behind
-her, the yellow light from my lamp beating upon her eager and
-beautiful face. I could see at a glance that she was sick with
-fear, and the sight sent a chill to my own heart. She held up one
-shaking finger to warn me to be silent, and she shot a few
-whispered words of broken English at me, her eyes glancing back,
-like those of a frightened horse, into the gloom behind her.
-
-"'I would go,' said she, trying hard, as it seemed to me, to
-speak calmly; 'I would go. I should not stay here. There is no
-good for you to do.'
-
-"'But, madam,' said I, 'I have not yet done what I came for. I
-cannot possibly leave until I have seen the machine.'
-
-"'It is not worth your while to wait,' she went on. 'You can pass
-through the door; no one hinders.' And then, seeing that I smiled
-and shook my head, she suddenly threw aside her constraint and
-made a step forward, with her hands wrung together. 'For the love
-of Heaven!' she whispered, 'get away from here before it is too
-late!'
-
-"But I am somewhat headstrong by nature, and the more ready to
-engage in an affair when there is some obstacle in the way. I
-thought of my fifty-guinea fee, of my wearisome journey, and of
-the unpleasant night which seemed to be before me. Was it all to
-go for nothing? Why should I slink away without having carried
-out my commission, and without the payment which was my due? This
-woman might, for all I knew, be a monomaniac. With a stout
-bearing, therefore, though her manner had shaken me more than I
-cared to confess, I still shook my head and declared my intention
-of remaining where I was. She was about to renew her entreaties
-when a door slammed overhead, and the sound of several footsteps
-was heard upon the stairs. She listened for an instant, threw up
-her hands with a despairing gesture, and vanished as suddenly and
-as noiselessly as she had come.
-
-"The newcomers were Colonel Lysander Stark and a short thick man
-with a chinchilla beard growing out of the creases of his double
-chin, who was introduced to me as Mr. Ferguson.
-
-"'This is my secretary and manager,' said the colonel. 'By the
-way, I was under the impression that I left this door shut just
-now. I fear that you have felt the draught.'
-
-"'On the contrary,' said I, 'I opened the door myself because I
-felt the room to be a little close.'
-
-"He shot one of his suspicious looks at me. 'Perhaps we had
-better proceed to business, then,' said he. 'Mr. Ferguson and I
-will take you up to see the machine.'
-
-"'I had better put my hat on, I suppose.'
-
-"'Oh, no, it is in the house.'
-
-"'What, you dig fuller's-earth in the house?'
-
-"'No, no. This is only where we compress it. But never mind that.
-All we wish you to do is to examine the machine and to let us
-know what is wrong with it.'
-
-"We went upstairs together, the colonel first with the lamp, the
-fat manager and I behind him. It was a labyrinth of an old house,
-with corridors, passages, narrow winding staircases, and little
-low doors, the thresholds of which were hollowed out by the
-generations who had crossed them. There were no carpets and no
-signs of any furniture above the ground floor, while the plaster
-was peeling off the walls, and the damp was breaking through in
-green, unhealthy blotches. I tried to put on as unconcerned an
-air as possible, but I had not forgotten the warnings of the
-lady, even though I disregarded them, and I kept a keen eye upon
-my two companions. Ferguson appeared to be a morose and silent
-man, but I could see from the little that he said that he was at
-least a fellow-countryman.
-
-"Colonel Lysander Stark stopped at last before a low door, which
-he unlocked. Within was a small, square room, in which the three
-of us could hardly get at one time. Ferguson remained outside,
-and the colonel ushered me in.
-
-"'We are now,' said he, 'actually within the hydraulic press, and
-it would be a particularly unpleasant thing for us if anyone were
-to turn it on. The ceiling of this small chamber is really the
-end of the descending piston, and it comes down with the force of
-many tons upon this metal floor. There are small lateral columns
-of water outside which receive the force, and which transmit and
-multiply it in the manner which is familiar to you. The machine
-goes readily enough, but there is some stiffness in the working
-of it, and it has lost a little of its force. Perhaps you will
-have the goodness to look it over and to show us how we can set
-it right.'
-
-"I took the lamp from him, and I examined the machine very
-thoroughly. It was indeed a gigantic one, and capable of
-exercising enormous pressure. When I passed outside, however, and
-pressed down the levers which controlled it, I knew at once by
-the whishing sound that there was a slight leakage, which allowed
-a regurgitation of water through one of the side cylinders. An
-examination showed that one of the india-rubber bands which was
-round the head of a driving-rod had shrunk so as not quite to
-fill the socket along which it worked. This was clearly the cause
-of the loss of power, and I pointed it out to my companions, who
-followed my remarks very carefully and asked several practical
-questions as to how they should proceed to set it right. When I
-had made it clear to them, I returned to the main chamber of the
-machine and took a good look at it to satisfy my own curiosity.
-It was obvious at a glance that the story of the fuller's-earth
-was the merest fabrication, for it would be absurd to suppose
-that so powerful an engine could be designed for so inadequate a
-purpose. The walls were of wood, but the floor consisted of a
-large iron trough, and when I came to examine it I could see a
-crust of metallic deposit all over it. I had stooped and was
-scraping at this to see exactly what it was when I heard a
-muttered exclamation in German and saw the cadaverous face of the
-colonel looking down at me.
-
-"'What are you doing there?' he asked.
-
-"I felt angry at having been tricked by so elaborate a story as
-that which he had told me. 'I was admiring your fuller's-earth,'
-said I; 'I think that I should be better able to advise you as to
-your machine if I knew what the exact purpose was for which it
-was used.'
-
-"The instant that I uttered the words I regretted the rashness of
-my speech. His face set hard, and a baleful light sprang up in
-his grey eyes.
-
-"'Very well,' said he, 'you shall know all about the machine.' He
-took a step backward, slammed the little door, and turned the key
-in the lock. I rushed towards it and pulled at the handle, but it
-was quite secure, and did not give in the least to my kicks and
-shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
-
-"And then suddenly in the silence I heard a sound which sent my
-heart into my mouth. It was the clank of the levers and the swish
-of the leaking cylinder. He had set the engine at work. The lamp
-still stood upon the floor where I had placed it when examining
-the trough. By its light I saw that the black ceiling was coming
-down upon me, slowly, jerkily, but, as none knew better than
-myself, with a force which must within a minute grind me to a
-shapeless pulp. I threw myself, screaming, against the door, and
-dragged with my nails at the lock. I implored the colonel to let
-me out, but the remorseless clanking of the levers drowned my
-cries. The ceiling was only a foot or two above my head, and with
-my hand upraised I could feel its hard, rough surface. Then it
-flashed through my mind that the pain of my death would depend
-very much upon the position in which I met it. If I lay on my
-face the weight would come upon my spine, and I shuddered to
-think of that dreadful snap. Easier the other way, perhaps; and
-yet, had I the nerve to lie and look up at that deadly black
-shadow wavering down upon me? Already I was unable to stand
-erect, when my eye caught something which brought a gush of hope
-back to my heart.
-
-"I have said that though the floor and ceiling were of iron, the
-walls were of wood. As I gave a last hurried glance around, I saw
-a thin line of yellow light between two of the boards, which
-broadened and broadened as a small panel was pushed backward. For
-an instant I could hardly believe that here was indeed a door
-which led away from death. The next instant I threw myself
-through, and lay half-fainting upon the other side. The panel had
-closed again behind me, but the crash of the lamp, and a few
-moments afterwards the clang of the two slabs of metal, told me
-how narrow had been my escape.
-
-"I was recalled to myself by a frantic plucking at my wrist, and
-I found myself lying upon the stone floor of a narrow corridor,
-while a woman bent over me and tugged at me with her left hand,
-while she held a candle in her right. It was the same good friend
-whose warning I had so foolishly rejected.
-
-"'Come! come!' she cried breathlessly. 'They will be here in a
-moment. They will see that you are not there. Oh, do not waste
-the so-precious time, but come!'
-
-"This time, at least, I did not scorn her advice. I staggered to
-my feet and ran with her along the corridor and down a winding
-stair. The latter led to another broad passage, and just as we
-reached it we heard the sound of running feet and the shouting of
-two voices, one answering the other from the floor on which  we
-were and from the one beneath. My guide stopped and looked about
-her like one  who is at her wit's end. Then she threw open a door
-which led into a bedroom, through the window of which the moon
-was shining brightly.
-
-"'It is your only chance,' said she. 'It is high, but it may be
-that you can jump it.'
-
-"As she spoke a light sprang into view at the further end of the
-passage, and I saw the lean figure of Colonel Lysander Stark
-rushing forward with a lantern in one hand and a weapon like a
-butcher's cleaver in the other. I rushed across the bedroom,
-flung open the window, and looked out. How quiet and sweet and
-wholesome the garden looked in the moonlight, and it could not be
-more than thirty feet down. I clambered out upon the sill, but I
-hesitated to jump until I should have heard what passed between
-my saviour and the ruffian who pursued me. If she were ill-used,
-then at any risks I was determined to go back to her assistance.
-The thought had hardly flashed through my mind before he was at
-the door, pushing his way past her; but she threw her arms round
-him and tried to hold him back.
-
-"'Fritz! Fritz!' she cried in English, 'remember your promise
-after the last time. You said it should not be again. He will be
-silent! Oh, he will be silent!'
-
-"'You are mad, Elise!' he shouted, struggling to break away from
-her. 'You will be the ruin of us. He has seen too much. Let me
-pass, I say!' He dashed her to one side, and, rushing to the
-window, cut at me with his heavy weapon. I had let myself go, and
-was hanging by the hands to the sill, when his blow fell. I was
-conscious of a dull pain, my grip loosened, and I fell into the
-garden below.
-
-"I was shaken but not hurt by the fall; so I picked myself up and
-rushed off among the bushes as hard as I could run, for I
-understood that I was far from being out of danger yet. Suddenly,
-however, as I ran, a deadly dizziness and sickness came over me.
-I glanced down at my hand, which was throbbing painfully, and
-then, for the first time, saw that my thumb had been cut off and
-that the blood was pouring from my wound. I endeavoured to tie my
-handkerchief round it, but there came a sudden buzzing in my
-ears, and next moment I fell in a dead faint among the
-rose-bushes.
-
-"How long I remained unconscious I cannot tell. It must have been
-a very long time, for the moon had sunk, and a bright morning was
-breaking when I came to myself. My clothes were all sodden with
-dew, and my coat-sleeve was drenched with blood from my wounded
-thumb. The smarting of it recalled in an instant all the
-particulars of my night's adventure, and I sprang to my feet with
-the feeling that I might hardly yet be safe from my pursuers. But
-to my astonishment, when I came to look round me, neither house
-nor garden were to be seen. I had been lying in an angle of the
-hedge close by the highroad, and just a little lower down was a
-long building, which proved, upon my approaching it, to be the
-very station at which I had arrived upon the previous night. Were
-it not for the ugly wound upon my hand, all that had passed
-during those dreadful hours might have been an evil dream.
-
-"Half dazed, I went into the station and asked about the morning
-train. There would be one to Reading in less than an hour. The
-same porter was on duty, I found, as had been there when I
-arrived. I inquired of him whether he had ever heard of Colonel
-Lysander Stark. The name was strange to him. Had he observed a
-carriage the night before waiting for me? No, he had not. Was
-there a police-station anywhere near? There was one about three
-miles off.
-
-"It was too far for me to go, weak and ill as I was. I determined
-to wait until I got back to town before telling my story to the
-police. It was a little past six when I arrived, so I went first
-to have my wound dressed, and then the doctor was kind enough to
-bring me along here. I put the case into your hands and shall do
-exactly what you advise."
-
-We both sat in silence for some little time after listening to
-this extraordinary narrative. Then Sherlock Holmes pulled down
-from the shelf one of the ponderous commonplace books in which he
-placed his cuttings.
-
-"Here is an advertisement which will interest you," said he. "It
-appeared in all the papers about a year ago. Listen to this:
-'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
-twenty-six, a hydraulic engineer. Left his lodgings at ten
-o'clock at night, and has not been heard of since. Was
-dressed in,' etc., etc. Ha! That represents the last time that
-the colonel needed to have his machine overhauled, I fancy."
-
-"Good heavens!" cried my patient. "Then that explains what the
-girl said."
-
-"Undoubtedly. It is quite clear that the colonel was a cool and
-desperate man, who was absolutely determined that nothing should
-stand in the way of his little game, like those out-and-out
-pirates who will leave no survivor from a captured ship. Well,
-every moment now is precious, so if you feel equal to it we shall
-go down to Scotland Yard at once as a preliminary to starting for
-Eyford."
-
-Some three hours or so afterwards we were all in the train
-together, bound from Reading to the little Berkshire village.
-There were Sherlock Holmes, the hydraulic engineer, Inspector
-Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
-Bradstreet had spread an ordnance map of the county out upon the
-seat and was busy with his compasses drawing a circle with Eyford
-for its centre.
-
-"There you are," said he. "That circle is drawn at a radius of
-ten miles from the village. The place we want must be somewhere
-near that line. You said ten miles, I think, sir."
-
-"It was an hour's good drive."
-
-"And you think that they brought you back all that way when you
-were unconscious?"
-
-"They must have done so. I have a confused memory, too, of having
-been lifted and conveyed somewhere."
-
-"What I cannot understand," said I, "is why they should have
-spared you when they found you lying fainting in the garden.
-Perhaps the villain was softened by the woman's entreaties."
-
-"I hardly think that likely. I never saw a more inexorable face
-in my life."
-
-"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
-have drawn my circle, and I only wish I knew at what point upon
-it the folk that we are in search of are to be found."
-
-"I think I could lay my finger on it," said Holmes quietly.
-
-"Really, now!" cried the inspector, "you have formed your
-opinion! Come, now, we shall see who agrees with you. I say it is
-south, for the country is more deserted there."
-
-"And I say east," said my patient.
-
-"I am for west," remarked the plain-clothes man. "There are
-several quiet little villages up there."
-
-"And I am for north," said I, "because there are no hills there,
-and our friend says that he did not notice the carriage go up
-any."
-
-"Come," cried the inspector, laughing; "it's a very pretty
-diversity of opinion. We have boxed the compass among us. Who do
-you give your casting vote to?"
-
-"You are all wrong."
-
-"But we can't all be."
-
-"Oh, yes, you can. This is my point." He placed his finger in the
-centre of the circle. "This is where we shall find them."
-
-"But the twelve-mile drive?" gasped Hatherley.
-
-"Six out and six back. Nothing simpler. You say yourself that the
-horse was fresh and glossy when you got in. How could it be that
-if it had gone twelve miles over heavy roads?"
-
-"Indeed, it is a likely ruse enough," observed Bradstreet
-thoughtfully. "Of course there can be no doubt as to the nature
-of this gang."
-
-"None at all," said Holmes. "They are coiners on a large scale,
-and have used the machine to form the amalgam which has taken the
-place of silver."
-
-"We have known for some time that a clever gang was at work,"
-said the inspector. "They have been turning out half-crowns by
-the thousand. We even traced them as far as Reading, but could
-get no farther, for they had covered their traces in a way that
-showed that they were very old hands. But now, thanks to this
-lucky chance, I think that we have got them right enough."
-
-But the inspector was mistaken, for those criminals were not
-destined to fall into the hands of justice. As we rolled into
-Eyford Station we saw a gigantic column of smoke which streamed
-up from behind a small clump of trees in the neighbourhood and
-hung like an immense ostrich feather over the landscape.
-
-"A house on fire?" asked Bradstreet as the train steamed off
-again on its way.
-
-"Yes, sir!" said the station-master.
-
-"When did it break out?"
-
-"I hear that it was during the night, sir, but it has got worse,
-and the whole place is in a blaze."
-
-"Whose house is it?"
-
-"Dr. Becher's."
-
-"Tell me," broke in the engineer, "is Dr. Becher a German, very
-thin, with a long, sharp nose?"
-
-The station-master laughed heartily. "No, sir, Dr. Becher is an
-Englishman, and there isn't a man in the parish who has a
-better-lined waistcoat. But he has a gentleman staying with him,
-a patient, as I understand, who is a foreigner, and he looks as
-if a little good Berkshire beef would do him no harm."
-
-The station-master had not finished his speech before we were all
-hastening in the direction of the fire. The road topped a low
-hill, and there was a great widespread whitewashed building in
-front of us, spouting fire at every chink and window, while in
-the garden in front three fire-engines were vainly striving to
-keep the flames under.
-
-"That's it!" cried Hatherley, in intense excitement. "There is
-the gravel-drive, and there are the rose-bushes where I lay. That
-second window is the one that I jumped from."
-
-"Well, at least," said Holmes, "you have had your revenge upon
-them. There can be no question that it was your oil-lamp which,
-when it was crushed in the press, set fire to the wooden walls,
-though no doubt they were too excited in the chase after you to
-observe it at the time. Now keep your eyes open in this crowd for
-your friends of last night, though I very much fear that they are
-a good hundred miles off by now."
-
-And Holmes' fears came to be realised, for from that day to this
-no word has ever been heard either of the beautiful woman, the
-sinister German, or the morose Englishman. Early that morning a
-peasant had met a cart containing several people and some very
-bulky boxes driving rapidly in the direction of Reading, but
-there all traces of the fugitives disappeared, and even Holmes'
-ingenuity failed ever to discover the least clue as to their
-whereabouts.
-
-The firemen had been much perturbed at the strange arrangements
-which they had found within, and still more so by discovering a
-newly severed human thumb upon a window-sill of the second floor.
-About sunset, however, their efforts were at last successful, and
-they subdued the flames, but not before the roof had fallen in,
-and the whole place been reduced to such absolute ruin that, save
-some twisted cylinders and iron piping, not a trace remained of
-the machinery which had cost our unfortunate acquaintance so
-dearly. Large masses of nickel and of tin were discovered stored
-in an out-house, but no coins were to be found, which may have
-explained the presence of those bulky boxes which have been
-already referred to.
-
-How our hydraulic engineer had been conveyed from the garden to
-the spot where he recovered his senses might have remained
-forever a mystery were it not for the soft mould, which told us a
-very plain tale. He had evidently been carried down by two
-persons, one of whom had remarkably small feet and the other
-unusually large ones. On the whole, it was most probable that the
-silent Englishman, being less bold or less murderous than his
-companion, had assisted the woman to bear the unconscious man out
-of the way of danger.
-
-"Well," said our engineer ruefully as we took our seats to return
-once more to London, "it has been a pretty business for me! I
-have lost my thumb and I have lost a fifty-guinea fee, and what
-have I gained?"
-
-"Experience," said Holmes, laughing. "Indirectly it may be of
-value, you know; you have only to put it into words to gain the
-reputation of being excellent company for the remainder of your
-existence."
-
-
-
-X. THE ADVENTURE OF THE NOBLE BACHELOR
-
-The Lord St. Simon marriage, and its curious termination, have
-long ceased to be a subject of interest in those exalted circles
-in which the unfortunate bridegroom moves. Fresh scandals have
-eclipsed it, and their more piquant details have drawn the
-gossips away from this four-year-old drama. As I have reason to
-believe, however, that the full facts have never been revealed to
-the general public, and as my friend Sherlock Holmes had a
-considerable share in clearing the matter up, I feel that no
-memoir of him would be complete without some little sketch of
-this remarkable episode.
-
-It was a few weeks before my own marriage, during the days when I
-was still sharing rooms with Holmes in Baker Street, that he came
-home from an afternoon stroll to find a letter on the table
-waiting for him. I had remained indoors all day, for the weather
-had taken a sudden turn to rain, with high autumnal winds, and
-the Jezail bullet which I had brought back in one of my limbs as
-a relic of my Afghan campaign throbbed with dull persistence.
-With my body in one easy-chair and my legs upon another, I had
-surrounded myself with a cloud of newspapers until at last,
-saturated with the news of the day, I tossed them all aside and
-lay listless, watching the huge crest and monogram upon the
-envelope upon the table and wondering lazily who my friend's
-noble correspondent could be.
-
-"Here is a very fashionable epistle," I remarked as he entered.
-"Your morning letters, if I remember right, were from a
-fish-monger and a tide-waiter."
-
-"Yes, my correspondence has certainly the charm of variety," he
-answered, smiling, "and the humbler are usually the more
-interesting. This looks like one of those unwelcome social
-summonses which call upon a man either to be bored or to lie."
-
-He broke the seal and glanced over the contents.
-
-"Oh, come, it may prove to be something of interest, after all."
-
-"Not social, then?"
-
-"No, distinctly professional."
-
-"And from a noble client?"
-
-"One of the highest in England."
-
-"My dear fellow, I congratulate you."
-
-"I assure you, Watson, without affectation, that the status of my
-client is a matter of less moment to me than the interest of his
-case. It is just possible, however, that that also may not be
-wanting in this new investigation. You have been reading the
-papers diligently of late, have you not?"
-
-"It looks like it," said I ruefully, pointing to a huge bundle in
-the corner. "I have had nothing else to do."
-
-"It is fortunate, for you will perhaps be able to post me up. I
-read nothing except the criminal news and the agony column. The
-latter is always instructive. But if you have followed recent
-events so closely you must have read about Lord St. Simon and his
-wedding?"
-
-"Oh, yes, with the deepest interest."
-
-"That is well. The letter which I hold in my hand is from Lord
-St. Simon. I will read it to you, and in return you must turn
-over these papers and let me have whatever bears upon the matter.
-This is what he says:
-
-"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
-may place implicit reliance upon your judgment and discretion. I
-have determined, therefore, to call upon you and to consult you
-in reference to the very painful event which has occurred in
-connection with my wedding. Mr. Lestrade, of Scotland Yard, is
-acting already in the matter, but he assures me that he sees no
-objection to your co-operation, and that he even thinks that
-it might be of some assistance. I will call at four o'clock in
-the afternoon, and, should you have any other engagement at that
-time, I hope that you will postpone it, as this matter is of
-paramount importance. Yours faithfully, ST. SIMON.'
-
-"It is dated from Grosvenor Mansions, written with a quill pen,
-and the noble lord has had the misfortune to get a smear of ink
-upon the outer side of his right little finger," remarked Holmes
-as he folded up the epistle.
-
-"He says four o'clock. It is three now. He will be here in an
-hour."
-
-"Then I have just time, with your assistance, to get clear upon
-the subject. Turn over those papers and arrange the extracts in
-their order of time, while I take a glance as to who our client
-is." He picked a red-covered volume from a line of books of
-reference beside the mantelpiece. "Here he is," said he, sitting
-down and flattening it out upon his knee. "'Lord Robert Walsingham
-de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
-Azure, three caltrops in chief over a fess sable. Born in 1846.'
-He's forty-one years of age, which is mature for marriage. Was
-Under-Secretary for the colonies in a late administration. The
-Duke, his father, was at one time Secretary for Foreign Affairs.
-They inherit Plantagenet blood by direct descent, and Tudor on
-the distaff side. Ha! Well, there is nothing very instructive in
-all this. I think that I must turn to you Watson, for something
-more solid."
-
-"I have very little difficulty in finding what I want," said I,
-"for the facts are quite recent, and the matter struck me as
-remarkable. I feared to refer them to you, however, as I knew
-that you had an inquiry on hand and that you disliked the
-intrusion of other matters."
-
-"Oh, you mean the little problem of the Grosvenor Square
-furniture van. That is quite cleared up now--though, indeed, it
-was obvious from the first. Pray give me the results of your
-newspaper selections."
-
-"Here is the first notice which I can find. It is in the personal
-column of the Morning Post, and dates, as you see, some weeks
-back: 'A marriage has been arranged,' it says, 'and will, if
-rumour is correct, very shortly take place, between Lord Robert
-St. Simon, second son of the Duke of Balmoral, and Miss Hatty
-Doran, the only daughter of Aloysius Doran. Esq., of San
-Francisco, Cal., U.S.A.' That is all."
-
-"Terse and to the point," remarked Holmes, stretching his long,
-thin legs towards the fire.
-
-"There was a paragraph amplifying this in one of the society
-papers of the same week. Ah, here it is: 'There will soon be a
-call for protection in the marriage market, for the present
-free-trade principle appears to tell heavily against our home
-product. One by one the management of the noble houses of Great
-Britain is passing into the hands of our fair cousins from across
-the Atlantic. An important addition has been made during the last
-week to the list of the prizes which have been borne away by
-these charming invaders. Lord St. Simon, who has shown himself
-for over twenty years proof against the little god's arrows, has
-now definitely announced his approaching marriage with Miss Hatty
-Doran, the fascinating daughter of a California millionaire. Miss
-Doran, whose graceful figure and striking face attracted much
-attention at the Westbury House festivities, is an only child,
-and it is currently reported that her dowry will run to
-considerably over the six figures, with expectancies for the
-future. As it is an open secret that the Duke of Balmoral has
-been compelled to sell his pictures within the last few years,
-and as Lord St. Simon has no property of his own save the small
-estate of Birchmoor, it is obvious that the Californian heiress
-is not the only gainer by an alliance which will enable her to
-make the easy and common transition from a Republican lady to a
-British peeress.'"
-
-"Anything else?" asked Holmes, yawning.
-
-"Oh, yes; plenty. Then there is another note in the Morning Post
-to say that the marriage would be an absolutely quiet one, that it
-would be at St. George's, Hanover Square, that only half a dozen
-intimate friends would be invited, and that the party would
-return to the furnished house at Lancaster Gate which has been
-taken by Mr. Aloysius Doran. Two days later--that is, on
-Wednesday last--there is a curt announcement that the wedding had
-taken place, and that the honeymoon would be passed at Lord
-Backwater's place, near Petersfield. Those are all the notices
-which appeared before the disappearance of the bride."
-
-"Before the what?" asked Holmes with a start.
-
-"The vanishing of the lady."
-
-"When did she vanish, then?"
-
-"At the wedding breakfast."
-
-"Indeed. This is more interesting than it promised to be; quite
-dramatic, in fact."
-
-"Yes; it struck me as being a little out of the common."
-
-"They often vanish before the ceremony, and occasionally during
-the honeymoon; but I cannot call to mind anything quite so prompt
-as this. Pray let me have the details."
-
-"I warn you that they are very incomplete."
-
-"Perhaps we may make them less so."
-
-"Such as they are, they are set forth in a single article of a
-morning paper of yesterday, which I will read to you. It is
-headed, 'Singular Occurrence at a Fashionable Wedding':
-
-"'The family of Lord Robert St. Simon has been thrown into the
-greatest consternation by the strange and painful episodes which
-have taken place in connection with his wedding. The ceremony, as
-shortly announced in the papers of yesterday, occurred on the
-previous morning; but it is only now that it has been possible to
-confirm the strange rumours which have been so persistently
-floating about. In spite of the attempts of the friends to hush
-the matter up, so much public attention has now been drawn to it
-that no good purpose can be served by affecting to disregard what
-is a common subject for conversation.
-
-"'The ceremony, which was performed at St. George's, Hanover
-Square, was a very quiet one, no one being present save the
-father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
-Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
-younger brother and sister of the bridegroom), and Lady Alicia
-Whittington. The whole party proceeded afterwards to the house of
-Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
-prepared. It appears that some little trouble was caused by a
-woman, whose name has not been ascertained, who endeavoured to
-force her way into the house after the bridal party, alleging
-that she had some claim upon Lord St. Simon. It was only after a
-painful and prolonged scene that she was ejected by the butler
-and the footman. The bride, who had fortunately entered the house
-before this unpleasant interruption, had sat down to breakfast
-with the rest, when she complained of a sudden indisposition and
-retired to her room. Her prolonged absence having caused some
-comment, her father followed her, but learned from her maid that
-she had only come up to her chamber for an instant, caught up an
-ulster and bonnet, and hurried down to the passage. One of the
-footmen declared that he had seen a lady leave the house thus
-apparelled, but had refused to credit that it was his mistress,
-believing her to be with the company. On ascertaining that his
-daughter had disappeared, Mr. Aloysius Doran, in conjunction with
-the bridegroom, instantly put themselves in communication with
-the police, and very energetic inquiries are being made, which
-will probably result in a speedy clearing up of this very
-singular business. Up to a late hour last night, however, nothing
-had transpired as to the whereabouts of the missing lady. There
-are rumours of foul play in the matter, and it is said that the
-police have caused the arrest of the woman who had caused the
-original disturbance, in the belief that, from jealousy or some
-other motive, she may have been concerned in the strange
-disappearance of the bride.'"
-
-"And is that all?"
-
-"Only one little item in another of the morning papers, but it is
-a suggestive one."
-
-"And it is--"
-
-"That Miss Flora Millar, the lady who had caused the disturbance,
-has actually been arrested. It appears that she was formerly a
-danseuse at the Allegro, and that she has known the bridegroom
-for some years. There are no further particulars, and the whole
-case is in your hands now--so far as it has been set forth in the
-public press."
-
-"And an exceedingly interesting case it appears to be. I would
-not have missed it for worlds. But there is a ring at the bell,
-Watson, and as the clock makes it a few minutes after four, I
-have no doubt that this will prove to be our noble client. Do not
-dream of going, Watson, for I very much prefer having a witness,
-if only as a check to my own memory."
-
-"Lord Robert St. Simon," announced our page-boy, throwing open
-the door. A gentleman entered, with a pleasant, cultured face,
-high-nosed and pale, with something perhaps of petulance about
-the mouth, and with the steady, well-opened eye of a man whose
-pleasant lot it had ever been to command and to be obeyed. His
-manner was brisk, and yet his general appearance gave an undue
-impression of age, for he had a slight forward stoop and a little
-bend of the knees as he walked. His hair, too, as he swept off
-his very curly-brimmed hat, was grizzled round the edges and thin
-upon the top. As to his dress, it was careful to the verge of
-foppishness, with high collar, black frock-coat, white waistcoat,
-yellow gloves, patent-leather shoes, and light-coloured gaiters.
-He advanced slowly into the room, turning his head from left to
-right, and swinging in his right hand the cord which held his
-golden eyeglasses.
-
-"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
-take the basket-chair. This is my friend and colleague, Dr.
-Watson. Draw up a little to the fire, and we will talk this
-matter over."
-
-"A most painful matter to me, as you can most readily imagine,
-Mr. Holmes. I have been cut to the quick. I understand that you
-have already managed several delicate cases of this sort, sir,
-though I presume that they were hardly from the same class of
-society."
-
-"No, I am descending."
-
-"I beg pardon."
-
-"My last client of the sort was a king."
-
-"Oh, really! I had no idea. And which king?"
-
-"The King of Scandinavia."
-
-"What! Had he lost his wife?"
-
-"You can understand," said Holmes suavely, "that I extend to the
-affairs of my other clients the same secrecy which I promise to
-you in yours."
-
-"Of course! Very right! very right! I'm sure I beg pardon. As to
-my own case, I am ready to give you any information which may
-assist you in forming an opinion."
-
-"Thank you. I have already learned all that is in the public
-prints, nothing more. I presume that I may take it as correct--this
-article, for example, as to the disappearance of the bride."
-
-Lord St. Simon glanced over it. "Yes, it is correct, as far as it
-goes."
-
-"But it needs a great deal of supplementing before anyone could
-offer an opinion. I think that I may arrive at my facts most
-directly by questioning you."
-
-"Pray do so."
-
-"When did you first meet Miss Hatty Doran?"
-
-"In San Francisco, a year ago."
-
-"You were travelling in the States?"
-
-"Yes."
-
-"Did you become engaged then?"
-
-"No."
-
-"But you were on a friendly footing?"
-
-"I was amused by her society, and she could see that I was
-amused."
-
-"Her father is very rich?"
-
-"He is said to be the richest man on the Pacific slope."
-
-"And how did he make his money?"
-
-"In mining. He had nothing a few years ago. Then he struck gold,
-invested it, and came up by leaps and bounds."
-
-"Now, what is your own impression as to the young lady's--your
-wife's character?"
-
-The nobleman swung his glasses a little faster and stared down
-into the fire. "You see, Mr. Holmes," said he, "my wife was
-twenty before her father became a rich man. During that time she
-ran free in a mining camp and wandered through woods or
-mountains, so that her education has come from Nature rather than
-from the schoolmaster. She is what we call in England a tomboy,
-with a strong nature, wild and free, unfettered by any sort of
-traditions. She is impetuous--volcanic, I was about to say. She
-is swift in making up her mind and fearless in carrying out her
-resolutions. On the other hand, I would not have given her the
-name which I have the honour to bear"--he gave a little stately
-cough--"had not I thought her to be at bottom a noble woman. I
-believe that she is capable of heroic self-sacrifice and that
-anything dishonourable would be repugnant to her."
-
-"Have you her photograph?"
-
-"I brought this with me." He opened a locket and showed us the
-full face of a very lovely woman. It was not a photograph but an
-ivory miniature, and the artist had brought out the full effect
-of the lustrous black hair, the large dark eyes, and the
-exquisite mouth. Holmes gazed long and earnestly at it. Then he
-closed the locket and handed it back to Lord St. Simon.
-
-"The young lady came to London, then, and you renewed your
-acquaintance?"
-
-"Yes, her father brought her over for this last London season. I
-met her several times, became engaged to her, and have now
-married her."
-
-"She brought, I understand, a considerable dowry?"
-
-"A fair dowry. Not more than is usual in my family."
-
-"And this, of course, remains to you, since the marriage is a
-fait accompli?"
-
-"I really have made no inquiries on the subject."
-
-"Very naturally not. Did you see Miss Doran on the day before the
-wedding?"
-
-"Yes."
-
-"Was she in good spirits?"
-
-"Never better. She kept talking of what we should do in our
-future lives."
-
-"Indeed! That is very interesting. And on the morning of the
-wedding?"
-
-"She was as bright as possible--at least until after the
-ceremony."
-
-"And did you observe any change in her then?"
-
-"Well, to tell the truth, I saw then the first signs that I had
-ever seen that her temper was just a little sharp. The incident
-however, was too trivial to relate and can have no possible
-bearing upon the case."
-
-"Pray let us have it, for all that."
-
-"Oh, it is childish. She dropped her bouquet as we went towards
-the vestry. She was passing the front pew at the time, and it
-fell over into the pew. There was a moment's delay, but the
-gentleman in the pew handed it up to her again, and it did not
-appear to be the worse for the fall. Yet when I spoke to her of
-the matter, she answered me abruptly; and in the carriage, on our
-way home, she seemed absurdly agitated over this trifling cause."
-
-"Indeed! You say that there was a gentleman in the pew. Some of
-the general public were present, then?"
-
-"Oh, yes. It is impossible to exclude them when the church is
-open."
-
-"This gentleman was not one of your wife's friends?"
-
-"No, no; I call him a gentleman by courtesy, but he was quite a
-common-looking person. I hardly noticed his appearance. But
-really I think that we are wandering rather far from the point."
-
-"Lady St. Simon, then, returned from the wedding in a less
-cheerful frame of mind than she had gone to it. What did she do
-on re-entering her father's house?"
-
-"I saw her in conversation with her maid."
-
-"And who is her maid?"
-
-"Alice is her name. She is an American and came from California
-with her."
-
-"A confidential servant?"
-
-"A little too much so. It seemed to me that her mistress allowed
-her to take great liberties. Still, of course, in America they
-look upon these things in a different way."
-
-"How long did she speak to this Alice?"
-
-"Oh, a few minutes. I had something else to think of."
-
-"You did not overhear what they said?"
-
-"Lady St. Simon said something about 'jumping a claim.' She was
-accustomed to use slang of the kind. I have no idea what she
-meant."
-
-"American slang is very expressive sometimes. And what did your
-wife do when she finished speaking to her maid?"
-
-"She walked into the breakfast-room."
-
-"On your arm?"
-
-"No, alone. She was very independent in little matters like that.
-Then, after we had sat down for ten minutes or so, she rose
-hurriedly, muttered some words of apology, and left the room. She
-never came back."
-
-"But this maid, Alice, as I understand, deposes that she went to
-her room, covered her bride's dress with a long ulster, put on a
-bonnet, and went out."
-
-"Quite so. And she was afterwards seen walking into Hyde Park in
-company with Flora Millar, a woman who is now in custody, and who
-had already made a disturbance at Mr. Doran's house that
-morning."
-
-"Ah, yes. I should like a few particulars as to this young lady,
-and your relations to her."
-
-Lord St. Simon shrugged his shoulders and raised his eyebrows.
-"We have been on a friendly footing for some years--I may say on
-a very friendly footing. She used to be at the Allegro. I have
-not treated her ungenerously, and she had no just cause of
-complaint against me, but you know what women are, Mr. Holmes.
-Flora was a dear little thing, but exceedingly hot-headed and
-devotedly attached to me. She wrote me dreadful letters when she
-heard that I was about to be married, and, to tell the truth, the
-reason why I had the marriage celebrated so quietly was that I
-feared lest there might be a scandal in the church. She came to
-Mr. Doran's door just after we returned, and she endeavoured to
-push her way in, uttering very abusive expressions towards my
-wife, and even threatening her, but I had foreseen the
-possibility of something of the sort, and I had two police
-fellows there in private clothes, who soon pushed her out again.
-She was quiet when she saw that there was no good in making a
-row."
-
-"Did your wife hear all this?"
-
-"No, thank goodness, she did not."
-
-"And she was seen walking with this very woman afterwards?"
-
-"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
-so serious. It is thought that Flora decoyed my wife out and laid
-some terrible trap for her."
-
-"Well, it is a possible supposition."
-
-"You think so, too?"
-
-"I did not say a probable one. But you do not yourself look upon
-this as likely?"
-
-"I do not think Flora would hurt a fly."
-
-"Still, jealousy is a strange transformer of characters. Pray
-what is your own theory as to what took place?"
-
-"Well, really, I came to seek a theory, not to propound one. I
-have given you all the facts. Since you ask me, however, I may
-say that it has occurred to me as possible that the excitement of
-this affair, the consciousness that she had made so immense a
-social stride, had the effect of causing some little nervous
-disturbance in my wife."
-
-"In short, that she had become suddenly deranged?"
-
-"Well, really, when I consider that she has turned her back--I
-will not say upon me, but upon so much that many have aspired to
-without success--I can hardly explain it in any other fashion."
-
-"Well, certainly that is also a conceivable hypothesis," said
-Holmes, smiling. "And now, Lord St. Simon, I think that I have
-nearly all my data. May I ask whether you were seated at the
-breakfast-table so that you could see out of the window?"
-
-"We could see the other side of the road and the Park."
-
-"Quite so. Then I do not think that I need to detain you longer.
-I shall communicate with you."
-
-"Should you be fortunate enough to solve this problem," said our
-client, rising.
-
-"I have solved it."
-
-"Eh? What was that?"
-
-"I say that I have solved it."
-
-"Where, then, is my wife?"
-
-"That is a detail which I shall speedily supply."
-
-Lord St. Simon shook his head. "I am afraid that it will take
-wiser heads than yours or mine," he remarked, and bowing in a
-stately, old-fashioned manner he departed.
-
-"It is very good of Lord St. Simon to honour my head by putting
-it on a level with his own," said Sherlock Holmes, laughing. "I
-think that I shall have a whisky and soda and a cigar after all
-this cross-questioning. I had formed my conclusions as to the
-case before our client came into the room."
-
-"My dear Holmes!"
-
-"I have notes of several similar cases, though none, as I
-remarked before, which were quite as prompt. My whole examination
-served to turn my conjecture into a certainty. Circumstantial
-evidence is occasionally very convincing, as when you find a
-trout in the milk, to quote Thoreau's example."
-
-"But I have heard all that you have heard."
-
-"Without, however, the knowledge of pre-existing cases which
-serves me so well. There was a parallel instance in Aberdeen some
-years back, and something on very much the same lines at Munich
-the year after the Franco-Prussian War. It is one of these
-cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
-You will find an extra tumbler upon the sideboard, and there are
-cigars in the box."
-
-The official detective was attired in a pea-jacket and cravat,
-which gave him a decidedly nautical appearance, and he carried a
-black canvas bag in his hand. With a short greeting he seated
-himself and lit the cigar which had been offered to him.
-
-"What's up, then?" asked Holmes with a twinkle in his eye. "You
-look dissatisfied."
-
-"And I feel dissatisfied. It is this infernal St. Simon marriage
-case. I can make neither head nor tail of the business."
-
-"Really! You surprise me."
-
-"Who ever heard of such a mixed affair? Every clue seems to slip
-through my fingers. I have been at work upon it all day."
-
-"And very wet it seems to have made you," said Holmes laying his
-hand upon the arm of the pea-jacket.
-
-"Yes, I have been dragging the Serpentine."
-
-"In heaven's name, what for?"
-
-"In search of the body of Lady St. Simon."
-
-Sherlock Holmes leaned back in his chair and laughed heartily.
-
-"Have you dragged the basin of Trafalgar Square fountain?" he
-asked.
-
-"Why? What do you mean?"
-
-"Because you have just as good a chance of finding this lady in
-the one as in the other."
-
-Lestrade shot an angry glance at my companion. "I suppose you
-know all about it," he snarled.
-
-"Well, I have only just heard the facts, but my mind is made up."
-
-"Oh, indeed! Then you think that the Serpentine plays no part in
-the matter?"
-
-"I think it very unlikely."
-
-"Then perhaps you will kindly explain how it is that we found
-this in it?" He opened his bag as he spoke, and tumbled onto the
-floor a wedding-dress of watered silk, a pair of white satin
-shoes and a bride's wreath and veil, all discoloured and soaked
-in water. "There," said he, putting a new wedding-ring upon the
-top of the pile. "There is a little nut for you to crack, Master
-Holmes."
-
-"Oh, indeed!" said my friend, blowing blue rings into the air.
-"You dragged them from the Serpentine?"
-
-"No. They were found floating near the margin by a park-keeper.
-They have been identified as her clothes, and it seemed to me
-that if the clothes were there the body would not be far off."
-
-"By the same brilliant reasoning, every man's body is to be found
-in the neighbourhood of his wardrobe. And pray what did you hope
-to arrive at through this?"
-
-"At some evidence implicating Flora Millar in the disappearance."
-
-"I am afraid that you will find it difficult."
-
-"Are you, indeed, now?" cried Lestrade with some bitterness. "I
-am afraid, Holmes, that you are not very practical with your
-deductions and your inferences. You have made two blunders in as
-many minutes. This dress does implicate Miss Flora Millar."
-
-"And how?"
-
-"In the dress is a pocket. In the pocket is a card-case. In the
-card-case is a note. And here is the very note." He slapped it
-down upon the table in front of him. "Listen to this: 'You will
-see me when all is ready. Come at once. F.H.M.' Now my theory all
-along has been that Lady St. Simon was decoyed away by Flora
-Millar, and that she, with confederates, no doubt, was
-responsible for her disappearance. Here, signed with her
-initials, is the very note which was no doubt quietly slipped
-into her hand at the door and which lured her within their
-reach."
-
-"Very good, Lestrade," said Holmes, laughing. "You really are
-very fine indeed. Let me see it." He took up the paper in a
-listless way, but his attention instantly became riveted, and he
-gave a little cry of satisfaction. "This is indeed important,"
-said he.
-
-"Ha! you find it so?"
-
-"Extremely so. I congratulate you warmly."
-
-Lestrade rose in his triumph and bent his head to look. "Why," he
-shrieked, "you're looking at the wrong side!"
-
-"On the contrary, this is the right side."
-
-"The right side? You're mad! Here is the note written in pencil
-over here."
-
-"And over here is what appears to be the fragment of a hotel
-bill, which interests me deeply."
-
-"There's nothing in it. I looked at it before," said Lestrade.
-"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
-6d., glass sherry, 8d.' I see nothing in that."
-
-"Very likely not. It is most important, all the same. As to the
-note, it is important also, or at least the initials are, so I
-congratulate you again."
-
-"I've wasted time enough," said Lestrade, rising. "I believe in
-hard work and not in sitting by the fire spinning fine theories.
-Good-day, Mr. Holmes, and we shall see which gets to the bottom
-of the matter first." He gathered up the garments, thrust them
-into the bag, and made for the door.
-
-"Just one hint to you, Lestrade," drawled Holmes before his rival
-vanished; "I will tell you the true solution of the matter. Lady
-St. Simon is a myth. There is not, and there never has been, any
-such person."
-
-Lestrade looked sadly at my companion. Then he turned to me,
-tapped his forehead three times, shook his head solemnly, and
-hurried away.
-
-He had hardly shut the door behind him when Holmes rose to put on
-his overcoat. "There is something in what the fellow says about
-outdoor work," he remarked, "so I think, Watson, that I must
-leave you to your papers for a little."
-
-It was after five o'clock when Sherlock Holmes left me, but I had
-no time to be lonely, for within an hour there arrived a
-confectioner's man with a very large flat box. This he unpacked
-with the help of a youth whom he had brought with him, and
-presently, to my very great astonishment, a quite epicurean
-little cold supper began to be laid out upon our humble
-lodging-house mahogany. There were a couple of brace of cold
-woodcock, a pheasant, a pâté de foie gras pie with a group of
-ancient and cobwebby bottles. Having laid out all these luxuries,
-my two visitors vanished away, like the genii of the Arabian
-Nights, with no explanation save that the things had been paid
-for and were ordered to this address.
-
-Just before nine o'clock Sherlock Holmes stepped briskly into the
-room. His features were gravely set, but there was a light in his
-eye which made me think that he had not been disappointed in his
-conclusions.
-
-"They have laid the supper, then," he said, rubbing his hands.
-
-"You seem to expect company. They have laid for five."
-
-"Yes, I fancy we may have some company dropping in," said he. "I
-am surprised that Lord St. Simon has not already arrived. Ha! I
-fancy that I hear his step now upon the stairs."
-
-It was indeed our visitor of the afternoon who came bustling in,
-dangling his glasses more vigorously than ever, and with a very
-perturbed expression upon his aristocratic features.
-
-"My messenger reached you, then?" asked Holmes.
-
-"Yes, and I confess that the contents startled me beyond measure.
-Have you good authority for what you say?"
-
-"The best possible."
-
-Lord St. Simon sank into a chair and passed his hand over his
-forehead.
-
-"What will the Duke say," he murmured, "when he hears that one of
-the family has been subjected to such humiliation?"
-
-"It is the purest accident. I cannot allow that there is any
-humiliation."
-
-"Ah, you look on these things from another standpoint."
-
-"I fail to see that anyone is to blame. I can hardly see how the
-lady could have acted otherwise, though her abrupt method of
-doing it was undoubtedly to be regretted. Having no mother, she
-had no one to advise her at such a crisis."
-
-"It was a slight, sir, a public slight," said Lord St. Simon,
-tapping his fingers upon the table.
-
-"You must make allowance for this poor girl, placed in so
-unprecedented a position."
-
-"I will make no allowance. I am very angry indeed, and I have
-been shamefully used."
-
-"I think that I heard a ring," said Holmes. "Yes, there are steps
-on the landing. If I cannot persuade you to take a lenient view
-of the matter, Lord St. Simon, I have brought an advocate here
-who may be more successful." He opened the door and ushered in a
-lady and gentleman. "Lord St. Simon," said he "allow me to
-introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
-think, you have already met."
-
-At the sight of these newcomers our client had sprung from his
-seat and stood very erect, with his eyes cast down and his hand
-thrust into the breast of his frock-coat, a picture of offended
-dignity. The lady had taken a quick step forward and had held out
-her hand to him, but he still refused to raise his eyes. It was
-as well for his resolution, perhaps, for her pleading face was
-one which it was hard to resist.
-
-"You're angry, Robert," said she. "Well, I guess you have every
-cause to be."
-
-"Pray make no apology to me," said Lord St. Simon bitterly.
-
-"Oh, yes, I know that I have treated you real bad and that I
-should have spoken to you before I went; but I was kind of
-rattled, and from the time when I saw Frank here again I just
-didn't know what I was doing or saying. I only wonder I didn't
-fall down and do a faint right there before the altar."
-
-"Perhaps, Mrs. Moulton, you would like my friend and me to leave
-the room while you explain this matter?"
-
-"If I may give an opinion," remarked the strange gentleman,
-"we've had just a little too much secrecy over this business
-already. For my part, I should like all Europe and America to
-hear the rights of it." He was a small, wiry, sunburnt man,
-clean-shaven, with a sharp face and alert manner.
-
-"Then I'll tell our story right away," said the lady. "Frank here
-and I met in '84, in McQuire's camp, near the Rockies, where pa
-was working a claim. We were engaged to each other, Frank and I;
-but then one day father struck a rich pocket and made a pile,
-while poor Frank here had a claim that petered out and came to
-nothing. The richer pa grew the poorer was Frank; so at last pa
-wouldn't hear of our engagement lasting any longer, and he took
-me away to 'Frisco. Frank wouldn't throw up his hand, though; so
-he followed me there, and he saw me without pa knowing anything
-about it. It would only have made him mad to know, so we just
-fixed it all up for ourselves. Frank said that he would go and
-make his pile, too, and never come back to claim me until he had
-as much as pa. So then I promised to wait for him to the end of
-time and pledged myself not to marry anyone else while he lived.
-'Why shouldn't we be married right away, then,' said he, 'and
-then I will feel sure of you; and I won't claim to be your
-husband until I come back?' Well, we talked it over, and he had
-fixed it all up so nicely, with a clergyman all ready in waiting,
-that we just did it right there; and then Frank went off to seek
-his fortune, and I went back to pa.
-
-"The next I heard of Frank was that he was in Montana, and then
-he went prospecting in Arizona, and then I heard of him from New
-Mexico. After that came a long newspaper story about how a
-miners' camp had been attacked by Apache Indians, and there was
-my Frank's name among the killed. I fainted dead away, and I was
-very sick for months after. Pa thought I had a decline and took
-me to half the doctors in 'Frisco. Not a word of news came for a
-year and more, so that I never doubted that Frank was really
-dead. Then Lord St. Simon came to 'Frisco, and we came to London,
-and a marriage was arranged, and pa was very pleased, but I felt
-all the time that no man on this earth would ever take the place
-in my heart that had been given to my poor Frank.
-
-"Still, if I had married Lord St. Simon, of course I'd have done
-my duty by him. We can't command our love, but we can our
-actions. I went to the altar with him with the intention to make
-him just as good a wife as it was in me to be. But you may
-imagine what I felt when, just as I came to the altar rails, I
-glanced back and saw Frank standing and looking at me out of the
-first pew. I thought it was his ghost at first; but when I looked
-again there he was still, with a kind of question in his eyes, as
-if to ask me whether I were glad or sorry to see him. I wonder I
-didn't drop. I know that everything was turning round, and the
-words of the clergyman were just like the buzz of a bee in my
-ear. I didn't know what to do. Should I stop the service and make
-a scene in the church? I glanced at him again, and he seemed to
-know what I was thinking, for he raised his finger to his lips to
-tell me to be still. Then I saw him scribble on a piece of paper,
-and I knew that he was writing me a note. As I passed his pew on
-the way out I dropped my bouquet over to him, and he slipped the
-note into my hand when he returned me the flowers. It was only a
-line asking me to join him when he made the sign to me to do so.
-Of course I never doubted for a moment that my first duty was now
-to him, and I determined to do just whatever he might direct.
-
-"When I got back I told my maid, who had known him in California,
-and had always been his friend. I ordered her to say nothing, but
-to get a few things packed and my ulster ready. I know I ought to
-have spoken to Lord St. Simon, but it was dreadful hard before
-his mother and all those great people. I just made up my mind to
-run away and explain afterwards. I hadn't been at the table ten
-minutes before I saw Frank out of the window at the other side of
-the road. He beckoned to me and then began walking into the Park.
-I slipped out, put on my things, and followed him. Some woman
-came talking something or other about Lord St. Simon to
-me--seemed to me from the little I heard as if he had a little
-secret of his own before marriage also--but I managed to get away
-from her and soon overtook Frank. We got into a cab together, and
-away we drove to some lodgings he had taken in Gordon Square, and
-that was my true wedding after all those years of waiting. Frank
-had been a prisoner among the Apaches, had escaped, came on to
-'Frisco, found that I had given him up for dead and had gone to
-England, followed me there, and had come upon me at last on the
-very morning of my second wedding."
-
-"I saw it in a paper," explained the American. "It gave the name
-and the church but not where the lady lived."
-
-"Then we had a talk as to what we should do, and Frank was all
-for openness, but I was so ashamed of it all that I felt as if I
-should like to vanish away and never see any of them again--just
-sending a line to pa, perhaps, to show him that I was alive. It
-was awful to me to think of all those lords and ladies sitting
-round that breakfast-table and waiting for me to come back. So
-Frank took my wedding-clothes and things and made a bundle of
-them, so that I should not be traced, and dropped them away
-somewhere where no one could find them. It is likely that we
-should have gone on to Paris to-morrow, only that this good
-gentleman, Mr. Holmes, came round to us this evening, though how
-he found us is more than I can think, and he showed us very
-clearly and kindly that I was wrong and that Frank was right, and
-that we should be putting ourselves in the wrong if we were so
-secret. Then he offered to give us a chance of talking to Lord
-St. Simon alone, and so we came right away round to his rooms at
-once. Now, Robert, you have heard it all, and I am very sorry if
-I have given you pain, and I hope that you do not think very
-meanly of me."
-
-Lord St. Simon had by no means relaxed his rigid attitude, but
-had listened with a frowning brow and a compressed lip to this
-long narrative.
-
-"Excuse me," he said, "but it is not my custom to discuss my most
-intimate personal affairs in this public manner."
-
-"Then you won't forgive me? You won't shake hands before I go?"
-
-"Oh, certainly, if it would give you any pleasure." He put out
-his hand and coldly grasped that which she extended to him.
-
-"I had hoped," suggested Holmes, "that you would have joined us
-in a friendly supper."
-
-"I think that there you ask a little too much," responded his
-Lordship. "I may be forced to acquiesce in these recent
-developments, but I can hardly be expected to make merry over
-them. I think that with your permission I will now wish you all a
-very good-night." He included us all in a sweeping bow and
-stalked out of the room.
-
-"Then I trust that you at least will honour me with your
-company," said Sherlock Holmes. "It is always a joy to meet an
-American, Mr. Moulton, for I am one of those who believe that the
-folly of a monarch and the blundering of a minister in far-gone
-years will not prevent our children from being some day citizens
-of the same world-wide country under a flag which shall be a
-quartering of the Union Jack with the Stars and Stripes."
-
-"The case has been an interesting one," remarked Holmes when our
-visitors had left us, "because it serves to show very clearly how
-simple the explanation may be of an affair which at first sight
-seems to be almost inexplicable. Nothing could be more natural
-than the sequence of events as narrated by this lady, and nothing
-stranger than the result when viewed, for instance, by Mr.
-Lestrade of Scotland Yard."
-
-"You were not yourself at fault at all, then?"
-
-"From the first, two facts were very obvious to me, the one that
-the lady had been quite willing to undergo the wedding ceremony,
-the other that she had repented of it within a few minutes of
-returning home. Obviously something had occurred during the
-morning, then, to cause her to change her mind. What could that
-something be? She could not have spoken to anyone when she was
-out, for she had been in the company of the bridegroom. Had she
-seen someone, then? If she had, it must be someone from America
-because she had spent so short a time in this country that she
-could hardly have allowed anyone to acquire so deep an influence
-over her that the mere sight of him would induce her to change
-her plans so completely. You see we have already arrived, by a
-process of exclusion, at the idea that she might have seen an
-American. Then who could this American be, and why should he
-possess so much influence over her? It might be a lover; it might
-be a husband. Her young womanhood had, I knew, been spent in
-rough scenes and under strange conditions. So far I had got
-before I ever heard Lord St. Simon's narrative. When he told us
-of a man in a pew, of the change in the bride's manner, of so
-transparent a device for obtaining a note as the dropping of a
-bouquet, of her resort to her confidential maid, and of her very
-significant allusion to claim-jumping--which in miners' parlance
-means taking possession of that which another person has a prior
-claim to--the whole situation became absolutely clear. She had
-gone off with a man, and the man was either a lover or was a
-previous husband--the chances being in favour of the latter."
-
-"And how in the world did you find them?"
-
-"It might have been difficult, but friend Lestrade held
-information in his hands the value of which he did not himself
-know. The initials were, of course, of the highest importance,
-but more valuable still was it to know that within a week he had
-settled his bill at one of the most select London hotels."
-
-"How did you deduce the select?"
-
-"By the select prices. Eight shillings for a bed and eightpence
-for a glass of sherry pointed to one of the most expensive
-hotels. There are not many in London which charge at that rate.
-In the second one which I visited in Northumberland Avenue, I
-learned by an inspection of the book that Francis H. Moulton, an
-American gentleman, had left only the day before, and on looking
-over the entries against him, I came upon the very items which I
-had seen in the duplicate bill. His letters were to be forwarded
-to 226 Gordon Square; so thither I travelled, and being fortunate
-enough to find the loving couple at home, I ventured to give them
-some paternal advice and to point out to them that it would be
-better in every way that they should make their position a little
-clearer both to the general public and to Lord St. Simon in
-particular. I invited them to meet him here, and, as you see, I
-made him keep the appointment."
-
-"But with no very good result," I remarked. "His conduct was
-certainly not very gracious."
-
-"Ah, Watson," said Holmes, smiling, "perhaps you would not be
-very gracious either, if, after all the trouble of wooing and
-wedding, you found yourself deprived in an instant of wife and of
-fortune. I think that we may judge Lord St. Simon very mercifully
-and thank our stars that we are never likely to find ourselves in
-the same position. Draw your chair up and hand me my violin, for
-the only problem we have still to solve is how to while away
-these bleak autumnal evenings."
-
-
-
-XI. THE ADVENTURE OF THE BERYL CORONET
-
-"Holmes," said I as I stood one morning in our bow-window looking
-down the street, "here is a madman coming along. It seems rather
-sad that his relatives should allow him to come out alone."
-
-My friend rose lazily from his armchair and stood with his hands
-in the pockets of his dressing-gown, looking over my shoulder. It
-was a bright, crisp February morning, and the snow of the day
-before still lay deep upon the ground, shimmering brightly in the
-wintry sun. Down the centre of Baker Street it had been ploughed
-into a brown crumbly band by the traffic, but at either side and
-on the heaped-up edges of the foot-paths it still lay as white as
-when it fell. The grey pavement had been cleaned and scraped, but
-was still dangerously slippery, so that there were fewer
-passengers than usual. Indeed, from the direction of the
-Metropolitan Station no one was coming save the single gentleman
-whose eccentric conduct had drawn my attention.
-
-He was a man of about fifty, tall, portly, and imposing, with a
-massive, strongly marked face and a commanding figure. He was
-dressed in a sombre yet rich style, in black frock-coat, shining
-hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
-his actions were in absurd contrast to the dignity of his dress
-and features, for he was running hard, with occasional little
-springs, such as a weary man gives who is little accustomed to
-set any tax upon his legs. As he ran he jerked his hands up and
-down, waggled his head, and writhed his face into the most
-extraordinary contortions.
-
-"What on earth can be the matter with him?" I asked. "He is
-looking up at the numbers of the houses."
-
-"I believe that he is coming here," said Holmes, rubbing his
-hands.
-
-"Here?"
-
-"Yes; I rather think he is coming to consult me professionally. I
-think that I recognise the symptoms. Ha! did I not tell you?" As
-he spoke, the man, puffing and blowing, rushed at our door and
-pulled at our bell until the whole house resounded with the
-clanging.
-
-A few moments later he was in our room, still puffing, still
-gesticulating, but with so fixed a look of grief and despair in
-his eyes that our smiles were turned in an instant to horror and
-pity. For a while he could not get his words out, but swayed his
-body and plucked at his hair like one who has been driven to the
-extreme limits of his reason. Then, suddenly springing to his
-feet, he beat his head against the wall with such force that we
-both rushed upon him and tore him away to the centre of the room.
-Sherlock Holmes pushed him down into the easy-chair and, sitting
-beside him, patted his hand and chatted with him in the easy,
-soothing tones which he knew so well how to employ.
-
-"You have come to me to tell your story, have you not?" said he.
-"You are fatigued with your haste. Pray wait until you have
-recovered yourself, and then I shall be most happy to look into
-any little problem which you may submit to me."
-
-The man sat for a minute or more with a heaving chest, fighting
-against his emotion. Then he passed his handkerchief over his
-brow, set his lips tight, and turned his face towards us.
-
-"No doubt you think me mad?" said he.
-
-"I see that you have had some great trouble," responded Holmes.
-
-"God knows I have!--a trouble which is enough to unseat my
-reason, so sudden and so terrible is it. Public disgrace I might
-have faced, although I am a man whose character has never yet
-borne a stain. Private affliction also is the lot of every man;
-but the two coming together, and in so frightful a form, have
-been enough to shake my very soul. Besides, it is not I alone.
-The very noblest in the land may suffer unless some way be found
-out of this horrible affair."
-
-"Pray compose yourself, sir," said Holmes, "and let me have a
-clear account of who you are and what it is that has befallen
-you."
-
-"My name," answered our visitor, "is probably familiar to your
-ears. I am Alexander Holder, of the banking firm of Holder &
-Stevenson, of Threadneedle Street."
-
-The name was indeed well known to us as belonging to the senior
-partner in the second largest private banking concern in the City
-of London. What could have happened, then, to bring one of the
-foremost citizens of London to this most pitiable pass? We
-waited, all curiosity, until with another effort he braced
-himself to tell his story.
-
-"I feel that time is of value," said he; "that is why I hastened
-here when the police inspector suggested that I should secure
-your co-operation. I came to Baker Street by the Underground and
-hurried from there on foot, for the cabs go slowly through this
-snow. That is why I was so out of breath, for I am a man who
-takes very little exercise. I feel better now, and I will put the
-facts before you as shortly and yet as clearly as I can.
-
-"It is, of course, well known to you that in a successful banking
-business as much depends upon our being able to find remunerative
-investments for our funds as upon our increasing our connection
-and the number of our depositors. One of our most lucrative means
-of laying out money is in the shape of loans, where the security
-is unimpeachable. We have done a good deal in this direction
-during the last few years, and there are many noble families to
-whom we have advanced large sums upon the security of their
-pictures, libraries, or plate.
-
-"Yesterday morning I was seated in my office at the bank when a
-card was brought in to me by one of the clerks. I started when I
-saw the name, for it was that of none other than--well, perhaps
-even to you I had better say no more than that it was a name
-which is a household word all over the earth--one of the highest,
-noblest, most exalted names in England. I was overwhelmed by the
-honour and attempted, when he entered, to say so, but he plunged
-at once into business with the air of a man who wishes to hurry
-quickly through a disagreeable task.
-
-"'Mr. Holder,' said he, 'I have been informed that you are in the
-habit of advancing money.'
-
-"'The firm does so when the security is good.' I answered.
-
-"'It is absolutely essential to me,' said he, 'that I should have
-50,000 pounds at once. I could, of course, borrow so trifling a
-sum ten times over from my friends, but I much prefer to make it
-a matter of business and to carry out that business myself. In my
-position you can readily understand that it is unwise to place
-one's self under obligations.'
-
-"'For how long, may I ask, do you want this sum?' I asked.
-
-"'Next Monday I have a large sum due to me, and I shall then most
-certainly repay what you advance, with whatever interest you
-think it right to charge. But it is very essential to me that the
-money should be paid at once.'
-
-"'I should be happy to advance it without further parley from my
-own private purse,' said I, 'were it not that the strain would be
-rather more than it could bear. If, on the other hand, I am to do
-it in the name of the firm, then in justice to my partner I must
-insist that, even in your case, every businesslike precaution
-should be taken.'
-
-"'I should much prefer to have it so,' said he, raising up a
-square, black morocco case which he had laid beside his chair.
-'You have doubtless heard of the Beryl Coronet?'
-
-"'One of the most precious public possessions of the empire,'
-said I.
-
-"'Precisely.' He opened the case, and there, imbedded in soft,
-flesh-coloured velvet, lay the magnificent piece of jewellery
-which he had named. 'There are thirty-nine enormous beryls,' said
-he, 'and the price of the gold chasing is incalculable. The
-lowest estimate would put the worth of the coronet at double the
-sum which I have asked. I am prepared to leave it with you as my
-security.'
-
-"I took the precious case into my hands and looked in some
-perplexity from it to my illustrious client.
-
-"'You doubt its value?' he asked.
-
-"'Not at all. I only doubt--'
-
-"'The propriety of my leaving it. You may set your mind at rest
-about that. I should not dream of doing so were it not absolutely
-certain that I should be able in four days to reclaim it. It is a
-pure matter of form. Is the security sufficient?'
-
-"'Ample.'
-
-"'You understand, Mr. Holder, that I am giving you a strong proof
-of the confidence which I have in you, founded upon all that I
-have heard of you. I rely upon you not only to be discreet and to
-refrain from all gossip upon the matter but, above all, to
-preserve this coronet with every possible precaution because I
-need not say that a great public scandal would be caused if any
-harm were to befall it. Any injury to it would be almost as
-serious as its complete loss, for there are no beryls in the
-world to match these, and it would be impossible to replace them.
-I leave it with you, however, with every confidence, and I shall
-call for it in person on Monday morning.'
-
-"Seeing that my client was anxious to leave, I said no more but,
-calling for my cashier, I ordered him to pay over fifty 1000
-pound notes. When I was alone once more, however, with the
-precious case lying upon the table in front of me, I could not
-but think with some misgivings of the immense responsibility
-which it entailed upon me. There could be no doubt that, as it
-was a national possession, a horrible scandal would ensue if any
-misfortune should occur to it. I already regretted having ever
-consented to take charge of it. However, it was too late to alter
-the matter now, so I locked it up in my private safe and turned
-once more to my work.
-
-"When evening came I felt that it would be an imprudence to leave
-so precious a thing in the office behind me. Bankers' safes had
-been forced before now, and why should not mine be? If so, how
-terrible would be the position in which I should find myself! I
-determined, therefore, that for the next few days I would always
-carry the case backward and forward with me, so that it might
-never be really out of my reach. With this intention, I called a
-cab and drove out to my house at Streatham, carrying the jewel
-with me. I did not breathe freely until I had taken it upstairs
-and locked it in the bureau of my dressing-room.
-
-"And now a word as to my household, Mr. Holmes, for I wish you to
-thoroughly understand the situation. My groom and my page sleep
-out of the house, and may be set aside altogether. I have three
-maid-servants who have been with me a number of years and whose
-absolute reliability is quite above suspicion. Another, Lucy
-Parr, the second waiting-maid, has only been in my service a few
-months. She came with an excellent character, however, and has
-always given me satisfaction. She is a very pretty girl and has
-attracted admirers who have occasionally hung about the place.
-That is the only drawback which we have found to her, but we
-believe her to be a thoroughly good girl in every way.
-
-"So much for the servants. My family itself is so small that it
-will not take me long to describe it. I am a widower and have an
-only son, Arthur. He has been a disappointment to me, Mr.
-Holmes--a grievous disappointment. I have no doubt that I am
-myself to blame. People tell me that I have spoiled him. Very
-likely I have. When my dear wife died I felt that he was all I
-had to love. I could not bear to see the smile fade even for a
-moment from his face. I have never denied him a wish. Perhaps it
-would have been better for both of us had I been sterner, but I
-meant it for the best.
-
-"It was naturally my intention that he should succeed me in my
-business, but he was not of a business turn. He was wild,
-wayward, and, to speak the truth, I could not trust him in the
-handling of large sums of money. When he was young he became a
-member of an aristocratic club, and there, having charming
-manners, he was soon the intimate of a number of men with long
-purses and expensive habits. He learned to play heavily at cards
-and to squander money on the turf, until he had again and again
-to come to me and implore me to give him an advance upon his
-allowance, that he might settle his debts of honour. He tried
-more than once to break away from the dangerous company which he
-was keeping, but each time the influence of his friend, Sir
-George Burnwell, was enough to draw him back again.
-
-"And, indeed, I could not wonder that such a man as Sir George
-Burnwell should gain an influence over him, for he has frequently
-brought him to my house, and I have found myself that I could
-hardly resist the fascination of his manner. He is older than
-Arthur, a man of the world to his finger-tips, one who had been
-everywhere, seen everything, a brilliant talker, and a man of
-great personal beauty. Yet when I think of him in cold blood, far
-away from the glamour of his presence, I am convinced from his
-cynical speech and the look which I have caught in his eyes that
-he is one who should be deeply distrusted. So I think, and so,
-too, thinks my little Mary, who has a woman's quick insight into
-character.
-
-"And now there is only she to be described. She is my niece; but
-when my brother died five years ago and left her alone in the
-world I adopted her, and have looked upon her ever since as my
-daughter. She is a sunbeam in my house--sweet, loving, beautiful,
-a wonderful manager and housekeeper, yet as tender and quiet and
-gentle as a woman could be. She is my right hand. I do not know
-what I could do without her. In only one matter has she ever gone
-against my wishes. Twice my boy has asked her to marry him, for
-he loves her devotedly, but each time she has refused him. I
-think that if anyone could have drawn him into the right path it
-would have been she, and that his marriage might have changed his
-whole life; but now, alas! it is too late--forever too late!
-
-"Now, Mr. Holmes, you know the people who live under my roof, and
-I shall continue with my miserable story.
-
-"When we were taking coffee in the drawing-room that night after
-dinner, I told Arthur and Mary my experience, and of the precious
-treasure which we had under our roof, suppressing only the name
-of my client. Lucy Parr, who had brought in the coffee, had, I am
-sure, left the room; but I cannot swear that the door was closed.
-Mary and Arthur were much interested and wished to see the famous
-coronet, but I thought it better not to disturb it.
-
-"'Where have you put it?' asked Arthur.
-
-"'In my own bureau.'
-
-"'Well, I hope to goodness the house won't be burgled during the
-night.' said he.
-
-"'It is locked up,' I answered.
-
-"'Oh, any old key will fit that bureau. When I was a youngster I
-have opened it myself with the key of the box-room cupboard.'
-
-"He often had a wild way of talking, so that I thought little of
-what he said. He followed me to my room, however, that night with
-a very grave face.
-
-"'Look here, dad,' said he with his eyes cast down, 'can you let
-me have 200 pounds?'
-
-"'No, I cannot!' I answered sharply. 'I have been far too
-generous with you in money matters.'
-
-"'You have been very kind,' said he, 'but I must have this money,
-or else I can never show my face inside the club again.'
-
-"'And a very good thing, too!' I cried.
-
-"'Yes, but you would not have me leave it a dishonoured man,'
-said he. 'I could not bear the disgrace. I must raise the money
-in some way, and if you will not let me have it, then I must try
-other means.'
-
-"I was very angry, for this was the third demand during the
-month. 'You shall not have a farthing from me,' I cried, on which
-he bowed and left the room without another word.
-
-"When he was gone I unlocked my bureau, made sure that my
-treasure was safe, and locked it again. Then I started to go
-round the house to see that all was secure--a duty which I
-usually leave to Mary but which I thought it well to perform
-myself that night. As I came down the stairs I saw Mary herself
-at the side window of the hall, which she closed and fastened as
-I approached.
-
-"'Tell me, dad,' said she, looking, I thought, a little
-disturbed, 'did you give Lucy, the maid, leave to go out
-to-night?'
-
-"'Certainly not.'
-
-"'She came in just now by the back door. I have no doubt that she
-has only been to the side gate to see someone, but I think that
-it is hardly safe and should be stopped.'
-
-"'You must speak to her in the morning, or I will if you prefer
-it. Are you sure that everything is fastened?'
-
-"'Quite sure, dad.'
-
-"'Then, good-night.' I kissed her and went up to my bedroom
-again, where I was soon asleep.
-
-"I am endeavouring to tell you everything, Mr. Holmes, which may
-have any bearing upon the case, but I beg that you will question
-me upon any point which I do not make clear."
-
-"On the contrary, your statement is singularly lucid."
-
-"I come to a part of my story now in which I should wish to be
-particularly so. I am not a very heavy sleeper, and the anxiety
-in my mind tended, no doubt, to make me even less so than usual.
-About two in the morning, then, I was awakened by some sound in
-the house. It had ceased ere I was wide awake, but it had left an
-impression behind it as though a window had gently closed
-somewhere. I lay listening with all my ears. Suddenly, to my
-horror, there was a distinct sound of footsteps moving softly in
-the next room. I slipped out of bed, all palpitating with fear,
-and peeped round the corner of my dressing-room door.
-
-"'Arthur!' I screamed, 'you villain! you thief! How dare you
-touch that coronet?'
-
-"The gas was half up, as I had left it, and my unhappy boy,
-dressed only in his shirt and trousers, was standing beside the
-light, holding the coronet in his hands. He appeared to be
-wrenching at it, or bending it with all his strength. At my cry
-he dropped it from his grasp and turned as pale as death. I
-snatched it up and examined it. One of the gold corners, with
-three of the beryls in it, was missing.
-
-"'You blackguard!' I shouted, beside myself with rage. 'You have
-destroyed it! You have dishonoured me forever! Where are the
-jewels which you have stolen?'
-
-"'Stolen!' he cried.
-
-"'Yes, thief!' I roared, shaking him by the shoulder.
-
-"'There are none missing. There cannot be any missing,' said he.
-
-"'There are three missing. And you know where they are. Must I
-call you a liar as well as a thief? Did I not see you trying to
-tear off another piece?'
-
-"'You have called me names enough,' said he, 'I will not stand it
-any longer. I shall not say another word about this business,
-since you have chosen to insult me. I will leave your house in
-the morning and make my own way in the world.'
-
-"'You shall leave it in the hands of the police!' I cried
-half-mad with grief and rage. 'I shall have this matter probed to
-the bottom.'
-
-"'You shall learn nothing from me,' said he with a passion such
-as I should not have thought was in his nature. 'If you choose to
-call the police, let the police find what they can.'
-
-"By this time the whole house was astir, for I had raised my
-voice in my anger. Mary was the first to rush into my room, and,
-at the sight of the coronet and of Arthur's face, she read the
-whole story and, with a scream, fell down senseless on the
-ground. I sent the house-maid for the police and put the
-investigation into their hands at once. When the inspector and a
-constable entered the house, Arthur, who had stood sullenly with
-his arms folded, asked me whether it was my intention to charge
-him with theft. I answered that it had ceased to be a private
-matter, but had become a public one, since the ruined coronet was
-national property. I was determined that the law should have its
-way in everything.
-
-"'At least,' said he, 'you will not have me arrested at once. It
-would be to your advantage as well as mine if I might leave the
-house for five minutes.'
-
-"'That you may get away, or perhaps that you may conceal what you
-have stolen,' said I. And then, realising the dreadful position
-in which I was placed, I implored him to remember that not only
-my honour but that of one who was far greater than I was at
-stake; and that he threatened to raise a scandal which would
-convulse the nation. He might avert it all if he would but tell
-me what he had done with the three missing stones.
-
-"'You may as well face the matter,' said I; 'you have been caught
-in the act, and no confession could make your guilt more heinous.
-If you but make such reparation as is in your power, by telling
-us where the beryls are, all shall be forgiven and forgotten.'
-
-"'Keep your forgiveness for those who ask for it,' he answered,
-turning away from me with a sneer. I saw that he was too hardened
-for any words of mine to influence him. There was but one way for
-it. I called in the inspector and gave him into custody. A search
-was made at once not only of his person but of his room and of
-every portion of the house where he could possibly have concealed
-the gems; but no trace of them could be found, nor would the
-wretched boy open his mouth for all our persuasions and our
-threats. This morning he was removed to a cell, and I, after
-going through all the police formalities, have hurried round to
-you to implore you to use your skill in unravelling the matter.
-The police have openly confessed that they can at present make
-nothing of it. You may go to any expense which you think
-necessary. I have already offered a reward of 1000 pounds. My
-God, what shall I do! I have lost my honour, my gems, and my son
-in one night. Oh, what shall I do!"
-
-He put a hand on either side of his head and rocked himself to
-and fro, droning to himself like a child whose grief has got
-beyond words.
-
-Sherlock Holmes sat silent for some few minutes, with his brows
-knitted and his eyes fixed upon the fire.
-
-"Do you receive much company?" he asked.
-
-"None save my partner with his family and an occasional friend of
-Arthur's. Sir George Burnwell has been several times lately. No
-one else, I think."
-
-"Do you go out much in society?"
-
-"Arthur does. Mary and I stay at home. We neither of us care for
-it."
-
-"That is unusual in a young girl."
-
-"She is of a quiet nature. Besides, she is not so very young. She
-is four-and-twenty."
-
-"This matter, from what you say, seems to have been a shock to
-her also."
-
-"Terrible! She is even more affected than I."
-
-"You have neither of you any doubt as to your son's guilt?"
-
-"How can we have when I saw him with my own eyes with the coronet
-in his hands."
-
-"I hardly consider that a conclusive proof. Was the remainder of
-the coronet at all injured?"
-
-"Yes, it was twisted."
-
-"Do you not think, then, that he might have been trying to
-straighten it?"
-
-"God bless you! You are doing what you can for him and for me.
-But it is too heavy a task. What was he doing there at all? If
-his purpose were innocent, why did he not say so?"
-
-"Precisely. And if it were guilty, why did he not invent a lie?
-His silence appears to me to cut both ways. There are several
-singular points about the case. What did the police think of the
-noise which awoke you from your sleep?"
-
-"They considered that it might be caused by Arthur's closing his
-bedroom door."
-
-"A likely story! As if a man bent on felony would slam his door
-so as to wake a household. What did they say, then, of the
-disappearance of these gems?"
-
-"They are still sounding the planking and probing the furniture
-in the hope of finding them."
-
-"Have they thought of looking outside the house?"
-
-"Yes, they have shown extraordinary energy. The whole garden has
-already been minutely examined."
-
-"Now, my dear sir," said Holmes, "is it not obvious to you now
-that this matter really strikes very much deeper than either you
-or the police were at first inclined to think? It appeared to you
-to be a simple case; to me it seems exceedingly complex. Consider
-what is involved by your theory. You suppose that your son came
-down from his bed, went, at great risk, to your dressing-room,
-opened your bureau, took out your coronet, broke off by main
-force a small portion of it, went off to some other place,
-concealed three gems out of the thirty-nine, with such skill that
-nobody can find them, and then returned with the other thirty-six
-into the room in which he exposed himself to the greatest danger
-of being discovered. I ask you now, is such a theory tenable?"
-
-"But what other is there?" cried the banker with a gesture of
-despair. "If his motives were innocent, why does he not explain
-them?"
-
-"It is our task to find that out," replied Holmes; "so now, if
-you please, Mr. Holder, we will set off for Streatham together,
-and devote an hour to glancing a little more closely into
-details."
-
-My friend insisted upon my accompanying them in their expedition,
-which I was eager enough to do, for my curiosity and sympathy
-were deeply stirred by the story to which we had listened. I
-confess that the guilt of the banker's son appeared to me to be
-as obvious as it did to his unhappy father, but still I had such
-faith in Holmes' judgment that I felt that there must be some
-grounds for hope as long as he was dissatisfied with the accepted
-explanation. He hardly spoke a word the whole way out to the
-southern suburb, but sat with his chin upon his breast and his
-hat drawn over his eyes, sunk in the deepest thought. Our client
-appeared to have taken fresh heart at the little glimpse of hope
-which had been presented to him, and he even broke into a
-desultory chat with me over his business affairs. A short railway
-journey and a shorter walk brought us to Fairbank, the modest
-residence of the great financier.
-
-Fairbank was a good-sized square house of white stone, standing
-back a little from the road. A double carriage-sweep, with a
-snow-clad lawn, stretched down in front to two large iron gates
-which closed the entrance. On the right side was a small wooden
-thicket, which led into a narrow path between two neat hedges
-stretching from the road to the kitchen door, and forming the
-tradesmen's entrance. On the left ran a lane which led to the
-stables, and was not itself within the grounds at all, being a
-public, though little used, thoroughfare. Holmes left us standing
-at the door and walked slowly all round the house, across the
-front, down the tradesmen's path, and so round by the garden
-behind into the stable lane. So long was he that Mr. Holder and I
-went into the dining-room and waited by the fire until he should
-return. We were sitting there in silence when the door opened and
-a young lady came in. She was rather above the middle height,
-slim, with dark hair and eyes, which seemed the darker against
-the absolute pallor of her skin. I do not think that I have ever
-seen such deadly paleness in a woman's face. Her lips, too, were
-bloodless, but her eyes were flushed with crying. As she swept
-silently into the room she impressed me with a greater sense of
-grief than the banker had done in the morning, and it was the
-more striking in her as she was evidently a woman of strong
-character, with immense capacity for self-restraint. Disregarding
-my presence, she went straight to her uncle and passed her hand
-over his head with a sweet womanly caress.
-
-"You have given orders that Arthur should be liberated, have you
-not, dad?" she asked.
-
-"No, no, my girl, the matter must be probed to the bottom."
-
-"But I am so sure that he is innocent. You know what woman's
-instincts are. I know that he has done no harm and that you will
-be sorry for having acted so harshly."
-
-"Why is he silent, then, if he is innocent?"
-
-"Who knows? Perhaps because he was so angry that you should
-suspect him."
-
-"How could I help suspecting him, when I actually saw him with
-the coronet in his hand?"
-
-"Oh, but he had only picked it up to look at it. Oh, do, do take
-my word for it that he is innocent. Let the matter drop and say
-no more. It is so dreadful to think of our dear Arthur in
-prison!"
-
-"I shall never let it drop until the gems are found--never, Mary!
-Your affection for Arthur blinds you as to the awful consequences
-to me. Far from hushing the thing up, I have brought a gentleman
-down from London to inquire more deeply into it."
-
-"This gentleman?" she asked, facing round to me.
-
-"No, his friend. He wished us to leave him alone. He is round in
-the stable lane now."
-
-"The stable lane?" She raised her dark eyebrows. "What can he
-hope to find there? Ah! this, I suppose, is he. I trust, sir,
-that you will succeed in proving, what I feel sure is the truth,
-that my cousin Arthur is innocent of this crime."
-
-"I fully share your opinion, and I trust, with you, that we may
-prove it," returned Holmes, going back to the mat to knock the
-snow from his shoes. "I believe I have the honour of addressing
-Miss Mary Holder. Might I ask you a question or two?"
-
-"Pray do, sir, if it may help to clear this horrible affair up."
-
-"You heard nothing yourself last night?"
-
-"Nothing, until my uncle here began to speak loudly. I heard
-that, and I came down."
-
-"You shut up the windows and doors the night before. Did you
-fasten all the windows?"
-
-"Yes."
-
-"Were they all fastened this morning?"
-
-"Yes."
-
-"You have a maid who has a sweetheart? I think that you remarked
-to your uncle last night that she had been out to see him?"
-
-"Yes, and she was the girl who waited in the drawing-room, and
-who may have heard uncle's remarks about the coronet."
-
-"I see. You infer that she may have gone out to tell her
-sweetheart, and that the two may have planned the robbery."
-
-"But what is the good of all these vague theories," cried the
-banker impatiently, "when I have told you that I saw Arthur with
-the coronet in his hands?"
-
-"Wait a little, Mr. Holder. We must come back to that. About this
-girl, Miss Holder. You saw her return by the kitchen door, I
-presume?"
-
-"Yes; when I went to see if the door was fastened for the night I
-met her slipping in. I saw the man, too, in the gloom."
-
-"Do you know him?"
-
-"Oh, yes! he is the green-grocer who brings our vegetables round.
-His name is Francis Prosper."
-
-"He stood," said Holmes, "to the left of the door--that is to
-say, farther up the path than is necessary to reach the door?"
-
-"Yes, he did."
-
-"And he is a man with a wooden leg?"
-
-Something like fear sprang up in the young lady's expressive
-black eyes. "Why, you are like a magician," said she. "How do you
-know that?" She smiled, but there was no answering smile in
-Holmes' thin, eager face.
-
-"I should be very glad now to go upstairs," said he. "I shall
-probably wish to go over the outside of the house again. Perhaps
-I had better take a look at the lower windows before I go up."
-
-He walked swiftly round from one to the other, pausing only at
-the large one which looked from the hall onto the stable lane.
-This he opened and made a very careful examination of the sill
-with his powerful magnifying lens. "Now we shall go upstairs,"
-said he at last.
-
-The banker's dressing-room was a plainly furnished little
-chamber, with a grey carpet, a large bureau, and a long mirror.
-Holmes went to the bureau first and looked hard at the lock.
-
-"Which key was used to open it?" he asked.
-
-"That which my son himself indicated--that of the cupboard of the
-lumber-room."
-
-"Have you it here?"
-
-"That is it on the dressing-table."
-
-Sherlock Holmes took it up and opened the bureau.
-
-"It is a noiseless lock," said he. "It is no wonder that it did
-not wake you. This case, I presume, contains the coronet. We must
-have a look at it." He opened the case, and taking out the diadem
-he laid it upon the table. It was a magnificent specimen of the
-jeweller's art, and the thirty-six stones were the finest that I
-have ever seen. At one side of the coronet was a cracked edge,
-where a corner holding three gems had been torn away.
-
-"Now, Mr. Holder," said Holmes, "here is the corner which
-corresponds to that which has been so unfortunately lost. Might I
-beg that you will break it off."
-
-The banker recoiled in horror. "I should not dream of trying,"
-said he.
-
-"Then I will." Holmes suddenly bent his strength upon it, but
-without result. "I feel it give a little," said he; "but, though
-I am exceptionally strong in the fingers, it would take me all my
-time to break it. An ordinary man could not do it. Now, what do
-you think would happen if I did break it, Mr. Holder? There would
-be a noise like a pistol shot. Do you tell me that all this
-happened within a few yards of your bed and that you heard
-nothing of it?"
-
-"I do not know what to think. It is all dark to me."
-
-"But perhaps it may grow lighter as we go. What do you think,
-Miss Holder?"
-
-"I confess that I still share my uncle's perplexity."
-
-"Your son had no shoes or slippers on when you saw him?"
-
-"He had nothing on save only his trousers and shirt."
-
-"Thank you. We have certainly been favoured with extraordinary
-luck during this inquiry, and it will be entirely our own fault
-if we do not succeed in clearing the matter up. With your
-permission, Mr. Holder, I shall now continue my investigations
-outside."
-
-He went alone, at his own request, for he explained that any
-unnecessary footmarks might make his task more difficult. For an
-hour or more he was at work, returning at last with his feet
-heavy with snow and his features as inscrutable as ever.
-
-"I think that I have seen now all that there is to see, Mr.
-Holder," said he; "I can serve you best by returning to my
-rooms."
-
-"But the gems, Mr. Holmes. Where are they?"
-
-"I cannot tell."
-
-The banker wrung his hands. "I shall never see them again!" he
-cried. "And my son? You give me hopes?"
-
-"My opinion is in no way altered."
-
-"Then, for God's sake, what was this dark business which was
-acted in my house last night?"
-
-"If you can call upon me at my Baker Street rooms to-morrow
-morning between nine and ten I shall be happy to do what I can to
-make it clearer. I understand that you give me carte blanche to
-act for you, provided only that I get back the gems, and that you
-place no limit on the sum I may draw."
-
-"I would give my fortune to have them back."
-
-"Very good. I shall look into the matter between this and then.
-Good-bye; it is just possible that I may have to come over here
-again before evening."
-
-It was obvious to me that my companion's mind was now made up
-about the case, although what his conclusions were was more than
-I could even dimly imagine. Several times during our homeward
-journey I endeavoured to sound him upon the point, but he always
-glided away to some other topic, until at last I gave it over in
-despair. It was not yet three when we found ourselves in our
-rooms once more. He hurried to his chamber and was down again in
-a few minutes dressed as a common loafer. With his collar turned
-up, his shiny, seedy coat, his red cravat, and his worn boots, he
-was a perfect sample of the class.
-
-"I think that this should do," said he, glancing into the glass
-above the fireplace. "I only wish that you could come with me,
-Watson, but I fear that it won't do. I may be on the trail in
-this matter, or I may be following a will-o'-the-wisp, but I
-shall soon know which it is. I hope that I may be back in a few
-hours." He cut a slice of beef from the joint upon the sideboard,
-sandwiched it between two rounds of bread, and thrusting this
-rude meal into his pocket he started off upon his expedition.
-
-I had just finished my tea when he returned, evidently in
-excellent spirits, swinging an old elastic-sided boot in his
-hand. He chucked it down into a corner and helped himself to a
-cup of tea.
-
-"I only looked in as I passed," said he. "I am going right on."
-
-"Where to?"
-
-"Oh, to the other side of the West End. It may be some time
-before I get back. Don't wait up for me in case I should be
-late."
-
-"How are you getting on?"
-
-"Oh, so so. Nothing to complain of. I have been out to Streatham
-since I saw you last, but I did not call at the house. It is a
-very sweet little problem, and I would not have missed it for a
-good deal. However, I must not sit gossiping here, but must get
-these disreputable clothes off and return to my highly
-respectable self."
-
-I could see by his manner that he had stronger reasons for
-satisfaction than his words alone would imply. His eyes twinkled,
-and there was even a touch of colour upon his sallow cheeks. He
-hastened upstairs, and a few minutes later I heard the slam of
-the hall door, which told me that he was off once more upon his
-congenial hunt.
-
-I waited until midnight, but there was no sign of his return, so
-I retired to my room. It was no uncommon thing for him to be away
-for days and nights on end when he was hot upon a scent, so that
-his lateness caused me no surprise. I do not know at what hour he
-came in, but when I came down to breakfast in the morning there
-he was with a cup of coffee in one hand and the paper in the
-other, as fresh and trim as possible.
-
-"You will excuse my beginning without you, Watson," said he, "but
-you remember that our client has rather an early appointment this
-morning."
-
-"Why, it is after nine now," I answered. "I should not be
-surprised if that were he. I thought I heard a ring."
-
-It was, indeed, our friend the financier. I was shocked by the
-change which had come over him, for his face which was naturally
-of a broad and massive mould, was now pinched and fallen in,
-while his hair seemed to me at least a shade whiter. He entered
-with a weariness and lethargy which was even more painful than
-his violence of the morning before, and he dropped heavily into
-the armchair which I pushed forward for him.
-
-"I do not know what I have done to be so severely tried," said
-he. "Only two days ago I was a happy and prosperous man, without
-a care in the world. Now I am left to a lonely and dishonoured
-age. One sorrow comes close upon the heels of another. My niece,
-Mary, has deserted me."
-
-"Deserted you?"
-
-"Yes. Her bed this morning had not been slept in, her room was
-empty, and a note for me lay upon the hall table. I had said to
-her last night, in sorrow and not in anger, that if she had
-married my boy all might have been well with him. Perhaps it was
-thoughtless of me to say so. It is to that remark that she refers
-in this note:
-
-"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
-and that if I had acted differently this terrible misfortune
-might never have occurred. I cannot, with this thought in my
-mind, ever again be happy under your roof, and I feel that I must
-leave you forever. Do not worry about my future, for that is
-provided for; and, above all, do not search for me, for it will
-be fruitless labour and an ill-service to me. In life or in
-death, I am ever your loving,--MARY.'
-
-"What could she mean by that note, Mr. Holmes? Do you think it
-points to suicide?"
-
-"No, no, nothing of the kind. It is perhaps the best possible
-solution. I trust, Mr. Holder, that you are nearing the end of
-your troubles."
-
-"Ha! You say so! You have heard something, Mr. Holmes; you have
-learned something! Where are the gems?"
-
-"You would not think 1000 pounds apiece an excessive sum for
-them?"
-
-"I would pay ten."
-
-"That would be unnecessary. Three thousand will cover the matter.
-And there is a little reward, I fancy. Have you your check-book?
-Here is a pen. Better make it out for 4000 pounds."
-
-With a dazed face the banker made out the required check. Holmes
-walked over to his desk, took out a little triangular piece of
-gold with three gems in it, and threw it down upon the table.
-
-With a shriek of joy our client clutched it up.
-
-"You have it!" he gasped. "I am saved! I am saved!"
-
-The reaction of joy was as passionate as his grief had been, and
-he hugged his recovered gems to his bosom.
-
-"There is one other thing you owe, Mr. Holder," said Sherlock
-Holmes rather sternly.
-
-"Owe!" He caught up a pen. "Name the sum, and I will pay it."
-
-"No, the debt is not to me. You owe a very humble apology to that
-noble lad, your son, who has carried himself in this matter as I
-should be proud to see my own son do, should I ever chance to
-have one."
-
-"Then it was not Arthur who took them?"
-
-"I told you yesterday, and I repeat to-day, that it was not."
-
-"You are sure of it! Then let us hurry to him at once to let him
-know that the truth is known."
-
-"He knows it already. When I had cleared it all up I had an
-interview with him, and finding that he would not tell me the
-story, I told it to him, on which he had to confess that I was
-right and to add the very few details which were not yet quite
-clear to me. Your news of this morning, however, may open his
-lips."
-
-"For heaven's sake, tell me, then, what is this extraordinary
-mystery!"
-
-"I will do so, and I will show you the steps by which I reached
-it. And let me say to you, first, that which it is hardest for me
-to say and for you to hear: there has been an understanding
-between Sir George Burnwell and your niece Mary. They have now
-fled together."
-
-"My Mary? Impossible!"
-
-"It is unfortunately more than possible; it is certain. Neither
-you nor your son knew the true character of this man when you
-admitted him into your family circle. He is one of the most
-dangerous men in England--a ruined gambler, an absolutely
-desperate villain, a man without heart or conscience. Your niece
-knew nothing of such men. When he breathed his vows to her, as he
-had done to a hundred before her, she flattered herself that she
-alone had touched his heart. The devil knows best what he said,
-but at least she became his tool and was in the habit of seeing
-him nearly every evening."
-
-"I cannot, and I will not, believe it!" cried the banker with an
-ashen face.
-
-"I will tell you, then, what occurred in your house last night.
-Your niece, when you had, as she thought, gone to your room,
-slipped down and talked to her lover through the window which
-leads into the stable lane. His footmarks had pressed right
-through the snow, so long had he stood there. She told him of the
-coronet. His wicked lust for gold kindled at the news, and he
-bent her to his will. I have no doubt that she loved you, but
-there are women in whom the love of a lover extinguishes all
-other loves, and I think that she must have been one. She had
-hardly listened to his instructions when she saw you coming
-downstairs, on which she closed the window rapidly and told you
-about one of the servants' escapade with her wooden-legged lover,
-which was all perfectly true.
-
-"Your boy, Arthur, went to bed after his interview with you but
-he slept badly on account of his uneasiness about his club debts.
-In the middle of the night he heard a soft tread pass his door,
-so he rose and, looking out, was surprised to see his cousin
-walking very stealthily along the passage until she disappeared
-into your dressing-room. Petrified with astonishment, the lad
-slipped on some clothes and waited there in the dark to see what
-would come of this strange affair. Presently she emerged from the
-room again, and in the light of the passage-lamp your son saw
-that she carried the precious coronet in her hands. She passed
-down the stairs, and he, thrilling with horror, ran along and
-slipped behind the curtain near your door, whence he could see
-what passed in the hall beneath. He saw her stealthily open the
-window, hand out the coronet to someone in the gloom, and then
-closing it once more hurry back to her room, passing quite close
-to where he stood hid behind the curtain.
-
-"As long as she was on the scene he could not take any action
-without a horrible exposure of the woman whom he loved. But the
-instant that she was gone he realised how crushing a misfortune
-this would be for you, and how all-important it was to set it
-right. He rushed down, just as he was, in his bare feet, opened
-the window, sprang out into the snow, and ran down the lane,
-where he could see a dark figure in the moonlight. Sir George
-Burnwell tried to get away, but Arthur caught him, and there was
-a struggle between them, your lad tugging at one side of the
-coronet, and his opponent at the other. In the scuffle, your son
-struck Sir George and cut him over the eye. Then something
-suddenly snapped, and your son, finding that he had the coronet
-in his hands, rushed back, closed the window, ascended to your
-room, and had just observed that the coronet had been twisted in
-the struggle and was endeavouring to straighten it when you
-appeared upon the scene."
-
-"Is it possible?" gasped the banker.
-
-"You then roused his anger by calling him names at a moment when
-he felt that he had deserved your warmest thanks. He could not
-explain the true state of affairs without betraying one who
-certainly deserved little enough consideration at his hands. He
-took the more chivalrous view, however, and preserved her
-secret."
-
-"And that was why she shrieked and fainted when she saw the
-coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
-been! And his asking to be allowed to go out for five minutes!
-The dear fellow wanted to see if the missing piece were at the
-scene of the struggle. How cruelly I have misjudged him!"
-
-"When I arrived at the house," continued Holmes, "I at once went
-very carefully round it to observe if there were any traces in
-the snow which might help me. I knew that none had fallen since
-the evening before, and also that there had been a strong frost
-to preserve impressions. I passed along the tradesmen's path, but
-found it all trampled down and indistinguishable. Just beyond it,
-however, at the far side of the kitchen door, a woman had stood
-and talked with a man, whose round impressions on one side showed
-that he had a wooden leg. I could even tell that they had been
-disturbed, for the woman had run back swiftly to the door, as was
-shown by the deep toe and light heel marks, while Wooden-leg had
-waited a little, and then had gone away. I thought at the time
-that this might be the maid and her sweetheart, of whom you had
-already spoken to me, and inquiry showed it was so. I passed
-round the garden without seeing anything more than random tracks,
-which I took to be the police; but when I got into the stable
-lane a very long and complex story was written in the snow in
-front of me.
-
-"There was a double line of tracks of a booted man, and a second
-double line which I saw with delight belonged to a man with naked
-feet. I was at once convinced from what you had told me that the
-latter was your son. The first had walked both ways, but the
-other had run swiftly, and as his tread was marked in places over
-the depression of the boot, it was obvious that he had passed
-after the other. I followed them up and found they led to the
-hall window, where Boots had worn all the snow away while
-waiting. Then I walked to the other end, which was a hundred
-yards or more down the lane. I saw where Boots had faced round,
-where the snow was cut up as though there had been a struggle,
-and, finally, where a few drops of blood had fallen, to show me
-that I was not mistaken. Boots had then run down the lane, and
-another little smudge of blood showed that it was he who had been
-hurt. When he came to the highroad at the other end, I found that
-the pavement had been cleared, so there was an end to that clue.
-
-"On entering the house, however, I examined, as you remember, the
-sill and framework of the hall window with my lens, and I could
-at once see that someone had passed out. I could distinguish the
-outline of an instep where the wet foot had been placed in coming
-in. I was then beginning to be able to form an opinion as to what
-had occurred. A man had waited outside the window; someone had
-brought the gems; the deed had been overseen by your son; he had
-pursued the thief; had struggled with him; they had each tugged
-at the coronet, their united strength causing injuries which
-neither alone could have effected. He had returned with the
-prize, but had left a fragment in the grasp of his opponent. So
-far I was clear. The question now was, who was the man and who
-was it brought him the coronet?
-
-"It is an old maxim of mine that when you have excluded the
-impossible, whatever remains, however improbable, must be the
-truth. Now, I knew that it was not you who had brought it down,
-so there only remained your niece and the maids. But if it were
-the maids, why should your son allow himself to be accused in
-their place? There could be no possible reason. As he loved his
-cousin, however, there was an excellent explanation why he should
-retain her secret--the more so as the secret was a disgraceful
-one. When I remembered that you had seen her at that window, and
-how she had fainted on seeing the coronet again, my conjecture
-became a certainty.
-
-"And who could it be who was her confederate? A lover evidently,
-for who else could outweigh the love and gratitude which she must
-feel to you? I knew that you went out little, and that your
-circle of friends was a very limited one. But among them was Sir
-George Burnwell. I had heard of him before as being a man of evil
-reputation among women. It must have been he who wore those boots
-and retained the missing gems. Even though he knew that Arthur
-had discovered him, he might still flatter himself that he was
-safe, for the lad could not say a word without compromising his
-own family.
-
-"Well, your own good sense will suggest what measures I took
-next. I went in the shape of a loafer to Sir George's house,
-managed to pick up an acquaintance with his valet, learned that
-his master had cut his head the night before, and, finally, at
-the expense of six shillings, made all sure by buying a pair of
-his cast-off shoes. With these I journeyed down to Streatham and
-saw that they exactly fitted the tracks."
-
-"I saw an ill-dressed vagabond in the lane yesterday evening,"
-said Mr. Holder.
-
-"Precisely. It was I. I found that I had my man, so I came home
-and changed my clothes. It was a delicate part which I had to
-play then, for I saw that a prosecution must be avoided to avert
-scandal, and I knew that so astute a villain would see that our
-hands were tied in the matter. I went and saw him. At first, of
-course, he denied everything. But when I gave him every
-particular that had occurred, he tried to bluster and took down a
-life-preserver from the wall. I knew my man, however, and I
-clapped a pistol to his head before he could strike. Then he
-became a little more reasonable. I told him that we would give
-him a price for the stones he held--1000 pounds apiece. That
-brought out the first signs of grief that he had shown. 'Why,
-dash it all!' said he, 'I've let them go at six hundred for the
-three!' I soon managed to get the address of the receiver who had
-them, on promising him that there would be no prosecution. Off I
-set to him, and after much chaffering I got our stones at 1000
-pounds apiece. Then I looked in upon your son, told him that all
-was right, and eventually got to my bed about two o'clock, after
-what I may call a really hard day's work."
-
-"A day which has saved England from a great public scandal," said
-the banker, rising. "Sir, I cannot find words to thank you, but
-you shall not find me ungrateful for what you have done. Your
-skill has indeed exceeded all that I have heard of it. And now I
-must fly to my dear boy to apologise to him for the wrong which I
-have done him. As to what you tell me of poor Mary, it goes to my
-very heart. Not even your skill can inform me where she is now."
-
-"I think that we may safely say," returned Holmes, "that she is
-wherever Sir George Burnwell is. It is equally certain, too, that
-whatever her sins are, they will soon receive a more than
-sufficient punishment."
-
-
-
-XII. THE ADVENTURE OF THE COPPER BEECHES
-
-"To the man who loves art for its own sake," remarked Sherlock
-Holmes, tossing aside the advertisement sheet of the Daily
-Telegraph, "it is frequently in its least important and lowliest
-manifestations that the keenest pleasure is to be derived. It is
-pleasant to me to observe, Watson, that you have so far grasped
-this truth that in these little records of our cases which you
-have been good enough to draw up, and, I am bound to say,
-occasionally to embellish, you have given prominence not so much
-to the many causes célèbres and sensational trials in which I
-have figured but rather to those incidents which may have been
-trivial in themselves, but which have given room for those
-faculties of deduction and of logical synthesis which I have made
-my special province."
-
-"And yet," said I, smiling, "I cannot quite hold myself absolved
-from the charge of sensationalism which has been urged against my
-records."
-
-"You have erred, perhaps," he observed, taking up a glowing
-cinder with the tongs and lighting with it the long cherry-wood
-pipe which was wont to replace his clay when he was in a
-disputatious rather than a meditative mood--"you have erred
-perhaps in attempting to put colour and life into each of your
-statements instead of confining yourself to the task of placing
-upon record that severe reasoning from cause to effect which is
-really the only notable feature about the thing."
-
-"It seems to me that I have done you full justice in the matter,"
-I remarked with some coldness, for I was repelled by the egotism
-which I had more than once observed to be a strong factor in my
-friend's singular character.
-
-"No, it is not selfishness or conceit," said he, answering, as
-was his wont, my thoughts rather than my words. "If I claim full
-justice for my art, it is because it is an impersonal thing--a
-thing beyond myself. Crime is common. Logic is rare. Therefore it
-is upon the logic rather than upon the crime that you should
-dwell. You have degraded what should have been a course of
-lectures into a series of tales."
-
-It was a cold morning of the early spring, and we sat after
-breakfast on either side of a cheery fire in the old room at
-Baker Street. A thick fog rolled down between the lines of
-dun-coloured houses, and the opposing windows loomed like dark,
-shapeless blurs through the heavy yellow wreaths. Our gas was lit
-and shone on the white cloth and glimmer of china and metal, for
-the table had not been cleared yet. Sherlock Holmes had been
-silent all the morning, dipping continuously into the
-advertisement columns of a succession of papers until at last,
-having apparently given up his search, he had emerged in no very
-sweet temper to lecture me upon my literary shortcomings.
-
-"At the same time," he remarked after a pause, during which he
-had sat puffing at his long pipe and gazing down into the fire,
-"you can hardly be open to a charge of sensationalism, for out of
-these cases which you have been so kind as to interest yourself
-in, a fair proportion do not treat of crime, in its legal sense,
-at all. The small matter in which I endeavoured to help the King
-of Bohemia, the singular experience of Miss Mary Sutherland, the
-problem connected with the man with the twisted lip, and the
-incident of the noble bachelor, were all matters which are
-outside the pale of the law. But in avoiding the sensational, I
-fear that you may have bordered on the trivial."
-
-"The end may have been so," I answered, "but the methods I hold
-to have been novel and of interest."
-
-"Pshaw, my dear fellow, what do the public, the great unobservant
-public, who could hardly tell a weaver by his tooth or a
-compositor by his left thumb, care about the finer shades of
-analysis and deduction! But, indeed, if you are trivial, I cannot
-blame you, for the days of the great cases are past. Man, or at
-least criminal man, has lost all enterprise and originality. As
-to my own little practice, it seems to be degenerating into an
-agency for recovering lost lead pencils and giving advice to
-young ladies from boarding-schools. I think that I have touched
-bottom at last, however. This note I had this morning marks my
-zero-point, I fancy. Read it!" He tossed a crumpled letter across
-to me.
-
-It was dated from Montague Place upon the preceding evening, and
-ran thus:
-
-"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
-I should or should not accept a situation which has been offered
-to me as governess. I shall call at half-past ten to-morrow if I
-do not inconvenience you. Yours faithfully,
-                                               "VIOLET HUNTER."
-
-"Do you know the young lady?" I asked.
-
-"Not I."
-
-"It is half-past ten now."
-
-"Yes, and I have no doubt that is her ring."
-
-"It may turn out to be of more interest than you think. You
-remember that the affair of the blue carbuncle, which appeared to
-be a mere whim at first, developed into a serious investigation.
-It may be so in this case, also."
-
-"Well, let us hope so. But our doubts will very soon be solved,
-for here, unless I am much mistaken, is the person in question."
-
-As he spoke the door opened and a young lady entered the room.
-She was plainly but neatly dressed, with a bright, quick face,
-freckled like a plover's egg, and with the brisk manner of a
-woman who has had her own way to make in the world.
-
-"You will excuse my troubling you, I am sure," said she, as my
-companion rose to greet her, "but I have had a very strange
-experience, and as I have no parents or relations of any sort
-from whom I could ask advice, I thought that perhaps you would be
-kind enough to tell me what I should do."
-
-"Pray take a seat, Miss Hunter. I shall be happy to do anything
-that I can to serve you."
-
-I could see that Holmes was favourably impressed by the manner
-and speech of his new client. He looked her over in his searching
-fashion, and then composed himself, with his lids drooping and
-his finger-tips together, to listen to her story.
-
-"I have been a governess for five years," said she, "in the
-family of Colonel Spence Munro, but two months ago the colonel
-received an appointment at Halifax, in Nova Scotia, and took his
-children over to America with him, so that I found myself without
-a situation. I advertised, and I answered advertisements, but
-without success. At last the little money which I had saved began
-to run short, and I was at my wit's end as to what I should do.
-
-"There is a well-known agency for governesses in the West End
-called Westaway's, and there I used to call about once a week in
-order to see whether anything had turned up which might suit me.
-Westaway was the name of the founder of the business, but it is
-really managed by Miss Stoper. She sits in her own little office,
-and the ladies who are seeking employment wait in an anteroom,
-and are then shown in one by one, when she consults her ledgers
-and sees whether she has anything which would suit them.
-
-"Well, when I called last week I was shown into the little office
-as usual, but I found that Miss Stoper was not alone. A
-prodigiously stout man with a very smiling face and a great heavy
-chin which rolled down in fold upon fold over his throat sat at
-her elbow with a pair of glasses on his nose, looking very
-earnestly at the ladies who entered. As I came in he gave quite a
-jump in his chair and turned quickly to Miss Stoper.
-
-"'That will do,' said he; 'I could not ask for anything better.
-Capital! capital!' He seemed quite enthusiastic and rubbed his
-hands together in the most genial fashion. He was such a
-comfortable-looking man that it was quite a pleasure to look at
-him.
-
-"'You are looking for a situation, miss?' he asked.
-
-"'Yes, sir.'
-
-"'As governess?'
-
-"'Yes, sir.'
-
-"'And what salary do you ask?'
-
-"'I had 4 pounds a month in my last place with Colonel Spence
-Munro.'
-
-"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
-fat hands out into the air like a man who is in a boiling
-passion. 'How could anyone offer so pitiful a sum to a lady with
-such attractions and accomplishments?'
-
-"'My accomplishments, sir, may be less than you imagine,' said I.
-'A little French, a little German, music, and drawing--'
-
-"'Tut, tut!' he cried. 'This is all quite beside the question.
-The point is, have you or have you not the bearing and deportment
-of a lady? There it is in a nutshell. If you have not, you are
-not fitted for the rearing of a child who may some day play a
-considerable part in the history of the country. But if you have
-why, then, how could any gentleman ask you to condescend to
-accept anything under the three figures? Your salary with me,
-madam, would commence at 100 pounds a year.'
-
-"You may imagine, Mr. Holmes, that to me, destitute as I was,
-such an offer seemed almost too good to be true. The gentleman,
-however, seeing perhaps the look of incredulity upon my face,
-opened a pocket-book and took out a note.
-
-"'It is also my custom,' said he, smiling in the most pleasant
-fashion until his eyes were just two little shining slits amid
-the white creases of his face, 'to advance to my young ladies
-half their salary beforehand, so that they may meet any little
-expenses of their journey and their wardrobe.'
-
-"It seemed to me that I had never met so fascinating and so
-thoughtful a man. As I was already in debt to my tradesmen, the
-advance was a great convenience, and yet there was something
-unnatural about the whole transaction which made me wish to know
-a little more before I quite committed myself.
-
-"'May I ask where you live, sir?' said I.
-
-"'Hampshire. Charming rural place. The Copper Beeches, five miles
-on the far side of Winchester. It is the most lovely country, my
-dear young lady, and the dearest old country-house.'
-
-"'And my duties, sir? I should be glad to know what they would
-be.'
-
-"'One child--one dear little romper just six years old. Oh, if
-you could see him killing cockroaches with a slipper! Smack!
-smack! smack! Three gone before you could wink!' He leaned back
-in his chair and laughed his eyes into his head again.
-
-"I was a little startled at the nature of the child's amusement,
-but the father's laughter made me think that perhaps he was
-joking.
-
-"'My sole duties, then,' I asked, 'are to take charge of a single
-child?'
-
-"'No, no, not the sole, not the sole, my dear young lady,' he
-cried. 'Your duty would be, as I am sure your good sense would
-suggest, to obey any little commands my wife might give, provided
-always that they were such commands as a lady might with
-propriety obey. You see no difficulty, heh?'
-
-"'I should be happy to make myself useful.'
-
-"'Quite so. In dress now, for example. We are faddy people, you
-know--faddy but kind-hearted. If you were asked to wear any dress
-which we might give you, you would not object to our little whim.
-Heh?'
-
-"'No,' said I, considerably astonished at his words.
-
-"'Or to sit here, or sit there, that would not be offensive to
-you?'
-
-"'Oh, no.'
-
-"'Or to cut your hair quite short before you come to us?'
-
-"I could hardly believe my ears. As you may observe, Mr. Holmes,
-my hair is somewhat luxuriant, and of a rather peculiar tint of
-chestnut. It has been considered artistic. I could not dream of
-sacrificing it in this offhand fashion.
-
-"'I am afraid that that is quite impossible,' said I. He had been
-watching me eagerly out of his small eyes, and I could see a
-shadow pass over his face as I spoke.
-
-"'I am afraid that it is quite essential,' said he. 'It is a
-little fancy of my wife's, and ladies' fancies, you know, madam,
-ladies' fancies must be consulted. And so you won't cut your
-hair?'
-
-"'No, sir, I really could not,' I answered firmly.
-
-"'Ah, very well; then that quite settles the matter. It is a
-pity, because in other respects you would really have done very
-nicely. In that case, Miss Stoper, I had best inspect a few more
-of your young ladies.'
-
-"The manageress had sat all this while busy with her papers
-without a word to either of us, but she glanced at me now with so
-much annoyance upon her face that I could not help suspecting
-that she had lost a handsome commission through my refusal.
-
-"'Do you desire your name to be kept upon the books?' she asked.
-
-"'If you please, Miss Stoper.'
-
-"'Well, really, it seems rather useless, since you refuse the
-most excellent offers in this fashion,' said she sharply. 'You
-can hardly expect us to exert ourselves to find another such
-opening for you. Good-day to you, Miss Hunter.' She struck a gong
-upon the table, and I was shown out by the page.
-
-"Well, Mr. Holmes, when I got back to my lodgings and found
-little enough in the cupboard, and two or three bills upon the
-table, I began to ask myself whether I had not done a very
-foolish thing. After all, if these people had strange fads and
-expected obedience on the most extraordinary matters, they were
-at least ready to pay for their eccentricity. Very few
-governesses in England are getting 100 pounds a year. Besides,
-what use was my hair to me? Many people are improved by wearing
-it short and perhaps I should be among the number. Next day I was
-inclined to think that I had made a mistake, and by the day after
-I was sure of it. I had almost overcome my pride so far as to go
-back to the agency and inquire whether the place was still open
-when I received this letter from the gentleman himself. I have it
-here and I will read it to you:
-
-                       "'The Copper Beeches, near Winchester.
-"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
-address, and I write from here to ask you whether you have
-reconsidered your decision. My wife is very anxious that you
-should come, for she has been much attracted by my description of
-you. We are willing to give 30 pounds a quarter, or 120 pounds a
-year, so as to recompense you for any little inconvenience which
-our fads may cause you. They are not very exacting, after all. My
-wife is fond of a particular shade of electric blue and would
-like you to wear such a dress indoors in the morning. You need
-not, however, go to the expense of purchasing one, as we have one
-belonging to my dear daughter Alice (now in Philadelphia), which
-would, I should think, fit you very well. Then, as to sitting
-here or there, or amusing yourself in any manner indicated, that
-need cause you no inconvenience. As regards your hair, it is no
-doubt a pity, especially as I could not help remarking its beauty
-during our short interview, but I am afraid that I must remain
-firm upon this point, and I only hope that the increased salary
-may recompense you for the loss. Your duties, as far as the child
-is concerned, are very light. Now do try to come, and I shall
-meet you with the dog-cart at Winchester. Let me know your train.
-Yours faithfully, JEPHRO RUCASTLE.'
-
-"That is the letter which I have just received, Mr. Holmes, and
-my mind is made up that I will accept it. I thought, however,
-that before taking the final step I should like to submit the
-whole matter to your consideration."
-
-"Well, Miss Hunter, if your mind is made up, that settles the
-question," said Holmes, smiling.
-
-"But you would not advise me to refuse?"
-
-"I confess that it is not the situation which I should like to
-see a sister of mine apply for."
-
-"What is the meaning of it all, Mr. Holmes?"
-
-"Ah, I have no data. I cannot tell. Perhaps you have yourself
-formed some opinion?"
-
-"Well, there seems to me to be only one possible solution. Mr.
-Rucastle seemed to be a very kind, good-natured man. Is it not
-possible that his wife is a lunatic, that he desires to keep the
-matter quiet for fear she should be taken to an asylum, and that
-he humours her fancies in every way in order to prevent an
-outbreak?"
-
-"That is a possible solution--in fact, as matters stand, it is
-the most probable one. But in any case it does not seem to be a
-nice household for a young lady."
-
-"But the money, Mr. Holmes, the money!"
-
-"Well, yes, of course the pay is good--too good. That is what
-makes me uneasy. Why should they give you 120 pounds a year, when
-they could have their pick for 40 pounds? There must be some
-strong reason behind."
-
-"I thought that if I told you the circumstances you would
-understand afterwards if I wanted your help. I should feel so
-much stronger if I felt that you were at the back of me."
-
-"Oh, you may carry that feeling away with you. I assure you that
-your little problem promises to be the most interesting which has
-come my way for some months. There is something distinctly novel
-about some of the features. If you should find yourself in doubt
-or in danger--"
-
-"Danger! What danger do you foresee?"
-
-Holmes shook his head gravely. "It would cease to be a danger if
-we could define it," said he. "But at any time, day or night, a
-telegram would bring me down to your help."
-
-"That is enough." She rose briskly from her chair with the
-anxiety all swept from her face. "I shall go down to Hampshire
-quite easy in my mind now. I shall write to Mr. Rucastle at once,
-sacrifice my poor hair to-night, and start for Winchester
-to-morrow." With a few grateful words to Holmes she bade us both
-good-night and bustled off upon her way.
-
-"At least," said I as we heard her quick, firm steps descending
-the stairs, "she seems to be a young lady who is very well able
-to take care of herself."
-
-"And she would need to be," said Holmes gravely. "I am much
-mistaken if we do not hear from her before many days are past."
-
-It was not very long before my friend's prediction was fulfilled.
-A fortnight went by, during which I frequently found my thoughts
-turning in her direction and wondering what strange side-alley of
-human experience this lonely woman had strayed into. The unusual
-salary, the curious conditions, the light duties, all pointed to
-something abnormal, though whether a fad or a plot, or whether
-the man were a philanthropist or a villain, it was quite beyond
-my powers to determine. As to Holmes, I observed that he sat
-frequently for half an hour on end, with knitted brows and an
-abstracted air, but he swept the matter away with a wave of his
-hand when I mentioned it. "Data! data! data!" he cried
-impatiently. "I can't make bricks without clay." And yet he would
-always wind up by muttering that no sister of his should ever
-have accepted such a situation.
-
-The telegram which we eventually received came late one night
-just as I was thinking of turning in and Holmes was settling down
-to one of those all-night chemical researches which he frequently
-indulged in, when I would leave him stooping over a retort and a
-test-tube at night and find him in the same position when I came
-down to breakfast in the morning. He opened the yellow envelope,
-and then, glancing at the message, threw it across to me.
-
-"Just look up the trains in Bradshaw," said he, and turned back
-to his chemical studies.
-
-The summons was a brief and urgent one.
-
-"Please be at the Black Swan Hotel at Winchester at midday
-to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
-
-"Will you come with me?" asked Holmes, glancing up.
-
-"I should wish to."
-
-"Just look it up, then."
-
-"There is a train at half-past nine," said I, glancing over my
-Bradshaw. "It is due at Winchester at 11:30."
-
-"That will do very nicely. Then perhaps I had better postpone my
-analysis of the acetones, as we may need to be at our best in the
-morning."
-
-By eleven o'clock the next day we were well upon our way to the
-old English capital. Holmes had been buried in the morning papers
-all the way down, but after we had passed the Hampshire border he
-threw them down and began to admire the scenery. It was an ideal
-spring day, a light blue sky, flecked with little fleecy white
-clouds drifting across from west to east. The sun was shining
-very brightly, and yet there was an exhilarating nip in the air,
-which set an edge to a man's energy. All over the countryside,
-away to the rolling hills around Aldershot, the little red and
-grey roofs of the farm-steadings peeped out from amid the light
-green of the new foliage.
-
-"Are they not fresh and beautiful?" I cried with all the
-enthusiasm of a man fresh from the fogs of Baker Street.
-
-But Holmes shook his head gravely.
-
-"Do you know, Watson," said he, "that it is one of the curses of
-a mind with a turn like mine that I must look at everything with
-reference to my own special subject. You look at these scattered
-houses, and you are impressed by their beauty. I look at them,
-and the only thought which comes to me is a feeling of their
-isolation and of the impunity with which crime may be committed
-there."
-
-"Good heavens!" I cried. "Who would associate crime with these
-dear old homesteads?"
-
-"They always fill me with a certain horror. It is my belief,
-Watson, founded upon my experience, that the lowest and vilest
-alleys in London do not present a more dreadful record of sin
-than does the smiling and beautiful countryside."
-
-"You horrify me!"
-
-"But the reason is very obvious. The pressure of public opinion
-can do in the town what the law cannot accomplish. There is no
-lane so vile that the scream of a tortured child, or the thud of
-a drunkard's blow, does not beget sympathy and indignation among
-the neighbours, and then the whole machinery of justice is ever
-so close that a word of complaint can set it going, and there is
-but a step between the crime and the dock. But look at these
-lonely houses, each in its own fields, filled for the most part
-with poor ignorant folk who know little of the law. Think of the
-deeds of hellish cruelty, the hidden wickedness which may go on,
-year in, year out, in such places, and none the wiser. Had this
-lady who appeals to us for help gone to live in Winchester, I
-should never have had a fear for her. It is the five miles of
-country which makes the danger. Still, it is clear that she is
-not personally threatened."
-
-"No. If she can come to Winchester to meet us she can get away."
-
-"Quite so. She has her freedom."
-
-"What CAN be the matter, then? Can you suggest no explanation?"
-
-"I have devised seven separate explanations, each of which would
-cover the facts as far as we know them. But which of these is
-correct can only be determined by the fresh information which we
-shall no doubt find waiting for us. Well, there is the tower of
-the cathedral, and we shall soon learn all that Miss Hunter has
-to tell."
-
-The Black Swan is an inn of repute in the High Street, at no
-distance from the station, and there we found the young lady
-waiting for us. She had engaged a sitting-room, and our lunch
-awaited us upon the table.
-
-"I am so delighted that you have come," she said earnestly. "It
-is so very kind of you both; but indeed I do not know what I
-should do. Your advice will be altogether invaluable to me."
-
-"Pray tell us what has happened to you."
-
-"I will do so, and I must be quick, for I have promised Mr.
-Rucastle to be back before three. I got his leave to come into
-town this morning, though he little knew for what purpose."
-
-"Let us have everything in its due order." Holmes thrust his long
-thin legs out towards the fire and composed himself to listen.
-
-"In the first place, I may say that I have met, on the whole,
-with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
-only fair to them to say that. But I cannot understand them, and
-I am not easy in my mind about them."
-
-"What can you not understand?"
-
-"Their reasons for their conduct. But you shall have it all just
-as it occurred. When I came down, Mr. Rucastle met me here and
-drove me in his dog-cart to the Copper Beeches. It is, as he
-said, beautifully situated, but it is not beautiful in itself,
-for it is a large square block of a house, whitewashed, but all
-stained and streaked with damp and bad weather. There are grounds
-round it, woods on three sides, and on the fourth a field which
-slopes down to the Southampton highroad, which curves past about
-a hundred yards from the front door. This ground in front belongs
-to the house, but the woods all round are part of Lord
-Southerton's preserves. A clump of copper beeches immediately in
-front of the hall door has given its name to the place.
-
-"I was driven over by my employer, who was as amiable as ever,
-and was introduced by him that evening to his wife and the child.
-There was no truth, Mr. Holmes, in the conjecture which seemed to
-us to be probable in your rooms at Baker Street. Mrs. Rucastle is
-not mad. I found her to be a silent, pale-faced woman, much
-younger than her husband, not more than thirty, I should think,
-while he can hardly be less than forty-five. From their
-conversation I have gathered that they have been married about
-seven years, that he was a widower, and that his only child by
-the first wife was the daughter who has gone to Philadelphia. Mr.
-Rucastle told me in private that the reason why she had left them
-was that she had an unreasoning aversion to her stepmother. As
-the daughter could not have been less than twenty, I can quite
-imagine that her position must have been uncomfortable with her
-father's young wife.
-
-"Mrs. Rucastle seemed to me to be colourless in mind as well as
-in feature. She impressed me neither favourably nor the reverse.
-She was a nonentity. It was easy to see that she was passionately
-devoted both to her husband and to her little son. Her light grey
-eyes wandered continually from one to the other, noting every
-little want and forestalling it if possible. He was kind to her
-also in his bluff, boisterous fashion, and on the whole they
-seemed to be a happy couple. And yet she had some secret sorrow,
-this woman. She would often be lost in deep thought, with the
-saddest look upon her face. More than once I have surprised her
-in tears. I have thought sometimes that it was the disposition of
-her child which weighed upon her mind, for I have never met so
-utterly spoiled and so ill-natured a little creature. He is small
-for his age, with a head which is quite disproportionately large.
-His whole life appears to be spent in an alternation between
-savage fits of passion and gloomy intervals of sulking. Giving
-pain to any creature weaker than himself seems to be his one idea
-of amusement, and he shows quite remarkable talent in planning
-the capture of mice, little birds, and insects. But I would
-rather not talk about the creature, Mr. Holmes, and, indeed, he
-has little to do with my story."
-
-"I am glad of all details," remarked my friend, "whether they
-seem to you to be relevant or not."
-
-"I shall try not to miss anything of importance. The one
-unpleasant thing about the house, which struck me at once, was
-the appearance and conduct of the servants. There are only two, a
-man and his wife. Toller, for that is his name, is a rough,
-uncouth man, with grizzled hair and whiskers, and a perpetual
-smell of drink. Twice since I have been with them he has been
-quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
-His wife is a very tall and strong woman with a sour face, as
-silent as Mrs. Rucastle and much less amiable. They are a most
-unpleasant couple, but fortunately I spend most of my time in the
-nursery and my own room, which are next to each other in one
-corner of the building.
-
-"For two days after my arrival at the Copper Beeches my life was
-very quiet; on the third, Mrs. Rucastle came down just after
-breakfast and whispered something to her husband.
-
-"'Oh, yes,' said he, turning to me, 'we are very much obliged to
-you, Miss Hunter, for falling in with our whims so far as to cut
-your hair. I assure you that it has not detracted in the tiniest
-iota from your appearance. We shall now see how the electric-blue
-dress will become you. You will find it laid out upon the bed in
-your room, and if you would be so good as to put it on we should
-both be extremely obliged.'
-
-"The dress which I found waiting for me was of a peculiar shade
-of blue. It was of excellent material, a sort of beige, but it
-bore unmistakable signs of having been worn before. It could not
-have been a better fit if I had been measured for it. Both Mr.
-and Mrs. Rucastle expressed a delight at the look of it, which
-seemed quite exaggerated in its vehemence. They were waiting for
-me in the drawing-room, which is a very large room, stretching
-along the entire front of the house, with three long windows
-reaching down to the floor. A chair had been placed close to the
-central window, with its back turned towards it. In this I was
-asked to sit, and then Mr. Rucastle, walking up and down on the
-other side of the room, began to tell me a series of the funniest
-stories that I have ever listened to. You cannot imagine how
-comical he was, and I laughed until I was quite weary. Mrs.
-Rucastle, however, who has evidently no sense of humour, never so
-much as smiled, but sat with her hands in her lap, and a sad,
-anxious look upon her face. After an hour or so, Mr. Rucastle
-suddenly remarked that it was time to commence the duties of the
-day, and that I might change my dress and go to little Edward in
-the nursery.
-
-"Two days later this same performance was gone through under
-exactly similar circumstances. Again I changed my dress, again I
-sat in the window, and again I laughed very heartily at the funny
-stories of which my employer had an immense répertoire, and which
-he told inimitably. Then he handed me a yellow-backed novel, and
-moving my chair a little sideways, that my own shadow might not
-fall upon the page, he begged me to read aloud to him. I read for
-about ten minutes, beginning in the heart of a chapter, and then
-suddenly, in the middle of a sentence, he ordered me to cease and
-to change my dress.
-
-"You can easily imagine, Mr. Holmes, how curious I became as to
-what the meaning of this extraordinary performance could possibly
-be. They were always very careful, I observed, to turn my face
-away from the window, so that I became consumed with the desire
-to see what was going on behind my back. At first it seemed to be
-impossible, but I soon devised a means. My hand-mirror had been
-broken, so a happy thought seized me, and I concealed a piece of
-the glass in my handkerchief. On the next occasion, in the midst
-of my laughter, I put my handkerchief up to my eyes, and was able
-with a little management to see all that there was behind me. I
-confess that I was disappointed. There was nothing. At least that
-was my first impression. At the second glance, however, I
-perceived that there was a man standing in the Southampton Road,
-a small bearded man in a grey suit, who seemed to be looking in
-my direction. The road is an important highway, and there are
-usually people there. This man, however, was leaning against the
-railings which bordered our field and was looking earnestly up. I
-lowered my handkerchief and glanced at Mrs. Rucastle to find her
-eyes fixed upon me with a most searching gaze. She said nothing,
-but I am convinced that she had divined that I had a mirror in my
-hand and had seen what was behind me. She rose at once.
-
-"'Jephro,' said she, 'there is an impertinent fellow upon the
-road there who stares up at Miss Hunter.'
-
-"'No friend of yours, Miss Hunter?' he asked.
-
-"'No, I know no one in these parts.'
-
-"'Dear me! How very impertinent! Kindly turn round and motion to
-him to go away.'
-
-"'Surely it would be better to take no notice.'
-
-"'No, no, we should have him loitering here always. Kindly turn
-round and wave him away like that.'
-
-"I did as I was told, and at the same instant Mrs. Rucastle drew
-down the blind. That was a week ago, and from that time I have
-not sat again in the window, nor have I worn the blue dress, nor
-seen the man in the road."
-
-"Pray continue," said Holmes. "Your narrative promises to be a
-most interesting one."
-
-"You will find it rather disconnected, I fear, and there may
-prove to be little relation between the different incidents of
-which I speak. On the very first day that I was at the Copper
-Beeches, Mr. Rucastle took me to a small outhouse which stands
-near the kitchen door. As we approached it I heard the sharp
-rattling of a chain, and the sound as of a large animal moving
-about.
-
-"'Look in here!' said Mr. Rucastle, showing me a slit between two
-planks. 'Is he not a beauty?'
-
-"I looked through and was conscious of two glowing eyes, and of a
-vague figure huddled up in the darkness.
-
-"'Don't be frightened,' said my employer, laughing at the start
-which I had given. 'It's only Carlo, my mastiff. I call him mine,
-but really old Toller, my groom, is the only man who can do
-anything with him. We feed him once a day, and not too much then,
-so that he is always as keen as mustard. Toller lets him loose
-every night, and God help the trespasser whom he lays his fangs
-upon. For goodness' sake don't you ever on any pretext set your
-foot over the threshold at night, for it's as much as your life
-is worth.'
-
-"The warning was no idle one, for two nights later I happened to
-look out of my bedroom window about two o'clock in the morning.
-It was a beautiful moonlight night, and the lawn in front of the
-house was silvered over and almost as bright as day. I was
-standing, rapt in the peaceful beauty of the scene, when I was
-aware that something was moving under the shadow of the copper
-beeches. As it emerged into the moonshine I saw what it was. It
-was a giant dog, as large as a calf, tawny tinted, with hanging
-jowl, black muzzle, and huge projecting bones. It walked slowly
-across the lawn and vanished into the shadow upon the other side.
-That dreadful sentinel sent a chill to my heart which I do not
-think that any burglar could have done.
-
-"And now I have a very strange experience to tell you. I had, as
-you know, cut off my hair in London, and I had placed it in a
-great coil at the bottom of my trunk. One evening, after the
-child was in bed, I began to amuse myself by examining the
-furniture of my room and by rearranging my own little things.
-There was an old chest of drawers in the room, the two upper ones
-empty and open, the lower one locked. I had filled the first two
-with my linen, and as I had still much to pack away I was
-naturally annoyed at not having the use of the third drawer. It
-struck me that it might have been fastened by a mere oversight,
-so I took out my bunch of keys and tried to open it. The very
-first key fitted to perfection, and I drew the drawer open. There
-was only one thing in it, but I am sure that you would never
-guess what it was. It was my coil of hair.
-
-"I took it up and examined it. It was of the same peculiar tint,
-and the same thickness. But then the impossibility of the thing
-obtruded itself upon me. How could my hair have been locked in
-the drawer? With trembling hands I undid my trunk, turned out the
-contents, and drew from the bottom my own hair. I laid the two
-tresses together, and I assure you that they were identical. Was
-it not extraordinary? Puzzle as I would, I could make nothing at
-all of what it meant. I returned the strange hair to the drawer,
-and I said nothing of the matter to the Rucastles as I felt that
-I had put myself in the wrong by opening a drawer which they had
-locked.
-
-"I am naturally observant, as you may have remarked, Mr. Holmes,
-and I soon had a pretty good plan of the whole house in my head.
-There was one wing, however, which appeared not to be inhabited
-at all. A door which faced that which led into the quarters of
-the Tollers opened into this suite, but it was invariably locked.
-One day, however, as I ascended the stair, I met Mr. Rucastle
-coming out through this door, his keys in his hand, and a look on
-his face which made him a very different person to the round,
-jovial man to whom I was accustomed. His cheeks were red, his
-brow was all crinkled with anger, and the veins stood out at his
-temples with passion. He locked the door and hurried past me
-without a word or a look.
-
-"This aroused my curiosity, so when I went out for a walk in the
-grounds with my charge, I strolled round to the side from which I
-could see the windows of this part of the house. There were four
-of them in a row, three of which were simply dirty, while the
-fourth was shuttered up. They were evidently all deserted. As I
-strolled up and down, glancing at them occasionally, Mr. Rucastle
-came out to me, looking as merry and jovial as ever.
-
-"'Ah!' said he, 'you must not think me rude if I passed you
-without a word, my dear young lady. I was preoccupied with
-business matters.'
-
-"I assured him that I was not offended. 'By the way,' said I,
-'you seem to have quite a suite of spare rooms up there, and one
-of them has the shutters up.'
-
-"He looked surprised and, as it seemed to me, a little startled
-at my remark.
-
-"'Photography is one of my hobbies,' said he. 'I have made my
-dark room up there. But, dear me! what an observant young lady we
-have come upon. Who would have believed it? Who would have ever
-believed it?' He spoke in a jesting tone, but there was no jest
-in his eyes as he looked at me. I read suspicion there and
-annoyance, but no jest.
-
-"Well, Mr. Holmes, from the moment that I understood that there
-was something about that suite of rooms which I was not to know,
-I was all on fire to go over them. It was not mere curiosity,
-though I have my share of that. It was more a feeling of duty--a
-feeling that some good might come from my penetrating to this
-place. They talk of woman's instinct; perhaps it was woman's
-instinct which gave me that feeling. At any rate, it was there,
-and I was keenly on the lookout for any chance to pass the
-forbidden door.
-
-"It was only yesterday that the chance came. I may tell you that,
-besides Mr. Rucastle, both Toller and his wife find something to
-do in these deserted rooms, and I once saw him carrying a large
-black linen bag with him through the door. Recently he has been
-drinking hard, and yesterday evening he was very drunk; and when
-I came upstairs there was the key in the door. I have no doubt at
-all that he had left it there. Mr. and Mrs. Rucastle were both
-downstairs, and the child was with them, so that I had an
-admirable opportunity. I turned the key gently in the lock,
-opened the door, and slipped through.
-
-"There was a little passage in front of me, unpapered and
-uncarpeted, which turned at a right angle at the farther end.
-Round this corner were three doors in a line, the first and third
-of which were open. They each led into an empty room, dusty and
-cheerless, with two windows in the one and one in the other, so
-thick with dirt that the evening light glimmered dimly through
-them. The centre door was closed, and across the outside of it
-had been fastened one of the broad bars of an iron bed, padlocked
-at one end to a ring in the wall, and fastened at the other with
-stout cord. The door itself was locked as well, and the key was
-not there. This barricaded door corresponded clearly with the
-shuttered window outside, and yet I could see by the glimmer from
-beneath it that the room was not in darkness. Evidently there was
-a skylight which let in light from above. As I stood in the
-passage gazing at the sinister door and wondering what secret it
-might veil, I suddenly heard the sound of steps within the room
-and saw a shadow pass backward and forward against the little
-slit of dim light which shone out from under the door. A mad,
-unreasoning terror rose up in me at the sight, Mr. Holmes. My
-overstrung nerves failed me suddenly, and I turned and ran--ran
-as though some dreadful hand were behind me clutching at the
-skirt of my dress. I rushed down the passage, through the door,
-and straight into the arms of Mr. Rucastle, who was waiting
-outside.
-
-"'So,' said he, smiling, 'it was you, then. I thought that it
-must be when I saw the door open.'
-
-"'Oh, I am so frightened!' I panted.
-
-"'My dear young lady! my dear young lady!'--you cannot think how
-caressing and soothing his manner was--'and what has frightened
-you, my dear young lady?'
-
-"But his voice was just a little too coaxing. He overdid it. I
-was keenly on my guard against him.
-
-"'I was foolish enough to go into the empty wing,' I answered.
-'But it is so lonely and eerie in this dim light that I was
-frightened and ran out again. Oh, it is so dreadfully still in
-there!'
-
-"'Only that?' said he, looking at me keenly.
-
-"'Why, what did you think?' I asked.
-
-"'Why do you think that I lock this door?'
-
-"'I am sure that I do not know.'
-
-"'It is to keep people out who have no business there. Do you
-see?' He was still smiling in the most amiable manner.
-
-"'I am sure if I had known--'
-
-"'Well, then, you know now. And if you ever put your foot over
-that threshold again'--here in an instant the smile hardened into
-a grin of rage, and he glared down at me with the face of a
-demon--'I'll throw you to the mastiff.'
-
-"I was so terrified that I do not know what I did. I suppose that
-I must have rushed past him into my room. I remember nothing
-until I found myself lying on my bed trembling all over. Then I
-thought of you, Mr. Holmes. I could not live there longer without
-some advice. I was frightened of the house, of the man, of the
-woman, of the servants, even of the child. They were all horrible
-to me. If I could only bring you down all would be well. Of
-course I might have fled from the house, but my curiosity was
-almost as strong as my fears. My mind was soon made up. I would
-send you a wire. I put on my hat and cloak, went down to the
-office, which is about half a mile from the house, and then
-returned, feeling very much easier. A horrible doubt came into my
-mind as I approached the door lest the dog might be loose, but I
-remembered that Toller had drunk himself into a state of
-insensibility that evening, and I knew that he was the only one
-in the household who had any influence with the savage creature,
-or who would venture to set him free. I slipped in in safety and
-lay awake half the night in my joy at the thought of seeing you.
-I had no difficulty in getting leave to come into Winchester this
-morning, but I must be back before three o'clock, for Mr. and
-Mrs. Rucastle are going on a visit, and will be away all the
-evening, so that I must look after the child. Now I have told you
-all my adventures, Mr. Holmes, and I should be very glad if you
-could tell me what it all means, and, above all, what I should
-do."
-
-Holmes and I had listened spellbound to this extraordinary story.
-My friend rose now and paced up and down the room, his hands in
-his pockets, and an expression of the most profound gravity upon
-his face.
-
-"Is Toller still drunk?" he asked.
-
-"Yes. I heard his wife tell Mrs. Rucastle that she could do
-nothing with him."
-
-"That is well. And the Rucastles go out to-night?"
-
-"Yes."
-
-"Is there a cellar with a good strong lock?"
-
-"Yes, the wine-cellar."
-
-"You seem to me to have acted all through this matter like a very
-brave and sensible girl, Miss Hunter. Do you think that you could
-perform one more feat? I should not ask it of you if I did not
-think you a quite exceptional woman."
-
-"I will try. What is it?"
-
-"We shall be at the Copper Beeches by seven o'clock, my friend
-and I. The Rucastles will be gone by that time, and Toller will,
-we hope, be incapable. There only remains Mrs. Toller, who might
-give the alarm. If you could send her into the cellar on some
-errand, and then turn the key upon her, you would facilitate
-matters immensely."
-
-"I will do it."
-
-"Excellent! We shall then look thoroughly into the affair. Of
-course there is only one feasible explanation. You have been
-brought there to personate someone, and the real person is
-imprisoned in this chamber. That is obvious. As to who this
-prisoner is, I have no doubt that it is the daughter, Miss Alice
-Rucastle, if I remember right, who was said to have gone to
-America. You were chosen, doubtless, as resembling her in height,
-figure, and the colour of your hair. Hers had been cut off, very
-possibly in some illness through which she has passed, and so, of
-course, yours had to be sacrificed also. By a curious chance you
-came upon her tresses. The man in the road was undoubtedly some
-friend of hers--possibly her fiancé--and no doubt, as you wore
-the girl's dress and were so like her, he was convinced from your
-laughter, whenever he saw you, and afterwards from your gesture,
-that Miss Rucastle was perfectly happy, and that she no longer
-desired his attentions. The dog is let loose at night to prevent
-him from endeavouring to communicate with her. So much is fairly
-clear. The most serious point in the case is the disposition of
-the child."
-
-"What on earth has that to do with it?" I ejaculated.
-
-"My dear Watson, you as a medical man are continually gaining
-light as to the tendencies of a child by the study of the
-parents. Don't you see that the converse is equally valid. I have
-frequently gained my first real insight into the character of
-parents by studying their children. This child's disposition is
-abnormally cruel, merely for cruelty's sake, and whether he
-derives this from his smiling father, as I should suspect, or
-from his mother, it bodes evil for the poor girl who is in their
-power."
-
-"I am sure that you are right, Mr. Holmes," cried our client. "A
-thousand things come back to me which make me certain that you
-have hit it. Oh, let us lose not an instant in bringing help to
-this poor creature."
-
-"We must be circumspect, for we are dealing with a very cunning
-man. We can do nothing until seven o'clock. At that hour we shall
-be with you, and it will not be long before we solve the
-mystery."
-
-We were as good as our word, for it was just seven when we
-reached the Copper Beeches, having put up our trap at a wayside
-public-house. The group of trees, with their dark leaves shining
-like burnished metal in the light of the setting sun, were
-sufficient to mark the house even had Miss Hunter not been
-standing smiling on the door-step.
-
-"Have you managed it?" asked Holmes.
-
-A loud thudding noise came from somewhere downstairs. "That is
-Mrs. Toller in the cellar," said she. "Her husband lies snoring
-on the kitchen rug. Here are his keys, which are the duplicates
-of Mr. Rucastle's."
-
-"You have done well indeed!" cried Holmes with enthusiasm. "Now
-lead the way, and we shall soon see the end of this black
-business."
-
-We passed up the stair, unlocked the door, followed on down a
-passage, and found ourselves in front of the barricade which Miss
-Hunter had described. Holmes cut the cord and removed the
-transverse bar. Then he tried the various keys in the lock, but
-without success. No sound came from within, and at the silence
-Holmes' face clouded over.
-
-"I trust that we are not too late," said he. "I think, Miss
-Hunter, that we had better go in without you. Now, Watson, put
-your shoulder to it, and we shall see whether we cannot make our
-way in."
-
-It was an old rickety door and gave at once before our united
-strength. Together we rushed into the room. It was empty. There
-was no furniture save a little pallet bed, a small table, and a
-basketful of linen. The skylight above was open, and the prisoner
-gone.
-
-"There has been some villainy here," said Holmes; "this beauty
-has guessed Miss Hunter's intentions and has carried his victim
-off."
-
-"But how?"
-
-"Through the skylight. We shall soon see how he managed it." He
-swung himself up onto the roof. "Ah, yes," he cried, "here's the
-end of a long light ladder against the eaves. That is how he did
-it."
-
-"But it is impossible," said Miss Hunter; "the ladder was not
-there when the Rucastles went away."
-
-"He has come back and done it. I tell you that he is a clever and
-dangerous man. I should not be very much surprised if this were
-he whose step I hear now upon the stair. I think, Watson, that it
-would be as well for you to have your pistol ready."
-
-The words were hardly out of his mouth before a man appeared at
-the door of the room, a very fat and burly man, with a heavy
-stick in his hand. Miss Hunter screamed and shrunk against the
-wall at the sight of him, but Sherlock Holmes sprang forward and
-confronted him.
-
-"You villain!" said he, "where's your daughter?"
-
-The fat man cast his eyes round, and then up at the open
-skylight.
-
-"It is for me to ask you that," he shrieked, "you thieves! Spies
-and thieves! I have caught you, have I? You are in my power. I'll
-serve you!" He turned and clattered down the stairs as hard as he
-could go.
-
-"He's gone for the dog!" cried Miss Hunter.
-
-"I have my revolver," said I.
-
-"Better close the front door," cried Holmes, and we all rushed
-down the stairs together. We had hardly reached the hall when we
-heard the baying of a hound, and then a scream of agony, with a
-horrible worrying sound which it was dreadful to listen to. An
-elderly man with a red face and shaking limbs came staggering out
-at a side door.
-
-"My God!" he cried. "Someone has loosed the dog. It's not been
-fed for two days. Quick, quick, or it'll be too late!"
-
-Holmes and I rushed out and round the angle of the house, with
-Toller hurrying behind us. There was the huge famished brute, its
-black muzzle buried in Rucastle's throat, while he writhed and
-screamed upon the ground. Running up, I blew its brains out, and
-it fell over with its keen white teeth still meeting in the great
-creases of his neck. With much labour we separated them and
-carried him, living but horribly mangled, into the house. We laid
-him upon the drawing-room sofa, and having dispatched the sobered
-Toller to bear the news to his wife, I did what I could to
-relieve his pain. We were all assembled round him when the door
-opened, and a tall, gaunt woman entered the room.
-
-"Mrs. Toller!" cried Miss Hunter.
-
-"Yes, miss. Mr. Rucastle let me out when he came back before he
-went up to you. Ah, miss, it is a pity you didn't let me know
-what you were planning, for I would have told you that your pains
-were wasted."
-
-"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
-Toller knows more about this matter than anyone else."
-
-"Yes, sir, I do, and I am ready enough to tell what I know."
-
-"Then, pray, sit down, and let us hear it for there are several
-points on which I must confess that I am still in the dark."
-
-"I will soon make it clear to you," said she; "and I'd have done
-so before now if I could ha' got out from the cellar. If there's
-police-court business over this, you'll remember that I was the
-one that stood your friend, and that I was Miss Alice's friend
-too.
-
-"She was never happy at home, Miss Alice wasn't, from the time
-that her father married again. She was slighted like and had no
-say in anything, but it never really became bad for her until
-after she met Mr. Fowler at a friend's house. As well as I could
-learn, Miss Alice had rights of her own by will, but she was so
-quiet and patient, she was, that she never said a word about them
-but just left everything in Mr. Rucastle's hands. He knew he was
-safe with her; but when there was a chance of a husband coming
-forward, who would ask for all that the law would give him, then
-her father thought it time to put a stop on it. He wanted her to
-sign a paper, so that whether she married or not, he could use
-her money. When she wouldn't do it, he kept on worrying her until
-she got brain-fever, and for six weeks was at death's door. Then
-she got better at last, all worn to a shadow, and with her
-beautiful hair cut off; but that didn't make no change in her
-young man, and he stuck to her as true as man could be."
-
-"Ah," said Holmes, "I think that what you have been good enough
-to tell us makes the matter fairly clear, and that I can deduce
-all that remains. Mr. Rucastle then, I presume, took to this
-system of imprisonment?"
-
-"Yes, sir."
-
-"And brought Miss Hunter down from London in order to get rid of
-the disagreeable persistence of Mr. Fowler."
-
-"That was it, sir."
-
-"But Mr. Fowler being a persevering man, as a good seaman should
-be, blockaded the house, and having met you succeeded by certain
-arguments, metallic or otherwise, in convincing you that your
-interests were the same as his."
-
-"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
-Mrs. Toller serenely.
-
-"And in this way he managed that your good man should have no
-want of drink, and that a ladder should be ready at the moment
-when your master had gone out."
-
-"You have it, sir, just as it happened."
-
-"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
-you have certainly cleared up everything which puzzled us. And
-here comes the country surgeon and Mrs. Rucastle, so I think,
-Watson, that we had best escort Miss Hunter back to Winchester,
-as it seems to me that our locus standi now is rather a
-questionable one."
-
-And thus was solved the mystery of the sinister house with the
-copper beeches in front of the door. Mr. Rucastle survived, but
-was always a broken man, kept alive solely through the care of
-his devoted wife. They still live with their old servants, who
-probably know so much of Rucastle's past life that he finds it
-difficult to part from them. Mr. Fowler and Miss Rucastle were
-married, by special license, in Southampton the day after their
-flight, and he is now the holder of a government appointment in
-the island of Mauritius. As to Miss Violet Hunter, my friend
-Holmes, rather to my disappointment, manifested no further
-interest in her when once she had ceased to be the centre of one
-of his problems, and she is now the head of a private school at
-Walsall, where I believe that she has met with considerable success.
-
-
-
-
-
-
-
-
-
-End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
-Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-***** This file should be named 1661-8.txt or 1661-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/1/6/6/1661/
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.net/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including including checks, online payments and credit card
-donations.  To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.net
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
deleted file mode 100644
index a25d303..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
+++ /dev/null
@@ -1,10216 +0,0 @@
-Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-
-Title: Memoirs of Sherlock Holmes
-
-Author: Sir Arthur Conan Doyle
-
-Posting Date: July 31, 2008 [EBook #834]
-Release Date: March, 1997
-[This file last updated on August 16, 2010]
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by Angela M. Cable
-
-
-
-
-
-MEMOIRS OF SHERLOCK HOLMES
-
-by Sir Arthur Conan Doyle
-
-
-
-
-Adventure I. Silver Blaze
-
-
-"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
-down together to our breakfast one morning.
-
-"Go! Where to?"
-
-"To Dartmoor; to King's Pyland."
-
-I was not surprised. Indeed, my only wonder was that he had not already
-been mixed up in this extraordinary case, which was the one topic of
-conversation through the length and breadth of England. For a whole day
-my companion had rambled about the room with his chin upon his chest and
-his brows knitted, charging and recharging his pipe with the strongest
-black tobacco, and absolutely deaf to any of my questions or remarks.
-Fresh editions of every paper had been sent up by our news agent, only
-to be glanced over and tossed down into a corner. Yet, silent as he was,
-I knew perfectly well what it was over which he was brooding. There was
-but one problem before the public which could challenge his powers of
-analysis, and that was the singular disappearance of the favorite for
-the Wessex Cup, and the tragic murder of its trainer. When, therefore,
-he suddenly announced his intention of setting out for the scene of the
-drama it was only what I had both expected and hoped for.
-
-"I should be most happy to go down with you if I should not be in the
-way," said I.
-
-"My dear Watson, you would confer a great favor upon me by coming. And
-I think that your time will not be misspent, for there are points about
-the case which promise to make it an absolutely unique one. We have, I
-think, just time to catch our train at Paddington, and I will go further
-into the matter upon our journey. You would oblige me by bringing with
-you your very excellent field-glass."
-
-And so it happened that an hour or so later I found myself in the
-corner of a first-class carriage flying along en route for Exeter, while
-Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
-travelling-cap, dipped rapidly into the bundle of fresh papers which he
-had procured at Paddington. We had left Reading far behind us before
-he thrust the last one of them under the seat, and offered me his
-cigar-case.
-
-"We are going well," said he, looking out the window and glancing at his
-watch. "Our rate at present is fifty-three and a half miles an hour."
-
-"I have not observed the quarter-mile posts," said I.
-
-"Nor have I. But the telegraph posts upon this line are sixty yards
-apart, and the calculation is a simple one. I presume that you
-have looked into this matter of the murder of John Straker and the
-disappearance of Silver Blaze?"
-
-"I have seen what the Telegraph and the Chronicle have to say."
-
-"It is one of those cases where the art of the reasoner should be
-used rather for the sifting of details than for the acquiring of fresh
-evidence. The tragedy has been so uncommon, so complete and of such
-personal importance to so many people, that we are suffering from a
-plethora of surmise, conjecture, and hypothesis. The difficulty is to
-detach the framework of fact--of absolute undeniable fact--from the
-embellishments of theorists and reporters. Then, having established
-ourselves upon this sound basis, it is our duty to see what inferences
-may be drawn and what are the special points upon which the whole
-mystery turns. On Tuesday evening I received telegrams from both Colonel
-Ross, the owner of the horse, and from Inspector Gregory, who is looking
-after the case, inviting my cooperation."
-
-"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
-didn't you go down yesterday?"
-
-"Because I made a blunder, my dear Watson--which is, I am afraid, a more
-common occurrence than any one would think who only knew me through your
-memoirs. The fact is that I could not believe it possible that the most
-remarkable horse in England could long remain concealed, especially in
-so sparsely inhabited a place as the north of Dartmoor. From hour to
-hour yesterday I expected to hear that he had been found, and that
-his abductor was the murderer of John Straker. When, however, another
-morning had come, and I found that beyond the arrest of young Fitzroy
-Simpson nothing had been done, I felt that it was time for me to take
-action. Yet in some ways I feel that yesterday has not been wasted."
-
-"You have formed a theory, then?"
-
-"At least I have got a grip of the essential facts of the case. I shall
-enumerate them to you, for nothing clears up a case so much as stating
-it to another person, and I can hardly expect your co-operation if I do
-not show you the position from which we start."
-
-I lay back against the cushions, puffing at my cigar, while Holmes,
-leaning forward, with his long, thin forefinger checking off the points
-upon the palm of his left hand, gave me a sketch of the events which had
-led to our journey.
-
-"Silver Blaze," said he, "is from the Somomy stock, and holds as
-brilliant a record as his famous ancestor. He is now in his fifth year,
-and has brought in turn each of the prizes of the turf to Colonel Ross,
-his fortunate owner. Up to the time of the catastrophe he was the first
-favorite for the Wessex Cup, the betting being three to one on him. He
-has always, however, been a prime favorite with the racing public, and
-has never yet disappointed them, so that even at those odds enormous
-sums of money have been laid upon him. It is obvious, therefore, that
-there were many people who had the strongest interest in preventing
-Silver Blaze from being there at the fall of the flag next Tuesday.
-
-"The fact was, of course, appreciated at King's Pyland, where the
-Colonel's training-stable is situated. Every precaution was taken to
-guard the favorite. The trainer, John Straker, is a retired jockey
-who rode in Colonel Ross's colors before he became too heavy for the
-weighing-chair. He has served the Colonel for five years as jockey and
-for seven as trainer, and has always shown himself to be a zealous and
-honest servant. Under him were three lads; for the establishment was a
-small one, containing only four horses in all. One of these lads sat up
-each night in the stable, while the others slept in the loft. All three
-bore excellent characters. John Straker, who is a married man, lived
-in a small villa about two hundred yards from the stables. He has no
-children, keeps one maid-servant, and is comfortably off. The country
-round is very lonely, but about half a mile to the north there is a
-small cluster of villas which have been built by a Tavistock contractor
-for the use of invalids and others who may wish to enjoy the pure
-Dartmoor air. Tavistock itself lies two miles to the west, while
-across the moor, also about two miles distant, is the larger training
-establishment of Mapleton, which belongs to Lord Backwater, and is
-managed by Silas Brown. In every other direction the moor is a complete
-wilderness, inhabited only by a few roaming gypsies. Such was the
-general situation last Monday night when the catastrophe occurred.
-
-"On that evening the horses had been exercised and watered as usual, and
-the stables were locked up at nine o'clock. Two of the lads walked up
-to the trainer's house, where they had supper in the kitchen, while the
-third, Ned Hunter, remained on guard. At a few minutes after nine
-the maid, Edith Baxter, carried down to the stables his supper, which
-consisted of a dish of curried mutton. She took no liquid, as there was
-a water-tap in the stables, and it was the rule that the lad on duty
-should drink nothing else. The maid carried a lantern with her, as it
-was very dark and the path ran across the open moor.
-
-"Edith Baxter was within thirty yards of the stables, when a man
-appeared out of the darkness and called to her to stop. As he stepped
-into the circle of yellow light thrown by the lantern she saw that he
-was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
-with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
-to it. She was most impressed, however, by the extreme pallor of his
-face and by the nervousness of his manner. His age, she thought, would
-be rather over thirty than under it.
-
-"'Can you tell me where I am?' he asked. 'I had almost made up my mind
-to sleep on the moor, when I saw the light of your lantern.'
-
-"'You are close to the King's Pyland training-stables,' said she.
-
-"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
-stable-boy sleeps there alone every night. Perhaps that is his supper
-which you are carrying to him. Now I am sure that you would not be too
-proud to earn the price of a new dress, would you?' He took a piece of
-white paper folded up out of his waistcoat pocket. 'See that the boy
-has this to-night, and you shall have the prettiest frock that money can
-buy.'
-
-"She was frightened by the earnestness of his manner, and ran past him
-to the window through which she was accustomed to hand the meals. It was
-already opened, and Hunter was seated at the small table inside. She had
-begun to tell him of what had happened, when the stranger came up again.
-
-"'Good-evening,' said he, looking through the window. 'I wanted to have
-a word with you.' The girl has sworn that as he spoke she noticed the
-corner of the little paper packet protruding from his closed hand.
-
-"'What business have you here?' asked the lad.
-
-"'It's business that may put something into your pocket,' said the
-other. 'You've two horses in for the Wessex Cup--Silver Blaze and
-Bayard. Let me have the straight tip and you won't be a loser. Is it a
-fact that at the weights Bayard could give the other a hundred yards in
-five furlongs, and that the stable have put their money on him?'
-
-"'So, you're one of those damned touts!' cried the lad. 'I'll show you
-how we serve them in King's Pyland.' He sprang up and rushed across the
-stable to unloose the dog. The girl fled away to the house, but as she
-ran she looked back and saw that the stranger was leaning through the
-window. A minute later, however, when Hunter rushed out with the hound
-he was gone, and though he ran all round the buildings he failed to find
-any trace of him."
-
-"One moment," I asked. "Did the stable-boy, when he ran out with the
-dog, leave the door unlocked behind him?"
-
-"Excellent, Watson, excellent!" murmured my companion. "The importance
-of the point struck me so forcibly that I sent a special wire to
-Dartmoor yesterday to clear the matter up. The boy locked the door
-before he left it. The window, I may add, was not large enough for a man
-to get through.
-
-"Hunter waited until his fellow-grooms had returned, when he sent a
-message to the trainer and told him what had occurred. Straker was
-excited at hearing the account, although he does not seem to have quite
-realized its true significance. It left him, however, vaguely uneasy,
-and Mrs. Straker, waking at one in the morning, found that he was
-dressing. In reply to her inquiries, he said that he could not sleep on
-account of his anxiety about the horses, and that he intended to walk
-down to the stables to see that all was well. She begged him to remain
-at home, as she could hear the rain pattering against the window, but in
-spite of her entreaties he pulled on his large mackintosh and left the
-house.
-
-"Mrs. Straker awoke at seven in the morning, to find that her husband
-had not yet returned. She dressed herself hastily, called the maid, and
-set off for the stables. The door was open; inside, huddled together
-upon a chair, Hunter was sunk in a state of absolute stupor, the
-favorite's stall was empty, and there were no signs of his trainer.
-
-"The two lads who slept in the chaff-cutting loft above the harness-room
-were quickly aroused. They had heard nothing during the night, for they
-are both sound sleepers. Hunter was obviously under the influence of
-some powerful drug, and as no sense could be got out of him, he was left
-to sleep it off while the two lads and the two women ran out in search
-of the absentees. They still had hopes that the trainer had for some
-reason taken out the horse for early exercise, but on ascending the
-knoll near the house, from which all the neighboring moors were visible,
-they not only could see no signs of the missing favorite, but they
-perceived something which warned them that they were in the presence of
-a tragedy.
-
-"About a quarter of a mile from the stables John Straker's overcoat was
-flapping from a furze-bush. Immediately beyond there was a bowl-shaped
-depression in the moor, and at the bottom of this was found the dead
-body of the unfortunate trainer. His head had been shattered by a savage
-blow from some heavy weapon, and he was wounded on the thigh, where
-there was a long, clean cut, inflicted evidently by some very sharp
-instrument. It was clear, however, that Straker had defended himself
-vigorously against his assailants, for in his right hand he held a small
-knife, which was clotted with blood up to the handle, while in his left
-he clasped a red and black silk cravat, which was recognized by the maid
-as having been worn on the preceding evening by the stranger who had
-visited the stables. Hunter, on recovering from his stupor, was also
-quite positive as to the ownership of the cravat. He was equally certain
-that the same stranger had, while standing at the window, drugged his
-curried mutton, and so deprived the stables of their watchman. As to the
-missing horse, there were abundant proofs in the mud which lay at the
-bottom of the fatal hollow that he had been there at the time of the
-struggle. But from that morning he has disappeared, and although a large
-reward has been offered, and all the gypsies of Dartmoor are on the
-alert, no news has come of him. Finally, an analysis has shown that
-the remains of his supper left by the stable-lad contain an appreciable
-quantity of powdered opium, while the people at the house partook of the
-same dish on the same night without any ill effect.
-
-"Those are the main facts of the case, stripped of all surmise, and
-stated as baldly as possible. I shall now recapitulate what the police
-have done in the matter.
-
-"Inspector Gregory, to whom the case has been committed, is an extremely
-competent officer. Were he but gifted with imagination he might rise to
-great heights in his profession. On his arrival he promptly found and
-arrested the man upon whom suspicion naturally rested. There was little
-difficulty in finding him, for he inhabited one of those villas which I
-have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
-of excellent birth and education, who had squandered a fortune upon the
-turf, and who lived now by doing a little quiet and genteel book-making
-in the sporting clubs of London. An examination of his betting-book
-shows that bets to the amount of five thousand pounds had been
-registered by him against the favorite. On being arrested he volunteered
-that statement that he had come down to Dartmoor in the hope of
-getting some information about the King's Pyland horses, and also about
-Desborough, the second favorite, which was in charge of Silas Brown at
-the Mapleton stables. He did not attempt to deny that he had acted as
-described upon the evening before, but declared that he had no sinister
-designs, and had simply wished to obtain first-hand information. When
-confronted with his cravat, he turned very pale, and was utterly unable
-to account for its presence in the hand of the murdered man. His wet
-clothing showed that he had been out in the storm of the night before,
-and his stick, which was a Penang-lawyer weighted with lead, was just
-such a weapon as might, by repeated blows, have inflicted the terrible
-injuries to which the trainer had succumbed. On the other hand, there
-was no wound upon his person, while the state of Straker's knife would
-show that one at least of his assailants must bear his mark upon him.
-There you have it all in a nutshell, Watson, and if you can give me any
-light I shall be infinitely obliged to you."
-
-I had listened with the greatest interest to the statement which Holmes,
-with characteristic clearness, had laid before me. Though most of the
-facts were familiar to me, I had not sufficiently appreciated their
-relative importance, nor their connection to each other.
-
-"Is it not possible," I suggested, "that the incised wound upon Straker
-may have been caused by his own knife in the convulsive struggles which
-follow any brain injury?"
-
-"It is more than possible; it is probable," said Holmes. "In that case
-one of the main points in favor of the accused disappears."
-
-"And yet," said I, "even now I fail to understand what the theory of the
-police can be."
-
-"I am afraid that whatever theory we state has very grave objections to
-it," returned my companion. "The police imagine, I take it, that this
-Fitzroy Simpson, having drugged the lad, and having in some way obtained
-a duplicate key, opened the stable door and took out the horse, with
-the intention, apparently, of kidnapping him altogether. His bridle is
-missing, so that Simpson must have put this on. Then, having left the
-door open behind him, he was leading the horse away over the moor, when
-he was either met or overtaken by the trainer. A row naturally ensued.
-Simpson beat out the trainer's brains with his heavy stick without
-receiving any injury from the small knife which Straker used in
-self-defence, and then the thief either led the horse on to some secret
-hiding-place, or else it may have bolted during the struggle, and be
-now wandering out on the moors. That is the case as it appears to
-the police, and improbable as it is, all other explanations are more
-improbable still. However, I shall very quickly test the matter when I
-am once upon the spot, and until then I cannot really see how we can get
-much further than our present position."
-
-It was evening before we reached the little town of Tavistock, which
-lies, like the boss of a shield, in the middle of the huge circle of
-Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
-fair man with lion-like hair and beard and curiously penetrating light
-blue eyes; the other a small, alert person, very neat and dapper, in a
-frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
-The latter was Colonel Ross, the well-known sportsman; the other,
-Inspector Gregory, a man who was rapidly making his name in the English
-detective service.
-
-"I am delighted that you have come down, Mr. Holmes," said the Colonel.
-"The Inspector here has done all that could possibly be suggested, but I
-wish to leave no stone unturned in trying to avenge poor Straker and in
-recovering my horse."
-
-"Have there been any fresh developments?" asked Holmes.
-
-"I am sorry to say that we have made very little progress," said the
-Inspector. "We have an open carriage outside, and as you would no doubt
-like to see the place before the light fails, we might talk it over as
-we drive."
-
-A minute later we were all seated in a comfortable landau, and were
-rattling through the quaint old Devonshire city. Inspector Gregory was
-full of his case, and poured out a stream of remarks, while Holmes threw
-in an occasional question or interjection. Colonel Ross leaned back with
-his arms folded and his hat tilted over his eyes, while I listened with
-interest to the dialogue of the two detectives. Gregory was formulating
-his theory, which was almost exactly what Holmes had foretold in the
-train.
-
-"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
-I believe myself that he is our man. At the same time I recognize that
-the evidence is purely circumstantial, and that some new development may
-upset it."
-
-"How about Straker's knife?"
-
-"We have quite come to the conclusion that he wounded himself in his
-fall."
-
-"My friend Dr. Watson made that suggestion to me as we came down. If so,
-it would tell against this man Simpson."
-
-"Undoubtedly. He has neither a knife nor any sign of a wound. The
-evidence against him is certainly very strong. He had a great interest
-in the disappearance of the favorite. He lies under suspicion of having
-poisoned the stable-boy, he was undoubtedly out in the storm, he was
-armed with a heavy stick, and his cravat was found in the dead man's
-hand. I really think we have enough to go before a jury."
-
-Holmes shook his head. "A clever counsel would tear it all to rags,"
-said he. "Why should he take the horse out of the stable? If he wished
-to injure it why could he not do it there? Has a duplicate key been
-found in his possession? What chemist sold him the powdered opium? Above
-all, where could he, a stranger to the district, hide a horse, and such
-a horse as this? What is his own explanation as to the paper which he
-wished the maid to give to the stable-boy?"
-
-"He says that it was a ten-pound note. One was found in his purse. But
-your other difficulties are not so formidable as they seem. He is not
-a stranger to the district. He has twice lodged at Tavistock in the
-summer. The opium was probably brought from London. The key, having
-served its purpose, would be hurled away. The horse may be at the bottom
-of one of the pits or old mines upon the moor."
-
-"What does he say about the cravat?"
-
-"He acknowledges that it is his, and declares that he had lost it. But a
-new element has been introduced into the case which may account for his
-leading the horse from the stable."
-
-Holmes pricked up his ears.
-
-"We have found traces which show that a party of gypsies encamped on
-Monday night within a mile of the spot where the murder took place. On
-Tuesday they were gone. Now, presuming that there was some understanding
-between Simpson and these gypsies, might he not have been leading the
-horse to them when he was overtaken, and may they not have him now?"
-
-"It is certainly possible."
-
-"The moor is being scoured for these gypsies. I have also examined every
-stable and out-house in Tavistock, and for a radius of ten miles."
-
-"There is another training-stable quite close, I understand?"
-
-"Yes, and that is a factor which we must certainly not neglect. As
-Desborough, their horse, was second in the betting, they had an interest
-in the disappearance of the favorite. Silas Brown, the trainer, is known
-to have had large bets upon the event, and he was no friend to poor
-Straker. We have, however, examined the stables, and there is nothing to
-connect him with the affair."
-
-"And nothing to connect this man Simpson with the interests of the
-Mapleton stables?"
-
-"Nothing at all."
-
-Holmes leaned back in the carriage, and the conversation ceased. A few
-minutes later our driver pulled up at a neat little red-brick villa with
-overhanging eaves which stood by the road. Some distance off, across a
-paddock, lay a long gray-tiled out-building. In every other direction
-the low curves of the moor, bronze-colored from the fading ferns,
-stretched away to the sky-line, broken only by the steeples of
-Tavistock, and by a cluster of houses away to the westward which marked
-the Mapleton stables. We all sprang out with the exception of Holmes,
-who continued to lean back with his eyes fixed upon the sky in front of
-him, entirely absorbed in his own thoughts. It was only when I touched
-his arm that he roused himself with a violent start and stepped out of
-the carriage.
-
-"Excuse me," said he, turning to Colonel Ross, who had looked at him in
-some surprise. "I was day-dreaming." There was a gleam in his eyes and a
-suppressed excitement in his manner which convinced me, used as I was
-to his ways, that his hand was upon a clue, though I could not imagine
-where he had found it.
-
-"Perhaps you would prefer at once to go on to the scene of the crime,
-Mr. Holmes?" said Gregory.
-
-"I think that I should prefer to stay here a little and go into one or
-two questions of detail. Straker was brought back here, I presume?"
-
-"Yes; he lies upstairs. The inquest is to-morrow."
-
-"He has been in your service some years, Colonel Ross?"
-
-"I have always found him an excellent servant."
-
-"I presume that you made an inventory of what he had in his pockets at
-the time of his death, Inspector?"
-
-"I have the things themselves in the sitting-room, if you would care to
-see them."
-
-"I should be very glad." We all filed into the front room and sat round
-the central table while the Inspector unlocked a square tin box and laid
-a small heap of things before us. There was a box of vestas, two inches
-of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
-half an ounce of long-cut Cavendish, a silver watch with a gold chain,
-five sovereigns in gold, an aluminum pencil-case, a few papers, and an
-ivory-handled knife with a very delicate, inflexible blade marked Weiss
-& Co., London.
-
-"This is a very singular knife," said Holmes, lifting it up and
-examining it minutely. "I presume, as I see blood-stains upon it, that
-it is the one which was found in the dead man's grasp. Watson, this
-knife is surely in your line?"
-
-"It is what we call a cataract knife," said I.
-
-"I thought so. A very delicate blade devised for very delicate work.
-A strange thing for a man to carry with him upon a rough expedition,
-especially as it would not shut in his pocket."
-
-"The tip was guarded by a disk of cork which we found beside his body,"
-said the Inspector. "His wife tells us that the knife had lain upon the
-dressing-table, and that he had picked it up as he left the room. It was
-a poor weapon, but perhaps the best that he could lay his hands on at
-the moment."
-
-"Very possible. How about these papers?"
-
-"Three of them are receipted hay-dealers' accounts. One of them is a
-letter of instructions from Colonel Ross. This other is a milliner's
-account for thirty-seven pounds fifteen made out by Madame Lesurier,
-of Bond Street, to William Derbyshire. Mrs. Straker tells us that
-Derbyshire was a friend of her husband's and that occasionally his
-letters were addressed here."
-
-"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
-glancing down the account. "Twenty-two guineas is rather heavy for a
-single costume. However there appears to be nothing more to learn, and
-we may now go down to the scene of the crime."
-
-As we emerged from the sitting-room a woman, who had been waiting in
-the passage, took a step forward and laid her hand upon the Inspector's
-sleeve. Her face was haggard and thin and eager, stamped with the print
-of a recent horror.
-
-"Have you got them? Have you found them?" she panted.
-
-"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
-and we shall do all that is possible."
-
-"Surely I met you in Plymouth at a garden-party some little time ago,
-Mrs. Straker?" said Holmes.
-
-"No, sir; you are mistaken."
-
-"Dear me! Why, I could have sworn to it. You wore a costume of
-dove-colored silk with ostrich-feather trimming."
-
-"I never had such a dress, sir," answered the lady.
-
-"Ah, that quite settles it," said Holmes. And with an apology he
-followed the Inspector outside. A short walk across the moor took us to
-the hollow in which the body had been found. At the brink of it was the
-furze-bush upon which the coat had been hung.
-
-"There was no wind that night, I understand," said Holmes.
-
-"None; but very heavy rain."
-
-"In that case the overcoat was not blown against the furze-bush, but
-placed there."
-
-"Yes, it was laid across the bush."
-
-"You fill me with interest, I perceive that the ground has been trampled
-up a good deal. No doubt many feet have been here since Monday night."
-
-"A piece of matting has been laid here at the side, and we have all
-stood upon that."
-
-"Excellent."
-
-"In this bag I have one of the boots which Straker wore, one of Fitzroy
-Simpson's shoes, and a cast horseshoe of Silver Blaze."
-
-"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
-descending into the hollow, he pushed the matting into a more central
-position. Then stretching himself upon his face and leaning his chin
-upon his hands, he made a careful study of the trampled mud in front of
-him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
-burned, which was so coated with mud that it looked at first like a
-little chip of wood.
-
-"I cannot think how I came to overlook it," said the Inspector, with an
-expression of annoyance.
-
-"It was invisible, buried in the mud. I only saw it because I was
-looking for it."
-
-"What! You expected to find it?"
-
-"I thought it not unlikely."
-
-He took the boots from the bag, and compared the impressions of each of
-them with marks upon the ground. Then he clambered up to the rim of the
-hollow, and crawled about among the ferns and bushes.
-
-"I am afraid that there are no more tracks," said the Inspector. "I
-have examined the ground very carefully for a hundred yards in each
-direction."
-
-"Indeed!" said Holmes, rising. "I should not have the impertinence to
-do it again after what you say. But I should like to take a little walk
-over the moor before it grows dark, that I may know my ground to-morrow,
-and I think that I shall put this horseshoe into my pocket for luck."
-
-Colonel Ross, who had shown some signs of impatience at my companion's
-quiet and systematic method of work, glanced at his watch. "I wish you
-would come back with me, Inspector," said he. "There are several points
-on which I should like your advice, and especially as to whether we do
-not owe it to the public to remove our horse's name from the entries for
-the Cup."
-
-"Certainly not," cried Holmes, with decision. "I should let the name
-stand."
-
-The Colonel bowed. "I am very glad to have had your opinion, sir," said
-he. "You will find us at poor Straker's house when you have finished
-your walk, and we can drive together into Tavistock."
-
-He turned back with the Inspector, while Holmes and I walked slowly
-across the moor. The sun was beginning to sink behind the stables of
-Mapleton, and the long, sloping plain in front of us was tinged with
-gold, deepening into rich, ruddy browns where the faded ferns and
-brambles caught the evening light. But the glories of the landscape were
-all wasted upon my companion, who was sunk in the deepest thought.
-
-"It's this way, Watson," said he at last. "We may leave the question
-of who killed John Straker for the instant, and confine ourselves to
-finding out what has become of the horse. Now, supposing that he broke
-away during or after the tragedy, where could he have gone to? The horse
-is a very gregarious creature. If left to himself his instincts would
-have been either to return to King's Pyland or go over to Mapleton. Why
-should he run wild upon the moor? He would surely have been seen by now.
-And why should gypsies kidnap him? These people always clear out when
-they hear of trouble, for they do not wish to be pestered by the police.
-They could not hope to sell such a horse. They would run a great risk
-and gain nothing by taking him. Surely that is clear."
-
-"Where is he, then?"
-
-"I have already said that he must have gone to King's Pyland or to
-Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
-us take that as a working hypothesis and see what it leads us to. This
-part of the moor, as the Inspector remarked, is very hard and dry. But
-it falls away towards Mapleton, and you can see from here that there
-is a long hollow over yonder, which must have been very wet on Monday
-night. If our supposition is correct, then the horse must have crossed
-that, and there is the point where we should look for his tracks."
-
-We had been walking briskly during this conversation, and a few more
-minutes brought us to the hollow in question. At Holmes' request I
-walked down the bank to the right, and he to the left, but I had not
-taken fifty paces before I heard him give a shout, and saw him waving
-his hand to me. The track of a horse was plainly outlined in the soft
-earth in front of him, and the shoe which he took from his pocket
-exactly fitted the impression.
-
-"See the value of imagination," said Holmes. "It is the one quality
-which Gregory lacks. We imagined what might have happened, acted upon
-the supposition, and find ourselves justified. Let us proceed."
-
-We crossed the marshy bottom and passed over a quarter of a mile of dry,
-hard turf. Again the ground sloped, and again we came on the tracks.
-Then we lost them for half a mile, but only to pick them up once more
-quite close to Mapleton. It was Holmes who saw them first, and he stood
-pointing with a look of triumph upon his face. A man's track was visible
-beside the horse's.
-
-"The horse was alone before," I cried.
-
-"Quite so. It was alone before. Hullo, what is this?"
-
-The double track turned sharp off and took the direction of King's
-Pyland. Holmes whistled, and we both followed along after it. His eyes
-were on the trail, but I happened to look a little to one side, and
-saw to my surprise the same tracks coming back again in the opposite
-direction.
-
-"One for you, Watson," said Holmes, when I pointed it out. "You have
-saved us a long walk, which would have brought us back on our own
-traces. Let us follow the return track."
-
-We had not to go far. It ended at the paving of asphalt which led up
-to the gates of the Mapleton stables. As we approached, a groom ran out
-from them.
-
-"We don't want any loiterers about here," said he.
-
-"I only wished to ask a question," said Holmes, with his finger and
-thumb in his waistcoat pocket. "Should I be too early to see your
-master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
-morning?"
-
-"Bless you, sir, if any one is about he will be, for he is always
-the first stirring. But here he is, sir, to answer your questions for
-himself. No, sir, no; it is as much as my place is worth to let him see
-me touch your money. Afterwards, if you like."
-
-As Sherlock Holmes replaced the half-crown which he had drawn from his
-pocket, a fierce-looking elderly man strode out from the gate with a
-hunting-crop swinging in his hand.
-
-"What's this, Dawson!" he cried. "No gossiping! Go about your business!
-And you, what the devil do you want here?"
-
-"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
-of voices.
-
-"I've no time to talk to every gadabout. We want no stranger here. Be
-off, or you may find a dog at your heels."
-
-Holmes leaned forward and whispered something in the trainer's ear. He
-started violently and flushed to the temples.
-
-"It's a lie!" he shouted, "an infernal lie!"
-
-"Very good. Shall we argue about it here in public or talk it over in
-your parlor?"
-
-"Oh, come in if you wish to."
-
-Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
-said he. "Now, Mr. Brown, I am quite at your disposal."
-
-It was twenty minutes, and the reds had all faded into grays before
-Holmes and the trainer reappeared. Never have I seen such a change as
-had been brought about in Silas Brown in that short time. His face was
-ashy pale, beads of perspiration shone upon his brow, and his hands
-shook until the hunting-crop wagged like a branch in the wind. His
-bullying, overbearing manner was all gone too, and he cringed along at
-my companion's side like a dog with its master.
-
-"Your instructions will be done. It shall all be done," said he.
-
-"There must be no mistake," said Holmes, looking round at him. The other
-winced as he read the menace in his eyes.
-
-"Oh no, there shall be no mistake. It shall be there. Should I change it
-first or not?"
-
-Holmes thought a little and then burst out laughing. "No, don't," said
-he; "I shall write to you about it. No tricks, now, or--"
-
-"Oh, you can trust me, you can trust me!"
-
-"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
-upon his heel, disregarding the trembling hand which the other held out
-to him, and we set off for King's Pyland.
-
-"A more perfect compound of the bully, coward, and sneak than Master
-Silas Brown I have seldom met with," remarked Holmes as we trudged along
-together.
-
-"He has the horse, then?"
-
-"He tried to bluster out of it, but I described to him so exactly what
-his actions had been upon that morning that he is convinced that I was
-watching him. Of course you observed the peculiarly square toes in the
-impressions, and that his own boots exactly corresponded to them.
-Again, of course no subordinate would have dared to do such a thing.
-I described to him how, when according to his custom he was the first
-down, he perceived a strange horse wandering over the moor. How he went
-out to it, and his astonishment at recognizing, from the white forehead
-which has given the favorite its name, that chance had put in his power
-the only horse which could beat the one upon which he had put his money.
-Then I described how his first impulse had been to lead him back to
-King's Pyland, and how the devil had shown him how he could hide the
-horse until the race was over, and how he had led it back and concealed
-it at Mapleton. When I told him every detail he gave it up and thought
-only of saving his own skin."
-
-"But his stables had been searched?"
-
-"Oh, an old horse-faker like him has many a dodge."
-
-"But are you not afraid to leave the horse in his power now, since he
-has every interest in injuring it?"
-
-"My dear fellow, he will guard it as the apple of his eye. He knows that
-his only hope of mercy is to produce it safe."
-
-"Colonel Ross did not impress me as a man who would be likely to show
-much mercy in any case."
-
-"The matter does not rest with Colonel Ross. I follow my own methods,
-and tell as much or as little as I choose. That is the advantage of
-being unofficial. I don't know whether you observed it, Watson, but the
-Colonel's manner has been just a trifle cavalier to me. I am inclined
-now to have a little amusement at his expense. Say nothing to him about
-the horse."
-
-"Certainly not without your permission."
-
-"And of course this is all quite a minor point compared to the question
-of who killed John Straker."
-
-"And you will devote yourself to that?"
-
-"On the contrary, we both go back to London by the night train."
-
-I was thunderstruck by my friend's words. We had only been a few hours
-in Devonshire, and that he should give up an investigation which he had
-begun so brilliantly was quite incomprehensible to me. Not a word more
-could I draw from him until we were back at the trainer's house. The
-Colonel and the Inspector were awaiting us in the parlor.
-
-"My friend and I return to town by the night-express," said Holmes. "We
-have had a charming little breath of your beautiful Dartmoor air."
-
-The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
-
-"So you despair of arresting the murderer of poor Straker," said he.
-
-Holmes shrugged his shoulders. "There are certainly grave difficulties
-in the way," said he. "I have every hope, however, that your horse
-will start upon Tuesday, and I beg that you will have your jockey in
-readiness. Might I ask for a photograph of Mr. John Straker?"
-
-The Inspector took one from an envelope and handed it to him.
-
-"My dear Gregory, you anticipate all my wants. If I might ask you to
-wait here for an instant, I have a question which I should like to put
-to the maid."
-
-"I must say that I am rather disappointed in our London consultant,"
-said Colonel Ross, bluntly, as my friend left the room. "I do not see
-that we are any further than when he came."
-
-"At least you have his assurance that your horse will run," said I.
-
-"Yes, I have his assurance," said the Colonel, with a shrug of his
-shoulders. "I should prefer to have the horse."
-
-I was about to make some reply in defence of my friend when he entered
-the room again.
-
-"Now, gentlemen," said he, "I am quite ready for Tavistock."
-
-As we stepped into the carriage one of the stable-lads held the door
-open for us. A sudden idea seemed to occur to Holmes, for he leaned
-forward and touched the lad upon the sleeve.
-
-"You have a few sheep in the paddock," he said. "Who attends to them?"
-
-"I do, sir."
-
-"Have you noticed anything amiss with them of late?"
-
-"Well, sir, not of much account; but three of them have gone lame, sir."
-
-I could see that Holmes was extremely pleased, for he chuckled and
-rubbed his hands together.
-
-"A long shot, Watson; a very long shot," said he, pinching my arm.
-"Gregory, let me recommend to your attention this singular epidemic
-among the sheep. Drive on, coachman!"
-
-Colonel Ross still wore an expression which showed the poor opinion
-which he had formed of my companion's ability, but I saw by the
-Inspector's face that his attention had been keenly aroused.
-
-"You consider that to be important?" he asked.
-
-"Exceedingly so."
-
-"Is there any point to which you would wish to draw my attention?"
-
-"To the curious incident of the dog in the night-time."
-
-"The dog did nothing in the night-time."
-
-"That was the curious incident," remarked Sherlock Holmes.
-
-
-Four days later Holmes and I were again in the train, bound for
-Winchester to see the race for the Wessex Cup. Colonel Ross met us by
-appointment outside the station, and we drove in his drag to the course
-beyond the town. His face was grave, and his manner was cold in the
-extreme.
-
-"I have seen nothing of my horse," said he.
-
-"I suppose that you would know him when you saw him?" asked Holmes.
-
-The Colonel was very angry. "I have been on the turf for twenty years,
-and never was asked such a question as that before," said he. "A
-child would know Silver Blaze, with his white forehead and his mottled
-off-foreleg."
-
-"How is the betting?"
-
-"Well, that is the curious part of it. You could have got fifteen to one
-yesterday, but the price has become shorter and shorter, until you can
-hardly get three to one now."
-
-"Hum!" said Holmes. "Somebody knows something, that is clear."
-
-As the drag drew up in the enclosure near the grand stand I glanced at
-the card to see the entries.
-
-Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
-and five year olds. Second, L300. Third, L200. New course (one mile and
-five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
-Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
-Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
-Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
-stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
-
-"We scratched our other one, and put all hopes on your word," said the
-Colonel. "Why, what is that? Silver Blaze favorite?"
-
-"Five to four against Silver Blaze!" roared the ring. "Five to four
-against Silver Blaze! Five to fifteen against Desborough! Five to four
-on the field!"
-
-"There are the numbers up," I cried. "They are all six there."
-
-"All six there? Then my horse is running," cried the Colonel in great
-agitation. "But I don't see him. My colors have not passed."
-
-"Only five have passed. This must be he."
-
-As I spoke a powerful bay horse swept out from the weighing enclosure
-and cantered past us, bearing on its back the well-known black and red
-of the Colonel.
-
-"That's not my horse," cried the owner. "That beast has not a white hair
-upon its body. What is this that you have done, Mr. Holmes?"
-
-"Well, well, let us see how he gets on," said my friend, imperturbably.
-For a few minutes he gazed through my field-glass. "Capital! An
-excellent start!" he cried suddenly. "There they are, coming round the
-curve!"
-
-From our drag we had a superb view as they came up the straight. The six
-horses were so close together that a carpet could have covered them,
-but half way up the yellow of the Mapleton stable showed to the front.
-Before they reached us, however, Desborough's bolt was shot, and the
-Colonel's horse, coming away with a rush, passed the post a good six
-lengths before its rival, the Duke of Balmoral's Iris making a bad
-third.
-
-"It's my race, anyhow," gasped the Colonel, passing his hand over his
-eyes. "I confess that I can make neither head nor tail of it. Don't you
-think that you have kept up your mystery long enough, Mr. Holmes?"
-
-"Certainly, Colonel, you shall know everything. Let us all go round and
-have a look at the horse together. Here he is," he continued, as we made
-our way into the weighing enclosure, where only owners and their friends
-find admittance. "You have only to wash his face and his leg in spirits
-of wine, and you will find that he is the same old Silver Blaze as
-ever."
-
-"You take my breath away!"
-
-"I found him in the hands of a faker, and took the liberty of running
-him just as he was sent over."
-
-"My dear sir, you have done wonders. The horse looks very fit and well.
-It never went better in its life. I owe you a thousand apologies
-for having doubted your ability. You have done me a great service by
-recovering my horse. You would do me a greater still if you could lay
-your hands on the murderer of John Straker."
-
-"I have done so," said Holmes quietly.
-
-The Colonel and I stared at him in amazement. "You have got him! Where
-is he, then?"
-
-"He is here."
-
-"Here! Where?"
-
-"In my company at the present moment."
-
-The Colonel flushed angrily. "I quite recognize that I am under
-obligations to you, Mr. Holmes," said he, "but I must regard what you
-have just said as either a very bad joke or an insult."
-
-Sherlock Holmes laughed. "I assure you that I have not associated
-you with the crime, Colonel," said he. "The real murderer is standing
-immediately behind you." He stepped past and laid his hand upon the
-glossy neck of the thoroughbred.
-
-"The horse!" cried both the Colonel and myself.
-
-"Yes, the horse. And it may lessen his guilt if I say that it was
-done in self-defence, and that John Straker was a man who was entirely
-unworthy of your confidence. But there goes the bell, and as I stand
-to win a little on this next race, I shall defer a lengthy explanation
-until a more fitting time."
-
-
-
-We had the corner of a Pullman car to ourselves that evening as we
-whirled back to London, and I fancy that the journey was a short one
-to Colonel Ross as well as to myself, as we listened to our
-companion's narrative of the events which had occurred at the Dartmoor
-training-stables upon the Monday night, and the means by which he had
-unravelled them.
-
-"I confess," said he, "that any theories which I had formed from
-the newspaper reports were entirely erroneous. And yet there were
-indications there, had they not been overlaid by other details which
-concealed their true import. I went to Devonshire with the conviction
-that Fitzroy Simpson was the true culprit, although, of course, I saw
-that the evidence against him was by no means complete. It was while I
-was in the carriage, just as we reached the trainer's house, that the
-immense significance of the curried mutton occurred to me. You may
-remember that I was distrait, and remained sitting after you had all
-alighted. I was marvelling in my own mind how I could possibly have
-overlooked so obvious a clue."
-
-"I confess," said the Colonel, "that even now I cannot see how it helps
-us."
-
-"It was the first link in my chain of reasoning. Powdered opium is by no
-means tasteless. The flavor is not disagreeable, but it is perceptible.
-Were it mixed with any ordinary dish the eater would undoubtedly detect
-it, and would probably eat no more. A curry was exactly the medium
-which would disguise this taste. By no possible supposition could
-this stranger, Fitzroy Simpson, have caused curry to be served in
-the trainer's family that night, and it is surely too monstrous a
-coincidence to suppose that he happened to come along with powdered
-opium upon the very night when a dish happened to be served which would
-disguise the flavor. That is unthinkable. Therefore Simpson becomes
-eliminated from the case, and our attention centers upon Straker and
-his wife, the only two people who could have chosen curried mutton for
-supper that night. The opium was added after the dish was set aside
-for the stable-boy, for the others had the same for supper with no ill
-effects. Which of them, then, had access to that dish without the maid
-seeing them?
-
-"Before deciding that question I had grasped the significance of the
-silence of the dog, for one true inference invariably suggests others.
-The Simpson incident had shown me that a dog was kept in the stables,
-and yet, though some one had been in and had fetched out a horse, he
-had not barked enough to arouse the two lads in the loft. Obviously the
-midnight visitor was some one whom the dog knew well.
-
-"I was already convinced, or almost convinced, that John Straker went
-down to the stables in the dead of the night and took out Silver Blaze.
-For what purpose? For a dishonest one, obviously, or why should he drug
-his own stable-boy? And yet I was at a loss to know why. There have been
-cases before now where trainers have made sure of great sums of money
-by laying against their own horses, through agents, and then preventing
-them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
-it is some surer and subtler means. What was it here? I hoped that the
-contents of his pockets might help me to form a conclusion.
-
-"And they did so. You cannot have forgotten the singular knife which was
-found in the dead man's hand, a knife which certainly no sane man would
-choose for a weapon. It was, as Dr. Watson told us, a form of knife
-which is used for the most delicate operations known in surgery. And it
-was to be used for a delicate operation that night. You must know, with
-your wide experience of turf matters, Colonel Ross, that it is possible
-to make a slight nick upon the tendons of a horse's ham, and to do it
-subcutaneously, so as to leave absolutely no trace. A horse so treated
-would develop a slight lameness, which would be put down to a strain in
-exercise or a touch of rheumatism, but never to foul play."
-
-"Villain! Scoundrel!" cried the Colonel.
-
-"We have here the explanation of why John Straker wished to take the
-horse out on to the moor. So spirited a creature would have certainly
-roused the soundest of sleepers when it felt the prick of the knife. It
-was absolutely necessary to do it in the open air."
-
-"I have been blind!" cried the Colonel. "Of course that was why he
-needed the candle, and struck the match."
-
-"Undoubtedly. But in examining his belongings I was fortunate enough to
-discover not only the method of the crime, but even its motives. As a
-man of the world, Colonel, you know that men do not carry other people's
-bills about in their pockets. We have most of us quite enough to do to
-settle our own. I at once concluded that Straker was leading a double
-life, and keeping a second establishment. The nature of the bill showed
-that there was a lady in the case, and one who had expensive tastes.
-Liberal as you are with your servants, one can hardly expect that they
-can buy twenty-guinea walking dresses for their ladies. I questioned
-Mrs. Straker as to the dress without her knowing it, and having
-satisfied myself that it had never reached her, I made a note of the
-milliner's address, and felt that by calling there with Straker's
-photograph I could easily dispose of the mythical Derbyshire.
-
-"From that time on all was plain. Straker had led out the horse to a
-hollow where his light would be invisible. Simpson in his flight had
-dropped his cravat, and Straker had picked it up--with some idea,
-perhaps, that he might use it in securing the horse's leg. Once in the
-hollow, he had got behind the horse and had struck a light; but the
-creature frightened at the sudden glare, and with the strange instinct
-of animals feeling that some mischief was intended, had lashed out, and
-the steel shoe had struck Straker full on the forehead. He had already,
-in spite of the rain, taken off his overcoat in order to do his delicate
-task, and so, as he fell, his knife gashed his thigh. Do I make it
-clear?"
-
-"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
-
-"My final shot was, I confess a very long one. It struck me that so
-astute a man as Straker would not undertake this delicate tendon-nicking
-without a little practice. What could he practice on? My eyes fell upon
-the sheep, and I asked a question which, rather to my surprise, showed
-that my surmise was correct.
-
-"When I returned to London I called upon the milliner, who had
-recognized Straker as an excellent customer of the name of Derbyshire,
-who had a very dashing wife, with a strong partiality for expensive
-dresses. I have no doubt that this woman had plunged him over head and
-ears in debt, and so led him into this miserable plot."
-
-"You have explained all but one thing," cried the Colonel. "Where was
-the horse?"
-
-"Ah, it bolted, and was cared for by one of your neighbors. We must have
-an amnesty in that direction, I think. This is Clapham Junction, if I am
-not mistaken, and we shall be in Victoria in less than ten minutes. If
-you care to smoke a cigar in our rooms, Colonel, I shall be happy to
-give you any other details which might interest you."
-
-
-
-
-Adventure II. The Yellow Face
-
-
-[In publishing these short sketches based upon the numerous cases in
-which my companion's singular gifts have made us the listeners to, and
-eventually the actors in, some strange drama, it is only natural that I
-should dwell rather upon his successes than upon his failures. And this
-not so much for the sake of his reputation--for, indeed, it was when
-he was at his wits' end that his energy and his versatility were most
-admirable--but because where he failed it happened too often that no one
-else succeeded, and that the tale was left forever without a conclusion.
-Now and again, however, it chanced that even when he erred, the truth
-was still discovered. I have noted of some half-dozen cases of the
-kind; the Adventure of the Musgrave Ritual and that which I am about to
-recount are the two which present the strongest features of interest.]
-
-Sherlock Holmes was a man who seldom took exercise for exercise's sake.
-Few men were capable of greater muscular effort, and he was undoubtedly
-one of the finest boxers of his weight that I have ever seen; but he
-looked upon aimless bodily exertion as a waste of energy, and he seldom
-bestirred himself save when there was some professional object to be
-served. Then he was absolutely untiring and indefatigable. That he
-should have kept himself in training under such circumstances is
-remarkable, but his diet was usually of the sparest, and his habits
-were simple to the verge of austerity. Save for the occasional use of
-cocaine, he had no vices, and he only turned to the drug as a protest
-against the monotony of existence when cases were scanty and the papers
-uninteresting.
-
-One day in early spring he had so far relaxed as to go for a walk with
-me in the Park, where the first faint shoots of green were breaking out
-upon the elms, and the sticky spear-heads of the chestnuts were just
-beginning to burst into their five-fold leaves. For two hours we rambled
-about together, in silence for the most part, as befits two men who know
-each other intimately. It was nearly five before we were back in Baker
-Street once more.
-
-"Beg pardon, sir," said our page-boy, as he opened the door. "There's
-been a gentleman here asking for you, sir."
-
-Holmes glanced reproachfully at me. "So much for afternoon walks!" said
-he. "Has this gentleman gone, then?"
-
-"Yes, sir."
-
-"Didn't you ask him in?"
-
-"Yes, sir; he came in."
-
-"How long did he wait?"
-
-"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
-and a-stampin' all the time he was here. I was waitin' outside the door,
-sir, and I could hear him. At last he outs into the passage, and he
-cries, 'Is that man never goin' to come?' Those were his very words,
-sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
-in the open air, for I feel half choked,' says he. 'I'll be back before
-long.' And with that he ups and he outs, and all I could say wouldn't
-hold him back."
-
-"Well, well, you did your best," said Holmes, as we walked into our
-room. "It's very annoying, though, Watson. I was badly in need of
-a case, and this looks, from the man's impatience, as if it were of
-importance. Hullo! That's not your pipe on the table. He must have
-left his behind him. A nice old brier with a good long stem of what the
-tobacconists call amber. I wonder how many real amber mouthpieces there
-are in London? Some people think that a fly in it is a sign. Well, he
-must have been disturbed in his mind to leave a pipe behind him which he
-evidently values highly."
-
-"How do you know that he values it highly?" I asked.
-
-"Well, I should put the original cost of the pipe at seven and sixpence.
-Now it has, you see, been twice mended, once in the wooden stem and once
-in the amber. Each of these mends, done, as you observe, with silver
-bands, must have cost more than the pipe did originally. The man must
-value the pipe highly when he prefers to patch it up rather than buy a
-new one with the same money."
-
-"Anything else?" I asked, for Holmes was turning the pipe about in his
-hand, and staring at it in his peculiar pensive way.
-
-He held it up and tapped on it with his long, thin fore-finger, as a
-professor might who was lecturing on a bone.
-
-"Pipes are occasionally of extraordinary interest," said he. "Nothing
-has more individuality, save perhaps watches and bootlaces. The
-indications here, however, are neither very marked nor very important.
-The owner is obviously a muscular man, left-handed, with an excellent
-set of teeth, careless in his habits, and with no need to practise
-economy."
-
-My friend threw out the information in a very offhand way, but I saw
-that he cocked his eye at me to see if I had followed his reasoning.
-
-"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
-said I.
-
-"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
-knocking a little out on his palm. "As he might get an excellent smoke
-for half the price, he has no need to practise economy."
-
-"And the other points?"
-
-"He has been in the habit of lighting his pipe at lamps and gas-jets.
-You can see that it is quite charred all down one side. Of course a
-match could not have done that. Why should a man hold a match to the
-side of his pipe? But you cannot light it at a lamp without getting the
-bowl charred. And it is all on the right side of the pipe. From that I
-gather that he is a left-handed man. You hold your own pipe to the lamp,
-and see how naturally you, being right-handed, hold the left side to the
-flame. You might do it once the other way, but not as a constancy. This
-has always been held so. Then he has bitten through his amber. It takes
-a muscular, energetic fellow, and one with a good set of teeth, to do
-that. But if I am not mistaken I hear him upon the stair, so we shall
-have something more interesting than his pipe to study."
-
-An instant later our door opened, and a tall young man entered the room.
-He was well but quietly dressed in a dark-gray suit, and carried a brown
-wide-awake in his hand. I should have put him at about thirty, though he
-was really some years older.
-
-"I beg your pardon," said he, with some embarrassment; "I suppose I
-should have knocked. Yes, of course I should have knocked. The fact
-is that I am a little upset, and you must put it all down to that." He
-passed his hand over his forehead like a man who is half dazed, and then
-fell rather than sat down upon a chair.
-
-"I can see that you have not slept for a night or two," said Holmes,
-in his easy, genial way. "That tries a man's nerves more than work, and
-more even than pleasure. May I ask how I can help you?"
-
-"I wanted your advice, sir. I don't know what to do and my whole life
-seems to have gone to pieces."
-
-"You wish to employ me as a consulting detective?"
-
-"Not that only. I want your opinion as a judicious man--as a man of the
-world. I want to know what I ought to do next. I hope to God you'll be
-able to tell me."
-
-He spoke in little, sharp, jerky outbursts, and it seemed to me that to
-speak at all was very painful to him, and that his will all through was
-overriding his inclinations.
-
-"It's a very delicate thing," said he. "One does not like to speak of
-one's domestic affairs to strangers. It seems dreadful to discuss the
-conduct of one's wife with two men whom I have never seen before. It's
-horrible to have to do it. But I've got to the end of my tether, and I
-must have advice."
-
-"My dear Mr. Grant Munro--" began Holmes.
-
-Our visitor sprang from his chair. "What!" he cried, "you know my name?"
-
-"If you wish to preserve your incognito," said Holmes, smiling, "I would
-suggest that you cease to write your name upon the lining of your
-hat, or else that you turn the crown towards the person whom you are
-addressing. I was about to say that my friend and I have listened to a
-good many strange secrets in this room, and that we have had the good
-fortune to bring peace to many troubled souls. I trust that we may do as
-much for you. Might I beg you, as time may prove to be of importance, to
-furnish me with the facts of your case without further delay?"
-
-Our visitor again passed his hand over his forehead, as if he found it
-bitterly hard. From every gesture and expression I could see that he was
-a reserved, self-contained man, with a dash of pride in his nature, more
-likely to hide his wounds than to expose them. Then suddenly, with a
-fierce gesture of his closed hand, like one who throws reserve to the
-winds, he began.
-
-"The facts are these, Mr. Holmes," said he. "I am a married man, and
-have been so for three years. During that time my wife and I have loved
-each other as fondly and lived as happily as any two that ever were
-joined. We have not had a difference, not one, in thought or word or
-deed. And now, since last Monday, there has suddenly sprung up a barrier
-between us, and I find that there is something in her life and in her
-thought of which I know as little as if she were the woman who brushes
-by me in the street. We are estranged, and I want to know why.
-
-"Now there is one thing that I want to impress upon you before I go
-any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
-about that. She loves me with her whole heart and soul, and never more
-than now. I know it. I feel it. I don't want to argue about that. A man
-can tell easily enough when a woman loves him. But there's this secret
-between us, and we can never be the same until it is cleared."
-
-"Kindly let me have the facts, Mr. Munro," said Holmes, with some
-impatience.
-
-"I'll tell you what I know about Effie's history. She was a widow when
-I met her first, though quite young--only twenty-five. Her name then was
-Mrs. Hebron. She went out to America when she was young, and lived in
-the town of Atlanta, where she married this Hebron, who was a lawyer
-with a good practice. They had one child, but the yellow fever broke out
-badly in the place, and both husband and child died of it. I have seen
-his death certificate. This sickened her of America, and she came back
-to live with a maiden aunt at Pinner, in Middlesex. I may mention that
-her husband had left her comfortably off, and that she had a capital of
-about four thousand five hundred pounds, which had been so well invested
-by him that it returned an average of seven per cent. She had only been
-six months at Pinner when I met her; we fell in love with each other,
-and we married a few weeks afterwards.
-
-"I am a hop merchant myself, and as I have an income of seven or
-eight hundred, we found ourselves comfortably off, and took a nice
-eighty-pound-a-year villa at Norbury. Our little place was very
-countrified, considering that it is so close to town. We had an inn and
-two houses a little above us, and a single cottage at the other side of
-the field which faces us, and except those there were no houses until
-you got half way to the station. My business took me into town at
-certain seasons, but in summer I had less to do, and then in our country
-home my wife and I were just as happy as could be wished. I tell you
-that there never was a shadow between us until this accursed affair
-began.
-
-"There's one thing I ought to tell you before I go further. When we
-married, my wife made over all her property to me--rather against my
-will, for I saw how awkward it would be if my business affairs went
-wrong. However, she would have it so, and it was done. Well, about six
-weeks ago she came to me.
-
-"'Jack,' said she, 'when you took my money you said that if ever I
-wanted any I was to ask you for it.'
-
-"'Certainly,' said I. 'It's all your own.'
-
-"'Well,' said she, 'I want a hundred pounds.'
-
-"I was a bit staggered at this, for I had imagined it was simply a new
-dress or something of the kind that she was after.
-
-"'What on earth for?' I asked.
-
-"'Oh,' said she, in her playful way, 'you said that you were only my
-banker, and bankers never ask questions, you know.'
-
-"'If you really mean it, of course you shall have the money,' said I.
-
-"'Oh, yes, I really mean it.'
-
-"'And you won't tell me what you want it for?'
-
-"'Some day, perhaps, but not just at present, Jack.'
-
-"So I had to be content with that, though it was the first time that
-there had ever been any secret between us. I gave her a check, and I
-never thought any more of the matter. It may have nothing to do with
-what came afterwards, but I thought it only right to mention it.
-
-"Well, I told you just now that there is a cottage not far from our
-house. There is just a field between us, but to reach it you have to
-go along the road and then turn down a lane. Just beyond it is a nice
-little grove of Scotch firs, and I used to be very fond of strolling
-down there, for trees are always a neighborly kind of things. The
-cottage had been standing empty this eight months, and it was a pity,
-for it was a pretty two-storied place, with an old-fashioned porch and
-honeysuckle about it. I have stood many a time and thought what a neat
-little homestead it would make.
-
-"Well, last Monday evening I was taking a stroll down that way, when
-I met an empty van coming up the lane, and saw a pile of carpets and
-things lying about on the grass-plot beside the porch. It was clear that
-the cottage had at last been let. I walked past it, and wondered what
-sort of folk they were who had come to live so near us. And as I looked
-I suddenly became aware that a face was watching me out of one of the
-upper windows.
-
-"I don't know what there was about that face, Mr. Holmes, but it seemed
-to send a chill right down my back. I was some little way off, so that
-I could not make out the features, but there was something unnatural and
-inhuman about the face. That was the impression that I had, and I moved
-quickly forwards to get a nearer view of the person who was watching
-me. But as I did so the face suddenly disappeared, so suddenly that it
-seemed to have been plucked away into the darkness of the room. I stood
-for five minutes thinking the business over, and trying to analyze my
-impressions. I could not tell if the face were that of a man or a
-woman. It had been too far from me for that. But its color was what had
-impressed me most. It was of a livid chalky white, and with something
-set and rigid about it which was shockingly unnatural. So disturbed
-was I that I determined to see a little more of the new inmates of
-the cottage. I approached and knocked at the door, which was instantly
-opened by a tall, gaunt woman with a harsh, forbidding face.
-
-"'What may you be wantin'?' she asked, in a Northern accent.
-
-"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
-see that you have only just moved in, so I thought that if I could be of
-any help to you in any--'
-
-"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
-in my face. Annoyed at the churlish rebuff, I turned my back and walked
-home. All evening, though I tried to think of other things, my mind
-would still turn to the apparition at the window and the rudeness of the
-woman. I determined to say nothing about the former to my wife, for
-she is a nervous, highly strung woman, and I had no wish that she would
-share the unpleasant impression which had been produced upon myself. I
-remarked to her, however, before I fell asleep, that the cottage was now
-occupied, to which she returned no reply.
-
-"I am usually an extremely sound sleeper. It has been a standing jest
-in the family that nothing could ever wake me during the night. And yet
-somehow on that particular night, whether it may have been the slight
-excitement produced by my little adventure or not I know not, but
-I slept much more lightly than usual. Half in my dreams I was dimly
-conscious that something was going on in the room, and gradually became
-aware that my wife had dressed herself and was slipping on her mantle
-and her bonnet. My lips were parted to murmur out some sleepy words of
-surprise or remonstrance at this untimely preparation, when suddenly my
-half-opened eyes fell upon her face, illuminated by the candle-light,
-and astonishment held me dumb. She wore an expression such as I had
-never seen before--such as I should have thought her incapable of
-assuming. She was deadly pale and breathing fast, glancing furtively
-towards the bed as she fastened her mantle, to see if she had disturbed
-me. Then, thinking that I was still asleep, she slipped noiselessly from
-the room, and an instant later I heard a sharp creaking which could only
-come from the hinges of the front door. I sat up in bed and rapped my
-knuckles against the rail to make certain that I was truly awake. Then
-I took my watch from under the pillow. It was three in the morning. What
-on this earth could my wife be doing out on the country road at three in
-the morning?
-
-"I had sat for about twenty minutes turning the thing over in my mind
-and trying to find some possible explanation. The more I thought, the
-more extraordinary and inexplicable did it appear. I was still puzzling
-over it when I heard the door gently close again, and her footsteps
-coming up the stairs.
-
-"'Where in the world have you been, Effie?' I asked as she entered.
-
-"She gave a violent start and a kind of gasping cry when I spoke, and
-that cry and start troubled me more than all the rest, for there was
-something indescribably guilty about them. My wife had always been
-a woman of a frank, open nature, and it gave me a chill to see her
-slinking into her own room, and crying out and wincing when her own
-husband spoke to her.
-
-"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
-that nothing could awake you.'
-
-"'Where have you been?' I asked, more sternly.
-
-"'I don't wonder that you are surprised,' said she, and I could see that
-her fingers were trembling as she undid the fastenings of her mantle.
-'Why, I never remember having done such a thing in my life before. The
-fact is that I felt as though I were choking, and had a perfect longing
-for a breath of fresh air. I really think that I should have fainted if
-I had not gone out. I stood at the door for a few minutes, and now I am
-quite myself again.'
-
-"All the time that she was telling me this story she never once looked
-in my direction, and her voice was quite unlike her usual tones. It
-was evident to me that she was saying what was false. I said nothing
-in reply, but turned my face to the wall, sick at heart, with my mind
-filled with a thousand venomous doubts and suspicions. What was it that
-my wife was concealing from me? Where had she been during that strange
-expedition? I felt that I should have no peace until I knew, and yet I
-shrank from asking her again after once she had told me what was false.
-All the rest of the night I tossed and tumbled, framing theory after
-theory, each more unlikely than the last.
-
-"I should have gone to the City that day, but I was too disturbed in my
-mind to be able to pay attention to business matters. My wife seemed
-to be as upset as myself, and I could see from the little questioning
-glances which she kept shooting at me that she understood that I
-disbelieved her statement, and that she was at her wits' end what to do.
-We hardly exchanged a word during breakfast, and immediately afterwards
-I went out for a walk, that I might think the matter out in the fresh
-morning air.
-
-"I went as far as the Crystal Palace, spent an hour in the grounds, and
-was back in Norbury by one o'clock. It happened that my way took me past
-the cottage, and I stopped for an instant to look at the windows, and to
-see if I could catch a glimpse of the strange face which had looked
-out at me on the day before. As I stood there, imagine my surprise, Mr.
-Holmes, when the door suddenly opened and my wife walked out.
-
-"I was struck dumb with astonishment at the sight of her; but my
-emotions were nothing to those which showed themselves upon her face
-when our eyes met. She seemed for an instant to wish to shrink back
-inside the house again; and then, seeing how useless all concealment
-must be, she came forward, with a very white face and frightened eyes
-which belied the smile upon her lips.
-
-"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
-assistance to our new neighbors. Why do you look at me like that, Jack?
-You are not angry with me?'
-
-"'So,' said I, 'this is where you went during the night.'
-
-"'What do you mean?' she cried.
-
-"'You came here. I am sure of it. Who are these people, that you should
-visit them at such an hour?'
-
-"'I have not been here before.'
-
-"'How can you tell me what you know is false?' I cried. 'Your very voice
-changes as you speak. When have I ever had a secret from you? I shall
-enter that cottage, and I shall probe the matter to the bottom.'
-
-"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
-Then, as I approached the door, she seized my sleeve and pulled me back
-with convulsive strength.
-
-"'I implore you not to do this, Jack,' she cried. 'I swear that I will
-tell you everything some day, but nothing but misery can come of it if
-you enter that cottage.' Then, as I tried to shake her off, she clung to
-me in a frenzy of entreaty.
-
-"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
-have cause to regret it. You know that I would not have a secret from
-you if it were not for your own sake. Our whole lives are at stake in
-this. If you come home with me, all will be well. If you force your way
-into that cottage, all is over between us.'
-
-"There was such earnestness, such despair, in her manner that her words
-arrested me, and I stood irresolute before the door.
-
-"'I will trust you on one condition, and on one condition only,' said I
-at last. 'It is that this mystery comes to an end from now. You are
-at liberty to preserve your secret, but you must promise me that there
-shall be no more nightly visits, no more doings which are kept from my
-knowledge. I am willing to forget those which are passed if you will
-promise that there shall be no more in the future.'
-
-"'I was sure that you would trust me,' she cried, with a great sigh of
-relief. 'It shall be just as you wish. Come away--oh, come away up to
-the house.'
-
-"Still pulling at my sleeve, she led me away from the cottage. As we
-went I glanced back, and there was that yellow livid face watching us
-out of the upper window. What link could there be between that creature
-and my wife? Or how could the coarse, rough woman whom I had seen the
-day before be connected with her? It was a strange puzzle, and yet I
-knew that my mind could never know ease again until I had solved it.
-
-"For two days after this I stayed at home, and my wife appeared to abide
-loyally by our engagement, for, as far as I know, she never stirred out
-of the house. On the third day, however, I had ample evidence that
-her solemn promise was not enough to hold her back from this secret
-influence which drew her away from her husband and her duty.
-
-"I had gone into town on that day, but I returned by the 2.40 instead of
-the 3.36, which is my usual train. As I entered the house the maid ran
-into the hall with a startled face.
-
-"'Where is your mistress?' I asked.
-
-"'I think that she has gone out for a walk,' she answered.
-
-"My mind was instantly filled with suspicion. I rushed upstairs to make
-sure that she was not in the house. As I did so I happened to glance out
-of one of the upper windows, and saw the maid with whom I had just been
-speaking running across the field in the direction of the cottage. Then
-of course I saw exactly what it all meant. My wife had gone over there,
-and had asked the servant to call her if I should return. Tingling with
-anger, I rushed down and hurried across, determined to end the matter
-once and forever. I saw my wife and the maid hurrying back along the
-lane, but I did not stop to speak with them. In the cottage lay the
-secret which was casting a shadow over my life. I vowed that, come what
-might, it should be a secret no longer. I did not even knock when I
-reached it, but turned the handle and rushed into the passage.
-
-"It was all still and quiet upon the ground floor. In the kitchen a
-kettle was singing on the fire, and a large black cat lay coiled up in
-the basket; but there was no sign of the woman whom I had seen before.
-I ran into the other room, but it was equally deserted. Then I rushed up
-the stairs, only to find two other rooms empty and deserted at the top.
-There was no one at all in the whole house. The furniture and pictures
-were of the most common and vulgar description, save in the one chamber
-at the window of which I had seen the strange face. That was comfortable
-and elegant, and all my suspicions rose into a fierce bitter flame when
-I saw that on the mantelpiece stood a copy of a full-length photograph
-of my wife, which had been taken at my request only three months ago.
-
-"I stayed long enough to make certain that the house was absolutely
-empty. Then I left it, feeling a weight at my heart such as I had never
-had before. My wife came out into the hall as I entered my house; but I
-was too hurt and angry to speak with her, and pushing past her, I made
-my way into my study. She followed me, however, before I could close the
-door.
-
-"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
-all the circumstances I am sure that you would forgive me.'
-
-"'Tell me everything, then,' said I.
-
-"'I cannot, Jack, I cannot,' she cried.
-
-"'Until you tell me who it is that has been living in that cottage, and
-who it is to whom you have given that photograph, there can never be any
-confidence between us,' said I, and breaking away from her, I left the
-house. That was yesterday, Mr. Holmes, and I have not seen her since,
-nor do I know anything more about this strange business. It is the first
-shadow that has come between us, and it has so shaken me that I do not
-know what I should do for the best. Suddenly this morning it occurred to
-me that you were the man to advise me, so I have hurried to you now, and
-I place myself unreservedly in your hands. If there is any point which I
-have not made clear, pray question me about it. But, above all, tell me
-quickly what I am to do, for this misery is more than I can bear."
-
-Holmes and I had listened with the utmost interest to this extraordinary
-statement, which had been delivered in the jerky, broken fashion of a
-man who is under the influence of extreme emotions. My companion sat
-silent for some time, with his chin upon his hand, lost in thought.
-
-"Tell me," said he at last, "could you swear that this was a man's face
-which you saw at the window?"
-
-"Each time that I saw it I was some distance away from it, so that it is
-impossible for me to say."
-
-"You appear, however, to have been disagreeably impressed by it."
-
-"It seemed to be of an unnatural color, and to have a strange rigidity
-about the features. When I approached, it vanished with a jerk."
-
-"How long is it since your wife asked you for a hundred pounds?"
-
-"Nearly two months."
-
-"Have you ever seen a photograph of her first husband?"
-
-"No; there was a great fire at Atlanta very shortly after his death, and
-all her papers were destroyed."
-
-"And yet she had a certificate of death. You say that you saw it."
-
-"Yes; she got a duplicate after the fire."
-
-"Did you ever meet any one who knew her in America?"
-
-"No."
-
-"Did she ever talk of revisiting the place?"
-
-"No."
-
-"Or get letters from it?"
-
-"No."
-
-"Thank you. I should like to think over the matter a little now. If the
-cottage is now permanently deserted we may have some difficulty. If, on
-the other hand, as I fancy is more likely, the inmates were warned of
-your coming, and left before you entered yesterday, then they may be
-back now, and we should clear it all up easily. Let me advise you, then,
-to return to Norbury, and to examine the windows of the cottage again.
-If you have reason to believe that it is inhabited, do not force your
-way in, but send a wire to my friend and me. We shall be with you within
-an hour of receiving it, and we shall then very soon get to the bottom
-of the business."
-
-"And if it is still empty?"
-
-"In that case I shall come out to-morrow and talk it over with you.
-Good-by; and, above all, do not fret until you know that you really have
-a cause for it."
-
-"I am afraid that this is a bad business, Watson," said my companion, as
-he returned after accompanying Mr. Grant Munro to the door. "What do you
-make of it?"
-
-"It had an ugly sound," I answered.
-
-"Yes. There's blackmail in it, or I am much mistaken."
-
-"And who is the blackmailer?"
-
-"Well, it must be the creature who lives in the only comfortable room
-in the place, and has her photograph above his fireplace. Upon my word,
-Watson, there is something very attractive about that livid face at the
-window, and I would not have missed the case for worlds."
-
-"You have a theory?"
-
-"Yes, a provisional one. But I shall be surprised if it does not turn
-out to be correct. This woman's first husband is in that cottage."
-
-"Why do you think so?"
-
-"How else can we explain her frenzied anxiety that her second one should
-not enter it? The facts, as I read them, are something like this:
-This woman was married in America. Her husband developed some hateful
-qualities; or shall we say that he contracted some loathsome disease,
-and became a leper or an imbecile? She flies from him at last, returns
-to England, changes her name, and starts her life, as she thinks,
-afresh. She has been married three years, and believes that her position
-is quite secure, having shown her husband the death certificate of
-some man whose name she has assumed, when suddenly her whereabouts
-is discovered by her first husband; or, we may suppose, by some
-unscrupulous woman who has attached herself to the invalid. They write
-to the wife, and threaten to come and expose her. She asks for a hundred
-pounds, and endeavors to buy them off. They come in spite of it, and
-when the husband mentions casually to the wife that there are new-comers
-in the cottage, she knows in some way that they are her pursuers. She
-waits until her husband is asleep, and then she rushes down to endeavor
-to persuade them to leave her in peace. Having no success, she goes
-again next morning, and her husband meets her, as he has told us, as
-she comes out. She promises him then not to go there again, but two days
-afterwards the hope of getting rid of those dreadful neighbors was too
-strong for her, and she made another attempt, taking down with her the
-photograph which had probably been demanded from her. In the midst of
-this interview the maid rushed in to say that the master had come home,
-on which the wife, knowing that he would come straight down to the
-cottage, hurried the inmates out at the back door, into the grove of
-fir-trees, probably, which was mentioned as standing near. In this way
-he found the place deserted. I shall be very much surprised, however, if
-it is still so when he reconnoitres it this evening. What do you think
-of my theory?"
-
-"It is all surmise."
-
-"But at least it covers all the facts. When new facts come to our
-knowledge which cannot be covered by it, it will be time enough to
-reconsider it. We can do nothing more until we have a message from our
-friend at Norbury."
-
-But we had not a very long time to wait for that. It came just as we had
-finished our tea. "The cottage is still tenanted," it said. "Have seen
-the face again at the window. Will meet the seven o'clock train, and
-will take no steps until you arrive."
-
-
-He was waiting on the platform when we stepped out, and we could see in
-the light of the station lamps that he was very pale, and quivering with
-agitation.
-
-"They are still there, Mr. Holmes," said he, laying his hand hard upon
-my friend's sleeve. "I saw lights in the cottage as I came down. We
-shall settle it now once and for all."
-
-"What is your plan, then?" asked Holmes, as he walked down the dark
-tree-lined road.
-
-"I am going to force my way in and see for myself who is in the house. I
-wish you both to be there as witnesses."
-
-"You are quite determined to do this, in spite of your wife's warning
-that it is better that you should not solve the mystery?"
-
-"Yes, I am determined."
-
-"Well, I think that you are in the right. Any truth is better than
-indefinite doubt. We had better go up at once. Of course, legally, we
-are putting ourselves hopelessly in the wrong; but I think that it is
-worth it."
-
-It was a very dark night, and a thin rain began to fall as we turned
-from the high road into a narrow lane, deeply rutted, with hedges on
-either side. Mr. Grant Munro pushed impatiently forward, however, and we
-stumbled after him as best we could.
-
-"There are the lights of my house," he murmured, pointing to a glimmer
-among the trees. "And here is the cottage which I am going to enter."
-
-We turned a corner in the lane as he spoke, and there was the building
-close beside us. A yellow bar falling across the black foreground showed
-that the door was not quite closed, and one window in the upper story
-was brightly illuminated. As we looked, we saw a dark blur moving across
-the blind.
-
-"There is that creature!" cried Grant Munro. "You can see for yourselves
-that some one is there. Now follow me, and we shall soon know all."
-
-We approached the door; but suddenly a woman appeared out of the shadow
-and stood in the golden track of the lamp-light. I could not see her
-face in the darkness, but her arms were thrown out in an attitude of
-entreaty.
-
-"For God's sake, don't Jack!" she cried. "I had a presentiment that you
-would come this evening. Think better of it, dear! Trust me again, and
-you will never have cause to regret it."
-
-"I have trusted you too long, Effie," he cried, sternly. "Leave go of
-me! I must pass you. My friends and I are going to settle this matter
-once and forever!" He pushed her to one side, and we followed closely
-after him. As he threw the door open an old woman ran out in front of
-him and tried to bar his passage, but he thrust her back, and an instant
-afterwards we were all upon the stairs. Grant Munro rushed into the
-lighted room at the top, and we entered at his heels.
-
-It was a cosey, well-furnished apartment, with two candles burning upon
-the table and two upon the mantelpiece. In the corner, stooping over a
-desk, there sat what appeared to be a little girl. Her face was turned
-away as we entered, but we could see that she was dressed in a red
-frock, and that she had long white gloves on. As she whisked round
-to us, I gave a cry of surprise and horror. The face which she turned
-towards us was of the strangest livid tint, and the features were
-absolutely devoid of any expression. An instant later the mystery was
-explained. Holmes, with a laugh, passed his hand behind the child's
-ear, a mask peeled off from her countenance, and there was a little coal
-black negress, with all her white teeth flashing in amusement at our
-amazed faces. I burst out laughing, out of sympathy with her merriment;
-but Grant Munro stood staring, with his hand clutching his throat.
-
-"My God!" he cried. "What can be the meaning of this?"
-
-"I will tell you the meaning of it," cried the lady, sweeping into
-the room with a proud, set face. "You have forced me, against my own
-judgment, to tell you, and now we must both make the best of it. My
-husband died at Atlanta. My child survived."
-
-"Your child?"
-
-She drew a large silver locket from her bosom. "You have never seen this
-open."
-
-"I understood that it did not open."
-
-She touched a spring, and the front hinged back. There was a portrait
-within of a man strikingly handsome and intelligent-looking, but bearing
-unmistakable signs upon his features of his African descent.
-
-"That is John Hebron, of Atlanta," said the lady, "and a nobler man
-never walked the earth. I cut myself off from my race in order to wed
-him, but never once while he lived did I for an instant regret it. It
-was our misfortune that our only child took after his people rather than
-mine. It is often so in such matches, and little Lucy is darker far than
-ever her father was. But dark or fair, she is my own dear little girlie,
-and her mother's pet." The little creature ran across at the words and
-nestled up against the lady's dress. "When I left her in America," she
-continued, "it was only because her health was weak, and the change
-might have done her harm. She was given to the care of a faithful Scotch
-woman who had once been our servant. Never for an instant did I dream
-of disowning her as my child. But when chance threw you in my way, Jack,
-and I learned to love you, I feared to tell you about my child. God
-forgive me, I feared that I should lose you, and I had not the courage
-to tell you. I had to choose between you, and in my weakness I turned
-away from my own little girl. For three years I have kept her existence
-a secret from you, but I heard from the nurse, and I knew that all was
-well with her. At last, however, there came an overwhelming desire to
-see the child once more. I struggled against it, but in vain. Though I
-knew the danger, I determined to have the child over, if it were but
-for a few weeks. I sent a hundred pounds to the nurse, and I gave her
-instructions about this cottage, so that she might come as a neighbor,
-without my appearing to be in any way connected with her. I pushed my
-precautions so far as to order her to keep the child in the house during
-the daytime, and to cover up her little face and hands so that even
-those who might see her at the window should not gossip about there
-being a black child in the neighborhood. If I had been less cautious
-I might have been more wise, but I was half crazy with fear that you
-should learn the truth.
-
-"It was you who told me first that the cottage was occupied. I should
-have waited for the morning, but I could not sleep for excitement, and
-so at last I slipped out, knowing how difficult it is to awake you. But
-you saw me go, and that was the beginning of my troubles. Next day you
-had my secret at your mercy, but you nobly refrained from pursuing your
-advantage. Three days later, however, the nurse and child only just
-escaped from the back door as you rushed in at the front one. And now
-to-night you at last know all, and I ask you what is to become of us, my
-child and me?" She clasped her hands and waited for an answer.
-
-It was a long ten minutes before Grant Munro broke the silence, and
-when his answer came it was one of which I love to think. He lifted
-the little child, kissed her, and then, still carrying her, he held his
-other hand out to his wife and turned towards the door.
-
-"We can talk it over more comfortably at home," said he. "I am not a
-very good man, Effie, but I think that I am a better one than you have
-given me credit for being."
-
-Holmes and I followed them down the lane, and my friend plucked at my
-sleeve as we came out.
-
-"I think," said he, "that we shall be of more use in London than in
-Norbury."
-
-Not another word did he say of the case until late that night, when he
-was turning away, with his lighted candle, for his bedroom.
-
-"Watson," said he, "if it should ever strike you that I am getting a
-little over-confident in my powers, or giving less pains to a case
-than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
-infinitely obliged to you."
-
-
-
-
-Adventure III. The Stock-Broker's Clerk
-
-
-Shortly after my marriage I had bought a connection in the Paddington
-district. Old Mr. Farquhar, from whom I purchased it, had at one time an
-excellent general practice; but his age, and an affliction of the nature
-of St. Vitus's dance from which he suffered, had very much thinned it.
-The public not unnaturally goes on the principle that he who would heal
-others must himself be whole, and looks askance at the curative powers
-of the man whose own case is beyond the reach of his drugs. Thus as my
-predecessor weakened his practice declined, until when I purchased
-it from him it had sunk from twelve hundred to little more than three
-hundred a year. I had confidence, however, in my own youth and energy,
-and was convinced that in a very few years the concern would be as
-flourishing as ever.
-
-For three months after taking over the practice I was kept very closely
-at work, and saw little of my friend Sherlock Holmes, for I was too busy
-to visit Baker Street, and he seldom went anywhere himself save upon
-professional business. I was surprised, therefore, when, one morning in
-June, as I sat reading the British Medical Journal after breakfast, I
-heard a ring at the bell, followed by the high, somewhat strident tones
-of my old companion's voice.
-
-"Ah, my dear Watson," said he, striding into the room, "I am very
-delighted to see you! I trust that Mrs. Watson has entirely recovered
-from all the little excitements connected with our adventure of the Sign
-of Four."
-
-"Thank you, we are both very well," said I, shaking him warmly by the
-hand.
-
-"And I hope, also," he continued, sitting down in the rocking-chair,
-"that the cares of medical practice have not entirely obliterated the
-interest which you used to take in our little deductive problems."
-
-"On the contrary," I answered, "it was only last night that I was
-looking over my old notes, and classifying some of our past results."
-
-"I trust that you don't consider your collection closed."
-
-"Not at all. I should wish nothing better than to have some more of such
-experiences."
-
-"To-day, for example?"
-
-"Yes, to-day, if you like."
-
-"And as far off as Birmingham?"
-
-"Certainly, if you wish it."
-
-"And the practice?"
-
-"I do my neighbor's when he goes. He is always ready to work off the
-debt."
-
-"Ha! Nothing could be better," said Holmes, leaning back in his chair
-and looking keenly at me from under his half closed lids. "I perceive
-that you have been unwell lately. Summer colds are always a little
-trying."
-
-"I was confined to the house by a severe chill for three days last week.
-I thought, however, that I had cast off every trace of it."
-
-"So you have. You look remarkably robust."
-
-"How, then, did you know of it?"
-
-"My dear fellow, you know my methods."
-
-"You deduced it, then?"
-
-"Certainly."
-
-"And from what?"
-
-"From your slippers."
-
-I glanced down at the new patent leathers which I was wearing. "How on
-earth--" I began, but Holmes answered my question before it was asked.
-
-"Your slippers are new," he said. "You could not have had them more than
-a few weeks. The soles which you are at this moment presenting to me are
-slightly scorched. For a moment I thought they might have got wet and
-been burned in the drying. But near the instep there is a small circular
-wafer of paper with the shopman's hieroglyphics upon it. Damp would of
-course have removed this. You had, then, been sitting with your feet
-outstretched to the fire, which a man would hardly do even in so wet a
-June as this if he were in his full health."
-
-Like all Holmes's reasoning the thing seemed simplicity itself when it
-was once explained. He read the thought upon my features, and his smile
-had a tinge of bitterness.
-
-"I am afraid that I rather give myself away when I explain," said he.
-"Results without causes are much more impressive. You are ready to come
-to Birmingham, then?"
-
-"Certainly. What is the case?"
-
-"You shall hear it all in the train. My client is outside in a
-four-wheeler. Can you come at once?"
-
-"In an instant." I scribbled a note to my neighbor, rushed upstairs to
-explain the matter to my wife, and joined Holmes upon the door-step.
-
-"Your neighbor is a doctor," said he, nodding at the brass plate.
-
-"Yes; he bought a practice as I did."
-
-"An old-established one?"
-
-"Just the same as mine. Both have been ever since the houses were
-built."
-
-"Ah! Then you got hold of the best of the two."
-
-"I think I did. But how do you know?"
-
-"By the steps, my boy. Yours are worn three inches deeper than his. But
-this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
-introduce you to him. Whip your horse up, cabby, for we have only just
-time to catch our train."
-
-The man whom I found myself facing was a well built, fresh-complexioned
-young fellow, with a frank, honest face and a slight, crisp, yellow
-mustache. He wore a very shiny top hat and a neat suit of sober black,
-which made him look what he was--a smart young City man, of the class
-who have been labeled cockneys, but who give us our crack volunteer
-regiments, and who turn out more fine athletes and sportsmen than any
-body of men in these islands. His round, ruddy face was naturally full
-of cheeriness, but the corners of his mouth seemed to me to be pulled
-down in a half-comical distress. It was not, however, until we were
-all in a first-class carriage and well started upon our journey to
-Birmingham that I was able to learn what the trouble was which had
-driven him to Sherlock Holmes.
-
-"We have a clear run here of seventy minutes," Holmes remarked. "I
-want you, Mr. Hall Pycroft, to tell my friend your very interesting
-experience exactly as you have told it to me, or with more detail if
-possible. It will be of use to me to hear the succession of events
-again. It is a case, Watson, which may prove to have something in it, or
-may prove to have nothing, but which, at least, presents those unusual
-and outré features which are as dear to you as they are to me. Now, Mr.
-Pycroft, I shall not interrupt you again."
-
-Our young companion looked at me with a twinkle in his eye.
-
-"The worst of the story is," said he, "that I show myself up as such a
-confounded fool. Of course it may work out all right, and I don't see
-that I could have done otherwise; but if I have lost my crib and get
-nothing in exchange I shall feel what a soft Johnnie I have been. I'm
-not very good at telling a story, Dr. Watson, but it is like this with
-me:
-
-"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
-but they were let in early in the spring through the Venezuelan loan,
-as no doubt you remember, and came a nasty cropper. I had been with them
-five years, and old Coxon gave me a ripping good testimonial when
-the smash came, but of course we clerks were all turned adrift, the
-twenty-seven of us. I tried here and tried there, but there were lots of
-other chaps on the same lay as myself, and it was a perfect frost for a
-long time. I had been taking three pounds a week at Coxon's, and I had
-saved about seventy of them, but I soon worked my way through that and
-out at the other end. I was fairly at the end of my tether at last,
-and could hardly find the stamps to answer the advertisements or the
-envelopes to stick them to. I had worn out my boots paddling up office
-stairs, and I seemed just as far from getting a billet as ever.
-
-"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
-firm in Lombard Street. I dare say E. C. Is not much in your line, but
-I can tell you that this is about the richest house in London.
-The advertisement was to be answered by letter only. I sent in my
-testimonial and application, but without the least hope of getting it.
-Back came an answer by return, saying that if I would appear next Monday
-I might take over my new duties at once, provided that my appearance was
-satisfactory. No one knows how these things are worked. Some people say
-that the manager just plunges his hand into the heap and takes the first
-that comes. Anyhow it was my innings that time, and I don't ever wish to
-feel better pleased. The screw was a pound a week rise, and the duties
-just about the same as at Coxon's.
-
-"And now I come to the queer part of the business. I was in diggings out
-Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
-that very evening after I had been promised the appointment, when up
-came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
-printed upon it. I had never heard the name before and could not imagine
-what he wanted with me; but, of course, I asked her to show him up. In
-he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
-with a touch of the Sheeny about his nose. He had a brisk kind of way
-with him and spoke sharply, like a man who knew the value of time."
-
-"'Mr. Hall Pycroft, I believe?'" said he.
-
-"'Yes, sir,' I answered, pushing a chair towards him.
-
-"'Lately engaged at Coxon & Woodhouse's?'
-
-"'Yes, sir.'
-
-"'And now on the staff of Mawson's.'
-
-"'Quite so.'
-
-"'Well,' said he, 'the fact is that I have heard some really
-extraordinary stories about your financial ability. You remember Parker,
-who used to be Coxon's manager? He can never say enough about it.'
-
-"Of course I was pleased to hear this. I had always been pretty sharp in
-the office, but I had never dreamed that I was talked about in the City
-in this fashion.
-
-"'You have a good memory?' said he.
-
-"'Pretty fair,' I answered, modestly.
-
-"'Have you kept in touch with the market while you have been out of
-work?' he asked.
-
-"'Yes. I read the stock exchange list every morning.'
-
-"'Now that shows real application!' he cried. 'That is the way to
-prosper! You won't mind my testing you, will you? Let me see. How are
-Ayrshires?'
-
-"'A hundred and six and a quarter to a hundred and five and
-seven-eighths.'
-
-"'And New Zealand consolidated?'
-
-"'A hundred and four.
-
-"'And British Broken Hills?'
-
-"'Seven to seven-and-six.'
-
-"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
-that I had heard. My boy, my boy, you are very much too good to be a
-clerk at Mawson's!'
-
-"This outburst rather astonished me, as you can think. 'Well,' said I,
-'other people don't think quite so much of me as you seem to do, Mr.
-Pinner. I had a hard enough fight to get this berth, and I am very glad
-to have it.'
-
-"'Pooh, man; you should soar above it. You are not in your true sphere.
-Now, I'll tell you how it stands with me. What I have to offer is little
-enough when measured by your ability, but when compared with Mawson's,
-it's light to dark. Let me see. When do you go to Mawson's?'
-
-"'On Monday.'
-
-"'Ha, ha! I think I would risk a little sporting flutter that you don't
-go there at all.'
-
-"'Not go to Mawson's?'
-
-"'No, sir. By that day you will be the business manager of the
-Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
-branches in the towns and villages of France, not counting one in
-Brussels and one in San Remo.'
-
-"This took my breath away. 'I never heard of it,' said I.
-
-"'Very likely not. It has been kept very quiet, for the capital was all
-privately subscribed, and it's too good a thing to let the public
-into. My brother, Harry Pinner, is promoter, and joins the board after
-allotment as managing director. He knew I was in the swim down here, and
-asked me to pick up a good man cheap. A young, pushing man with plenty
-of snap about him. Parker spoke of you, and that brought me here
-to-night. We can only offer you a beggarly five hundred to start with.'
-
-"'Five hundred a year!' I shouted.
-
-"'Only that at the beginning; but you are to have an overriding
-commission of one per cent on all business done by your agents, and you
-may take my word for it that this will come to more than your salary.'
-
-"'But I know nothing about hardware.'
-
-"'Tut, my boy; you know about figures.'
-
-"My head buzzed, and I could hardly sit still in my chair. But suddenly
-a little chill of doubt came upon me.
-
-"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
-but Mawson is safe. Now, really, I know so little about your company
-that--'
-
-"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
-are the very man for us. You are not to be talked over, and quite right,
-too. Now, here's a note for a hundred pounds, and if you think that we
-can do business you may just slip it into your pocket as an advance upon
-your salary.'
-
-"'That is very handsome,' said I. 'When should I take over my new
-duties?'
-
-"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
-pocket here which you will take to my brother. You will find him at
-126b Corporation Street, where the temporary offices of the company
-are situated. Of course he must confirm your engagement, but between
-ourselves it will be all right.'
-
-"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
-I.
-
-"'Not at all, my boy. You have only got your deserts. There are one or
-two small things--mere formalities--which I must arrange with you.
-You have a bit of paper beside you there. Kindly write upon it "I am
-perfectly willing to act as business manager to the Franco-Midland
-Hardware Company, Limited, at a minimum salary of L500."'
-
-"I did as he asked, and he put the paper in his pocket.
-
-"'There is one other detail,' said he. 'What do you intend to do about
-Mawson's?'
-
-"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
-said I.
-
-"'Precisely what I don't want you to do. I had a row over you with
-Mawson's manager. I had gone up to ask him about you, and he was very
-offensive; accused me of coaxing you away from the service of the firm,
-and that sort of thing. At last I fairly lost my temper. "If you want
-good men you should pay them a good price," said I.'
-
-"'He would rather have our small price than your big one,' said he.
-
-"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
-so much as hear from him again.'
-
-"'Done!' said he. 'We picked him out of the gutter, and he won't leave
-us so easily.' Those were his very words."
-
-"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
-my life. Why should I consider him in any way? I shall certainly not
-write if you would rather I didn't.'
-
-"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
-delighted to have got so good a man for my brother. Here's your advance
-of a hundred pounds, and here is the letter. Make a note of the address,
-126b Corporation Street, and remember that one o'clock to-morrow is
-your appointment. Good-night; and may you have all the fortune that you
-deserve!'
-
-"That's just about all that passed between us, as near as I can
-remember. You can imagine, Dr. Watson, how pleased I was at such an
-extraordinary bit of good fortune. I sat up half the night hugging
-myself over it, and next day I was off to Birmingham in a train that
-would take me in plenty time for my appointment. I took my things to
-a hotel in New Street, and then I made my way to the address which had
-been given me.
-
-"It was a quarter of an hour before my time, but I thought that would
-make no difference. 126b was a passage between two large shops, which
-led to a winding stone stair, from which there were many flats, let as
-offices to companies or professional men. The names of the occupants
-were painted at the bottom on the wall, but there was no such name as
-the Franco-Midland Hardware Company, Limited. I stood for a few minutes
-with my heart in my boots, wondering whether the whole thing was an
-elaborate hoax or not, when up came a man and addressed me. He was very
-like the chap I had seen the night before, the same figure and voice,
-but he was clean shaven and his hair was lighter.
-
-"'Are you Mr. Hall Pycroft?' he asked.
-
-"'Yes,' said I.
-
-"'Oh! I was expecting you, but you are a trifle before your time. I had
-a note from my brother this morning in which he sang your praises very
-loudly.'
-
-"'I was just looking for the offices when you came.
-
-"'We have not got our name up yet, for we only secured these temporary
-premises last week. Come up with me, and we will talk the matter over.'
-
-"I followed him to the top of a very lofty stair, and there, right under
-the slates, were a couple of empty, dusty little rooms, uncarpeted and
-uncurtained, into which he led me. I had thought of a great office with
-shining tables and rows of clerks, such as I was used to, and I dare say
-I stared rather straight at the two deal chairs and one little table,
-which, with a ledger and a waste paper basket, made up the whole
-furniture.
-
-"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
-the length of my face. 'Rome was not built in a day, and we have lots of
-money at our backs, though we don't cut much dash yet in offices. Pray
-sit down, and let me have your letter.'
-
-"I gave it to him, and he read it over very carefully.
-
-"'You seem to have made a vast impression upon my brother Arthur,' said
-he; 'and I know that he is a pretty shrewd judge. He swears by London,
-you know; and I by Birmingham; but this time I shall follow his advice.
-Pray consider yourself definitely engaged."
-
-"'What are my duties?' I asked.
-
-"'You will eventually manage the great depot in Paris, which will pour
-a flood of English crockery into the shops of a hundred and thirty-four
-agents in France. The purchase will be completed in a week, and
-meanwhile you will remain in Birmingham and make yourself useful.'
-
-"'How?'
-
-"For answer, he took a big red book out of a drawer.
-
-"'This is a directory of Paris,' said he, 'with the trades after the
-names of the people. I want you to take it home with you, and to mark
-off all the hardware sellers, with their addresses. It would be of the
-greatest use to me to have them.'
-
-"'Surely there are classified lists?' I suggested.
-
-"'Not reliable ones. Their system is different from ours. Stick at it,
-and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
-If you continue to show zeal and intelligence you will find the company
-a good master.'
-
-"I went back to the hotel with the big book under my arm, and with very
-conflicting feelings in my breast. On the one hand, I was definitely
-engaged and had a hundred pounds in my pocket; on the other, the look
-of the offices, the absence of name on the wall, and other of the points
-which would strike a business man had left a bad impression as to the
-position of my employers. However, come what might, I had my money, so I
-settled down to my task. All Sunday I was kept hard at work, and yet by
-Monday I had only got as far as H. I went round to my employer, found
-him in the same dismantled kind of room, and was told to keep at
-it until Wednesday, and then come again. On Wednesday it was still
-unfinished, so I hammered away until Friday--that is, yesterday. Then I
-brought it round to Mr. Harry Pinner.
-
-"'Thank you very much,' said he; 'I fear that I underrated the
-difficulty of the task. This list will be of very material assistance to
-me.'
-
-"'It took some time,' said I.
-
-"'And now,' said he, 'I want you to make a list of the furniture shops,
-for they all sell crockery.'
-
-"'Very good.'
-
-"'And you can come up to-morrow evening, at seven, and let me know how
-you are getting on. Don't overwork yourself. A couple of hours at Day's
-Music Hall in the evening would do you no harm after your labors.' He
-laughed as he spoke, and I saw with a thrill that his second tooth upon
-the left-hand side had been very badly stuffed with gold."
-
-
-Sherlock Holmes rubbed his hands with delight, and I stared with
-astonishment at our client.
-
-"You may well look surprised, Dr. Watson; but it is this way," said he:
-"When I was speaking to the other chap in London, at the time that he
-laughed at my not going to Mawson's, I happened to notice that his tooth
-was stuffed in this very identical fashion. The glint of the gold in
-each case caught my eye, you see. When I put that with the voice and
-figure being the same, and only those things altered which might be
-changed by a razor or a wig, I could not doubt that it was the same man.
-Of course you expect two brothers to be alike, but not that they should
-have the same tooth stuffed in the same way. He bowed me out, and I
-found myself in the street, hardly knowing whether I was on my head or
-my heels. Back I went to my hotel, put my head in a basin of cold water,
-and tried to think it out. Why had he sent me from London to Birmingham?
-Why had he got there before me? And why had he written a letter from
-himself to himself? It was altogether too much for me, and I could make
-no sense of it. And then suddenly it struck me that what was dark to me
-might be very light to Mr. Sherlock Holmes. I had just time to get up to
-town by the night train to see him this morning, and to bring you both
-back with me to Birmingham."
-
-There was a pause after the stock-broker's clerk had concluded his
-surprising experience. Then Sherlock Holmes cocked his eye at me,
-leaning back on the cushions with a pleased and yet critical face, like
-a connoisseur who has just taken his first sip of a comet vintage.
-
-"Rather fine, Watson, is it not?" said he. "There are points in it which
-please me. I think that you will agree with me that an interview with
-Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
-Hardware Company, Limited, would be a rather interesting experience for
-both of us."
-
-"But how can we do it?" I asked.
-
-"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
-of mine who are in want of a billet, and what could be more natural than
-that I should bring you both round to the managing director?"
-
-"Quite so, of course," said Holmes. "I should like to have a look at
-the gentleman, and see if I can make anything of his little game.
-What qualities have you, my friend, which would make your services
-so valuable? or is it possible that--" He began biting his nails and
-staring blankly out of the window, and we hardly drew another word from
-him until we were in New Street.
-
-At seven o'clock that evening we were walking, the three of us, down
-Corporation Street to the company's offices.
-
-"It is no use our being at all before our time," said our client. "He
-only comes there to see me, apparently, for the place is deserted up to
-the very hour he names."
-
-"That is suggestive," remarked Holmes.
-
-"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
-us there."
-
-He pointed to a smallish, dark, well-dressed man who was bustling along
-the other side of the road. As we watched him he looked across at a boy
-who was bawling out the latest edition of the evening paper, and running
-over among the cabs and busses, he bought one from him. Then, clutching
-it in his hand, he vanished through a door-way.
-
-"There he goes!" cried Hall Pycroft. "These are the company's offices
-into which he has gone. Come with me, and I'll fix it up as easily as
-possible."
-
-Following his lead, we ascended five stories, until we found ourselves
-outside a half-opened door, at which our client tapped. A voice within
-bade us enter, and we entered a bare, unfurnished room such as Hall
-Pycroft had described. At the single table sat the man whom we had seen
-in the street, with his evening paper spread out in front of him, and as
-he looked up at us it seemed to me that I had never looked upon a face
-which bore such marks of grief, and of something beyond grief--of a
-horror such as comes to few men in a lifetime. His brow glistened with
-perspiration, his cheeks were of the dull, dead white of a fish's belly,
-and his eyes were wild and staring. He looked at his clerk as though he
-failed to recognize him, and I could see by the astonishment depicted
-upon our conductor's face that this was by no means the usual appearance
-of his employer.
-
-"You look ill, Mr. Pinner!" he exclaimed.
-
-"Yes, I am not very well," answered the other, making obvious efforts
-to pull himself together, and licking his dry lips before he spoke. "Who
-are these gentlemen whom you have brought with you?"
-
-"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
-town," said our clerk, glibly. "They are friends of mine and gentlemen
-of experience, but they have been out of a place for some little time,
-and they hoped that perhaps you might find an opening for them in the
-company's employment."
-
-"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
-"Yes, I have no doubt that we shall be able to do something for you.
-What is your particular line, Mr. Harris?"
-
-"I am an accountant," said Holmes.
-
-"Ah yes, we shall want something of the sort. And you, Mr. Price?"
-
-"A clerk," said I.
-
-"I have every hope that the company may accommodate you. I will let you
-know about it as soon as we come to any conclusion. And now I beg that
-you will go. For God's sake leave me to myself!"
-
-These last words were shot out of him, as though the constraint which
-he was evidently setting upon himself had suddenly and utterly burst
-asunder. Holmes and I glanced at each other, and Hall Pycroft took a
-step towards the table.
-
-"You forget, Mr. Pinner, that I am here by appointment to receive some
-directions from you," said he.
-
-"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
-"You may wait here a moment; and there is no reason why your friends
-should not wait with you. I will be entirely at your service in three
-minutes, if I might trespass upon your patience so far." He rose with a
-very courteous air, and, bowing to us, he passed out through a door at
-the farther end of the room, which he closed behind him.
-
-"What now?" whispered Holmes. "Is he giving us the slip?"
-
-"Impossible," answered Pycroft.
-
-"Why so?"
-
-"That door leads into an inner room."
-
-"There is no exit?"
-
-"None."
-
-"Is it furnished?"
-
-"It was empty yesterday."
-
-"Then what on earth can he be doing? There is something which I don't
-understand in this manner. If ever a man was three parts mad with
-terror, that man's name is Pinner. What can have put the shivers on
-him?"
-
-"He suspects that we are detectives," I suggested.
-
-"That's it," cried Pycroft.
-
-Holmes shook his head. "He did not turn pale. He was pale when we
-entered the room," said he. "It is just possible that--"
-
-His words were interrupted by a sharp rat-tat from the direction of the
-inner door.
-
-"What the deuce is he knocking at his own door for?" cried the clerk.
-
-Again and much louder came the rat-tat-tat. We all gazed expectantly at
-the closed door. Glancing at Holmes, I saw his face turn rigid, and he
-leaned forward in intense excitement. Then suddenly came a low guggling,
-gargling sound, and a brisk drumming upon woodwork. Holmes sprang
-frantically across the room and pushed at the door. It was fastened on
-the inner side. Following his example, we threw ourselves upon it with
-all our weight. One hinge snapped, then the other, and down came the
-door with a crash. Rushing over it, we found ourselves in the inner
-room. It was empty.
-
-But it was only for a moment that we were at fault. At one corner, the
-corner nearest the room which we had left, there was a second door.
-Holmes sprang to it and pulled it open. A coat and waistcoat were lying
-on the floor, and from a hook behind the door, with his own braces
-round his neck, was hanging the managing director of the Franco-Midland
-Hardware Company. His knees were drawn up, his head hung at a dreadful
-angle to his body, and the clatter of his heels against the door made
-the noise which had broken in upon our conversation. In an instant I
-had caught him round the waist, and held him up while Holmes and Pycroft
-untied the elastic bands which had disappeared between the livid creases
-of skin. Then we carried him into the other room, where he lay with
-a clay-colored face, puffing his purple lips in and out with every
-breath--a dreadful wreck of all that he had been but five minutes
-before.
-
-"What do you think of him, Watson?" asked Holmes.
-
-I stooped over him and examined him. His pulse was feeble and
-intermittent, but his breathing grew longer, and there was a little
-shivering of his eyelids, which showed a thin white slit of ball
-beneath.
-
-"It has been touch and go with him," said I, "but he'll live now. Just
-open that window, and hand me the water carafe." I undid his collar,
-poured the cold water over his face, and raised and sank his arms until
-he drew a long, natural breath. "It's only a question of time now," said
-I, as I turned away from him.
-
-Holmes stood by the table, with his hands deep in his trouser's pockets
-and his chin upon his breast.
-
-"I suppose we ought to call the police in now," said he. "And yet I
-confess that I'd like to give them a complete case when they come."
-
-"It's a blessed mystery to me," cried Pycroft, scratching his head.
-"Whatever they wanted to bring me all the way up here for, and then--"
-
-"Pooh! All that is clear enough," said Holmes impatiently. "It is this
-last sudden move."
-
-"You understand the rest, then?"
-
-"I think that it is fairly obvious. What do you say, Watson?"
-
-I shrugged my shoulders. "I must confess that I am out of my depths,"
-said I.
-
-"Oh surely if you consider the events at first they can only point to
-one conclusion."
-
-"What do you make of them?"
-
-"Well, the whole thing hinges upon two points. The first is the making
-of Pycroft write a declaration by which he entered the service of this
-preposterous company. Do you not see how very suggestive that is?"
-
-"I am afraid I miss the point."
-
-"Well, why did they want him to do it? Not as a business matter, for
-these arrangements are usually verbal, and there was no earthly business
-reason why this should be an exception. Don't you see, my young friend,
-that they were very anxious to obtain a specimen of your handwriting,
-and had no other way of doing it?"
-
-"And why?"
-
-"Quite so. Why? When we answer that we have made some progress with our
-little problem. Why? There can be only one adequate reason. Some one
-wanted to learn to imitate your writing, and had to procure a specimen
-of it first. And now if we pass on to the second point we find that each
-throws light upon the other. That point is the request made by Pinner
-that you should not resign your place, but should leave the manager of
-this important business in the full expectation that a Mr. Hall Pycroft,
-whom he had never seen, was about to enter the office upon the Monday
-morning."
-
-"My God!" cried our client, "what a blind beetle I have been!"
-
-"Now you see the point about the handwriting. Suppose that some one
-turned up in your place who wrote a completely different hand from that
-in which you had applied for the vacancy, of course the game would have
-been up. But in the interval the rogue had learned to imitate you,
-and his position was therefore secure, as I presume that nobody in the
-office had ever set eyes upon you."
-
-"Not a soul," groaned Hall Pycroft.
-
-"Very good. Of course it was of the utmost importance to prevent you
-from thinking better of it, and also to keep you from coming into
-contact with any one who might tell you that your double was at work
-in Mawson's office. Therefore they gave you a handsome advance on your
-salary, and ran you off to the Midlands, where they gave you enough work
-to do to prevent your going to London, where you might have burst their
-little game up. That is all plain enough."
-
-"But why should this man pretend to be his own brother?"
-
-"Well, that is pretty clear also. There are evidently only two of them
-in it. The other is impersonating you at the office. This one acted
-as your engager, and then found that he could not find you an employer
-without admitting a third person into his plot. That he was most
-unwilling to do. He changed his appearance as far as he could, and
-trusted that the likeness, which you could not fail to observe, would be
-put down to a family resemblance. But for the happy chance of the gold
-stuffing, your suspicions would probably never have been aroused."
-
-Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
-"while I have been fooled in this way, what has this other Hall Pycroft
-been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
-do."
-
-"We must wire to Mawson's."
-
-"They shut at twelve on Saturdays."
-
-"Never mind. There may be some door-keeper or attendant--"
-
-"Ah yes, they keep a permanent guard there on account of the value of
-the securities that they hold. I remember hearing it talked of in the
-City."
-
-"Very good; we shall wire to him, and see if all is well, and if a clerk
-of your name is working there. That is clear enough; but what is not so
-clear is why at sight of us one of the rogues should instantly walk out
-of the room and hang himself."
-
-"The paper!" croaked a voice behind us. The man was sitting up, blanched
-and ghastly, with returning reason in his eyes, and hands which rubbed
-nervously at the broad red band which still encircled his throat.
-
-"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
-"Idiot that I was! I thought so much of our visit that the paper never
-entered my head for an instant. To be sure, the secret must be there."
-He flattened it out upon the table, and a cry of triumph burst from his
-lips. "Look at this, Watson," he cried. "It is a London paper, an early
-edition of the Evening Standard. Here is what we want. Look at the
-headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
-attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
-equally anxious to hear it, so kindly read it aloud to us."
-
-It appeared from its position in the paper to have been the one event of
-importance in town, and the account of it ran in this way:
-
-"A desperate attempt at robbery, culminating in the death of one man and
-the capture of the criminal, occurred this afternoon in the City. For
-some time back Mawson & Williams, the famous financial house, have been
-the guardians of securities which amount in the aggregate to a sum of
-considerably over a million sterling. So conscious was the manager of
-the responsibility which devolved upon him in consequence of the great
-interests at stake that safes of the very latest construction have
-been employed, and an armed watchman has been left day and night in the
-building. It appears that last week a new clerk named Hall Pycroft was
-engaged by the firm. This person appears to have been none other that
-Beddington, the famous forger and cracksman, who, with his brother, had
-only recently emerged from a five years' spell of penal servitude. By
-some means, which are not yet clear, he succeeded in winning, under a
-false name, this official position in the office, which he utilized in
-order to obtain moulding of various locks, and a thorough knowledge of
-the position of the strong room and the safes.
-
-"It is customary at Mawson's for the clerks to leave at midday on
-Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
-therefore to see a gentleman with a carpet bag come down the steps at
-twenty minutes past one. His suspicions being aroused, the sergeant
-followed the man, and with the aid of Constable Pollock succeeded, after
-a most desperate resistance, in arresting him. It was at once clear
-that a daring and gigantic robbery had been committed. Nearly a hundred
-thousand pounds' worth of American railway bonds, with a large amount
-of scrip in mines and other companies, was discovered in the bag. On
-examining the premises the body of the unfortunate watchman was found
-doubled up and thrust into the largest of the safes, where it would not
-have been discovered until Monday morning had it not been for the prompt
-action of Sergeant Tuson. The man's skull had been shattered by a
-blow from a poker delivered from behind. There could be no doubt
-that Beddington had obtained entrance by pretending that he had left
-something behind him, and having murdered the watchman, rapidly rifled
-the large safe, and then made off with his booty. His brother, who
-usually works with him, has not appeared in this job as far as can
-at present be ascertained, although the police are making energetic
-inquiries as to his whereabouts."
-
-"Well, we may save the police some little trouble in that direction,"
-said Holmes, glancing at the haggard figure huddled up by the window.
-"Human nature is a strange mixture, Watson. You see that even a villain
-and murderer can inspire such affection that his brother turns to
-suicide when he learns that his neck is forfeited. However, we have
-no choice as to our action. The doctor and I will remain on guard, Mr.
-Pycroft, if you will have the kindness to step out for the police."
-
-
-
-
-Adventure IV. The "_Gloria Scott_"
-
-
-"I have some papers here," said my friend Sherlock Holmes, as we sat
-one winter's night on either side of the fire, "which I really think,
-Watson, that it would be worth your while to glance over. These are the
-documents in the extraordinary case of the Gloria Scott, and this is the
-message which struck Justice of the Peace Trevor dead with horror when
-he read it."
-
-He had picked from a drawer a little tarnished cylinder, and, undoing
-the tape, he handed me a short note scrawled upon a half-sheet of
-slate-gray paper.
-
-"The supply of game for London is going steadily up," it ran.
-"Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life."
-
-As I glanced up from reading this enigmatical message, I saw Holmes
-chuckling at the expression upon my face.
-
-"You look a little bewildered," said he.
-
-"I cannot see how such a message as this could inspire horror. It seems
-to me to be rather grotesque than otherwise."
-
-"Very likely. Yet the fact remains that the reader, who was a fine,
-robust old man, was knocked clean down by it as if it had been the butt
-end of a pistol."
-
-"You arouse my curiosity," said I. "But why did you say just now that
-there were very particular reasons why I should study this case?"
-
-"Because it was the first in which I was ever engaged."
-
-I had often endeavored to elicit from my companion what had first turned
-his mind in the direction of criminal research, but had never caught him
-before in a communicative humor. Now he sat forward in this arm-chair
-and spread out the documents upon his knees. Then he lit his pipe and
-sat for some time smoking and turning them over.
-
-"You never heard me talk of Victor Trevor?" he asked. "He was the only
-friend I made during the two years I was at college. I was never a very
-sociable fellow, Watson, always rather fond of moping in my rooms and
-working out my own little methods of thought, so that I never mixed
-much with the men of my year. Bar fencing and boxing I had few athletic
-tastes, and then my line of study was quite distinct from that of the
-other fellows, so that we had no points of contact at all. Trevor was
-the only man I knew, and that only through the accident of his bull
-terrier freezing on to my ankle one morning as I went down to chapel.
-
-"It was a prosaic way of forming a friendship, but it was effective.
-I was laid by the heels for ten days, but Trevor used to come in to
-inquire after me. At first it was only a minute's chat, but soon his
-visits lengthened, and before the end of the term we were close friends.
-He was a hearty, full-blooded fellow, full of spirits and energy,
-the very opposite to me in most respects, but we had some subjects
-in common, and it was a bond of union when I found that he was as
-friendless as I. Finally, he invited me down to his father's place at
-Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
-the long vacation.
-
-"Old Trevor was evidently a man of some wealth and consideration, a
-J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
-the north of Langmere, in the country of the Broads. The house was
-an old-fashioned, wide-spread, oak-beamed brick building, with a fine
-lime-lined avenue leading up to it. There was excellent wild-duck
-shooting in the fens, remarkably good fishing, a small but select
-library, taken over, as I understood, from a former occupant, and a
-tolerable cook, so that he would be a fastidious man who could not put
-in a pleasant month there.
-
-"Trevor senior was a widower, and my friend his only son.
-
-"There had been a daughter, I heard, but she had died of diphtheria
-while on a visit to Birmingham. The father interested me extremely.
-He was a man of little culture, but with a considerable amount of rude
-strength, both physically and mentally. He knew hardly any books, but
-he had traveled far, had seen much of the world. And had remembered
-all that he had learned. In person he was a thick-set, burly man with
-a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
-which were keen to the verge of fierceness. Yet he had a reputation for
-kindness and charity on the country-side, and was noted for the leniency
-of his sentences from the bench.
-
-"One evening, shortly after my arrival, we were sitting over a glass of
-port after dinner, when young Trevor began to talk about those habits
-of observation and inference which I had already formed into a system,
-although I had not yet appreciated the part which they were to play in
-my life. The old man evidently thought that his son was exaggerating in
-his description of one or two trivial feats which I had performed.
-
-"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
-excellent subject, if you can deduce anything from me.'
-
-"'I fear there is not very much,' I answered; 'I might suggest that
-you have gone about in fear of some personal attack within the last
-twelvemonth.'
-
-"The laugh faded from his lips, and he stared at me in great surprise.
-
-"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
-son, 'when we broke up that poaching gang they swore to knife us, and
-Sir Edward Holly has actually been attacked. I've always been on my
-guard since then, though I have no idea how you know it.'
-
-"'You have a very handsome stick,' I answered. 'By the inscription I
-observed that you had not had it more than a year. But you have taken
-some pains to bore the head of it and pour melted lead into the hole so
-as to make it a formidable weapon. I argued that you would not take such
-precautions unless you had some danger to fear.'
-
-"'Anything else?' he asked, smiling.
-
-"'You have boxed a good deal in your youth.'
-
-"'Right again. How did you know it? Is my nose knocked a little out of
-the straight?'
-
-"'No,' said I. 'It is your ears. They have the peculiar flattening and
-thickening which marks the boxing man.'
-
-"'Anything else?'
-
-"'You have done a good deal of digging by your callosities.'
-
-"'Made all my money at the gold fields.'
-
-"'You have been in New Zealand.'
-
-"'Right again.'
-
-"'You have visited Japan.'
-
-"'Quite true.'
-
-"'And you have been most intimately associated with some one whose
-initials were J. A., and whom you afterwards were eager to entirely
-forget.'
-
-"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
-strange wild stare, and then pitched forward, with his face among the
-nutshells which strewed the cloth, in a dead faint.
-
-"You can imagine, Watson, how shocked both his son and I were. His
-attack did not last long, however, for when we undid his collar, and
-sprinkled the water from one of the finger-glasses over his face, he
-gave a gasp or two and sat up.
-
-"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
-Strong as I look, there is a weak place in my heart, and it does not
-take much to knock me over. I don't know how you manage this, Mr.
-Holmes, but it seems to me that all the detectives of fact and of fancy
-would be children in your hands. That's your line of life, sir, and you
-may take the word of a man who has seen something of the world.'
-
-"And that recommendation, with the exaggerated estimate of my ability
-with which he prefaced it, was, if you will believe me, Watson, the very
-first thing which ever made me feel that a profession might be made
-out of what had up to that time been the merest hobby. At the moment,
-however, I was too much concerned at the sudden illness of my host to
-think of anything else.
-
-"'I hope that I have said nothing to pain you?' said I.
-
-"'Well, you certainly touched upon rather a tender point. Might I ask
-how you know, and how much you know?' He spoke now in a half-jesting
-fashion, but a look of terror still lurked at the back of his eyes.
-
-"'It is simplicity itself,' said I. 'When you bared your arm to draw
-that fish into the boat I saw that J. A. Had been tattooed in the bend
-of the elbow. The letters were still legible, but it was perfectly clear
-from their blurred appearance, and from the staining of the skin round
-them, that efforts had been made to obliterate them. It was obvious,
-then, that those initials had once been very familiar to you, and that
-you had afterwards wished to forget them.'
-
-"What an eye you have!" he cried, with a sigh of relief. 'It is just as
-you say. But we won't talk of it. Of all ghosts the ghosts of our old
-lovers are the worst. Come into the billiard-room and have a quiet
-cigar.'
-
-
-"From that day, amid all his cordiality, there was always a touch of
-suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
-'You've given the governor such a turn,' said he, 'that he'll never be
-sure again of what you know and what you don't know.' He did not mean
-to show it, I am sure, but it was so strongly in his mind that it peeped
-out at every action. At last I became so convinced that I was causing
-him uneasiness that I drew my visit to a close. On the very day,
-however, before I left, and incident occurred which proved in the sequel
-to be of importance.
-
-"We were sitting out upon the lawn on garden chairs, the three of us,
-basking in the sun and admiring the view across the Broads, when a maid
-came out to say that there was a man at the door who wanted to see Mr.
-Trevor.
-
-"'What is his name?' asked my host.
-
-"'He would not give any.'
-
-"'What does he want, then?'
-
-"'He says that you know him, and that he only wants a moment's
-conversation.'
-
-"'Show him round here.' An instant afterwards there appeared a little
-wizened fellow with a cringing manner and a shambling style of
-walking. He wore an open jacket, with a splotch of tar on the sleeve,
-a red-and-black check shirt, dungaree trousers, and heavy boots badly
-worn. His face was thin and brown and crafty, with a perpetual smile
-upon it, which showed an irregular line of yellow teeth, and his
-crinkled hands were half closed in a way that is distinctive of sailors.
-As he came slouching across the lawn I heard Mr. Trevor make a sort of
-hiccoughing noise in his throat, and jumping out of his chair, he ran
-into the house. He was back in a moment, and I smelt a strong reek of
-brandy as he passed me.
-
-"'Well, my man,' said he. 'What can I do for you?'
-
-"The sailor stood looking at him with puckered eyes, and with the same
-loose-lipped smile upon his face.
-
-"'You don't know me?' he asked.
-
-"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
-surprise.
-
-"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
-since I saw you last. Here you are in your house, and me still picking
-my salt meat out of the harness cask.'
-
-"'Tut, you will find that I have not forgotten old times,' cried Mr.
-Trevor, and, walking towards the sailor, he said something in a low
-voice. 'Go into the kitchen,' he continued out loud, 'and you will get
-food and drink. I have no doubt that I shall find you a situation.'
-
-"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
-off a two-yearer in an eight-knot tramp, short-handed at that, and I
-wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
-
-"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
-
-"'Bless you, sir, I know where all my old friends are,' said the
-fellow with a sinister smile, and he slouched off after the maid to the
-kitchen. Mr. Trevor mumbled something to us about having been shipmate
-with the man when he was going back to the diggings, and then, leaving
-us on the lawn, he went indoors. An hour later, when we entered the
-house, we found him stretched dead drunk upon the dining-room sofa. The
-whole incident left a most ugly impression upon my mind, and I was
-not sorry next day to leave Donnithorpe behind me, for I felt that my
-presence must be a source of embarrassment to my friend.
-
-"All this occurred during the first month of the long vacation. I went
-up to my London rooms, where I spent seven weeks working out a few
-experiments in organic chemistry. One day, however, when the autumn was
-far advanced and the vacation drawing to a close, I received a telegram
-from my friend imploring me to return to Donnithorpe, and saying that
-he was in great need of my advice and assistance. Of course I dropped
-everything and set out for the North once more.
-
-"He met me with the dog-cart at the station, and I saw at a glance that
-the last two months had been very trying ones for him. He had grown thin
-and careworn, and had lost the loud, cheery manner for which he had been
-remarkable.
-
-"'The governor is dying,' were the first words he said.
-
-"'Impossible!' I cried. 'What is the matter?'
-
-"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
-shall find him alive.'
-
-"I was, as you may think, Watson, horrified at this unexpected news.
-
-"'What has caused it?' I asked.
-
-"'Ah, that is the point. Jump in and we can talk it over while we drive.
-You remember that fellow who came upon the evening before you left us?'
-
-"'Perfectly.'
-
-"'Do you know who it was that we let into the house that day?'
-
-"'I have no idea.'
-
-"'It was the devil, Holmes,' he cried.
-
-"I stared at him in astonishment.
-
-"'Yes, it was the devil himself. We have not had a peaceful hour
-since--not one. The governor has never held up his head from that
-evening, and now the life has been crushed out of him and his heart
-broken, all through this accursed Hudson.'
-
-"'What power had he, then?'
-
-"'Ah, that is what I would give so much to know. The kindly, charitable,
-good old governor--how could he have fallen into the clutches of such a
-ruffian! But I am so glad that you have come, Holmes. I trust very much
-to your judgment and discretion, and I know that you will advise me for
-the best.'
-
-"We were dashing along the smooth white country road, with the long
-stretch of the Broads in front of us glimmering in the red light of the
-setting sun. From a grove upon our left I could already see the high
-chimneys and the flag-staff which marked the squire's dwelling.
-
-"'My father made the fellow gardener,' said my companion, 'and then, as
-that did not satisfy him, he was promoted to be butler. The house seemed
-to be at his mercy, and he wandered about and did what he chose in it.
-The maids complained of his drunken habits and his vile language. The
-dad raised their wages all round to recompense them for the annoyance.
-The fellow would take the boat and my father's best gun and treat
-himself to little shooting trips. And all this with such a sneering,
-leering, insolent face that I would have knocked him down twenty times
-over if he had been a man of my own age. I tell you, Holmes, I have
-had to keep a tight hold upon myself all this time; and now I am asking
-myself whether, if I had let myself go a little more, I might not have
-been a wiser man.
-
-"'Well, matters went from bad to worse with us, and this animal Hudson
-became more and more intrusive, until at last, on making some insolent
-reply to my father in my presence one day, I took him by the shoulders
-and turned him out of the room. He slunk away with a livid face and two
-venomous eyes which uttered more threats than his tongue could do. I
-don't know what passed between the poor dad and him after that, but the
-dad came to me next day and asked me whether I would mind apologizing to
-Hudson. I refused, as you can imagine, and asked my father how he
-could allow such a wretch to take such liberties with himself and his
-household.
-
-"'"Ah, my boy," said he, "it is all very well to talk, but you don't
-know how I am placed. But you shall know, Victor. I'll see that you
-shall know, come what may. You wouldn't believe harm of your poor old
-father, would you, lad?" He was very much moved, and shut himself up
-in the study all day, where I could see through the window that he was
-writing busily.
-
-"'That evening there came what seemed to me to be a grand release,
-for Hudson told us that he was going to leave us. He walked into the
-dining-room as we sat after dinner, and announced his intention in the
-thick voice of a half-drunken man.
-
-"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
-in Hampshire. He'll be as glad to see me as you were, I dare say."
-
-"'"You're not going away in an unkind spirit, Hudson, I hope," said my
-father, with a tameness which made my blood boil.
-
-"'"I've not had my 'pology," said he sulkily, glancing in my direction.
-
-"'"Victor, you will acknowledge that you have used this worthy fellow
-rather roughly," said the dad, turning to me.
-
-"'"On the contrary, I think that we have both shown extraordinary
-patience towards him," I answered.
-
-"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
-that!"
-
-"'He slouched out of the room, and half an hour afterwards left the
-house, leaving my father in a state of pitiable nervousness. Night after
-night I heard him pacing his room, and it was just as he was recovering
-his confidence that the blow did at last fall.'
-
-"'And how?' I asked eagerly.
-
-"'In a most extraordinary fashion. A letter arrived for my father
-yesterday evening, bearing the Fordingbridge post-mark. My father read
-it, clapped both his hands to his head, and began running round the room
-in little circles like a man who has been driven out of his senses. When
-I at last drew him down on to the sofa, his mouth and eyelids were all
-puckered on one side, and I saw that he had a stroke. Dr. Fordham came
-over at once. We put him to bed; but the paralysis has spread, he has
-shown no sign of returning consciousness, and I think that we shall
-hardly find him alive.'
-
-"'You horrify me, Trevor!' I cried. 'What then could have been in this
-letter to cause so dreadful a result?'
-
-"'Nothing. There lies the inexplicable part of it. The message was
-absurd and trivial. Ah, my God, it is as I feared!'
-
-"As he spoke we came round the curve of the avenue, and saw in the
-fading light that every blind in the house had been drawn down. As
-we dashed up to the door, my friend's face convulsed with grief, a
-gentleman in black emerged from it.
-
-"'When did it happen, doctor?' asked Trevor.
-
-"'Almost immediately after you left.'
-
-"'Did he recover consciousness?'
-
-"'For an instant before the end.'
-
-"'Any message for me.'
-
-"'Only that the papers were in the back drawer of the Japanese cabinet.'
-
-"My friend ascended with the doctor to the chamber of death, while I
-remained in the study, turning the whole matter over and over in my
-head, and feeling as sombre as ever I had done in my life. What was the
-past of this Trevor, pugilist, traveler, and gold-digger, and how had he
-placed himself in the power of this acid-faced seaman? Why, too, should
-he faint at an allusion to the half-effaced initials upon his arm, and
-die of fright when he had a letter from Fordingham? Then I remembered
-that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
-seaman had gone to visit and presumably to blackmail, had also been
-mentioned as living in Hampshire. The letter, then, might either come
-from Hudson, the seaman, saying that he had betrayed the guilty secret
-which appeared to exist, or it might come from Beddoes, warning an old
-confederate that such a betrayal was imminent. So far it seemed clear
-enough. But then how could this letter be trivial and grotesque, as
-describe by the son? He must have misread it. If so, it must have been
-one of those ingenious secret codes which mean one thing while they seem
-to mean another. I must see this letter. If there were a hidden meaning
-in it, I was confident that I could pluck it forth. For an hour I sat
-pondering over it in the gloom, until at last a weeping maid brought in
-a lamp, and close at her heels came my friend Trevor, pale but composed,
-with these very papers which lie upon my knee held in his grasp. He sat
-down opposite to me, drew the lamp to the edge of the table, and handed
-me a short note scribbled, as you see, upon a single sheet of gray
-paper. 'The supply of game for London is going steadily up,' it ran.
-'Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life.'
-
-"I dare say my face looked as bewildered as yours did just now when
-first I read this message. Then I reread it very carefully. It was
-evidently as I had thought, and some secret meaning must lie buried
-in this strange combination of words. Or could it be that there was
-a prearranged significance to such phrases as 'fly-paper' and
-'hen-pheasant'? Such a meaning would be arbitrary and could not be
-deduced in any way. And yet I was loath to believe that this was the
-case, and the presence of the word Hudson seemed to show that the
-subject of the message was as I had guessed, and that it was from
-Beddoes rather than the sailor. I tried it backwards, but the
-combination 'life pheasant's hen' was not encouraging. Then I tried
-alternate words, but neither 'the of for' nor 'supply game London'
-promised to throw any light upon it.
-
-"And then in an instant the key of the riddle was in my hands, and I saw
-that every third word, beginning with the first, would give a message
-which might well drive old Trevor to despair.
-
-"It was short and terse, the warning, as I now read it to my companion:
-
-"'The game is up. Hudson has told all. Fly for your life.'
-
-"Victor Trevor sank his face into his shaking hands. 'It must be that,
-I suppose,' said he. "This is worse than death, for it means disgrace
-as well. But what is the meaning of these "head-keepers" and
-"hen-pheasants"?'
-
-"'It means nothing to the message, but it might mean a good deal to us
-if we had no other means of discovering the sender. You see that he has
-begun by writing "The...game...is," and so on. Afterwards he had, to
-fulfill the prearranged cipher, to fill in any two words in each space.
-He would naturally use the first words which came to his mind, and
-if there were so many which referred to sport among them, you may
-be tolerably sure that he is either an ardent shot or interested in
-breeding. Do you know anything of this Beddoes?'
-
-"'Why, now that you mention it,' said he, 'I remember that my poor
-father used to have an invitation from him to shoot over his preserves
-every autumn.'
-
-"'Then it is undoubtedly from him that the note comes,' said I. 'It only
-remains for us to find out what this secret was which the sailor Hudson
-seems to have held over the heads of these two wealthy and respected
-men.'
-
-"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
-friend. 'But from you I shall have no secrets. Here is the statement
-which was drawn up by my father when he knew that the danger from Hudson
-had become imminent. I found it in the Japanese cabinet, as he told the
-doctor. Take it and read it to me, for I have neither the strength nor
-the courage to do it myself.'
-
-"These are the very papers, Watson, which he handed to me, and I will
-read them to you, as I read them in the old study that night to him.
-They are endorsed outside, as you see, 'Some particulars of the voyage
-of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
-October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
-25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
-this way:
-
-"'My dear, dear son, now that approaching disgrace begins to darken the
-closing years of my life, I can write with all truth and honesty that it
-is not the terror of the law, it is not the loss of my position in the
-county, nor is it my fall in the eyes of all who have known me, which
-cuts me to the heart; but it is the thought that you should come to
-blush for me--you who love me and who have seldom, I hope, had reason to
-do other than respect me. But if the blow falls which is forever hanging
-over me, then I should wish you to read this, that you may know straight
-from me how far I have been to blame. On the other hand, if all should
-go well (which may kind God Almighty grant!), then if by any chance this
-paper should be still undestroyed and should fall into your hands, I
-conjure you, by all you hold sacred, by the memory of your dear mother,
-and by the love which had been between us, to hurl it into the fire and
-to never give one thought to it again.
-
-"'If then your eye goes on to read this line, I know that I shall
-already have been exposed and dragged from my home, or as is more
-likely, for you know that my heart is weak, by lying with my tongue
-sealed forever in death. In either case the time for suppression is
-past, and every word which I tell you is the naked truth, and this I
-swear as I hope for mercy.
-
-"'My name, dear lad, is not Trevor. I was James Armitage in my younger
-days, and you can understand now the shock that it was to me a few weeks
-ago when your college friend addressed me in words which seemed to imply
-that he had surprised my secret. As Armitage it was that I entered a
-London banking-house, and as Armitage I was convicted of breaking my
-country's laws, and was sentenced to transportation. Do not think very
-harshly of me, laddie. It was a debt of honor, so called, which I had
-to pay, and I used money which was not my own to do it, in the certainty
-that I could replace it before there could be any possibility of its
-being missed. But the most dreadful ill-luck pursued me. The money which
-I had reckoned upon never came to hand, and a premature examination of
-accounts exposed my deficit. The case might have been dealt leniently
-with, but the laws were more harshly administered thirty years ago than
-now, and on my twenty-third birthday I found myself chained as a felon
-with thirty-seven other convicts in 'tween-decks of the bark _Gloria
-Scott_, bound for Australia.
-
-"'It was the year '55 when the Crimean war was at its height, and the
-old convict ships had been largely used as transports in the Black
-Sea. The government was compelled, therefore, to use smaller and less
-suitable vessels for sending out their prisoners. The Gloria Scott
-had been in the Chinese tea-trade, but she was an old-fashioned,
-heavy-bowed, broad-beamed craft, and the new clippers had cut her
-out. She was a five-hundred-ton boat; and besides her thirty-eight
-jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
-captain, three mates, a doctor, a chaplain, and four warders. Nearly a
-hundred souls were in her, all told, when we set sail from Falmouth.
-
-"'The partitions between the cells of the convicts, instead of being of
-thick oak, as is usual in convict-ships, were quite thin and frail.
-The man next to me, upon the aft side, was one whom I had particularly
-noticed when we were led down the quay. He was a young man with a
-clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
-He carried his head very jauntily in the air, had a swaggering style
-of walking, and was, above all else, remarkable for his extraordinary
-height. I don't think any of our heads would have come up to his
-shoulder, and I am sure that he could not have measured less than six
-and a half feet. It was strange among so many sad and weary faces to see
-one which was full of energy and resolution. The sight of it was to me
-like a fire in a snow-storm. I was glad, then, to find that he was my
-neighbor, and gladder still when, in the dead of the night, I heard a
-whisper close to my ear, and found that he had managed to cut an opening
-in the board which separated us.
-
-"'"Hullo, chummy!" said he, "what's your name, and what are you here
-for?"
-
-"'I answered him, and asked in turn who I was talking with.
-
-"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
-name before you've done with me."
-
-"'I remembered hearing of his case, for it was one which had made an
-immense sensation throughout the country some time before my own arrest.
-He was a man of good family and of great ability, but of incurably
-vicious habits, who had by an ingenious system of fraud obtained huge
-sums of money from the leading London merchants.
-
-"'"Ha, ha! You remember my case!" said he proudly.
-
-"'"Very well, indeed."
-
-"'"Then maybe you remember something queer about it?"
-
-"'"What was that, then?"
-
-"'"I'd had nearly a quarter of a million, hadn't I?"
-
-"'"So it was said."
-
-"'"But none was recovered, eh?"
-
-"'"No."
-
-"'"Well, where d'ye suppose the balance is?" he asked.
-
-"'"I have no idea," said I.
-
-"'"Right between my finger and thumb," he cried. "By God! I've got more
-pounds to my name than you've hairs on your head. And if you've money,
-my son, and know how to handle it and spread it, you can do anything.
-Now, you don't think it likely that a man who could do anything is going
-to wear his breeches out sitting in the stinking hold of a rat-gutted,
-beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
-a man will look after himself and will look after his chums. You may lay
-to that! You hold on to him, and you may kiss the book that he'll haul
-you through."
-
-"'That was his style of talk, and at first I thought it meant nothing;
-but after a while, when he had tested me and sworn me in with all
-possible solemnity, he let me understand that there really was a plot
-to gain command of the vessel. A dozen of the prisoners had hatched it
-before they came aboard, Prendergast was the leader, and his money was
-the motive power.
-
-"'"I'd a partner," said he, "a rare good man, as true as a stock to a
-barrel. He's got the dibbs, he has, and where do you think he is at this
-moment? Why, he's the chaplain of this ship--the chaplain, no less! He
-came aboard with a black coat, and his papers right, and money enough in
-his box to buy the thing right up from keel to main-truck. The crew
-are his, body and soul. He could buy 'em at so much a gross with a cash
-discount, and he did it before ever they signed on. He's got two of the
-warders and Mereer, the second mate, and he'd get the captain himself,
-if he thought him worth it."
-
-"'"What are we to do, then?" I asked.
-
-"'"What do you think?" said he. "We'll make the coats of some of these
-soldiers redder than ever the tailor did."
-
-"'"But they are armed," said I.
-
-"'"And so shall we be, my boy. There's a brace of pistols for every
-mother's son of us, and if we can't carry this ship, with the crew at
-our back, it's time we were all sent to a young misses' boarding-school.
-You speak to your mate upon the left to-night, and see if he is to be
-trusted."
-
-"'I did so, and found my other neighbor to be a young fellow in much
-the same position as myself, whose crime had been forgery. His name was
-Evans, but he afterwards changed it, like myself, and he is now a rich
-and prosperous man in the south of England. He was ready enough to join
-the conspiracy, as the only means of saving ourselves, and before we had
-crossed the Bay there were only two of the prisoners who were not in the
-secret. One of these was of weak mind, and we did not dare to trust him,
-and the other was suffering from jaundice, and could not be of any use
-to us.
-
-"'From the beginning there was really nothing to prevent us from taking
-possession of the ship. The crew were a set of ruffians, specially
-picked for the job. The sham chaplain came into our cells to exhort us,
-carrying a black bag, supposed to be full of tracts, and so often did
-he come that by the third day we had each stowed away at the foot of our
-beds a file, a brace of pistols, a pound of powder, and twenty slugs.
-Two of the warders were agents of Prendergast, and the second mate was
-his right-hand man. The captain, the two mates, two warders Lieutenant
-Martin, his eighteen soldiers, and the doctor were all that we had
-against us. Yet, safe as it was, we determined to neglect no precaution,
-and to make our attack suddenly by night. It came, however, more quickly
-than we expected, and in this way.
-
-"'One evening, about the third week after our start, the doctor had come
-down to see one of the prisoners who was ill, and putting his hand down
-on the bottom of his bunk he felt the outline of the pistols. If he had
-been silent he might have blown the whole thing, but he was a nervous
-little chap, so he gave a cry of surprise and turned so pale that the
-man knew what was up in an instant and seized him. He was gagged before
-he could give the alarm, and tied down upon the bed. He had unlocked
-the door that led to the deck, and we were through it in a rush. The two
-sentries were shot down, and so was a corporal who came running to see
-what was the matter. There were two more soldiers at the door of the
-state-room, and their muskets seemed not to be loaded, for they never
-fired upon us, and they were shot while trying to fix their bayonets.
-Then we rushed on into the captain's cabin, but as we pushed open the
-door there was an explosion from within, and there he lay with his
-brains smeared over the chart of the Atlantic which was pinned upon the
-table, while the chaplain stood with a smoking pistol in his hand at
-his elbow. The two mates had both been seized by the crew, and the whole
-business seemed to be settled.
-
-"'The state-room was next the cabin, and we flocked in there and flopped
-down on the settees, all speaking together, for we were just mad with
-the feeling that we were free once more. There were lockers all round,
-and Wilson, the sham chaplain, knocked one of them in, and pulled out a
-dozen of brown sherry. We cracked off the necks of the bottles, poured
-the stuff out into tumblers, and were just tossing them off, when in an
-instant without warning there came the roar of muskets in our ears, and
-the saloon was so full of smoke that we could not see across the table.
-When it cleared again the place was a shambles. Wilson and eight others
-were wriggling on the top of each other on the floor, and the blood and
-the brown sherry on that table turn me sick now when I think of it. We
-were so cowed by the sight that I think we should have given the job up
-if it had not been for Prendergast. He bellowed like a bull and rushed
-for the door with all that were left alive at his heels. Out we ran,
-and there on the poop were the lieutenant and ten of his men. The swing
-skylights above the saloon table had been a bit open, and they had fired
-on us through the slit. We got on them before they could load, and they
-stood to it like men; but we had the upper hand of them, and in five
-minutes it was all over. My God! Was there ever a slaughter-house
-like that ship! Prendergast was like a raging devil, and he picked the
-soldiers up as if they had been children and threw them overboard alive
-or dead. There was one sergeant that was horribly wounded and yet kept
-on swimming for a surprising time, until some one in mercy blew out his
-brains. When the fighting was over there was no one left of our enemies
-except just the warders the mates, and the doctor.
-
-"'It was over them that the great quarrel arose. There were many of us
-who were glad enough to win back our freedom, and yet who had no wish
-to have murder on our souls. It was one thing to knock the soldiers over
-with their muskets in their hands, and it was another to stand by while
-men were being killed in cold blood. Eight of us, five convicts and
-three sailors, said that we would not see it done. But there was no
-moving Prendergast and those who were with him. Our only chance of
-safety lay in making a clean job of it, said he, and he would not leave
-a tongue with power to wag in a witness-box. It nearly came to our
-sharing the fate of the prisoners, but at last he said that if we wished
-we might take a boat and go. We jumped at the offer, for we were already
-sick of these bloodthirsty doings, and we saw that there would be worse
-before it was done. We were given a suit of sailor togs each, a barrel
-of water, two casks, one of junk and one of biscuits, and a compass.
-Prendergast threw us over a chart, told us that we were shipwrecked
-mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
-west, and then cut the painter and let us go.
-
-"'And now I come to the most surprising part of my story, my dear son.
-The seamen had hauled the fore-yard aback during the rising, but now as
-we left them they brought it square again, and as there was a light wind
-from the north and east the bark began to draw slowly away from us. Our
-boat lay, rising and falling, upon the long, smooth rollers, and Evans
-and I, who were the most educated of the party, were sitting in the
-sheets working out our position and planning what coast we should make
-for. It was a nice question, for the Cape de Verdes were about five
-hundred miles to the north of us, and the African coast about seven
-hundred to the east. On the whole, as the wind was coming round to the
-north, we thought that Sierra Leone might be best, and turned our head
-in that direction, the bark being at that time nearly hull down on our
-starboard quarter. Suddenly as we looked at her we saw a dense black
-cloud of smoke shoot up from her, which hung like a monstrous tree upon
-the sky line. A few seconds later a roar like thunder burst upon our
-ears, and as the smoke thinned away there was no sign left of the
-_Gloria Scott_. In an instant we swept the boat's head round again and
-pulled with all our strength for the place where the haze still trailing
-over the water marked the scene of this catastrophe.
-
-"'It was a long hour before we reached it, and at first we feared that
-we had come too late to save any one. A splintered boat and a number of
-crates and fragments of spars rising and falling on the waves showed us
-where the vessel had foundered; but there was no sign of life, and we
-had turned away in despair when we heard a cry for help, and saw at some
-distance a piece of wreckage with a man lying stretched across it. When
-we pulled him aboard the boat he proved to be a young seaman of the
-name of Hudson, who was so burned and exhausted that he could give us no
-account of what had happened until the following morning.
-
-"'It seemed that after we had left, Prendergast and his gang had
-proceeded to put to death the five remaining prisoners. The two warders
-had been shot and thrown overboard, and so also had the third mate.
-Prendergast then descended into the 'tween-decks and with his own hands
-cut the throat of the unfortunate surgeon. There only remained the first
-mate, who was a bold and active man. When he saw the convict approaching
-him with the bloody knife in his hand he kicked off his bonds, which he
-had somehow contrived to loosen, and rushing down the deck he plunged
-into the after-hold. A dozen convicts, who descended with their pistols
-in search of him, found him with a match-box in his hand seated beside
-an open powder-barrel, which was one of a hundred carried on board, and
-swearing that he would blow all hands up if he were in any way molested.
-An instant later the explosion occurred, though Hudson thought it was
-caused by the misdirected bullet of one of the convicts rather than the
-mate's match. Be the cause what it may, it was the end of the _Gloria
-Scott_ and of the rabble who held command of her.
-
-"'Such, in a few words, my dear boy, is the history of this terrible
-business in which I was involved. Next day we were picked up by the brig
-_Hotspur_, bound for Australia, whose captain found no difficulty in
-believing that we were the survivors of a passenger ship which had
-foundered. The transport ship Gloria Scott was set down by the Admiralty
-as being lost at sea, and no word has ever leaked out as to her true
-fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
-Evans and I changed our names and made our way to the diggings,
-where, among the crowds who were gathered from all nations, we had no
-difficulty in losing our former identities. The rest I need not relate.
-We prospered, we traveled, we came back as rich colonials to England,
-and we bought country estates. For more than twenty years we have
-led peaceful and useful lives, and we hoped that our past was forever
-buried. Imagine, then, my feelings when in the seaman who came to us I
-recognized instantly the man who had been picked off the wreck. He had
-tracked us down somehow, and had set himself to live upon our fears. You
-will understand now how it was that I strove to keep the peace with him,
-and you will in some measure sympathize with me in the fears which fill
-me, now that he has gone from me to his other victim with threats upon
-his tongue.'
-
-"Underneath is written in a hand so shaky as to be hardly legible,
-'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
-on our souls!'
-
-"That was the narrative which I read that night to young Trevor, and I
-think, Watson, that under the circumstances it was a dramatic one.
-The good fellow was heart-broken at it, and went out to the Terai tea
-planting, where I hear that he is doing well. As to the sailor and
-Beddoes, neither of them was ever heard of again after that day on which
-the letter of warning was written. They both disappeared utterly and
-completely. No complaint had been lodged with the police, so that
-Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
-about, and it was believed by the police that he had done away with
-Beddoes and had fled. For myself I believe that the truth was exactly
-the opposite. I think that it is most probable that Beddoes, pushed to
-desperation and believing himself to have been already betrayed, had
-revenged himself upon Hudson, and had fled from the country with as much
-money as he could lay his hands on. Those are the facts of the case,
-Doctor, and if they are of any use to your collection, I am sure that
-they are very heartily at your service."
-
-
-
-
-Adventure V. The Musgrave Ritual
-
-
-An anomaly which often struck me in the character of my friend Sherlock
-Holmes was that, although in his methods of thought he was the neatest
-and most methodical of mankind, and although also he affected a certain
-quiet primness of dress, he was none the less in his personal habits one
-of the most untidy men that ever drove a fellow-lodger to distraction.
-Not that I am in the least conventional in that respect myself. The
-rough-and-tumble work in Afghanistan, coming on the top of a natural
-Bohemianism of disposition, has made me rather more lax than befits a
-medical man. But with me there is a limit, and when I find a man who
-keeps his cigars in the coal-scuttle, his tobacco in the toe end of
-a Persian slipper, and his unanswered correspondence transfixed by a
-jack-knife into the very centre of his wooden mantelpiece, then I begin
-to give myself virtuous airs. I have always held, too, that pistol
-practice should be distinctly an open-air pastime; and when Holmes, in
-one of his queer humors, would sit in an arm-chair with his hair-trigger
-and a hundred Boxer cartridges, and proceed to adorn the opposite
-wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
-neither the atmosphere nor the appearance of our room was improved by
-it.
-
-Our chambers were always full of chemicals and of criminal relics which
-had a way of wandering into unlikely positions, and of turning up in
-the butter-dish or in even less desirable places. But his papers were
-my great crux. He had a horror of destroying documents, especially those
-which were connected with his past cases, and yet it was only once in
-every year or two that he would muster energy to docket and arrange
-them; for, as I have mentioned somewhere in these incoherent memoirs,
-the outbursts of passionate energy when he performed the remarkable
-feats with which his name is associated were followed by reactions of
-lethargy during which he would lie about with his violin and his books,
-hardly moving save from the sofa to the table. Thus month after month
-his papers accumulated, until every corner of the room was stacked with
-bundles of manuscript which were on no account to be burned, and which
-could not be put away save by their owner. One winter's night, as we
-sat together by the fire, I ventured to suggest to him that, as he had
-finished pasting extracts into his common-place book, he might employ
-the next two hours in making our room a little more habitable. He could
-not deny the justice of my request, so with a rather rueful face he went
-off to his bedroom, from which he returned presently pulling a large tin
-box behind him. This he placed in the middle of the floor and, squatting
-down upon a stool in front of it, he threw back the lid. I could see
-that it was already a third full of bundles of paper tied up with red
-tape into separate packages.
-
-"There are cases enough here, Watson," said he, looking at me with
-mischievous eyes. "I think that if you knew all that I had in this box
-you would ask me to pull some out instead of putting others in."
-
-"These are the records of your early work, then?" I asked. "I have often
-wished that I had notes of those cases."
-
-"Yes, my boy, these were all done prematurely before my biographer
-had come to glorify me." He lifted bundle after bundle in a tender,
-caressing sort of way. "They are not all successes, Watson," said he.
-"But there are some pretty little problems among them. Here's the record
-of the Tarleton murders, and the case of Vamberry, the wine merchant,
-and the adventure of the old Russian woman, and the singular affair
-of the aluminium crutch, as well as a full account of Ricoletti of the
-club-foot, and his abominable wife. And here--ah, now, this really is
-something a little recherché."
-
-He dived his arm down to the bottom of the chest, and brought up a small
-wooden box with a sliding lid, such as children's toys are kept in. From
-within he produced a crumpled piece of paper, and old-fashioned brass
-key, a peg of wood with a ball of string attached to it, and three rusty
-old disks of metal.
-
-"Well, my boy, what do you make of this lot?" he asked, smiling at my
-expression.
-
-"It is a curious collection."
-
-"Very curious, and the story that hangs round it will strike you as
-being more curious still."
-
-"These relics have a history then?"
-
-"So much so that they are history."
-
-"What do you mean by that?"
-
-Sherlock Holmes picked them up one by one, and laid them along the edge
-of the table. Then he reseated himself in his chair and looked them over
-with a gleam of satisfaction in his eyes.
-
-"These," said he, "are all that I have left to remind me of the
-adventure of the Musgrave Ritual."
-
-I had heard him mention the case more than once, though I had never been
-able to gather the details. "I should be so glad," said I, "if you would
-give me an account of it."
-
-"And leave the litter as it is?" he cried, mischievously. "Your tidiness
-won't bear much strain after all, Watson. But I should be glad that you
-should add this case to your annals, for there are points in it which
-make it quite unique in the criminal records of this or, I believe,
-of any other country. A collection of my trifling achievements would
-certainly be incomplete which contained no account of this very singular
-business.
-
-"You may remember how the affair of the _Gloria Scott_, and my
-conversation with the unhappy man whose fate I told you of, first turned
-my attention in the direction of the profession which has become my
-life's work. You see me now when my name has become known far and
-wide, and when I am generally recognized both by the public and by the
-official force as being a final court of appeal in doubtful cases.
-Even when you knew me first, at the time of the affair which you have
-commemorated in 'A Study in Scarlet,' I had already established a
-considerable, though not a very lucrative, connection. You can hardly
-realize, then, how difficult I found it at first, and how long I had to
-wait before I succeeded in making any headway.
-
-"When I first came up to London I had rooms in Montague Street, just
-round the corner from the British Museum, and there I waited, filling in
-my too abundant leisure time by studying all those branches of science
-which might make me more efficient. Now and again cases came in my way,
-principally through the introduction of old fellow-students, for during
-my last years at the University there was a good deal of talk there
-about myself and my methods. The third of these cases was that of the
-Musgrave Ritual, and it is to the interest which was aroused by that
-singular chain of events, and the large issues which proved to be at
-stake, that I trace my first stride towards the position which I now
-hold.
-
-"Reginald Musgrave had been in the same college as myself, and I had
-some slight acquaintance with him. He was not generally popular among
-the undergraduates, though it always seemed to me that what was set down
-as pride was really an attempt to cover extreme natural diffidence.
-In appearance he was a man of exceedingly aristocratic type, thin,
-high-nosed, and large-eyed, with languid and yet courtly manners. He was
-indeed a scion of one of the very oldest families in the kingdom,
-though his branch was a cadet one which had separated from the northern
-Musgraves some time in the sixteenth century, and had established itself
-in western Sussex, where the Manor House of Hurlstone is perhaps the
-oldest inhabited building in the county. Something of his birth place
-seemed to cling to the man, and I never looked at his pale, keen face
-or the poise of his head without associating him with gray archways and
-mullioned windows and all the venerable wreckage of a feudal keep. Once
-or twice we drifted into talk, and I can remember that more than once he
-expressed a keen interest in my methods of observation and inference.
-
-"For four years I had seen nothing of him until one morning he walked
-into my room in Montague Street. He had changed little, was dressed like
-a young man of fashion--he was always a bit of a dandy--and preserved
-the same quiet, suave manner which had formerly distinguished him.
-
-"'How has all gone with you Musgrave?' I asked, after we had cordially
-shaken hands.
-
-"'You probably heard of my poor father's death,' said he; 'he was
-carried off about two years ago. Since then I have of course had the
-Hurlstone estates to manage, and as I am member for my district as well,
-my life has been a busy one. But I understand, Holmes, that you are
-turning to practical ends those powers with which you used to amaze us?'
-
-"'Yes,' said I, 'I have taken to living by my wits.'
-
-"'I am delighted to hear it, for your advice at present would be
-exceedingly valuable to me. We have had some very strange doings at
-Hurlstone, and the police have been able to throw no light upon the
-matter. It is really the most extraordinary and inexplicable business.'
-
-"You can imagine with what eagerness I listened to him, Watson, for
-the very chance for which I had been panting during all those months
-of inaction seemed to have come within my reach. In my inmost heart I
-believed that I could succeed where others failed, and now I had the
-opportunity to test myself.
-
-"'Pray, let me have the details,' I cried.
-
-"Reginald Musgrave sat down opposite to me, and lit the cigarette which
-I had pushed towards him.
-
-"'You must know,' said he, 'that though I am a bachelor, I have to keep
-up a considerable staff of servants at Hurlstone, for it is a rambling
-old place, and takes a good deal of looking after. I preserve, too, and
-in the pheasant months I usually have a house-party, so that it would
-not do to be short-handed. Altogether there are eight maids, the cook,
-the butler, two footmen, and a boy. The garden and the stables of course
-have a separate staff.
-
-"'Of these servants the one who had been longest in our service was
-Brunton the butler. He was a young school-master out of place when he
-was first taken up by my father, but he was a man of great energy and
-character, and he soon became quite invaluable in the household. He was
-a well-grown, handsome man, with a splendid forehead, and though he has
-been with us for twenty years he cannot be more than forty now. With
-his personal advantages and his extraordinary gifts--for he can speak
-several languages and play nearly every musical instrument--it is
-wonderful that he should have been satisfied so long in such a position,
-but I suppose that he was comfortable, and lacked energy to make any
-change. The butler of Hurlstone is always a thing that is remembered by
-all who visit us.
-
-"'But this paragon has one fault. He is a bit of a Don Juan, and you can
-imagine that for a man like him it is not a very difficult part to play
-in a quiet country district. When he was married it was all right, but
-since he has been a widower we have had no end of trouble with him. A
-few months ago we were in hopes that he was about to settle down again
-for he became engaged to Rachel Howells, our second house-maid; but he
-has thrown her over since then and taken up with Janet Tregellis, the
-daughter of the head game-keeper. Rachel--who is a very good girl, but
-of an excitable Welsh temperament--had a sharp touch of brain-fever,
-and goes about the house now--or did until yesterday--like a black-eyed
-shadow of her former self. That was our first drama at Hurlstone; but a
-second one came to drive it from our minds, and it was prefaced by the
-disgrace and dismissal of butler Brunton.
-
-"'This was how it came about. I have said that the man was intelligent,
-and this very intelligence has caused his ruin, for it seems to have
-led to an insatiable curiosity about things which did not in the least
-concern him. I had no idea of the lengths to which this would carry him,
-until the merest accident opened my eyes to it.
-
-"'I have said that the house is a rambling one. One day last week--on
-Thursday night, to be more exact--I found that I could not sleep,
-having foolishly taken a cup of strong café noir after my dinner. After
-struggling against it until two in the morning, I felt that it was quite
-hopeless, so I rose and lit the candle with the intention of continuing
-a novel which I was reading. The book, however, had been left in the
-billiard-room, so I pulled on my dressing-gown and started off to get
-it.
-
-"'In order to reach the billiard-room I had to descend a flight of
-stairs and then to cross the head of a passage which led to the library
-and the gun-room. You can imagine my surprise when, as I looked down
-this corridor, I saw a glimmer of light coming from the open door of the
-library. I had myself extinguished the lamp and closed the door before
-coming to bed. Naturally my first thought was of burglars. The corridors
-at Hurlstone have their walls largely decorated with trophies of old
-weapons. From one of these I picked a battle-axe, and then, leaving my
-candle behind me, I crept on tiptoe down the passage and peeped in at
-the open door.
-
-"'Brunton, the butler, was in the library. He was sitting, fully
-dressed, in an easy-chair, with a slip of paper which looked like a
-map upon his knee, and his forehead sunk forward upon his hand in deep
-thought. I stood dumb with astonishment, watching him from the darkness.
-A small taper on the edge of the table shed a feeble light which
-sufficed to show me that he was fully dressed. Suddenly, as I looked,
-he rose from his chair, and walking over to a bureau at the side, he
-unlocked it and drew out one of the drawers. From this he took a paper,
-and returning to his seat he flattened it out beside the taper on the
-edge of the table, and began to study it with minute attention. My
-indignation at this calm examination of our family documents overcame
-me so far that I took a step forward, and Brunton, looking up, saw me
-standing in the doorway. He sprang to his feet, his face turned livid
-with fear, and he thrust into his breast the chart-like paper which he
-had been originally studying.
-
-"'"So!" said I. "This is how you repay the trust which we have reposed
-in you. You will leave my service to-morrow."
-
-"'He bowed with the look of a man who is utterly crushed, and slunk past
-me without a word. The taper was still on the table, and by its light
-I glanced to see what the paper was which Brunton had taken from the
-bureau. To my surprise it was nothing of any importance at all,
-but simply a copy of the questions and answers in the singular old
-observance called the Musgrave Ritual. It is a sort of ceremony peculiar
-to our family, which each Musgrave for centuries past has gone through
-on his coming of age--a thing of private interest, and perhaps of some
-little importance to the archaeologist, like our own blazonings and
-charges, but of no practical use whatever.'
-
-"'We had better come back to the paper afterwards,' said I.
-
-"'If you think it really necessary,' he answered, with some hesitation.
-'To continue my statement, however: I relocked the bureau, using the key
-which Brunton had left, and I had turned to go when I was surprised to
-find that the butler had returned, and was standing before me.
-
-"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
-emotion, "I can't bear disgrace, sir. I've always been proud above my
-station in life, and disgrace would kill me. My blood will be on your
-head, sir--it will, indeed--if you drive me to despair. If you cannot
-keep me after what has passed, then for God's sake let me give you
-notice and leave in a month, as if of my own free will. I could stand
-that, Mr. Musgrave, but not to be cast out before all the folk that I
-know so well."
-
-"'"You don't deserve much consideration, Brunton," I answered. "Your
-conduct has been most infamous. However, as you have been a long time in
-the family, I have no wish to bring public disgrace upon you. A month,
-however is too long. Take yourself away in a week, and give what reason
-you like for going."
-
-"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
-at least a fortnight!"
-
-"'"A week," I repeated, "and you may consider yourself to have been very
-leniently dealt with."
-
-"'He crept away, his face sunk upon his breast, like a broken man, while
-I put out the light and returned to my room.
-
-
-"'"For two days after this Brunton was most assiduous in his attention
-to his duties. I made no allusion to what had passed, and waited with
-some curiosity to see how he would cover his disgrace. On the third
-morning, however he did not appear, as was his custom, after breakfast
-to receive my instructions for the day. As I left the dining-room I
-happened to meet Rachel Howells, the maid. I have told you that she had
-only recently recovered from an illness, and was looking so wretchedly
-pale and wan that I remonstrated with her for being at work.
-
-"'"You should be in bed," I said. "Come back to your duties when you are
-stronger."
-
-"'She looked at me with so strange an expression that I began to suspect
-that her brain was affected.
-
-"'"I am strong enough, Mr. Musgrave," said she.
-
-"'"We will see what the doctor says," I answered. "You must stop work
-now, and when you go downstairs just say that I wish to see Brunton."
-
-"'"The butler is gone," said she.
-
-"'"Gone! Gone where?"
-
-"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
-is gone, he is gone!" She fell back against the wall with shriek after
-shriek of laughter, while I, horrified at this sudden hysterical attack,
-rushed to the bell to summon help. The girl was taken to her room, still
-screaming and sobbing, while I made inquiries about Brunton. There was
-no doubt about it that he had disappeared. His bed had not been slept
-in, he had been seen by no one since he had retired to his room the
-night before, and yet it was difficult to see how he could have left
-the house, as both windows and doors were found to be fastened in the
-morning. His clothes, his watch, and even his money were in his room,
-but the black suit which he usually wore was missing. His slippers,
-too, were gone, but his boots were left behind. Where then could butler
-Brunton have gone in the night, and what could have become of him now?
-
-"'Of course we searched the house from cellar to garret, but there was
-no trace of him. It is, as I have said, a labyrinth of an old house,
-especially the original wing, which is now practically uninhabited; but
-we ransacked every room and cellar without discovering the least sign
-of the missing man. It was incredible to me that he could have gone away
-leaving all his property behind him, and yet where could he be? I called
-in the local police, but without success. Rain had fallen on the night
-before and we examined the lawn and the paths all round the house, but
-in vain. Matters were in this state, when a new development quite drew
-our attention away from the original mystery.
-
-"'For two days Rachel Howells had been so ill, sometimes delirious,
-sometimes hysterical, that a nurse had been employed to sit up with her
-at night. On the third night after Brunton's disappearance, the nurse,
-finding her patient sleeping nicely, had dropped into a nap in the
-arm-chair, when she woke in the early morning to find the bed empty, the
-window open, and no signs of the invalid. I was instantly aroused, and,
-with the two footmen, started off at once in search of the missing girl.
-It was not difficult to tell the direction which she had taken, for,
-starting from under her window, we could follow her footmarks easily
-across the lawn to the edge of the mere, where they vanished close to
-the gravel path which leads out of the grounds. The lake there is eight
-feet deep, and you can imagine our feelings when we saw that the trail
-of the poor demented girl came to an end at the edge of it.
-
-"'Of course, we had the drags at once, and set to work to recover the
-remains, but no trace of the body could we find. On the other hand, we
-brought to the surface an object of a most unexpected kind. It was a
-linen bag which contained within it a mass of old rusted and discolored
-metal and several dull-colored pieces of pebble or glass. This strange
-find was all that we could get from the mere, and, although we made
-every possible search and inquiry yesterday, we know nothing of the fate
-either of Rachel Howells or of Richard Brunton. The county police are at
-their wits' end, and I have come up to you as a last resource.'
-
-"You can imagine, Watson, with what eagerness I listened to this
-extraordinary sequence of events, and endeavored to piece them together,
-and to devise some common thread upon which they might all hang. The
-butler was gone. The maid was gone. The maid had loved the butler, but
-had afterwards had cause to hate him. She was of Welsh blood, fiery
-and passionate. She had been terribly excited immediately after his
-disappearance. She had flung into the lake a bag containing some
-curious contents. These were all factors which had to be taken into
-consideration, and yet none of them got quite to the heart of the
-matter. What was the starting-point of this chain of events? There lay
-the end of this tangled line.
-
-"'I must see that paper, Musgrave,' said I, 'which this butler of your
-thought it worth his while to consult, even at the risk of the loss of
-his place.'
-
-"'It is rather an absurd business, this ritual of ours,' he answered.
-'But it has at least the saving grace of antiquity to excuse it. I have
-a copy of the questions and answers here if you care to run your eye
-over them.'
-
-"He handed me the very paper which I have here, Watson, and this is the
-strange catechism to which each Musgrave had to submit when he came to
-man's estate. I will read you the questions and answers as they stand.
-
-"'Whose was it?'
-
-"'His who is gone.'
-
-"'Who shall have it?'
-
-"'He who will come.'
-
-"'Where was the sun?'
-
-"'Over the oak.'
-
-"'Where was the shadow?'
-
-"'Under the elm.'
-
-"How was it stepped?'
-
-"'North by ten and by ten, east by five and by five, south by two and by
-two, west by one and by one, and so under.'
-
-"'What shall we give for it?'
-
-"'All that is ours.'
-
-"'Why should we give it?'
-
-"'For the sake of the trust.'
-
-"'The original has no date, but is in the spelling of the middle of the
-seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
-can be of little help to you in solving this mystery.'
-
-"'At least,' said I, 'it gives us another mystery, and one which is even
-more interesting than the first. It may be that the solution of the one
-may prove to be the solution of the other. You will excuse me, Musgrave,
-if I say that your butler appears to me to have been a very clever man,
-and to have had a clearer insight than ten generations of his masters.'
-
-"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
-no practical importance.'
-
-"'But to me it seems immensely practical, and I fancy that Brunton took
-the same view. He had probably seen it before that night on which you
-caught him.'
-
-"'It is very possible. We took no pains to hide it.'
-
-"'He simply wished, I should imagine, to refresh his memory upon that
-last occasion. He had, as I understand, some sort of map or chart which
-he was comparing with the manuscript, and which he thrust into his
-pocket when you appeared.'
-
-"'That is true. But what could he have to do with this old family custom
-of ours, and what does this rigmarole mean?'
-
-"'I don't think that we should have much difficulty in determining
-that,' said I; 'with your permission we will take the first train down
-to Sussex, and go a little more deeply into the matter upon the spot.'
-
-
-"The same afternoon saw us both at Hurlstone. Possibly you have seen
-pictures and read descriptions of the famous old building, so I will
-confine my account of it to saying that it is built in the shape of
-an L, the long arm being the more modern portion, and the shorter the
-ancient nucleus, from which the other had developed. Over the low,
-heavily-lintelled door, in the centre of this old part, is chiseled the
-date, 1607, but experts are agreed that the beams and stone-work are
-really much older than this. The enormously thick walls and tiny windows
-of this part had in the last century driven the family into building the
-new wing, and the old one was used now as a store-house and a cellar,
-when it was used at all. A splendid park with fine old timber surrounds
-the house, and the lake, to which my client had referred, lay close to
-the avenue, about two hundred yards from the building.
-
-"I was already firmly convinced, Watson, that there were not three
-separate mysteries here, but one only, and that if I could read the
-Musgrave Ritual aright I should hold in my hand the clue which would
-lead me to the truth concerning both the butler Brunton and the maid
-Howells. To that then I turned all my energies. Why should this servant
-be so anxious to master this old formula? Evidently because he saw
-something in it which had escaped all those generations of country
-squires, and from which he expected some personal advantage. What was it
-then, and how had it affected his fate?
-
-"It was perfectly obvious to me, on reading the ritual, that the
-measurements must refer to some spot to which the rest of the document
-alluded, and that if we could find that spot, we should be in a fair way
-towards finding what the secret was which the old Musgraves had thought
-it necessary to embalm in so curious a fashion. There were two guides
-given us to start with, an oak and an elm. As to the oak there could be
-no question at all. Right in front of the house, upon the left-hand
-side of the drive, there stood a patriarch among oaks, one of the most
-magnificent trees that I have ever seen.
-
-"'That was there when your ritual was drawn up,' said I, as we drove
-past it.
-
-"'It was there at the Norman Conquest in all probability,' he answered.
-'It has a girth of twenty-three feet.'
-
-"'Have you any old elms?' I asked.
-
-"'There used to be a very old one over yonder but it was struck by
-lightning ten years ago, and we cut down the stump.'
-
-"'You can see where it used to be?'
-
-"'Oh, yes.'
-
-"'There are no other elms?'
-
-"'No old ones, but plenty of beeches.'
-
-"'I should like to see where it grew.'
-
-"We had driven up in a dog-cart, and my client led me away at once,
-without our entering the house, to the scar on the lawn where the
-elm had stood. It was nearly midway between the oak and the house. My
-investigation seemed to be progressing.
-
-"'I suppose it is impossible to find out how high the elm was?' I asked.
-
-"'I can give you it at once. It was sixty-four feet.'
-
-"'How do you come to know it?' I asked, in surprise.
-
-"'When my old tutor used to give me an exercise in trigonometry, it
-always took the shape of measuring heights. When I was a lad I worked
-out every tree and building in the estate.'
-
-"This was an unexpected piece of luck. My data were coming more quickly
-than I could have reasonably hoped.
-
-"'Tell me,' I asked, 'did your butler ever ask you such a question?'
-
-"Reginald Musgrave looked at me in astonishment. 'Now that you call it
-to my mind,' he answered, 'Brunton did ask me about the height of the
-tree some months ago, in connection with some little argument with the
-groom.'
-
-"This was excellent news, Watson, for it showed me that I was on the
-right road. I looked up at the sun. It was low in the heavens, and I
-calculated that in less than an hour it would lie just above the topmost
-branches of the old oak. One condition mentioned in the Ritual would
-then be fulfilled. And the shadow of the elm must mean the farther end
-of the shadow, otherwise the trunk would have been chosen as the guide.
-I had, then, to find where the far end of the shadow would fall when the
-sun was just clear of the oak."
-
-"That must have been difficult, Holmes, when the elm was no longer
-there."
-
-"Well, at least I knew that if Brunton could do it, I could also.
-Besides, there was no real difficulty. I went with Musgrave to his study
-and whittled myself this peg, to which I tied this long string with a
-knot at each yard. Then I took two lengths of a fishing-rod, which came
-to just six feet, and I went back with my client to where the elm had
-been. The sun was just grazing the top of the oak. I fastened the rod
-on end, marked out the direction of the shadow, and measured it. It was
-nine feet in length.
-
-"Of course the calculation now was a simple one. If a rod of six feet
-threw a shadow of nine, a tree of sixty-four feet would throw one of
-ninety-six, and the line of the one would of course be the line of the
-other. I measured out the distance, which brought me almost to the
-wall of the house, and I thrust a peg into the spot. You can imagine
-my exultation, Watson, when within two inches of my peg I saw a conical
-depression in the ground. I knew that it was the mark made by Brunton in
-his measurements, and that I was still upon his trail.
-
-"From this starting-point I proceeded to step, having first taken the
-cardinal points by my pocket-compass. Ten steps with each foot took me
-along parallel with the wall of the house, and again I marked my spot
-with a peg. Then I carefully paced off five to the east and two to the
-south. It brought me to the very threshold of the old door. Two steps
-to the west meant now that I was to go two paces down the stone-flagged
-passage, and this was the place indicated by the Ritual.
-
-"Never have I felt such a cold chill of disappointment, Watson. For a
-moment is seemed to me that there must be some radical mistake in my
-calculations. The setting sun shone full upon the passage floor, and I
-could see that the old, foot-worn gray stones with which it was paved
-were firmly cemented together, and had certainly not been moved for many
-a long year. Brunton had not been at work here. I tapped upon the floor,
-but it sounded the same all over, and there was no sign of any crack
-or crevice. But, fortunately, Musgrave, who had begun to appreciate the
-meaning of my proceedings, and who was now as excited as myself, took
-out his manuscript to check my calculation.
-
-"'And under,' he cried. 'You have omitted the "and under."'
-
-"I had thought that it meant that we were to dig, but now, of course,
-I saw at once that I was wrong. 'There is a cellar under this then?' I
-cried.
-
-"'Yes, and as old as the house. Down here, through this door.'
-
-"We went down a winding stone stair, and my companion, striking a match,
-lit a large lantern which stood on a barrel in the corner. In an instant
-it was obvious that we had at last come upon the true place, and that we
-had not been the only people to visit the spot recently.
-
-"It had been used for the storage of wood, but the billets, which had
-evidently been littered over the floor, were now piled at the sides, so
-as to leave a clear space in the middle. In this space lay a large and
-heavy flagstone with a rusted iron ring in the centre to which a thick
-shepherd's-check muffler was attached.
-
-"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
-on him, and could swear to it. What has the villain been doing here?'
-
-"At my suggestion a couple of the county police were summoned to be
-present, and I then endeavored to raise the stone by pulling on the
-cravat. I could only move it slightly, and it was with the aid of one
-of the constables that I succeeded at last in carrying it to one side.
-A black hole yawned beneath into which we all peered, while Musgrave,
-kneeling at the side, pushed down the lantern.
-
-"A small chamber about seven feet deep and four feet square lay open to
-us. At one side of this was a squat, brass-bound wooden box, the lid of
-which was hinged upwards, with this curious old-fashioned key projecting
-from the lock. It was furred outside by a thick layer of dust, and damp
-and worms had eaten through the wood, so that a crop of livid fungi
-was growing on the inside of it. Several discs of metal, old coins
-apparently, such as I hold here, were scattered over the bottom of the
-box, but it contained nothing else.
-
-"At the moment, however, we had no thought for the old chest, for our
-eyes were riveted upon that which crouched beside it. It was the figure
-of a man, clad in a suit of black, who squatted down upon his hams with
-his forehead sunk upon the edge of the box and his two arms thrown out
-on each side of it. The attitude had drawn all the stagnant blood to
-the face, and no man could have recognized that distorted liver-colored
-countenance; but his height, his dress, and his hair were all sufficient
-to show my client, when we had drawn the body up, that it was indeed his
-missing butler. He had been dead some days, but there was no wound or
-bruise upon his person to show how he had met his dreadful end. When
-his body had been carried from the cellar we found ourselves still
-confronted with a problem which was almost as formidable as that with
-which we had started.
-
-"I confess that so far, Watson, I had been disappointed in my
-investigation. I had reckoned upon solving the matter when once I had
-found the place referred to in the Ritual; but now I was there, and was
-apparently as far as ever from knowing what it was which the family had
-concealed with such elaborate precautions. It is true that I had thrown
-a light upon the fate of Brunton, but now I had to ascertain how that
-fate had come upon him, and what part had been played in the matter by
-the woman who had disappeared. I sat down upon a keg in the corner and
-thought the whole matter carefully over.
-
-"You know my methods in such cases, Watson. I put myself in the man's
-place and, having first gauged his intelligence, I try to imagine how I
-should myself have proceeded under the same circumstances. In this
-case the matter was simplified by Brunton's intelligence being quite
-first-rate, so that it was unnecessary to make any allowance for the
-personal equation, as the astronomers have dubbed it. He knew that
-something valuable was concealed. He had spotted the place. He found
-that the stone which covered it was just too heavy for a man to move
-unaided. What would he do next? He could not get help from outside, even
-if he had some one whom he could trust, without the unbarring of doors
-and considerable risk of detection. It was better, if he could, to have
-his helpmate inside the house. But whom could he ask? This girl had been
-devoted to him. A man always finds it hard to realize that he may have
-finally lost a woman's love, however badly he may have treated her. He
-would try by a few attentions to make his peace with the girl Howells,
-and then would engage her as his accomplice. Together they would come at
-night to the cellar, and their united force would suffice to raise the
-stone. So far I could follow their actions as if I had actually seen
-them.
-
-"But for two of them, and one a woman, it must have been heavy work the
-raising of that stone. A burly Sussex policeman and I had found it no
-light job. What would they do to assist them? Probably what I should
-have done myself. I rose and examined carefully the different billets
-of wood which were scattered round the floor. Almost at once I came
-upon what I expected. One piece, about three feet in length, had a very
-marked indentation at one end, while several were flattened at the sides
-as if they had been compressed by some considerable weight. Evidently,
-as they had dragged the stone up they had thrust the chunks of wood into
-the chink, until at last, when the opening was large enough to crawl
-through, they would hold it open by a billet placed lengthwise, which
-might very well become indented at the lower end, since the whole weight
-of the stone would press it down on to the edge of this other slab. So
-far I was still on safe ground.
-
-"And now how was I to proceed to reconstruct this midnight drama?
-Clearly, only one could fit into the hole, and that one was Brunton. The
-girl must have waited above. Brunton then unlocked the box, handed up
-the contents presumably--since they were not to be found--and then--and
-then what happened?
-
-"What smouldering fire of vengeance had suddenly sprung into flame in
-this passionate Celtic woman's soul when she saw the man who had wronged
-her--wronged her, perhaps, far more than we suspected--in her power?
-Was it a chance that the wood had slipped, and that the stone had shut
-Brunton into what had become his sepulchre? Had she only been guilty of
-silence as to his fate? Or had some sudden blow from her hand dashed the
-support away and sent the slab crashing down into its place? Be that
-as it might, I seemed to see that woman's figure still clutching at her
-treasure trove and flying wildly up the winding stair, with her ears
-ringing perhaps with the muffled screams from behind her and with the
-drumming of frenzied hands against the slab of stone which was choking
-her faithless lover's life out.
-
-"Here was the secret of her blanched face, her shaken nerves, her peals
-of hysterical laughter on the next morning. But what had been in the
-box? What had she done with that? Of course, it must have been the old
-metal and pebbles which my client had dragged from the mere. She had
-thrown them in there at the first opportunity to remove the last trace
-of her crime.
-
-"For twenty minutes I had sat motionless, thinking the matter out.
-Musgrave still stood with a very pale face, swinging his lantern and
-peering down into the hole.
-
-"'These are coins of Charles the First,' said he, holding out the few
-which had been in the box; 'you see we were right in fixing our date for
-the Ritual.'
-
-"'We may find something else of Charles the First,' I cried, as the
-probable meaning of the first two questions of the Ritual broke suddenly
-upon me. 'Let me see the contents of the bag which you fished from the
-mere.'
-
-
-"We ascended to his study, and he laid the debris before me. I could
-understand his regarding it as of small importance when I looked at it,
-for the metal was almost black and the stones lustreless and dull. I
-rubbed one of them on my sleeve, however, and it glowed afterwards like
-a spark in the dark hollow of my hand. The metal work was in the form
-of a double ring, but it had been bent and twisted out of its original
-shape.
-
-"'You must bear in mind,' said I, 'that the royal party made head in
-England even after the death of the king, and that when they at last
-fled they probably left many of their most precious possessions buried
-behind them, with the intention of returning for them in more peaceful
-times.'
-
-"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
-right-hand man of Charles the Second in his wanderings,' said my friend.
-
-"'Ah, indeed!' I answered. 'Well now, I think that really should give us
-the last link that we wanted. I must congratulate you on coming into
-the possession, though in rather a tragic manner of a relic which is of
-great intrinsic value, but of even greater importance as an historical
-curiosity.'
-
-"'What is it, then?' he gasped in astonishment.
-
-"'It is nothing less than the ancient crown of the kings of England.'
-
-"'The crown!'
-
-"'Precisely. Consider what the Ritual says: How does it run? "Whose was
-it?" "His who is gone." That was after the execution of Charles. Then,
-"Who shall have it?" "He who will come." That was Charles the Second,
-whose advent was already foreseen. There can, I think, be no doubt that
-this battered and shapeless diadem once encircled the brows of the royal
-Stuarts.'
-
-"'And how came it in the pond?'
-
-"'Ah, that is a question that will take some time to answer.' And with
-that I sketched out to him the whole long chain of surmise and of proof
-which I had constructed. The twilight had closed in and the moon was
-shining brightly in the sky before my narrative was finished.
-
-"'And how was it then that Charles did not get his crown when he
-returned?' asked Musgrave, pushing back the relic into its linen bag.
-
-"'Ah, there you lay your finger upon the one point which we shall
-probably never be able to clear up. It is likely that the Musgrave who
-held the secret died in the interval, and by some oversight left this
-guide to his descendant without explaining the meaning of it. From that
-day to this it has been handed down from father to son, until at last
-it came within reach of a man who tore its secret out of it and lost his
-life in the venture.'
-
-
-"And that's the story of the Musgrave Ritual, Watson. They have the
-crown down at Hurlstone--though they had some legal bother and a
-considerable sum to pay before they were allowed to retain it. I am sure
-that if you mentioned my name they would be happy to show it to you. Of
-the woman nothing was ever heard, and the probability is that she got
-away out of England and carried herself and the memory of her crime to
-some land beyond the seas."
-
-
-
-
-Adventure VI. The Reigate Puzzle
-
-
-It was some time before the health of my friend Mr. Sherlock Holmes
-recovered from the strain caused by his immense exertions in the spring
-of '87. The whole question of the Netherland-Sumatra Company and of the
-colossal schemes of Baron Maupertuis are too recent in the minds of the
-public, and are too intimately concerned with politics and finance to be
-fitting subjects for this series of sketches. They led, however, in an
-indirect fashion to a singular and complex problem which gave my friend
-an opportunity of demonstrating the value of a fresh weapon among the
-many with which he waged his life-long battle against crime.
-
-On referring to my notes I see that it was upon the 14th of April that
-I received a telegram from Lyons which informed me that Holmes was
-lying ill in the Hotel Dulong. Within twenty-four hours I was in his
-sick-room, and was relieved to find that there was nothing formidable in
-his symptoms. Even his iron constitution, however, had broken down
-under the strain of an investigation which had extended over two months,
-during which period he had never worked less than fifteen hours a day,
-and had more than once, as he assured me, kept to his task for five days
-at a stretch. Even the triumphant issue of his labors could not save him
-from reaction after so terrible an exertion, and at a time when Europe
-was ringing with his name and when his room was literally ankle-deep
-with congratulatory telegrams I found him a prey to the blackest
-depression. Even the knowledge that he had succeeded where the police of
-three countries had failed, and that he had outmanoeuvred at every point
-the most accomplished swindler in Europe, was insufficient to rouse him
-from his nervous prostration.
-
-Three days later we were back in Baker Street together; but it was
-evident that my friend would be much the better for a change, and the
-thought of a week of spring time in the country was full of attractions
-to me also. My old friend, Colonel Hayter, who had come under my
-professional care in Afghanistan, had now taken a house near Reigate in
-Surrey, and had frequently asked me to come down to him upon a visit. On
-the last occasion he had remarked that if my friend would only come
-with me he would be glad to extend his hospitality to him also. A little
-diplomacy was needed, but when Holmes understood that the establishment
-was a bachelor one, and that he would be allowed the fullest freedom,
-he fell in with my plans and a week after our return from Lyons we were
-under the Colonel's roof. Hayter was a fine old soldier who had seen
-much of the world, and he soon found, as I had expected, that Holmes and
-he had much in common.
-
-On the evening of our arrival we were sitting in the Colonel's gun-room
-after dinner, Holmes stretched upon the sofa, while Hayter and I looked
-over his little armory of Eastern weapons.
-
-"By the way," said he suddenly, "I think I'll take one of these pistols
-upstairs with me in case we have an alarm."
-
-"An alarm!" said I.
-
-"Yes, we've had a scare in this part lately. Old Acton, who is one of
-our county magnates, had his house broken into last Monday. No great
-damage done, but the fellows are still at large."
-
-"No clue?" asked Holmes, cocking his eye at the Colonel.
-
-"None as yet. But the affair is a petty one, one of our little country
-crimes, which must seem too small for your attention, Mr. Holmes, after
-this great international affair."
-
-Holmes waved away the compliment, though his smile showed that it had
-pleased him.
-
-"Was there any feature of interest?"
-
-"I fancy not. The thieves ransacked the library and got very little for
-their pains. The whole place was turned upside down, drawers burst open,
-and presses ransacked, with the result that an odd volume of Pope's
-'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
-barometer, and a ball of twine are all that have vanished."
-
-"What an extraordinary assortment!" I exclaimed.
-
-"Oh, the fellows evidently grabbed hold of everything they could get."
-
-Holmes grunted from the sofa.
-
-"The county police ought to make something of that," said he; "why, it
-is surely obvious that--"
-
-But I held up a warning finger.
-
-"You are here for a rest, my dear fellow. For Heaven's sake don't get
-started on a new problem when your nerves are all in shreds."
-
-Holmes shrugged his shoulders with a glance of comic resignation towards
-the Colonel, and the talk drifted away into less dangerous channels.
-
-It was destined, however, that all my professional caution should be
-wasted, for next morning the problem obtruded itself upon us in such a
-way that it was impossible to ignore it, and our country visit took a
-turn which neither of us could have anticipated. We were at breakfast
-when the Colonel's butler rushed in with all his propriety shaken out of
-him.
-
-"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
-
-"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
-
-"Murder!"
-
-The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
-or his son?"
-
-"Neither, sir. It was William the coachman. Shot through the heart, sir,
-and never spoke again."
-
-"Who shot him, then?"
-
-"The burglar, sir. He was off like a shot and got clean away. He'd just
-broke in at the pantry window when William came on him and met his end
-in saving his master's property."
-
-"What time?"
-
-"It was last night, sir, somewhere about twelve."
-
-"Ah, then, we'll step over afterwards," said the Colonel, coolly
-settling down to his breakfast again. "It's a baddish business," he
-added when the butler had gone; "he's our leading man about here, is old
-Cunningham, and a very decent fellow too. He'll be cut up over this, for
-the man has been in his service for years and was a good servant. It's
-evidently the same villains who broke into Acton's."
-
-"And stole that very singular collection," said Holmes, thoughtfully.
-
-"Precisely."
-
-"Hum! It may prove the simplest matter in the world, but all the same
-at first glance this is just a little curious, is it not? A gang of
-burglars acting in the country might be expected to vary the scene of
-their operations, and not to crack two cribs in the same district within
-a few days. When you spoke last night of taking precautions I remember
-that it passed through my mind that this was probably the last parish
-in England to which the thief or thieves would be likely to turn their
-attention--which shows that I have still much to learn."
-
-"I fancy it's some local practitioner," said the Colonel. "In that case,
-of course, Acton's and Cunningham's are just the places he would go for,
-since they are far the largest about here."
-
-"And richest?"
-
-"Well, they ought to be, but they've had a lawsuit for some years which
-has sucked the blood out of both of them, I fancy. Old Acton has some
-claim on half Cunningham's estate, and the lawyers have been at it with
-both hands."
-
-"If it's a local villain there should not be much difficulty in running
-him down," said Holmes with a yawn. "All right, Watson, I don't intend
-to meddle."
-
-"Inspector Forrester, sir," said the butler, throwing open the door.
-
-The official, a smart, keen-faced young fellow, stepped into the room.
-"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
-that Mr. Holmes of Baker Street is here."
-
-The Colonel waved his hand towards my friend, and the Inspector bowed.
-
-"We thought that perhaps you would care to step across, Mr. Holmes."
-
-"The fates are against you, Watson," said he, laughing. "We were
-chatting about the matter when you came in, Inspector. Perhaps you
-can let us have a few details." As he leaned back in his chair in the
-familiar attitude I knew that the case was hopeless.
-
-"We had no clue in the Acton affair. But here we have plenty to go on,
-and there's no doubt it is the same party in each case. The man was
-seen."
-
-"Ah!"
-
-"Yes, sir. But he was off like a deer after the shot that killed poor
-William Kirwan was fired. Mr. Cunningham saw him from the bedroom
-window, and Mr. Alec Cunningham saw him from the back passage. It was
-quarter to twelve when the alarm broke out. Mr. Cunningham had just got
-into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
-both heard William the coachman calling for help, and Mr. Alec ran down
-to see what was the matter. The back door was open, and as he came to
-the foot of the stairs he saw two men wrestling together outside. One of
-them fired a shot, the other dropped, and the murderer rushed across the
-garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
-saw the fellow as he gained the road, but lost sight of him at once. Mr.
-Alec stopped to see if he could help the dying man, and so the villain
-got clean away. Beyond the fact that he was a middle-sized man and
-dressed in some dark stuff, we have no personal clue; but we are making
-energetic inquiries, and if he is a stranger we shall soon find him
-out."
-
-"What was this William doing there? Did he say anything before he died?"
-
-"Not a word. He lives at the lodge with his mother, and as he was a
-very faithful fellow we imagine that he walked up to the house with
-the intention of seeing that all was right there. Of course this Acton
-business has put every one on their guard. The robber must have just
-burst open the door--the lock has been forced--when William came upon
-him."
-
-"Did William say anything to his mother before going out?"
-
-"She is very old and deaf, and we can get no information from her. The
-shock has made her half-witted, but I understand that she was never
-very bright. There is one very important circumstance, however. Look at
-this!"
-
-He took a small piece of torn paper from a note-book and spread it out
-upon his knee.
-
-"This was found between the finger and thumb of the dead man. It appears
-to be a fragment torn from a larger sheet. You will observe that the
-hour mentioned upon it is the very time at which the poor fellow met his
-fate. You see that his murderer might have torn the rest of the sheet
-from him or he might have taken this fragment from the murderer. It
-reads almost as though it were an appointment."
-
-Holmes took up the scrap of paper, a fac-simile of which is here
-reproduced.
-
-     d at quarter to twelve learn what maybe
-
-"Presuming that it is an appointment," continued the Inspector, "it is
-of course a conceivable theory that this William Kirwan--though he had
-the reputation of being an honest man, may have been in league with the
-thief. He may have met him there, may even have helped him to break in
-the door, and then they may have fallen out between themselves."
-
-"This writing is of extraordinary interest," said Holmes, who had been
-examining it with intense concentration. "These are much deeper waters
-than I had thought." He sank his head upon his hands, while the Inspector
-smiled at the effect which his case had had upon the famous London
-specialist.
-
-"Your last remark," said Holmes, presently, "as to the possibility of
-there being an understanding between the burglar and the servant, and
-this being a note of appointment from one to the other, is an ingenious
-and not entirely impossible supposition. But this writing opens up--" He
-sank his head into his hands again and remained for some minutes in the
-deepest thought. When he raised his face again, I was surprised to see
-that his cheek was tinged with color, and his eyes as bright as before
-his illness. He sprang to his feet with all his old energy.
-
-"I'll tell you what," said he, "I should like to have a quiet little
-glance into the details of this case. There is something in it which
-fascinates me extremely. If you will permit me, Colonel, I will leave my
-friend Watson and you, and I will step round with the Inspector to test
-the truth of one or two little fancies of mine. I will be with you again
-in half an hour."
-
-An hour and half had elapsed before the Inspector returned alone.
-
-"Mr. Holmes is walking up and down in the field outside," said he. "He
-wants us all four to go up to the house together."
-
-"To Mr. Cunningham's?"
-
-"Yes, sir."
-
-"What for?"
-
-The Inspector shrugged his shoulders. "I don't quite know, sir. Between
-ourselves, I think Mr. Holmes had not quite got over his illness yet.
-He's been behaving very queerly, and he is very much excited."
-
-"I don't think you need alarm yourself," said I. "I have usually found
-that there was method in his madness."
-
-"Some folks might say there was madness in his method," muttered the
-Inspector. "But he's all on fire to start, Colonel, so we had best go
-out if you are ready."
-
-We found Holmes pacing up and down in the field, his chin sunk upon his
-breast, and his hands thrust into his trousers pockets.
-
-"The matter grows in interest," said he. "Watson, your country-trip has
-been a distinct success. I have had a charming morning."
-
-"You have been up to the scene of the crime, I understand," said the
-Colonel.
-
-"Yes; the Inspector and I have made quite a little reconnaissance
-together."
-
-"Any success?"
-
-"Well, we have seen some very interesting things. I'll tell you what we
-did as we walk. First of all, we saw the body of this unfortunate man.
-He certainly died from a revolver wound as reported."
-
-"Had you doubted it, then?"
-
-"Oh, it is as well to test everything. Our inspection was not wasted. We
-then had an interview with Mr. Cunningham and his son, who were able
-to point out the exact spot where the murderer had broken through the
-garden-hedge in his flight. That was of great interest."
-
-"Naturally."
-
-"Then we had a look at this poor fellow's mother. We could get no
-information from her, however, as she is very old and feeble."
-
-"And what is the result of your investigations?"
-
-"The conviction that the crime is a very peculiar one. Perhaps our visit
-now may do something to make it less obscure. I think that we are both
-agreed, Inspector that the fragment of paper in the dead man's hand,
-bearing, as it does, the very hour of his death written upon it, is of
-extreme importance."
-
-"It should give a clue, Mr. Holmes."
-
-"It does give a clue. Whoever wrote that note was the man who brought
-William Kirwan out of his bed at that hour. But where is the rest of
-that sheet of paper?"
-
-"I examined the ground carefully in the hope of finding it," said the
-Inspector.
-
-"It was torn out of the dead man's hand. Why was some one so anxious to
-get possession of it? Because it incriminated him. And what would he do
-with it? Thrust it into his pocket, most likely, never noticing that a
-corner of it had been left in the grip of the corpse. If we could get
-the rest of that sheet it is obvious that we should have gone a long way
-towards solving the mystery."
-
-"Yes, but how can we get at the criminal's pocket before we catch the
-criminal?"
-
-"Well, well, it was worth thinking over. Then there is another obvious
-point. The note was sent to William. The man who wrote it could not have
-taken it; otherwise, of course, he might have delivered his own message
-by word of mouth. Who brought the note, then? Or did it come through the
-post?"
-
-"I have made inquiries," said the Inspector. "William received a letter
-by the afternoon post yesterday. The envelope was destroyed by him."
-
-"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
-seen the postman. It is a pleasure to work with you. Well, here is the
-lodge, and if you will come up, Colonel, I will show you the scene of
-the crime."
-
-We passed the pretty cottage where the murdered man had lived, and
-walked up an oak-lined avenue to the fine old Queen Anne house, which
-bears the date of Malplaquet upon the lintel of the door. Holmes and
-the Inspector led us round it until we came to the side gate, which is
-separated by a stretch of garden from the hedge which lines the road. A
-constable was standing at the kitchen door.
-
-"Throw the door open, officer," said Holmes. "Now, it was on those
-stairs that young Mr. Cunningham stood and saw the two men struggling
-just where we are. Old Mr. Cunningham was at that window--the second on
-the left--and he saw the fellow get away just to the left of that bush.
-Then Mr. Alec ran out and knelt beside the wounded man. The ground is
-very hard, you see, and there are no marks to guide us." As he spoke two
-men came down the garden path, from round the angle of the house. The
-one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
-other a dashing young fellow, whose bright, smiling expression and showy
-dress were in strange contract with the business which had brought us
-there.
-
-"Still at it, then?" said he to Holmes. "I thought you Londoners were
-never at fault. You don't seem to be so very quick, after all."
-
-"Ah, you must give us a little time," said Holmes good-humoredly.
-
-"You'll want it," said young Alec Cunningham. "Why, I don't see that we
-have any clue at all."
-
-"There's only one," answered the Inspector. "We thought that if we could
-only find--Good heavens, Mr. Holmes! What is the matter?"
-
-My poor friend's face had suddenly assumed the most dreadful expression.
-His eyes rolled upwards, his features writhed in agony, and with a
-suppressed groan he dropped on his face upon the ground. Horrified
-at the suddenness and severity of the attack, we carried him into the
-kitchen, where he lay back in a large chair, and breathed heavily for
-some minutes. Finally, with a shamefaced apology for his weakness, he
-rose once more.
-
-"Watson would tell you that I have only just recovered from a severe
-illness," he explained. "I am liable to these sudden nervous attacks."
-
-"Shall I send you home in my trap?" asked old Cunningham.
-
-"Well, since I am here, there is one point on which I should like to
-feel sure. We can very easily verify it."
-
-"What was it?"
-
-"Well, it seems to me that it is just possible that the arrival of
-this poor fellow William was not before, but after, the entrance of
-the burglary into the house. You appear to take it for granted that,
-although the door was forced, the robber never got in."
-
-"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
-son Alec had not yet gone to bed, and he would certainly have heard any
-one moving about."
-
-"Where was he sitting?"
-
-"I was smoking in my dressing-room."
-
-"Which window is that?"
-
-"The last on the left next my father's."
-
-"Both of your lamps were lit, of course?"
-
-"Undoubtedly."
-
-"There are some very singular points here," said Holmes, smiling. "Is
-it not extraordinary that a burglary--and a burglar who had had some
-previous experience--should deliberately break into a house at a time
-when he could see from the lights that two of the family were still
-afoot?"
-
-"He must have been a cool hand."
-
-"Well, of course, if the case were not an odd one we should not have
-been driven to ask you for an explanation," said young Mr. Alec. "But as
-to your ideas that the man had robbed the house before William tackled
-him, I think it a most absurd notion. Wouldn't we have found the place
-disarranged, and missed the things which he had taken?"
-
-"It depends on what the things were," said Holmes. "You must remember
-that we are dealing with a burglar who is a very peculiar fellow, and
-who appears to work on lines of his own. Look, for example, at the
-queer lot of things which he took from Acton's--what was it?--a ball of
-string, a letter-weight, and I don't know what other odds and ends."
-
-"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
-"Anything which you or the Inspector may suggest will most certainly be
-done."
-
-"In the first place," said Holmes, "I should like you to offer a
-reward--coming from yourself, for the officials may take a little time
-before they would agree upon the sum, and these things cannot be done
-too promptly. I have jotted down the form here, if you would not mind
-signing it. Fifty pounds was quite enough, I thought."
-
-"I would willingly give five hundred," said the J.P., taking the slip
-of paper and the pencil which Holmes handed to him. "This is not quite
-correct, however," he added, glancing over the document.
-
-"I wrote it rather hurriedly."
-
-"You see you begin, 'Whereas, at about a quarter to one on Tuesday
-morning an attempt was made,' and so on. It was at a quarter to twelve,
-as a matter of fact."
-
-I was pained at the mistake, for I knew how keenly Holmes would feel any
-slip of the kind. It was his specialty to be accurate as to fact, but
-his recent illness had shaken him, and this one little incident was
-enough to show me that he was still far from being himself. He was
-obviously embarrassed for an instant, while the Inspector raised his
-eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
-corrected the mistake, however, and handed the paper back to Holmes.
-
-"Get it printed as soon as possible," he said; "I think your idea is an
-excellent one."
-
-Holmes put the slip of paper carefully away into his pocket-book.
-
-"And now," said he, "it really would be a good thing that we should all
-go over the house together and make certain that this rather erratic
-burglar did not, after all, carry anything away with him."
-
-Before entering, Holmes made an examination of the door which had been
-forced. It was evident that a chisel or strong knife had been thrust
-in, and the lock forced back with it. We could see the marks in the wood
-where it had been pushed in.
-
-"You don't use bars, then?" he asked.
-
-"We have never found it necessary."
-
-"You don't keep a dog?"
-
-"Yes, but he is chained on the other side of the house."
-
-"When do the servants go to bed?"
-
-"About ten."
-
-"I understand that William was usually in bed also at that hour."
-
-"Yes."
-
-"It is singular that on this particular night he should have been up.
-Now, I should be very glad if you would have the kindness to show us
-over the house, Mr. Cunningham."
-
-A stone-flagged passage, with the kitchens branching away from it, led
-by a wooden staircase directly to the first floor of the house. It came
-out upon the landing opposite to a second more ornamental stair which
-came up from the front hall. Out of this landing opened the drawing-room
-and several bedrooms, including those of Mr. Cunningham and his son.
-Holmes walked slowly, taking keen note of the architecture of the house.
-I could tell from his expression that he was on a hot scent, and yet
-I could not in the least imagine in what direction his inferences were
-leading him.
-
-"My good sir," said Mr. Cunningham with some impatience, "this is surely
-very unnecessary. That is my room at the end of the stairs, and my
-son's is the one beyond it. I leave it to your judgment whether it was
-possible for the thief to have come up here without disturbing us."
-
-"You must try round and get on a fresh scent, I fancy," said the son
-with a rather malicious smile.
-
-"Still, I must ask you to humor me a little further. I should like, for
-example, to see how far the windows of the bedrooms command the front.
-This, I understand is your son's room"--he pushed open the door--"and
-that, I presume, is the dressing-room in which he sat smoking when the
-alarm was given. Where does the window of that look out to?" He stepped
-across the bedroom, pushed open the door, and glanced round the other
-chamber.
-
-"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
-
-"Thank you, I think I have seen all that I wished."
-
-"Then if it is really necessary we can go into my room."
-
-"If it is not too much trouble."
-
-The J. P. shrugged his shoulders, and led the way into his own chamber,
-which was a plainly furnished and commonplace room. As we moved across
-it in the direction of the window, Holmes fell back until he and I were
-the last of the group. Near the foot of the bed stood a dish of oranges
-and a carafe of water. As we passed it Holmes, to my unutterable
-astonishment, leaned over in front of me and deliberately knocked the
-whole thing over. The glass smashed into a thousand pieces and the fruit
-rolled about into every corner of the room.
-
-"You've done it now, Watson," said he, coolly. "A pretty mess you've
-made of the carpet."
-
-I stooped in some confusion and began to pick up the fruit,
-understanding for some reason my companion desired me to take the blame
-upon myself. The others did the same, and set the table on its legs
-again.
-
-"Hullo!" cried the Inspector, "where's he got to?"
-
-Holmes had disappeared.
-
-"Wait here an instant," said young Alec Cunningham. "The fellow is off
-his head, in my opinion. Come with me, father, and see where he has got
-to!"
-
-They rushed out of the room, leaving the Inspector, the Colonel, and me
-staring at each other.
-
-"'Pon my word, I am inclined to agree with Master Alec," said the
-official. "It may be the effect of this illness, but it seems to me
-that--"
-
-His words were cut short by a sudden scream of "Help! Help! Murder!"
-With a thrill I recognized the voice of that of my friend. I rushed
-madly from the room on to the landing. The cries, which had sunk down
-into a hoarse, inarticulate shouting, came from the room which we had
-first visited. I dashed in, and on into the dressing-room beyond. The
-two Cunninghams were bending over the prostrate figure of Sherlock
-Holmes, the younger clutching his throat with both hands, while the
-elder seemed to be twisting one of his wrists. In an instant the three
-of us had torn them away from him, and Holmes staggered to his feet,
-very pale and evidently greatly exhausted.
-
-"Arrest these men, Inspector," he gasped.
-
-"On what charge?"
-
-"That of murdering their coachman, William Kirwan."
-
-The Inspector stared about him in bewilderment. "Oh, come now, Mr.
-Holmes," said he at last, "I'm sure you don't really mean to--"
-
-"Tut, man, look at their faces!" cried Holmes, curtly.
-
-Never certainly have I seen a plainer confession of guilt upon human
-countenances. The older man seemed numbed and dazed with a heavy, sullen
-expression upon his strongly-marked face. The son, on the other hand,
-had dropped all that jaunty, dashing style which had characterized him,
-and the ferocity of a dangerous wild beast gleamed in his dark eyes
-and distorted his handsome features. The Inspector said nothing, but,
-stepping to the door, he blew his whistle. Two of his constables came at
-the call.
-
-"I have no alternative, Mr. Cunningham," said he. "I trust that this may
-all prove to be an absurd mistake, but you can see that--Ah, would you?
-Drop it!" He struck out with his hand, and a revolver which the younger
-man was in the act of cocking clattered down upon the floor.
-
-"Keep that," said Holmes, quietly putting his foot upon it; "you will
-find it useful at the trial. But this is what we really wanted." He held
-up a little crumpled piece of paper.
-
-"The remainder of the sheet!" cried the Inspector.
-
-"Precisely."
-
-"And where was it?"
-
-"Where I was sure it must be. I'll make the whole matter clear to you
-presently. I think, Colonel, that you and Watson might return now, and
-I will be with you again in an hour at the furthest. The Inspector and I
-must have a word with the prisoners, but you will certainly see me back
-at luncheon time."
-
-
-Sherlock Holmes was as good as his word, for about one o'clock he
-rejoined us in the Colonel's smoking-room. He was accompanied by a
-little elderly gentleman, who was introduced to me as the Mr. Acton
-whose house had been the scene of the original burglary.
-
-"I wished Mr. Acton to be present while I demonstrated this small matter
-to you," said Holmes, "for it is natural that he should take a keen
-interest in the details. I am afraid, my dear Colonel, that you must
-regret the hour that you took in such a stormy petrel as I am."
-
-"On the contrary," answered the Colonel, warmly, "I consider it the
-greatest privilege to have been permitted to study your methods of
-working. I confess that they quite surpass my expectations, and that I
-am utterly unable to account for your result. I have not yet seen the
-vestige of a clue."
-
-"I am afraid that my explanation may disillusion you but it has always
-been my habit to hide none of my methods, either from my friend Watson
-or from any one who might take an intelligent interest in them. But,
-first, as I am rather shaken by the knocking about which I had in
-the dressing-room, I think that I shall help myself to a dash of your
-brandy, Colonel. My strength had been rather tried of late."
-
-"I trust that you had no more of those nervous attacks."
-
-Sherlock Holmes laughed heartily. "We will come to that in its turn,"
-said he. "I will lay an account of the case before you in its due order,
-showing you the various points which guided me in my decision. Pray
-interrupt me if there is any inference which is not perfectly clear to
-you.
-
-"It is of the highest importance in the art of detection to be able
-to recognize, out of a number of facts, which are incidental and which
-vital. Otherwise your energy and attention must be dissipated instead of
-being concentrated. Now, in this case there was not the slightest doubt
-in my mind from the first that the key of the whole matter must be
-looked for in the scrap of paper in the dead man's hand.
-
-"Before going into this, I would draw your attention to the fact that,
-if Alec Cunningham's narrative was correct, and if the assailant, after
-shooting William Kirwan, had instantly fled, then it obviously could not
-be he who tore the paper from the dead man's hand. But if it was not he,
-it must have been Alec Cunningham himself, for by the time that the old
-man had descended several servants were upon the scene. The point is a
-simple one, but the Inspector had overlooked it because he had started
-with the supposition that these county magnates had had nothing to do
-with the matter. Now, I make a point of never having any prejudices,
-and of following docilely wherever fact may lead me, and so, in the
-very first stage of the investigation, I found myself looking a little
-askance at the part which had been played by Mr. Alec Cunningham.
-
-"And now I made a very careful examination of the corner of paper which
-the Inspector had submitted to us. It was at once clear to me that it
-formed part of a very remarkable document. Here it is. Do you not now
-observe something very suggestive about it?"
-
-"It has a very irregular look," said the Colonel.
-
-"My dear sir," cried Holmes, "there cannot be the least doubt in the
-world that it has been written by two persons doing alternate words.
-When I draw your attention to the strong t's of 'at' and 'to', and ask
-you to compare them with the weak ones of 'quarter' and 'twelve,' you
-will instantly recognize the fact. A very brief analysis of these
-four words would enable you to say with the utmost confidence that the
-'learn' and the 'maybe' are written in the stronger hand, and the 'what'
-in the weaker."
-
-"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
-two men write a letter in such a fashion?"
-
-"Obviously the business was a bad one, and one of the men who distrusted
-the other was determined that, whatever was done, each should have an
-equal hand in it. Now, of the two men, it is clear that the one who
-wrote the 'at' and 'to' was the ringleader."
-
-"How do you get at that?"
-
-"We might deduce it from the mere character of the one hand as compared
-with the other. But we have more assured reasons than that for supposing
-it. If you examine this scrap with attention you will come to the
-conclusion that the man with the stronger hand wrote all his words
-first, leaving blanks for the other to fill up. These blanks were not
-always sufficient, and you can see that the second man had a squeeze
-to fit his 'quarter' in between the 'at' and the 'to,' showing that the
-latter were already written. The man who wrote all his words first is
-undoubtedly the man who planned the affair."
-
-"Excellent!" cried Mr. Acton.
-
-"But very superficial," said Holmes. "We come now, however, to a point
-which is of importance. You may not be aware that the deduction of a
-man's age from his writing is one which has brought to considerable
-accuracy by experts. In normal cases one can place a man in his true
-decade with tolerable confidence. I say normal cases, because ill-health
-and physical weakness reproduce the signs of old age, even when the
-invalid is a youth. In this case, looking at the bold, strong hand of
-the one, and the rather broken-backed appearance of the other, which
-still retains its legibility although the t's have begun to lose their
-crossing, we can say that the one was a young man and the other was
-advanced in years without being positively decrepit."
-
-"Excellent!" cried Mr. Acton again.
-
-"There is a further point, however, which is subtler and of greater
-interest. There is something in common between these hands. They belong
-to men who are blood-relatives. It may be most obvious to you in the
-Greek e's, but to me there are many small points which indicate the same
-thing. I have no doubt at all that a family mannerism can be traced in
-these two specimens of writing. I am only, of course, giving you
-the leading results now of my examination of the paper. There were
-twenty-three other deductions which would be of more interest to experts
-than to you. They all tend to deepen the impression upon my mind that
-the Cunninghams, father and son, had written this letter.
-
-"Having got so far, my next step was, of course, to examine into the
-details of the crime, and to see how far they would help us. I went up
-to the house with the Inspector, and saw all that was to be seen. The
-wound upon the dead man was, as I was able to determine with absolute
-confidence, fired from a revolver at the distance of something over
-four yards. There was no powder-blackening on the clothes. Evidently,
-therefore, Alec Cunningham had lied when he said that the two men were
-struggling when the shot was fired. Again, both father and son agreed
-as to the place where the man escaped into the road. At that point,
-however, as it happens, there is a broadish ditch, moist at the bottom.
-As there were no indications of bootmarks about this ditch, I was
-absolutely sure not only that the Cunninghams had again lied, but that
-there had never been any unknown man upon the scene at all.
-
-"And now I have to consider the motive of this singular crime. To get
-at this, I endeavored first of all to solve the reason of the original
-burglary at Mr. Acton's. I understood, from something which the Colonel
-told us, that a lawsuit had been going on between you, Mr. Acton, and
-the Cunninghams. Of course, it instantly occurred to me that they had
-broken into your library with the intention of getting at some document
-which might be of importance in the case."
-
-"Precisely so," said Mr. Acton. "There can be no possible doubt as to
-their intentions. I have the clearest claim upon half of their present
-estate, and if they could have found a single paper--which, fortunately,
-was in the strong-box of my solicitors--they would undoubtedly have
-crippled our case."
-
-"There you are," said Holmes, smiling. "It was a dangerous, reckless
-attempt, in which I seem to trace the influence of young Alec. Having
-found nothing they tried to divert suspicion by making it appear to be
-an ordinary burglary, to which end they carried off whatever they could
-lay their hands upon. That is all clear enough, but there was much that
-was still obscure. What I wanted above all was to get the missing part
-of that note. I was certain that Alec had torn it out of the dead man's
-hand, and almost certain that he must have thrust it into the pocket of
-his dressing-gown. Where else could he have put it? The only question
-was whether it was still there. It was worth an effort to find out, and
-for that object we all went up to the house.
-
-"The Cunninghams joined us, as you doubtless remember, outside the
-kitchen door. It was, of course, of the very first importance that they
-should not be reminded of the existence of this paper, otherwise they
-would naturally destroy it without delay. The Inspector was about to
-tell them the importance which we attached to it when, by the luckiest
-chance in the world, I tumbled down in a sort of fit and so changed the
-conversation.
-
-"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
-sympathy was wasted and your fit an imposture?"
-
-"Speaking professionally, it was admirably done," cried I, looking in
-amazement at this man who was forever confounding me with some new phase
-of his astuteness.
-
-"It is an art which is often useful," said he. "When I recovered I
-managed, by a device which had perhaps some little merit of ingenuity,
-to get old Cunningham to write the word 'twelve,' so that I might
-compare it with the 'twelve' upon the paper."
-
-"Oh, what an ass I have been!" I exclaimed.
-
-"I could see that you were commiserating me over my weakness," said
-Holmes, laughing. "I was sorry to cause you the sympathetic pain which
-I know that you felt. We then went upstairs together, and having entered
-the room and seen the dressing-gown hanging up behind the door, I
-contrived, by upsetting a table, to engage their attention for the
-moment, and slipped back to examine the pockets. I had hardly got the
-paper, however--which was, as I had expected, in one of them--when the
-two Cunninghams were on me, and would, I verily believe, have murdered
-me then and there but for your prompt and friendly aid. As it is, I feel
-that young man's grip on my throat now, and the father has twisted my
-wrist round in the effort to get the paper out of my hand. They saw that
-I must know all about it, you see, and the sudden change from absolute
-security to complete despair made them perfectly desperate.
-
-"I had a little talk with old Cunningham afterwards as to the motive of
-the crime. He was tractable enough, though his son was a perfect demon,
-ready to blow out his own or anybody else's brains if he could have got
-to his revolver. When Cunningham saw that the case against him was so
-strong he lost all heart and made a clean breast of everything. It seems
-that William had secretly followed his two masters on the night when
-they made their raid upon Mr. Acton's, and having thus got them into
-his power, proceeded, under threats of exposure, to levy blackmail upon
-them. Mr. Alec, however, was a dangerous man to play games of that
-sort with. It was a stroke of positive genius on his part to see in the
-burglary scare which was convulsing the country side an opportunity of
-plausibly getting rid of the man whom he feared. William was decoyed up
-and shot, and had they only got the whole of the note and paid a little
-more attention to detail in the accessories, it is very possible that
-suspicion might never have been aroused."
-
-"And the note?" I asked.
-
-Sherlock Holmes placed the subjoined paper before us.
-
-     If you will only come around to the east gate you it will
-     very much surprise you and be of the greatest service to you
-     and also to Annie Morrison. But say nothing to anyone upon
-     the matter.
-
-"It is very much the sort of thing that I expected," said he. "Of
-course, we do not yet know what the relations may have been between Alec
-Cunningham, William Kirwan, and Annie Morrison. The results shows that
-the trap was skillfully baited. I am sure that you cannot fail to be
-delighted with the traces of heredity shown in the p's and in the tails
-of the g's. The absence of the i-dots in the old man's writing is also
-most characteristic. Watson, I think our quiet rest in the country has
-been a distinct success, and I shall certainly return much invigorated
-to Baker Street to-morrow."
-
-
-
-
-Adventure VII. The Crooked Man
-
-
-One summer night, a few months after my marriage, I was seated by my own
-hearth smoking a last pipe and nodding over a novel, for my day's work
-had been an exhausting one. My wife had already gone upstairs, and the
-sound of the locking of the hall door some time before told me that the
-servants had also retired. I had risen from my seat and was knocking out
-the ashes of my pipe when I suddenly heard the clang of the bell.
-
-I looked at the clock. It was a quarter to twelve. This could not be
-a visitor at so late an hour. A patient, evidently, and possibly an
-all-night sitting. With a wry face I went out into the hall and opened
-the door. To my astonishment it was Sherlock Holmes who stood upon my
-step.
-
-"Ah, Watson," said he, "I hoped that I might not be too late to catch
-you."
-
-"My dear fellow, pray come in."
-
-"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
-still smoke the Arcadia mixture of your bachelor days then! There's no
-mistaking that fluffy ash upon your coat. It's easy to tell that you
-have been accustomed to wear a uniform, Watson. You'll never pass as
-a pure-bred civilian as long as you keep that habit of carrying your
-handkerchief in your sleeve. Could you put me up to-night?"
-
-"With pleasure."
-
-"You told me that you had bachelor quarters for one, and I see that you
-have no gentleman visitor at present. Your hat-stand proclaims as much."
-
-"I shall be delighted if you will stay."
-
-"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
-the British workman in the house. He's a token of evil. Not the drains,
-I hope?"
-
-"No, the gas."
-
-"Ah! He has left two nail-marks from his boot upon your linoleum
-just where the light strikes it. No, thank you, I had some supper at
-Waterloo, but I'll smoke a pipe with you with pleasure."
-
-I handed him my pouch, and he seated himself opposite to me and smoked
-for some time in silence. I was well aware that nothing but business
-of importance would have brought him to me at such an hour, so I waited
-patiently until he should come round to it.
-
-"I see that you are professionally rather busy just now," said he,
-glancing very keenly across at me.
-
-"Yes, I've had a busy day," I answered. "It may seem very foolish in
-your eyes," I added, "but really I don't know how you deduced it."
-
-Holmes chuckled to himself.
-
-"I have the advantage of knowing your habits, my dear Watson," said he.
-"When your round is a short one you walk, and when it is a long one you
-use a hansom. As I perceive that your boots, although used, are by
-no means dirty, I cannot doubt that you are at present busy enough to
-justify the hansom."
-
-"Excellent!" I cried.
-
-"Elementary," said he. "It is one of those instances where the reasoner
-can produce an effect which seems remarkable to his neighbor, because
-the latter has missed the one little point which is the basis of the
-deduction. The same may be said, my dear fellow, for the effect of
-some of these little sketches of yours, which is entirely meretricious,
-depending as it does upon your retaining in your own hands some factors
-in the problem which are never imparted to the reader. Now, at present
-I am in the position of these same readers, for I hold in this hand
-several threads of one of the strangest cases which ever perplexed a
-man's brain, and yet I lack the one or two which are needful to complete
-my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
-and a slight flush sprang into his thin cheeks. For an instant only.
-When I glanced again his face had resumed that red-Indian composure
-which had made so many regard him as a machine rather than a man.
-
-"The problem presents features of interest," said he. "I may even say
-exceptional features of interest. I have already looked into the matter,
-and have come, as I think, within sight of my solution. If you could
-accompany me in that last step you might be of considerable service to
-me."
-
-"I should be delighted."
-
-"Could you go as far as Aldershot to-morrow?"
-
-"I have no doubt Jackson would take my practice."
-
-"Very good. I want to start by the 11.10 from Waterloo."
-
-"That would give me time."
-
-"Then, if you are not too sleepy, I will give you a sketch of what has
-happened, and of what remains to be done."
-
-"I was sleepy before you came. I am quite wakeful now."
-
-"I will compress the story as far as may be done without omitting
-anything vital to the case. It is conceivable that you may even have
-read some account of the matter. It is the supposed murder of Colonel
-Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
-
-"I have heard nothing of it."
-
-"It has not excited much attention yet, except locally. The facts are
-only two days old. Briefly they are these:
-
-"The Royal Munsters is, as you know, one of the most famous Irish
-regiments in the British army. It did wonders both in the Crimea and the
-Mutiny, and has since that time distinguished itself upon every possible
-occasion. It was commanded up to Monday night by James Barclay,
-a gallant veteran, who started as a full private, was raised to
-commissioned rank for his bravery at the time of the Mutiny, and so
-lived to command the regiment in which he had once carried a musket.
-
-"Colonel Barclay had married at the time when he was a sergeant, and
-his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
-former color-sergeant in the same corps. There was, therefore, as can
-be imagined, some little social friction when the young couple (for
-they were still young) found themselves in their new surroundings. They
-appear, however, to have quickly adapted themselves, and Mrs. Barclay
-has always, I understand, been as popular with the ladies of the
-regiment as her husband was with his brother officers. I may add that
-she was a woman of great beauty, and that even now, when she has been
-married for upwards of thirty years, she is still of a striking and
-queenly appearance.
-
-"Colonel Barclay's family life appears to have been a uniformly happy
-one. Major Murphy, to whom I owe most of my facts, assures me that he
-has never heard of any misunderstanding between the pair. On the whole,
-he thinks that Barclay's devotion to his wife was greater than his
-wife's to Barclay. He was acutely uneasy if he were absent from her for
-a day. She, on the other hand, though devoted and faithful, was less
-obtrusively affectionate. But they were regarded in the regiment as
-the very model of a middle-aged couple. There was absolutely nothing in
-their mutual relations to prepare people for the tragedy which was to
-follow.
-
-"Colonel Barclay himself seems to have had some singular traits in his
-character. He was a dashing, jovial old soldier in his usual mood,
-but there were occasions on which he seemed to show himself capable
-of considerable violence and vindictiveness. This side of his nature,
-however, appears never to have been turned towards his wife. Another
-fact, which had struck Major Murphy and three out of five of the other
-officers with whom I conversed, was the singular sort of depression
-which came upon him at times. As the major expressed it, the smile had
-often been struck from his mouth, as if by some invisible hand, when he
-has been joining the gayeties and chaff of the mess-table. For days on
-end, when the mood was on him, he has been sunk in the deepest gloom.
-This and a certain tinge of superstition were the only unusual traits
-in his character which his brother officers had observed. The latter
-peculiarity took the form of a dislike to being left alone, especially
-after dark. This puerile feature in a nature which was conspicuously
-manly had often given rise to comment and conjecture.
-
-"The first battalion of the Royal Munsters (which is the old 117th) has
-been stationed at Aldershot for some years. The married officers live
-out of barracks, and the Colonel has during all this time occupied a
-villa called Lachine, about half a mile from the north camp. The house
-stands in its own grounds, but the west side of it is not more than
-thirty yards from the high-road. A coachman and two maids form the
-staff of servants. These with their master and mistress were the sole
-occupants of Lachine, for the Barclays had no children, nor was it usual
-for them to have resident visitors.
-
-"Now for the events at Lachine between nine and ten on the evening of
-last Monday."
-
-"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
-and had interested herself very much in the establishment of the Guild
-of St. George, which was formed in connection with the Watt Street
-Chapel for the purpose of supplying the poor with cast-off clothing.
-A meeting of the Guild had been held that evening at eight, and Mrs.
-Barclay had hurried over her dinner in order to be present at it. When
-leaving the house she was heard by the coachman to make some commonplace
-remark to her husband, and to assure him that she would be back before
-very long. She then called for Miss Morrison, a young lady who lives
-in the next villa, and the two went off together to their meeting. It
-lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
-home, having left Miss Morrison at her door as she passed.
-
-"There is a room which is used as a morning-room at Lachine. This faces
-the road and opens by a large glass folding-door on to the lawn. The
-lawn is thirty yards across, and is only divided from the highway by
-a low wall with an iron rail above it. It was into this room that Mrs.
-Barclay went upon her return. The blinds were not down, for the room was
-seldom used in the evening, but Mrs. Barclay herself lit the lamp and
-then rang the bell, asking Jane Stewart, the house-maid, to bring her
-a cup of tea, which was quite contrary to her usual habits. The Colonel
-had been sitting in the dining-room, but hearing that his wife had
-returned he joined her in the morning-room. The coachman saw him cross
-the hall and enter it. He was never seen again alive.
-
-"The tea which had been ordered was brought up at the end of ten
-minutes; but the maid, as she approached the door, was surprised to
-hear the voices of her master and mistress in furious altercation. She
-knocked without receiving any answer, and even turned the handle, but
-only to find that the door was locked upon the inside. Naturally enough
-she ran down to tell the cook, and the two women with the coachman came
-up into the hall and listened to the dispute which was still raging.
-They all agreed that only two voices were to be heard, those of Barclay
-and of his wife. Barclay's remarks were subdued and abrupt, so that none
-of them were audible to the listeners. The lady's, on the other hand,
-were most bitter, and when she raised her voice could be plainly heard.
-'You coward!' she repeated over and over again. 'What can be done now?
-What can be done now? Give me back my life. I will never so much as
-breathe the same air with you again! You coward! You coward!' Those were
-scraps of her conversation, ending in a sudden dreadful cry in the man's
-voice, with a crash, and a piercing scream from the woman. Convinced
-that some tragedy had occurred, the coachman rushed to the door and
-strove to force it, while scream after scream issued from within. He was
-unable, however, to make his way in, and the maids were too distracted
-with fear to be of any assistance to him. A sudden thought struck him,
-however, and he ran through the hall door and round to the lawn upon
-which the long French windows open. One side of the window was open,
-which I understand was quite usual in the summer-time, and he passed
-without difficulty into the room. His mistress had ceased to scream and
-was stretched insensible upon a couch, while with his feet tilted over
-the side of an arm-chair, and his head upon the ground near the corner
-of the fender, was lying the unfortunate soldier stone dead in a pool of
-his own blood.
-
-"Naturally, the coachman's first thought, on finding that he could do
-nothing for his master, was to open the door. But here an unexpected and
-singular difficulty presented itself. The key was not in the inner side
-of the door, nor could he find it anywhere in the room. He went out
-again, therefore, through the window, and having obtained the help of
-a policeman and of a medical man, he returned. The lady, against whom
-naturally the strongest suspicion rested, was removed to her room, still
-in a state of insensibility. The Colonel's body was then placed upon the
-sofa, and a careful examination made of the scene of the tragedy.
-
-"The injury from which the unfortunate veteran was suffering was found
-to be a jagged cut some two inches long at the back part of his head,
-which had evidently been caused by a violent blow from a blunt weapon.
-Nor was it difficult to guess what that weapon may have been. Upon the
-floor, close to the body, was lying a singular club of hard carved wood
-with a bone handle. The Colonel possessed a varied collection of weapons
-brought from the different countries in which he had fought, and it
-is conjectured by the police that his club was among his trophies. The
-servants deny having seen it before, but among the numerous curiosities
-in the house it is possible that it may have been overlooked. Nothing
-else of importance was discovered in the room by the police, save the
-inexplicable fact that neither upon Mrs. Barclay's person nor upon that
-of the victim nor in any part of the room was the missing key to
-be found. The door had eventually to be opened by a locksmith from
-Aldershot.
-
-"That was the state of things, Watson, when upon the Tuesday morning I,
-at the request of Major Murphy, went down to Aldershot to supplement
-the efforts of the police. I think that you will acknowledge that the
-problem was already one of interest, but my observations soon made me
-realize that it was in truth much more extraordinary than would at first
-sight appear.
-
-"Before examining the room I cross-questioned the servants, but only
-succeeded in eliciting the facts which I have already stated. One other
-detail of interest was remembered by Jane Stewart, the housemaid. You
-will remember that on hearing the sound of the quarrel she descended and
-returned with the other servants. On that first occasion, when she was
-alone, she says that the voices of her master and mistress were sunk
-so low that she could hear hardly anything, and judged by their tones
-rather than their words that they had fallen out. On my pressing her,
-however, she remembered that she heard the word David uttered twice by
-the lady. The point is of the utmost importance as guiding us towards
-the reason of the sudden quarrel. The Colonel's name, you remember, was
-James.
-
-"There was one thing in the case which had made the deepest impression
-both upon the servants and the police. This was the contortion of the
-Colonel's face. It had set, according to their account, into the most
-dreadful expression of fear and horror which a human countenance is
-capable of assuming. More than one person fainted at the mere sight
-of him, so terrible was the effect. It was quite certain that he had
-foreseen his fate, and that it had caused him the utmost horror. This,
-of course, fitted in well enough with the police theory, if the Colonel
-could have seen his wife making a murderous attack upon him. Nor was
-the fact of the wound being on the back of his head a fatal objection to
-this, as he might have turned to avoid the blow. No information could
-be got from the lady herself, who was temporarily insane from an acute
-attack of brain-fever.
-
-"From the police I learned that Miss Morrison, who you remember went out
-that evening with Mrs. Barclay, denied having any knowledge of what it
-was which had caused the ill-humor in which her companion had returned.
-
-"Having gathered these facts, Watson, I smoked several pipes over them,
-trying to separate those which were crucial from others which were
-merely incidental. There could be no question that the most distinctive
-and suggestive point in the case was the singular disappearance of the
-door-key. A most careful search had failed to discover it in the room.
-Therefore it must have been taken from it. But neither the Colonel
-nor the Colonel's wife could have taken it. That was perfectly clear.
-Therefore a third person must have entered the room. And that third
-person could only have come in through the window. It seemed to me that
-a careful examination of the room and the lawn might possibly reveal
-some traces of this mysterious individual. You know my methods, Watson.
-There was not one of them which I did not apply to the inquiry. And it
-ended by my discovering traces, but very different ones from those which
-I had expected. There had been a man in the room, and he had crossed
-the lawn coming from the road. I was able to obtain five very clear
-impressions of his foot-marks: one in the roadway itself, at the point
-where he had climbed the low wall, two on the lawn, and two very faint
-ones upon the stained boards near the window where he had entered.
-He had apparently rushed across the lawn, for his toe-marks were much
-deeper than his heels. But it was not the man who surprised me. It was
-his companion."
-
-"His companion!"
-
-Holmes pulled a large sheet of tissue-paper out of his pocket and
-carefully unfolded it upon his knee.
-
-"What do you make of that?" he asked.
-
-The paper was covered with he tracings of the foot-marks of some small
-animal. It had five well-marked foot-pads, an indication of long nails,
-and the whole print might be nearly as large as a dessert-spoon.
-
-"It's a dog," said I.
-
-"Did you ever hear of a dog running up a curtain? I found distinct
-traces that this creature had done so."
-
-"A monkey, then?"
-
-"But it is not the print of a monkey."
-
-"What can it be, then?"
-
-"Neither dog nor cat nor monkey nor any creature that we are familiar
-with. I have tried to reconstruct it from the measurements. Here are
-four prints where the beast has been standing motionless. You see that
-it is no less than fifteen inches from fore-foot to hind. Add to that
-the length of neck and head, and you get a creature not much less than
-two feet long--probably more if there is any tail. But now observe this
-other measurement. The animal has been moving, and we have the length
-of its stride. In each case it is only about three inches. You have an
-indication, you see, of a long body with very short legs attached to it.
-It has not been considerate enough to leave any of its hair behind it.
-But its general shape must be what I have indicated, and it can run up a
-curtain, and it is carnivorous."
-
-"How do you deduce that?"
-
-"Because it ran up the curtain. A canary's cage was hanging in the
-window, and its aim seems to have been to get at the bird."
-
-"Then what was the beast?"
-
-"Ah, if I could give it a name it might go a long way towards solving
-the case. On the whole, it was probably some creature of the weasel and
-stoat tribe--and yet it is larger than any of these that I have seen."
-
-"But what had it to do with the crime?"
-
-"That, also, is still obscure. But we have learned a good deal, you
-perceive. We know that a man stood in the road looking at the quarrel
-between the Barclays--the blinds were up and the room lighted. We know,
-also, that he ran across the lawn, entered the room, accompanied by a
-strange animal, and that he either struck the Colonel or, as is equally
-possible, that the Colonel fell down from sheer fright at the sight of
-him, and cut his head on the corner of the fender. Finally, we have the
-curious fact that the intruder carried away the key with him when he
-left."
-
-"Your discoveries seem to have left the business more obscure that it
-was before," said I.
-
-"Quite so. They undoubtedly showed that the affair was much deeper than
-was at first conjectured. I thought the matter over, and I came to
-the conclusion that I must approach the case from another aspect. But
-really, Watson, I am keeping you up, and I might just as well tell you
-all this on our way to Aldershot to-morrow."
-
-"Thank you, you have gone rather too far to stop."
-
-"It is quite certain that when Mrs. Barclay left the house at half-past
-seven she was on good terms with her husband. She was never, as I think
-I have said, ostentatiously affectionate, but she was heard by the
-coachman chatting with the Colonel in a friendly fashion. Now, it was
-equally certain that, immediately on her return, she had gone to the
-room in which she was least likely to see her husband, had flown to tea
-as an agitated woman will, and finally, on his coming in to her, had
-broken into violent recriminations. Therefore something had occurred
-between seven-thirty and nine o'clock which had completely altered her
-feelings towards him. But Miss Morrison had been with her during the
-whole of that hour and a half. It was absolutely certain, therefore, in
-spite of her denial, that she must know something of the matter.
-
-"My first conjecture was, that possibly there had been some passages
-between this young lady and the old soldier, which the former had now
-confessed to the wife. That would account for the angry return, and
-also for the girl's denial that anything had occurred. Nor would it be
-entirely incompatible with most of the words overhead. But there was the
-reference to David, and there was the known affection of the Colonel for
-his wife, to weigh against it, to say nothing of the tragic intrusion
-of this other man, which might, of course, be entirely disconnected with
-what had gone before. It was not easy to pick one's steps, but, on the
-whole, I was inclined to dismiss the idea that there had been anything
-between the Colonel and Miss Morrison, but more than ever convinced that
-the young lady held the clue as to what it was which had turned Mrs.
-Barclay to hatred of her husband. I took the obvious course, therefore,
-of calling upon Miss M., of explaining to her that I was perfectly
-certain that she held the facts in her possession, and of assuring her
-that her friend, Mrs. Barclay, might find herself in the dock upon a
-capital charge unless the matter were cleared up.
-
-"Miss Morrison is a little ethereal slip of a girl, with timid eyes
-and blond hair, but I found her by no means wanting in shrewdness and
-common-sense. She sat thinking for some time after I had spoken, and
-then, turning to me with a brisk air of resolution, she broke into a
-remarkable statement which I will condense for your benefit.
-
-"'I promised my friend that I would say nothing of the matter, and a
-promise is a promise,' said she; 'but if I can really help her when
-so serious a charge is laid against her, and when her own mouth, poor
-darling, is closed by illness, then I think I am absolved from my
-promise. I will tell you exactly what happened upon Monday evening.
-
-"'We were returning from the Watt Street Mission about a quarter to nine
-o'clock. On our way we had to pass through Hudson Street, which is
-a very quiet thoroughfare. There is only one lamp in it, upon the
-left-hand side, and as we approached this lamp I saw a man coming
-towards us with his back very bent, and something like a box slung over
-one of his shoulders. He appeared to be deformed, for he carried his
-head low and walked with his knees bent. We were passing him when he
-raised his face to look at us in the circle of light thrown by the lamp,
-and as he did so he stopped and screamed out in a dreadful voice, "My
-God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
-fallen down had the dreadful-looking creature not caught hold of her. I
-was going to call for the police, but she, to my surprise, spoke quite
-civilly to the fellow.
-
-"'"I thought you had been dead this thirty years, Henry," said she, in a
-shaking voice.
-
-"'"So I have," said he, and it was awful to hear the tones that he said
-it in. He had a very dark, fearsome face, and a gleam in his eyes that
-comes back to me in my dreams. His hair and whiskers were shot with
-gray, and his face was all crinkled and puckered like a withered apple.
-
-"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
-a word with this man. There is nothing to be afraid of." She tried to
-speak boldly, but she was still deadly pale and could hardly get her
-words out for the trembling of her lips.
-
-"'I did as she asked me, and they talked together for a few minutes.
-Then she came down the street with her eyes blazing, and I saw the
-crippled wretch standing by the lamp-post and shaking his clenched fists
-in the air as if he were mad with rage. She never said a word until we
-were at the door here, when she took me by the hand and begged me to
-tell no one what had happened.
-
-"'"It's an old acquaintance of mine who has come down in the world,"
-said she. When I promised her I would say nothing she kissed me, and I
-have never seen her since. I have told you now the whole truth, and if
-I withheld it from the police it is because I did not realize then the
-danger in which my dear friend stood. I know that it can only be to her
-advantage that everything should be known.'
-
-"There was her statement, Watson, and to me, as you can imagine, it was
-like a light on a dark night. Everything which had been disconnected
-before began at once to assume its true place, and I had a shadowy
-presentiment of the whole sequence of events. My next step obviously was
-to find the man who had produced such a remarkable impression upon Mrs.
-Barclay. If he were still in Aldershot it should not be a very difficult
-matter. There are not such a very great number of civilians, and a
-deformed man was sure to have attracted attention. I spent a day in the
-search, and by evening--this very evening, Watson--I had run him down.
-The man's name is Henry Wood, and he lives in lodgings in this same
-street in which the ladies met him. He has only been five days in the
-place. In the character of a registration-agent I had a most interesting
-gossip with his landlady. The man is by trade a conjurer and performer,
-going round the canteens after nightfall, and giving a little
-entertainment at each. He carries some creature about with him in that
-box; about which the landlady seemed to be in considerable trepidation,
-for she had never seen an animal like it. He uses it in some of his
-tricks according to her account. So much the woman was able to tell me,
-and also that it was a wonder the man lived, seeing how twisted he was,
-and that he spoke in a strange tongue sometimes, and that for the last
-two nights she had heard him groaning and weeping in his bedroom. He
-was all right, as far as money went, but in his deposit he had given her
-what looked like a bad florin. She showed it to me, Watson, and it was
-an Indian rupee.
-
-"So now, my dear fellow, you see exactly how we stand and why it is I
-want you. It is perfectly plain that after the ladies parted from this
-man he followed them at a distance, that he saw the quarrel between
-husband and wife through the window, that he rushed in, and that
-the creature which he carried in his box got loose. That is all very
-certain. But he is the only person in this world who can tell us exactly
-what happened in that room."
-
-"And you intend to ask him?"
-
-"Most certainly--but in the presence of a witness."
-
-"And I am the witness?"
-
-"If you will be so good. If he can clear the matter up, well and good.
-If he refuses, we have no alternative but to apply for a warrant."
-
-"But how do you know he'll be there when we return?"
-
-"You may be sure that I took some precautions. I have one of my Baker
-Street boys mounting guard over him who would stick to him like a burr,
-go where he might. We shall find him in Hudson Street to-morrow, Watson,
-and meanwhile I should be the criminal myself if I kept you out of bed
-any longer."
-
-It was midday when we found ourselves at the scene of the tragedy, and,
-under my companion's guidance, we made our way at once to Hudson Street.
-In spite of his capacity for concealing his emotions, I could easily see
-that Holmes was in a state of suppressed excitement, while I was myself
-tingling with that half-sporting, half-intellectual pleasure which
-I invariably experienced when I associated myself with him in his
-investigations.
-
-"This is the street," said he, as we turned into a short thoroughfare
-lined with plain two-storied brick houses. "Ah, here is Simpson to
-report."
-
-"He's in all right, Mr. Holmes," cried a small street Arab, running up
-to us.
-
-"Good, Simpson!" said Holmes, patting him on the head. "Come along,
-Watson. This is the house." He sent in his card with a message that he
-had come on important business, and a moment later we were face to face
-with the man whom we had come to see. In spite of the warm weather he
-was crouching over a fire, and the little room was like an oven. The
-man sat all twisted and huddled in his chair in a way which gave an
-indescribably impression of deformity; but the face which he turned
-towards us, though worn and swarthy, must at some time have been
-remarkable for its beauty. He looked suspiciously at us now out of
-yellow-shot, bilious eyes, and, without speaking or rising, he waved
-towards two chairs.
-
-"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
-come over this little matter of Colonel Barclay's death."
-
-"What should I know about that?"
-
-"That's what I want to ascertain. You know, I suppose, that unless the
-matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
-in all probability be tried for murder."
-
-The man gave a violent start.
-
-"I don't know who you are," he cried, "nor how you come to know what you
-do know, but will you swear that this is true that you tell me?"
-
-"Why, they are only waiting for her to come to her senses to arrest
-her."
-
-"My God! Are you in the police yourself?"
-
-"No."
-
-"What business is it of yours, then?"
-
-"It's every man's business to see justice done."
-
-"You can take my word that she is innocent."
-
-"Then you are guilty."
-
-"No, I am not."
-
-"Who killed Colonel James Barclay, then?"
-
-"It was a just providence that killed him. But, mind you this, that if
-I had knocked his brains out, as it was in my heart to do, he would have
-had no more than his due from my hands. If his own guilty conscience had
-not struck him down it is likely enough that I might have had his blood
-upon my soul. You want me to tell the story. Well, I don't know why I
-shouldn't, for there's no cause for me to be ashamed of it.
-
-"It was in this way, sir. You see me now with my back like a camel and
-my ribs all awry, but there was a time when Corporal Henry Wood was the
-smartest man in the 117th foot. We were in India then, in cantonments,
-at a place we'll call Bhurtee. Barclay, who died the other day, was
-sergeant in the same company as myself, and the belle of the regiment,
-ay, and the finest girl that ever had the breath of life between her
-lips, was Nancy Devoy, the daughter of the color-sergeant. There were
-two men that loved her, and one that she loved, and you'll smile when
-you look at this poor thing huddled before the fire, and hear me say
-that it was for my good looks that she loved me.
-
-"Well, though I had her heart, her father was set upon her marrying
-Barclay. I was a harum-scarum, reckless lad, and he had had an
-education, and was already marked for the sword-belt. But the girl held
-true to me, and it seemed that I would have had her when the Mutiny
-broke out, and all hell was loose in the country.
-
-"We were shut up in Bhurtee, the regiment of us with half a battery of
-artillery, a company of Sikhs, and a lot of civilians and women-folk.
-There were ten thousand rebels round us, and they were as keen as a set
-of terriers round a rat-cage. About the second week of it our water gave
-out, and it was a question whether we could communicate with General
-Neill's column, which was moving up country. It was our only chance, for
-we could not hope to fight our way out with all the women and children,
-so I volunteered to go out and to warn General Neill of our danger. My
-offer was accepted, and I talked it over with Sergeant Barclay, who was
-supposed to know the ground better than any other man, and who drew up
-a route by which I might get through the rebel lines. At ten o'clock the
-same night I started off upon my journey. There were a thousand lives to
-save, but it was of only one that I was thinking when I dropped over the
-wall that night.
-
-"My way ran down a dried-up watercourse, which we hoped would screen
-me from the enemy's sentries; but as I crept round the corner of it
-I walked right into six of them, who were crouching down in the dark
-waiting for me. In an instant I was stunned with a blow and bound hand
-and foot. But the real blow was to my heart and not to my head, for as
-I came to and listened to as much as I could understand of their talk,
-I heard enough to tell me that my comrade, the very man who had arranged
-the way that I was to take, had betrayed me by means of a native servant
-into the hands of the enemy.
-
-"Well, there's no need for me to dwell on that part of it. You know now
-what James Barclay was capable of. Bhurtee was relieved by Neill next
-day, but the rebels took me away with them in their retreat, and it was
-many a long year before ever I saw a white face again. I was tortured
-and tried to get away, and was captured and tortured again. You can see
-for yourselves the state in which I was left. Some of them that fled
-into Nepaul took me with them, and then afterwards I was up past
-Darjeeling. The hill-folk up there murdered the rebels who had me, and
-I became their slave for a time until I escaped; but instead of going
-south I had to go north, until I found myself among the Afghans. There
-I wandered about for many a year, and at last came back to the Punjab,
-where I lived mostly among the natives and picked up a living by the
-conjuring tricks that I had learned. What use was it for me, a wretched
-cripple, to go back to England or to make myself known to my old
-comrades? Even my wish for revenge would not make me do that. I had
-rather that Nancy and my old pals should think of Harry Wood as having
-died with a straight back, than see him living and crawling with a stick
-like a chimpanzee. They never doubted that I was dead, and I meant that
-they never should. I heard that Barclay had married Nancy, and that he
-was rising rapidly in the regiment, but even that did not make me speak.
-
-"But when one gets old one has a longing for home. For years I've been
-dreaming of the bright green fields and the hedges of England. At last I
-determined to see them before I died. I saved enough to bring me across,
-and then I came here where the soldiers are, for I know their ways and
-how to amuse them and so earn enough to keep me."
-
-"Your narrative is most interesting," said Sherlock Holmes. "I have
-already heard of your meeting with Mrs. Barclay, and your mutual
-recognition. You then, as I understand, followed her home and saw
-through the window an altercation between her husband and her, in which
-she doubtless cast his conduct to you in his teeth. Your own feelings
-overcame you, and you ran across the lawn and broke in upon them."
-
-"I did, sir, and at the sight of me he looked as I have never seen a man
-look before, and over he went with his head on the fender. But he was
-dead before he fell. I read death on his face as plain as I can read
-that text over the fire. The bare sight of me was like a bullet through
-his guilty heart."
-
-"And then?"
-
-"Then Nancy fainted, and I caught up the key of the door from her hand,
-intending to unlock it and get help. But as I was doing it it seemed to
-me better to leave it alone and get away, for the thing might look black
-against me, and any way my secret would be out if I were taken. In my
-haste I thrust the key into my pocket, and dropped my stick while I was
-chasing Teddy, who had run up the curtain. When I got him into his box,
-from which he had slipped, I was off as fast as I could run."
-
-"Who's Teddy?" asked Holmes.
-
-The man leaned over and pulled up the front of a kind of hutch in
-the corner. In an instant out there slipped a beautiful reddish-brown
-creature, thin and lithe, with the legs of a stoat, a long, thin nose,
-and a pair of the finest red eyes that ever I saw in an animal's head.
-
-"It's a mongoose," I cried.
-
-"Well, some call them that, and some call them ichneumon," said the
-man. "Snake-catcher is what I call them, and Teddy is amazing quick on
-cobras. I have one here without the fangs, and Teddy catches it every
-night to please the folk in the canteen.
-
-"Any other point, sir?"
-
-"Well, we may have to apply to you again if Mrs. Barclay should prove to
-be in serious trouble."
-
-"In that case, of course, I'd come forward."
-
-"But if not, there is no object in raking up this scandal against a
-dead man, foully as he has acted. You have at least the satisfaction
-of knowing that for thirty years of his life his conscience bitterly
-reproached him for this wicked deed. Ah, there goes Major Murphy on the
-other side of the street. Good-by, Wood. I want to learn if anything has
-happened since yesterday."
-
-We were in time to overtake the major before he reached the corner.
-
-"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
-come to nothing?"
-
-"What then?"
-
-"The inquest is just over. The medical evidence showed conclusively
-that death was due to apoplexy. You see it was quite a simple case after
-all."
-
-"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
-don't think we shall be wanted in Aldershot any more."
-
-"There's one thing," said I, as we walked down to the station. "If the
-husband's name was James, and the other was Henry, what was this talk
-about David?"
-
-"That one word, my dear Watson, should have told me the whole story had
-I been the ideal reasoner which you are so fond of depicting. It was
-evidently a term of reproach."
-
-"Of reproach?"
-
-"Yes; David strayed a little occasionally, you know, and on one occasion
-in the same direction as Sergeant James Barclay. You remember the small
-affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
-I fear, but you will find the story in the first or second of Samuel."
-
-
-
-
-Adventure VIII. The Resident Patient
-
-
-Glancing over the somewhat incoherent series of Memoirs with which I
-have endeavored to illustrate a few of the mental peculiarities of my
-friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
-have experienced in picking out examples which shall in every way answer
-my purpose. For in those cases in which Holmes has performed some tour
-de force of analytical reasoning, and has demonstrated the value of his
-peculiar methods of investigation, the facts themselves have often been
-so slight or so commonplace that I could not feel justified in laying
-them before the public. On the other hand, it has frequently happened
-that he has been concerned in some research where the facts have been of
-the most remarkable and dramatic character, but where the share which he
-has himself taken in determining their causes has been less pronounced
-than I, as his biographer, could wish. The small matter which I have
-chronicled under the heading of "A Study in Scarlet," and that other
-later one connected with the loss of the Gloria Scott, may serve as
-examples of this Scylla and Charybdis which are forever threatening the
-historian. It may be that in the business of which I am now about to
-write the part which my friend played is not sufficiently accentuated;
-and yet the whole train of circumstances is so remarkable that I cannot
-bring myself to omit it entirely from this series.
-
-It had been a close, rainy day in October. Our blinds were half-drawn,
-and Holmes lay curled upon the sofa, reading and re-reading a letter
-which he had received by the morning post. For myself, my term of
-service in India had trained me to stand heat better than cold, and
-a thermometer of 90 was no hardship. But the paper was uninteresting.
-Parliament had risen. Everybody was out of town, and I yearned for the
-glades of the New Forest or the shingle of Southsea. A depleted bank
-account had caused me to postpone my holiday, and as to my companion,
-neither the country nor the sea presented the slightest attraction to
-him. He loved to lie in the very centre of five millions of people, with
-his filaments stretching out and running through them, responsive to
-every little rumor or suspicion of unsolved crime. Appreciation of
-Nature found no place among his many gifts, and his only change was
-when he turned his mind from the evil-doer of the town to track down his
-brother of the country.
-
-Finding that Holmes was too absorbed for conversation, I had tossed
-aside the barren paper, and leaning back in my chair, I fell into a
-brown study. Suddenly my companion's voice broke in upon my thoughts.
-
-"You are right, Watson," said he. "It does seem a very preposterous way
-of settling a dispute."
-
-"Most preposterous!" I exclaimed, and then, suddenly realizing how
-he had echoed the inmost thought of my soul, I sat up in my chair and
-stared at him in blank amazement.
-
-"What is this, Holmes?" I cried. "This is beyond anything which I could
-have imagined."
-
-He laughed heartily at my perplexity.
-
-"You remember," said he, "that some little time ago, when I read you the
-passage in one of Poe's sketches, in which a close reasoner follows the
-unspoken thought of his companion, you were inclined to treat the
-matter as a mere tour de force of the author. On my remarking that I
-was constantly in the habit of doing the same thing you expressed
-incredulity."
-
-"Oh, no!"
-
-"Perhaps not with your tongue, my dear Watson, but certainly with your
-eyebrows. So when I saw you throw down your paper and enter upon a train
-of thought, I was very happy to have the opportunity of reading it
-off, and eventually of breaking into it, as a proof that I had been in
-rapport with you."
-
-But I was still far from satisfied. "In the example which you read to
-me," said I, "the reasoner drew his conclusions from the actions of the
-man whom he observed. If I remember right, he stumbled over a heap
-of stones, looked up at the stars, and so on. But I have been seated
-quietly in my chair, and what clues can I have given you?"
-
-"You do yourself an injustice. The features are given to man as the
-means by which he shall express his emotions, and yours are faithful
-servants."
-
-"Do you mean to say that you read my train of thoughts from my
-features?"
-
-"Your features, and especially your eyes. Perhaps you cannot yourself
-recall how your reverie commenced?"
-
-"No, I cannot."
-
-"Then I will tell you. After throwing down your paper, which was the
-action which drew my attention to you, you sat for half a minute with
-a vacant expression. Then your eyes fixed themselves upon your
-newly-framed picture of General Gordon, and I saw by the alteration in
-your face that a train of thought had been started. But it did not lead
-very far. Your eyes turned across to the unframed portrait of Henry Ward
-Beecher which stands upon the top of your books. You then glanced up at
-the wall, and of course your meaning was obvious. You were thinking
-that if the portrait were framed it would just cover that bare space and
-correspond with Gordon's picture over there."
-
-"You have followed me wonderfully!" I exclaimed.
-
-"So far I could hardly have gone astray. But now your thoughts went
-back to Beecher, and you looked hard across as if you were studying
-the character in his features. Then your eyes ceased to pucker, but
-you continued to look across, and your face was thoughtful. You were
-recalling the incidents of Beecher's career. I was well aware that you
-could not do this without thinking of the mission which he undertook
-on behalf of the North at the time of the Civil War, for I remember
-you expressing your passionate indignation at the way in which he was
-received by the more turbulent of our people. You felt so strongly about
-it that I knew you could not think of Beecher without thinking of that
-also. When a moment later I saw your eyes wander away from the picture,
-I suspected that your mind had now turned to the Civil War, and when
-I observed that your lips set, your eyes sparkled, and your hands
-clinched, I was positive that you were indeed thinking of the gallantry
-which was shown by both sides in that desperate struggle. But then,
-again, your face grew sadder; you shook your head. You were dwelling
-upon the sadness and horror and useless waste of life. Your hand stole
-towards your own old wound, and a smile quivered on your lips,
-which showed me that the ridiculous side of this method of settling
-international questions had forced itself upon your mind. At this point
-I agreed with you that it was preposterous, and was glad to find that
-all my deductions had been correct."
-
-"Absolutely!" said I. "And now that you have explained it, I confess
-that I am as amazed as before."
-
-"It was very superficial, my dear Watson, I assure you. I should not
-have intruded it upon your attention had you not shown some incredulity
-the other day. But the evening has brought a breeze with it. What do you
-say to a ramble through London?"
-
-I was weary of our little sitting-room and gladly acquiesced. For
-three hours we strolled about together, watching the ever-changing
-kaleidoscope of life as it ebbs and flows through Fleet Street and the
-Strand. His characteristic talk, with its keen observance of detail
-and subtle power of inference held me amused and enthralled. It was ten
-o'clock before we reached Baker Street again. A brougham was waiting at
-our door.
-
-"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
-been long in practice, but has had a good deal to do. Come to consult
-us, I fancy! Lucky we came back!"
-
-I was sufficiently conversant with Holmes's methods to be able to follow
-his reasoning, and to see that the nature and state of the various
-medical instruments in the wicker basket which hung in the lamplight
-inside the brougham had given him the data for his swift deduction.
-The light in our window above showed that this late visit was indeed
-intended for us. With some curiosity as to what could have sent a
-brother medico to us at such an hour, I followed Holmes into our
-sanctum.
-
-A pale, taper-faced man with sandy whiskers rose up from a chair by the
-fire as we entered. His age may not have been more than three or four
-and thirty, but his haggard expression and unhealthy hue told of a life
-which has sapped his strength and robbed him of his youth. His manner
-was nervous and shy, like that of a sensitive gentleman, and the thin
-white hand which he laid on the mantelpiece as he rose was that of an
-artist rather than of a surgeon. His dress was quiet and sombre--a black
-frock-coat, dark trousers, and a touch of color about his necktie.
-
-"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
-you have only been waiting a very few minutes."
-
-"You spoke to my coachman, then?"
-
-"No, it was the candle on the side-table that told me. Pray resume your
-seat and let me know how I can serve you."
-
-"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
-403 Brook Street."
-
-"Are you not the author of a monograph upon obscure nervous lesions?" I
-asked.
-
-His pale cheeks flushed with pleasure at hearing that his work was known
-to me.
-
-"I so seldom hear of the work that I thought it was quite dead," said
-he. "My publishers gave me a most discouraging account of its sale. You
-are yourself, I presume, a medical man?"
-
-"A retired army surgeon."
-
-"My own hobby has always been nervous disease. I should wish to make it
-an absolute specialty, but, of course, a man must take what he can get
-at first. This, however, is beside the question, Mr. Sherlock Holmes,
-and I quite appreciate how valuable your time is. The fact is that a
-very singular train of events has occurred recently at my house in Brook
-Street, and to-night they came to such a head that I felt it was quite
-impossible for me to wait another hour before asking for your advice and
-assistance."
-
-Sherlock Holmes sat down and lit his pipe. "You are very welcome
-to both," said he. "Pray let me have a detailed account of what the
-circumstances are which have disturbed you."
-
-"One or two of them are so trivial," said Dr. Trevelyan, "that really
-I am almost ashamed to mention them. But the matter is so inexplicable,
-and the recent turn which it has taken is so elaborate, that I shall
-lay it all before you, and you shall judge what is essential and what is
-not.
-
-"I am compelled, to begin with, to say something of my own college
-career. I am a London University man, you know, and I am sure that your
-will not think that I am unduly singing my own praises if I say that my
-student career was considered by my professors to be a very promising
-one. After I had graduated I continued to devote myself to research,
-occupying a minor position in King's College Hospital, and I was
-fortunate enough to excite considerable interest by my research into the
-pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
-medal by the monograph on nervous lesions to which your friend has
-just alluded. I should not go too far if I were to say that there was a
-general impression at that time that a distinguished career lay before
-me.
-
-"But the one great stumbling-block lay in my want of capital. As you
-will readily understand, a specialist who aims high is compelled to
-start in one of a dozen streets in the Cavendish Square quarter, all
-of which entail enormous rents and furnishing expenses. Besides this
-preliminary outlay, he must be prepared to keep himself for some years,
-and to hire a presentable carriage and horse. To do this was quite
-beyond my power, and I could only hope that by economy I might in ten
-years' time save enough to enable me to put up my plate. Suddenly,
-however, an unexpected incident opened up quite a new prospect to me.
-
-"This was a visit from a gentleman of the name of Blessington, who was a
-complete stranger to me. He came up to my room one morning, and plunged
-into business in an instant.
-
-"'You are the same Percy Trevelyan who has had so distinguished a career
-and won a great prize lately?' said he.
-
-"I bowed.
-
-"'Answer me frankly,' he continued, 'for you will find it to your
-interest to do so. You have all the cleverness which makes a successful
-man. Have you the tact?'
-
-"I could not help smiling at the abruptness of the question.
-
-"'I trust that I have my share,' I said.
-
-"'Any bad habits? Not drawn towards drink, eh?'
-
-"'Really, sir!' I cried.
-
-"'Quite right! That's all right! But I was bound to ask. With all these
-qualities, why are you not in practice?'
-
-"I shrugged my shoulders.
-
-"'Come, come!' said he, in his bustling way. 'It's the old story. More
-in your brains than in your pocket, eh? What would you say if I were to
-start you in Brook Street?'
-
-"I stared at him in astonishment.
-
-"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
-frank with you, and if it suits you it will suit me very well. I have a
-few thousands to invest, d'ye see, and I think I'll sink them in you.'
-
-"'But why?' I gasped.
-
-"'Well, it's just like any other speculation, and safer than most.'
-
-"'What am I to do, then?'
-
-"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
-the whole place. All you have to do is just to wear out your chair in
-the consulting-room. I'll let you have pocket-money and everything. Then
-you hand over to me three quarters of what you earn, and you keep the
-other quarter for yourself.'
-
-"This was the strange proposal, Mr. Holmes, with which the man
-Blessington approached me. I won't weary you with the account of how
-we bargained and negotiated. It ended in my moving into the house next
-Lady-day, and starting in practice on very much the same conditions as
-he had suggested. He came himself to live with me in the character of a
-resident patient. His heart was weak, it appears, and he needed constant
-medical supervision. He turned the two best rooms of the first floor
-into a sitting-room and bedroom for himself. He was a man of singular
-habits, shunning company and very seldom going out. His life was
-irregular, but in one respect he was regularity itself. Every evening,
-at the same hour, he walked into the consulting-room, examined the
-books, put down five and three-pence for every guinea that I had earned,
-and carried the rest off to the strong-box in his own room.
-
-"I may say with confidence that he never had occasion to regret his
-speculation. From the first it was a success. A few good cases and the
-reputation which I had won in the hospital brought me rapidly to the
-front, and during the last few years I have made him a rich man.
-
-"So much, Mr. Holmes, for my past history and my relations with Mr.
-Blessington. It only remains for me now to tell you what has occurred to
-bring me here to-night.
-
-"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
-a state of considerable agitation. He spoke of some burglary which, he
-said, had been committed in the West End, and he appeared, I remember,
-to be quite unnecessarily excited about it, declaring that a day should
-not pass before we should add stronger bolts to our windows and doors.
-For a week he continued to be in a peculiar state of restlessness,
-peering continually out of the windows, and ceasing to take the short
-walk which had usually been the prelude to his dinner. From his manner
-it struck me that he was in mortal dread of something or somebody, but
-when I questioned him upon the point he became so offensive that I was
-compelled to drop the subject. Gradually, as time passed, his fears
-appeared to die away, and he had renewed his former habits, when a fresh
-event reduced him to the pitiable state of prostration in which he now
-lies.
-
-"What happened was this. Two days ago I received the letter which I now
-read to you. Neither address nor date is attached to it.
-
-"'A Russian nobleman who is now resident in England,' it runs, 'would
-be glad to avail himself of the professional assistance of Dr. Percy
-Trevelyan. He has been for some years a victim to cataleptic attacks, on
-which, as is well known, Dr. Trevelyan is an authority. He proposes to
-call at about quarter past six to-morrow evening, if Dr. Trevelyan will
-make it convenient to be at home.'
-
-"This letter interested me deeply, because the chief difficulty in the
-study of catalepsy is the rareness of the disease. You may believe,
-then, that I was in my consulting-room when, at the appointed hour, the
-page showed in the patient.
-
-"He was an elderly man, thin, demure, and commonplace--by no means the
-conception one forms of a Russian nobleman. I was much more struck by
-the appearance of his companion. This was a tall young man, surprisingly
-handsome, with a dark, fierce face, and the limbs and chest of a
-Hercules. He had his hand under the other's arm as they entered, and
-helped him to a chair with a tenderness which one would hardly have
-expected from his appearance.
-
-"'You will excuse my coming in, doctor,' said he to me, speaking English
-with a slight lisp. 'This is my father, and his health is a matter of
-the most overwhelming importance to me.'
-
-"I was touched by this filial anxiety. 'You would, perhaps, care to
-remain during the consultation?' said I.
-
-"'Not for the world,' he cried with a gesture of horror. 'It is more
-painful to me than I can express. If I were to see my father in one of
-these dreadful seizures I am convinced that I should never survive
-it. My own nervous system is an exceptionally sensitive one. With your
-permission, I will remain in the waiting-room while you go into my
-father's case.'
-
-"To this, of course, I assented, and the young man withdrew. The patient
-and I then plunged into a discussion of his case, of which I took
-exhaustive notes. He was not remarkable for intelligence, and his
-answers were frequently obscure, which I attributed to his limited
-acquaintance with our language. Suddenly, however, as I sat writing,
-he ceased to give any answer at all to my inquiries, and on my turning
-towards him I was shocked to see that he was sitting bolt upright in his
-chair, staring at me with a perfectly blank and rigid face. He was again
-in the grip of his mysterious malady.
-
-"My first feeling, as I have just said, was one of pity and horror.
-My second, I fear, was rather one of professional satisfaction. I made
-notes of my patient's pulse and temperature, tested the rigidity of his
-muscles, and examined his reflexes. There was nothing markedly abnormal
-in any of these conditions, which harmonized with my former experiences.
-I had obtained good results in such cases by the inhalation of nitrite
-of amyl, and the present seemed an admirable opportunity of testing
-its virtues. The bottle was downstairs in my laboratory, so leaving my
-patient seated in his chair, I ran down to get it. There was some little
-delay in finding it--five minutes, let us say--and then I returned.
-Imagine my amazement to find the room empty and the patient gone.
-
-"Of course, my first act was to run into the waiting-room. The son had
-gone also. The hall door had been closed, but not shut. My page who
-admits patients is a new boy and by no means quick. He waits downstairs,
-and runs up to show patients out when I ring the consulting-room bell.
-He had heard nothing, and the affair remained a complete mystery. Mr.
-Blessington came in from his walk shortly afterwards, but I did not say
-anything to him upon the subject, for, to tell the truth, I have got in
-the way of late of holding as little communication with him as possible.
-
-"Well, I never thought that I should see anything more of the Russian
-and his son, so you can imagine my amazement when, at the very same hour
-this evening, they both came marching into my consulting-room, just as
-they had done before.
-
-"'I feel that I owe you a great many apologies for my abrupt departure
-yesterday, doctor,' said my patient.
-
-"'I confess that I was very much surprised at it,' said I.
-
-"'Well, the fact is,' he remarked, 'that when I recover from these
-attacks my mind is always very clouded as to all that has gone before. I
-woke up in a strange room, as it seemed to me, and made my way out into
-the street in a sort of dazed way when you were absent.'
-
-"'And I,' said the son, 'seeing my father pass the door of the
-waiting-room, naturally thought that the consultation had come to an
-end. It was not until we had reached home that I began to realize the
-true state of affairs.'
-
-"'Well,' said I, laughing, 'there is no harm done except that you
-puzzled me terribly; so if you, sir, would kindly step into the
-waiting-room I shall be happy to continue our consultation which was
-brought to so abrupt an ending.'
-
-"'For half an hour or so I discussed that old gentleman's symptoms with
-him, and then, having prescribed for him, I saw him go off upon the arm
-of his son.
-
-"I have told you that Mr. Blessington generally chose this hour of the
-day for his exercise. He came in shortly afterwards and passed upstairs.
-An instant later I heard him running down, and he burst into my
-consulting-room like a man who is mad with panic.
-
-"'Who has been in my room?' he cried.
-
-"'No one,' said I.
-
-"'It's a lie! He yelled. 'Come up and look!'
-
-"I passed over the grossness of his language, as he seemed half out of
-his mind with fear. When I went upstairs with him he pointed to several
-footprints upon the light carpet.
-
-"'D'you mean to say those are mine?' he cried.
-
-"They were certainly very much larger than any which he could have made,
-and were evidently quite fresh. It rained hard this afternoon, as you
-know, and my patients were the only people who called. It must have been
-the case, then, that the man in the waiting-room had, for some unknown
-reason, while I was busy with the other, ascended to the room of my
-resident patient. Nothing had been touched or taken, but there were the
-footprints to prove that the intrusion was an undoubted fact.
-
-"Mr. Blessington seemed more excited over the matter than I should have
-thought possible, though of course it was enough to disturb anybody's
-peace of mind. He actually sat crying in an arm-chair, and I could
-hardly get him to speak coherently. It was his suggestion that I should
-come round to you, and of course I at once saw the propriety of it,
-for certainly the incident is a very singular one, though he appears to
-completely overrate its importance. If you would only come back with me
-in my brougham, you would at least be able to soothe him, though I
-can hardly hope that you will be able to explain this remarkable
-occurrence."
-
-Sherlock Holmes had listened to this long narrative with an intentness
-which showed me that his interest was keenly aroused. His face was as
-impassive as ever, but his lids had drooped more heavily over his eyes,
-and his smoke had curled up more thickly from his pipe to emphasize each
-curious episode in the doctor's tale. As our visitor concluded, Holmes
-sprang up without a word, handed me my hat, picked his own from the
-table, and followed Dr. Trevelyan to the door. Within a quarter of an
-hour we had been dropped at the door of the physician's residence
-in Brook Street, one of those sombre, flat-faced houses which one
-associates with a West-End practice. A small page admitted us, and we
-began at once to ascend the broad, well-carpeted stair.
-
-But a singular interruption brought us to a standstill. The light at
-the top was suddenly whisked out, and from the darkness came a reedy,
-quivering voice.
-
-"I have a pistol," it cried. "I give you my word that I'll fire if you
-come any nearer."
-
-"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
-
-"Oh, then it is you, doctor," said the voice, with a great heave of
-relief. "But those other gentlemen, are they what they pretend to be?"
-
-We were conscious of a long scrutiny out of the darkness.
-
-"Yes, yes, it's all right," said the voice at last. "You can come up,
-and I am sorry if my precautions have annoyed you."
-
-He relit the stair gas as he spoke, and we saw before us a
-singular-looking man, whose appearance, as well as his voice, testified
-to his jangled nerves. He was very fat, but had apparently at some time
-been much fatter, so that the skin hung about his face in loose pouches,
-like the cheeks of a blood-hound. He was of a sickly color, and his
-thin, sandy hair seemed to bristle up with the intensity of his emotion.
-In his hand he held a pistol, but he thrust it into his pocket as we
-advanced.
-
-"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
-to you for coming round. No one ever needed your advice more than I do.
-I suppose that Dr. Trevelyan has told you of this most unwarrantable
-intrusion into my rooms."
-
-"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
-do they wish to molest you?"
-
-"Well, well," said the resident patient, in a nervous fashion, "of
-course it is hard to say that. You can hardly expect me to answer that,
-Mr. Holmes."
-
-"Do you mean that you don't know?"
-
-"Come in here, if you please. Just have the kindness to step in here."
-
-He led the way into his bedroom, which was large and comfortably
-furnished.
-
-"You see that," said he, pointing to a big black box at the end of his
-bed. "I have never been a very rich man, Mr. Holmes--never made but
-one investment in my life, as Dr. Trevelyan would tell you. But I don't
-believe in bankers. I would never trust a banker, Mr. Holmes. Between
-ourselves, what little I have is in that box, so you can understand what
-it means to me when unknown people force themselves into my rooms."
-
-Holmes looked at Blessington in his questioning way and shook his head.
-
-"I cannot possibly advise you if you try to deceive me," said he.
-
-"But I have told you everything."
-
-Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
-Trevelyan," said he.
-
-"And no advice for me?" cried Blessington, in a breaking voice.
-
-"My advice to you, sir, is to speak the truth."
-
-A minute later we were in the street and walking for home. We had
-crossed Oxford Street and were half way down Harley Street before I
-could get a word from my companion.
-
-"Sorry to bring you out on such a fool's errand, Watson," he said at
-last. "It is an interesting case, too, at the bottom of it."
-
-"I can make little of it," I confessed.
-
-"Well, it is quite evident that there are two men--more, perhaps, but
-at least two--who are determined for some reason to get at this fellow
-Blessington. I have no doubt in my mind that both on the first and on
-the second occasion that young man penetrated to Blessington's room,
-while his confederate, by an ingenious device, kept the doctor from
-interfering."
-
-"And the catalepsy?"
-
-"A fraudulent imitation, Watson, though I should hardly dare to hint as
-much to our specialist. It is a very easy complaint to imitate. I have
-done it myself."
-
-"And then?"
-
-"By the purest chance Blessington was out on each occasion. Their reason
-for choosing so unusual an hour for a consultation was obviously to
-insure that there should be no other patient in the waiting-room. It
-just happened, however, that this hour coincided with Blessington's
-constitutional, which seems to show that they were not very well
-acquainted with his daily routine. Of course, if they had been merely
-after plunder they would at least have made some attempt to search for
-it. Besides, I can read in a man's eye when it is his own skin that he
-is frightened for. It is inconceivable that this fellow could have made
-two such vindictive enemies as these appear to be without knowing of it.
-I hold it, therefore, to be certain that he does know who these men are,
-and that for reasons of his own he suppresses it. It is just possible
-that to-morrow may find him in a more communicative mood."
-
-"Is there not one alternative," I suggested, "grotesquely improbably,
-no doubt, but still just conceivable? Might the whole story of the
-cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
-has, for his own purposes, been in Blessington's rooms?"
-
-I saw in the gaslight that Holmes wore an amused smile at this brilliant
-departure of mine.
-
-"My dear fellow," said he, "it was one of the first solutions which
-occurred to me, but I was soon able to corroborate the doctor's tale.
-This young man has left prints upon the stair-carpet which made it quite
-superfluous for me to ask to see those which he had made in the room.
-When I tell you that his shoes were square-toed instead of being pointed
-like Blessington's, and were quite an inch and a third longer than the
-doctor's, you will acknowledge that there can be no doubt as to his
-individuality. But we may sleep on it now, for I shall be surprised if
-we do not hear something further from Brook Street in the morning."
-
-
-Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
-fashion. At half-past seven next morning, in the first glimmer of
-daylight, I found him standing by my bedside in his dressing-gown.
-
-"There's a brougham waiting for us, Watson," said he.
-
-"What's the matter, then?"
-
-"The Brook Street business."
-
-"Any fresh news?"
-
-"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
-sheet from a note-book, with 'For God's sake come at once--P. T.,'
-scrawled upon it in pencil. Our friend, the doctor, was hard put to
-it when he wrote this. Come along, my dear fellow, for it's an urgent
-call."
-
-In a quarter of an hour or so we were back at the physician's house. He
-came running out to meet us with a face of horror.
-
-"Oh, such a business!" he cried, with his hands to his temples.
-
-"What then?"
-
-"Blessington has committed suicide!"
-
-Holmes whistled.
-
-"Yes, he hanged himself during the night."
-
-We had entered, and the doctor had preceded us into what was evidently
-his waiting-room.
-
-"I really hardly know what I am doing," he cried. "The police are
-already upstairs. It has shaken me most dreadfully."
-
-"When did you find it out?"
-
-"He has a cup of tea taken in to him early every morning. When the maid
-entered, about seven, there the unfortunate fellow was hanging in the
-middle of the room. He had tied his cord to the hook on which the heavy
-lamp used to hang, and he had jumped off from the top of the very box
-that he showed us yesterday."
-
-Holmes stood for a moment in deep thought.
-
-"With your permission," said he at last, "I should like to go upstairs
-and look into the matter."
-
-We both ascended, followed by the doctor.
-
-It was a dreadful sight which met us as we entered the bedroom door. I
-have spoken of the impression of flabbiness which this man Blessington
-conveyed. As he dangled from the hook it was exaggerated and intensified
-until he was scarce human in his appearance. The neck was drawn out
-like a plucked chicken's, making the rest of him seem the more obese and
-unnatural by the contrast. He was clad only in his long night-dress, and
-his swollen ankles and ungainly feet protruded starkly from beneath it.
-Beside him stood a smart-looking police-inspector, who was taking notes
-in a pocket-book.
-
-"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
-delighted to see you."
-
-"Good-morning, Lanner," answered Holmes; "you won't think me an
-intruder, I am sure. Have you heard of the events which led up to this
-affair?"
-
-"Yes, I heard something of them."
-
-"Have you formed any opinion?"
-
-"As far as I can see, the man has been driven out of his senses by
-fright. The bed has been well slept in, you see. There's his impression
-deep enough. It's about five in the morning, you know, that suicides are
-most common. That would be about his time for hanging himself. It seems
-to have been a very deliberate affair."
-
-"I should say that he has been dead about three hours, judging by the
-rigidity of the muscles," said I.
-
-"Noticed anything peculiar about the room?" asked Holmes.
-
-"Found a screw-driver and some screws on the wash-hand stand. Seems to
-have smoked heavily during the night, too. Here are four cigar-ends that
-I picked out of the fireplace."
-
-"Hum!" said Holmes, "have you got his cigar-holder?"
-
-"No, I have seen none."
-
-"His cigar-case, then?"
-
-"Yes, it was in his coat-pocket."
-
-Holmes opened it and smelled the single cigar which it contained.
-
-"Oh, this is an Havana, and these others are cigars of the peculiar sort
-which are imported by the Dutch from their East Indian colonies. They
-are usually wrapped in straw, you know, and are thinner for their length
-than any other brand." He picked up the four ends and examined them with
-his pocket-lens.
-
-"Two of these have been smoked from a holder and two without," said he.
-"Two have been cut by a not very sharp knife, and two have had the ends
-bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
-It is a very deeply planned and cold-blooded murder."
-
-"Impossible!" cried the inspector.
-
-"And why?"
-
-"Why should any one murder a man in so clumsy a fashion as by hanging
-him?"
-
-"That is what we have to find out."
-
-"How could they get in?"
-
-"Through the front door."
-
-"It was barred in the morning."
-
-"Then it was barred after them."
-
-"How do you know?"
-
-"I saw their traces. Excuse me a moment, and I may be able to give you
-some further information about it."
-
-He went over to the door, and turning the lock he examined it in his
-methodical way. Then he took out the key, which was on the inside, and
-inspected that also. The bed, the carpet, the chairs the mantelpiece,
-the dead body, and the rope were each in turn examined, until at last he
-professed himself satisfied, and with my aid and that of the inspector
-cut down the wretched object and laid it reverently under a sheet.
-
-"How about this rope?" he asked.
-
-"It is cut off this," said Dr. Trevelyan, drawing a large coil from
-under the bed. "He was morbidly nervous of fire, and always kept this
-beside him, so that he might escape by the window in case the stairs
-were burning."
-
-"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
-the actual facts are very plain, and I shall be surprised if by the
-afternoon I cannot give you the reasons for them as well. I will take
-this photograph of Blessington, which I see upon the mantelpiece, as it
-may help me in my inquiries."
-
-"But you have told us nothing!" cried the doctor.
-
-"Oh, there can be no doubt as to the sequence of events," said Holmes.
-"There were three of them in it: the young man, the old man, and a
-third, to whose identity I have no clue. The first two, I need hardly
-remark, are the same who masqueraded as the Russian count and his son,
-so we can give a very full description of them. They were admitted by
-a confederate inside the house. If I might offer you a word of advice,
-Inspector, it would be to arrest the page, who, as I understand, has
-only recently come into your service, Doctor."
-
-"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
-cook have just been searching for him."
-
-Holmes shrugged his shoulders.
-
-"He has played a not unimportant part in this drama," said he. "The
-three men having ascended the stairs, which they did on tiptoe, the
-elder man first, the younger man second, and the unknown man in the
-rear--"
-
-"My dear Holmes!" I ejaculated.
-
-"Oh, there could be no question as to the superimposing of the
-footmarks. I had the advantage of learning which was which last night.
-They ascended, then, to Mr. Blessington's room, the door of which they
-found to be locked. With the help of a wire, however, they forced round
-the key. Even without the lens you will perceive, by the scratches on
-this ward, where the pressure was applied.
-
-"On entering the room their first proceeding must have been to gag Mr.
-Blessington. He may have been asleep, or he may have been so paralyzed
-with terror as to have been unable to cry out. These walls are thick,
-and it is conceivable that his shriek, if he had time to utter one, was
-unheard.
-
-"Having secured him, it is evident to me that a consultation of some
-sort was held. Probably it was something in the nature of a judicial
-proceeding. It must have lasted for some time, for it was then that
-these cigars were smoked. The older man sat in that wicker chair; it
-was he who used the cigar-holder. The younger man sat over yonder; he
-knocked his ash off against the chest of drawers. The third fellow paced
-up and down. Blessington, I think, sat upright in the bed, but of that I
-cannot be absolutely certain.
-
-"Well, it ended by their taking Blessington and hanging him. The matter
-was so prearranged that it is my belief that they brought with them
-some sort of block or pulley which might serve as a gallows. That
-screw-driver and those screws were, as I conceive, for fixing it up.
-Seeing the hook, however they naturally saved themselves the trouble.
-Having finished their work they made off, and the door was barred behind
-them by their confederate."
-
-We had all listened with the deepest interest to this sketch of the
-night's doings, which Holmes had deduced from signs so subtle and minute
-that, even when he had pointed them out to us, we could scarcely follow
-him in his reasoning. The inspector hurried away on the instant to make
-inquiries about the page, while Holmes and I returned to Baker Street
-for breakfast.
-
-"I'll be back by three," said he, when we had finished our meal. "Both
-the inspector and the doctor will meet me here at that hour, and I hope
-by that time to have cleared up any little obscurity which the case may
-still present."
-
-
-Our visitors arrived at the appointed time, but it was a quarter to
-four before my friend put in an appearance. From his expression as he
-entered, however, I could see that all had gone well with him.
-
-"Any news, Inspector?"
-
-"We have got the boy, sir."
-
-"Excellent, and I have got the men."
-
-"You have got them!" we cried, all three.
-
-"Well, at least I have got their identity. This so-called Blessington
-is, as I expected, well known at headquarters, and so are his
-assailants. Their names are Biddle, Hayward, and Moffat."
-
-"The Worthingdon bank gang," cried the inspector.
-
-"Precisely," said Holmes.
-
-"Then Blessington must have been Sutton."
-
-"Exactly," said Holmes.
-
-"Why, that makes it as clear as crystal," said the inspector.
-
-But Trevelyan and I looked at each other in bewilderment.
-
-"You must surely remember the great Worthingdon bank business," said
-Holmes. "Five men were in it--these four and a fifth called Cartwright.
-Tobin, the care-taker, was murdered, and the thieves got away with seven
-thousand pounds. This was in 1875. They were all five arrested, but the
-evidence against them was by no means conclusive. This Blessington or
-Sutton, who was the worst of the gang, turned informer. On his evidence
-Cartwright was hanged and the other three got fifteen years apiece. When
-they got out the other day, which was some years before their full term,
-they set themselves, as you perceive, to hunt down the traitor and to
-avenge the death of their comrade upon him. Twice they tried to get at
-him and failed; a third time, you see, it came off. Is there anything
-further which I can explain, Dr. Trevelyan?"
-
-"I think you have made it all remarkable clear," said the doctor. "No
-doubt the day on which he was perturbed was the day when he had seen of
-their release in the newspapers."
-
-"Quite so. His talk about a burglary was the merest blind."
-
-"But why could he not tell you this?"
-
-"Well, my dear sir, knowing the vindictive character of his old
-associates, he was trying to hide his own identity from everybody as
-long as he could. His secret was a shameful one, and he could not bring
-himself to divulge it. However, wretch as he was, he was still living
-under the shield of British law, and I have no doubt, Inspector, that
-you will see that, though that shield may fail to guard, the sword of
-justice is still there to avenge."
-
-
-Such were the singular circumstances in connection with the Resident
-Patient and the Brook Street Doctor. From that night nothing has
-been seen of the three murderers by the police, and it is surmised
-at Scotland Yard that they were among the passengers of the ill-fated
-steamer Norah Creina, which was lost some years ago with all hands
-upon the Portuguese coast, some leagues to the north of Oporto. The
-proceedings against the page broke down for want of evidence, and the
-Brook Street Mystery, as it was called, has never until now been fully
-dealt with in any public print.
-
-
-
-
-Adventure IX. The Greek Interpreter
-
-
-During my long and intimate acquaintance with Mr. Sherlock Holmes I had
-never heard him refer to his relations, and hardly ever to his own early
-life. This reticence upon his part had increased the somewhat inhuman
-effect which he produced upon me, until sometimes I found myself
-regarding him as an isolated phenomenon, a brain without a heart, as
-deficient in human sympathy as he was pre-eminent in intelligence. His
-aversion to women and his disinclination to form new friendships were
-both typical of his unemotional character, but not more so than his
-complete suppression of every reference to his own people. I had come to
-believe that he was an orphan with no relatives living, but one day, to
-my very great surprise, he began to talk to me about his brother.
-
-It was after tea on a summer evening, and the conversation, which had
-roamed in a desultory, spasmodic fashion from golf clubs to the causes
-of the change in the obliquity of the ecliptic, came round at last
-to the question of atavism and hereditary aptitudes. The point under
-discussion was, how far any singular gift in an individual was due to
-his ancestry and how far to his own early training.
-
-"In your own case," said I, "from all that you have told me, it seems
-obvious that your faculty of observation and your peculiar facility for
-deduction are due to your own systematic training."
-
-"To some extent," he answered, thoughtfully. "My ancestors were country
-squires, who appear to have led much the same life as is natural to
-their class. But, none the less, my turn that way is in my veins, and
-may have come with my grandmother, who was the sister of Vernet, the
-French artist. Art in the blood is liable to take the strangest forms."
-
-"But how do you know that it is hereditary?"
-
-"Because my brother Mycroft possesses it in a larger degree than I do."
-
-This was news to me indeed. If there were another man with such singular
-powers in England, how was it that neither police nor public had heard
-of him? I put the question, with a hint that it was my companion's
-modesty which made him acknowledge his brother as his superior. Holmes
-laughed at my suggestion.
-
-"My dear Watson," said he, "I cannot agree with those who rank modesty
-among the virtues. To the logician all things should be seen exactly as
-they are, and to underestimate one's self is as much a departure from
-truth as to exaggerate one's own powers. When I say, therefore, that
-Mycroft has better powers of observation than I, you may take it that I
-am speaking the exact and literal truth."
-
-"Is he your junior?"
-
-"Seven years my senior."
-
-"How comes it that he is unknown?"
-
-"Oh, he is very well known in his own circle."
-
-"Where, then?"
-
-"Well, in the Diogenes Club, for example."
-
-I had never heard of the institution, and my face must have proclaimed
-as much, for Sherlock Holmes pulled out his watch.
-
-"The Diogenes Club is the queerest club in London, and Mycroft one of
-the queerest men. He's always there from quarter to five to twenty to
-eight. It's six now, so if you care for a stroll this beautiful evening
-I shall be very happy to introduce you to two curiosities."
-
-Five minutes later we were in the street, walking towards Regent's
-Circus.
-
-"You wonder," said my companion, "why it is that Mycroft does not use
-his powers for detective work. He is incapable of it."
-
-"But I thought you said--"
-
-"I said that he was my superior in observation and deduction. If the
-art of the detective began and ended in reasoning from an arm-chair, my
-brother would be the greatest criminal agent that ever lived. But he has
-no ambition and no energy. He will not even go out of his way to verify
-his own solutions, and would rather be considered wrong than take the
-trouble to prove himself right. Again and again I have taken a problem
-to him, and have received an explanation which has afterwards proved to
-be the correct one. And yet he was absolutely incapable of working out
-the practical points which must be gone into before a case could be laid
-before a judge or jury."
-
-"It is not his profession, then?"
-
-"By no means. What is to me a means of livelihood is to him the merest
-hobby of a dilettante. He has an extraordinary faculty for figures, and
-audits the books in some of the government departments. Mycroft lodges
-in Pall Mall, and he walks round the corner into Whitehall every morning
-and back every evening. From year's end to year's end he takes no other
-exercise, and is seen nowhere else, except only in the Diogenes Club,
-which is just opposite his rooms."
-
-"I cannot recall the name."
-
-"Very likely not. There are many men in London, you know, who, some from
-shyness, some from misanthropy, have no wish for the company of their
-fellows. Yet they are not averse to comfortable chairs and the latest
-periodicals. It is for the convenience of these that the Diogenes Club
-was started, and it now contains the most unsociable and unclubable men
-in town. No member is permitted to take the least notice of any
-other one. Save in the Stranger's Room, no talking is, under any
-circumstances, allowed, and three offences, if brought to the notice of
-the committee, render the talker liable to expulsion. My brother was one
-of the founders, and I have myself found it a very soothing atmosphere."
-
-We had reached Pall Mall as we talked, and were walking down it from the
-St. James's end. Sherlock Holmes stopped at a door some little distance
-from the Carlton, and, cautioning me not to speak, he led the way into
-the hall. Through the glass paneling I caught a glimpse of a large and
-luxurious room, in which a considerable number of men were sitting about
-and reading papers, each in his own little nook. Holmes showed me into a
-small chamber which looked out into Pall Mall, and then, leaving me for
-a minute, he came back with a companion whom I knew could only be his
-brother.
-
-Mycroft Holmes was a much larger and stouter man than Sherlock. His body
-was absolutely corpulent, but his face, though massive, had preserved
-something of the sharpness of expression which was so remarkable in that
-of his brother. His eyes, which were of a peculiarly light, watery gray,
-seemed to always retain that far-away, introspective look which I had
-only observed in Sherlock's when he was exerting his full powers.
-
-"I am glad to meet you, sir," said he, putting out a broad, fat hand
-like the flipper of a seal. "I hear of Sherlock everywhere since you
-became his chronicler. By the way, Sherlock, I expected to see you round
-last week, to consult me over that Manor House case. I thought you might
-be a little out of your depth."
-
-"No, I solved it," said my friend, smiling.
-
-"It was Adams, of course."
-
-"Yes, it was Adams."
-
-"I was sure of it from the first." The two sat down together in the
-bow-window of the club. "To any one who wishes to study mankind this is
-the spot," said Mycroft. "Look at the magnificent types! Look at these
-two men who are coming towards us, for example."
-
-"The billiard-marker and the other?"
-
-"Precisely. What do you make of the other?"
-
-The two men had stopped opposite the window. Some chalk marks over the
-waistcoat pocket were the only signs of billiards which I could see
-in one of them. The other was a very small, dark fellow, with his hat
-pushed back and several packages under his arm.
-
-"An old soldier, I perceive," said Sherlock.
-
-"And very recently discharged," remarked the brother.
-
-"Served in India, I see."
-
-"And a non-commissioned officer."
-
-"Royal Artillery, I fancy," said Sherlock.
-
-"And a widower."
-
-"But with a child."
-
-"Children, my dear boy, children."
-
-"Come," said I, laughing, "this is a little too much."
-
-"Surely," answered Holmes, "it is not hard to say that a man with that
-bearing, expression of authority, and sunbaked skin, is a soldier, is
-more than a private, and is not long from India."
-
-"That he has not left the service long is shown by his still wearing his
-ammunition boots, as they are called," observed Mycroft.
-
-"He had not the cavalry stride, yet he wore his hat on one side, as
-is shown by the lighter skin of that side of his brow. His weight is
-against his being a sapper. He is in the artillery."
-
-"Then, of course, his complete mourning shows that he has lost some one
-very dear. The fact that he is doing his own shopping looks as though
-it were his wife. He has been buying things for children, you perceive.
-There is a rattle, which shows that one of them is very young. The wife
-probably died in childbed. The fact that he has a picture-book under his
-arm shows that there is another child to be thought of."
-
-I began to understand what my friend meant when he said that his brother
-possessed even keener faculties that he did himself. He glanced across
-at me and smiled. Mycroft took snuff from a tortoise-shell box, and
-brushed away the wandering grains from his coat front with a large, red
-silk handkerchief.
-
-"By the way, Sherlock," said he, "I have had something quite after your
-own heart--a most singular problem--submitted to my judgment. I really
-had not the energy to follow it up save in a very incomplete fashion,
-but it gave me a basis for some pleasing speculation. If you would care
-to hear the facts--"
-
-"My dear Mycroft, I should be delighted."
-
-The brother scribbled a note upon a leaf of his pocket-book, and,
-ringing the bell, he handed it to the waiter.
-
-"I have asked Mr. Melas to step across," said he. "He lodges on the
-floor above me, and I have some slight acquaintance with him, which led
-him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
-as I understand, and he is a remarkable linguist. He earns his living
-partly as interpreter in the law courts and partly by acting as guide to
-any wealthy Orientals who may visit the Northumberland Avenue hotels. I
-think I will leave him to tell his very remarkable experience in his own
-fashion."
-
-A few minutes later we were joined by a short, stout man whose olive
-face and coal-black hair proclaimed his Southern origin, though his
-speech was that of an educated Englishman. He shook hands eagerly
-with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
-understood that the specialist was anxious to hear his story.
-
-"I do not believe that the police credit me--on my word, I do not," said
-he in a wailing voice. "Just because they have never heard of it before,
-they think that such a thing cannot be. But I know that I shall never
-be easy in my mind until I know what has become of my poor man with the
-sticking-plaster upon his face."
-
-"I am all attention," said Sherlock Holmes.
-
-"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
-night--only two days ago, you understand--that all this happened. I am
-an interpreter, as perhaps my neighbor there has told you. I interpret
-all languages--or nearly all--but as I am a Greek by birth and with a
-Grecian name, it is with that particular tongue that I am principally
-associated. For many years I have been the chief Greek interpreter in
-London, and my name is very well known in the hotels.
-
-"It happens not unfrequently that I am sent for at strange hours by
-foreigners who get into difficulties, or by travelers who arrive late
-and wish my services. I was not surprised, therefore, on Monday night
-when a Mr. Latimer, a very fashionably dressed young man, came up to my
-rooms and asked me to accompany him in a cab which was waiting at the
-door. A Greek friend had come to see him upon business, he said, and
-as he could speak nothing but his own tongue, the services of an
-interpreter were indispensable. He gave me to understand that his house
-was some little distance off, in Kensington, and he seemed to be in a
-great hurry, bustling me rapidly into the cab when we had descended to
-the street.
-
-"I say into the cab, but I soon became doubtful as to whether it was not
-a carriage in which I found myself. It was certainly more roomy than
-the ordinary four-wheeled disgrace to London, and the fittings, though
-frayed, were of rich quality. Mr. Latimer seated himself opposite to me
-and we started off through Charing Cross and up the Shaftesbury Avenue.
-We had come out upon Oxford Street and I had ventured some remark as to
-this being a roundabout way to Kensington, when my words were arrested
-by the extraordinary conduct of my companion.
-
-"He began by drawing a most formidable-looking bludgeon loaded with lead
-from his pocket, and switching it backward and forward several times,
-as if to test its weight and strength. Then he placed it without a word
-upon the seat beside him. Having done this, he drew up the windows on
-each side, and I found to my astonishment that they were covered with
-paper so as to prevent my seeing through them.
-
-"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
-that I have no intention that you should see what the place is to which
-we are driving. It might possibly be inconvenient to me if you could
-find your way there again.'
-
-"As you can imagine, I was utterly taken aback by such an address. My
-companion was a powerful, broad-shouldered young fellow, and, apart from
-the weapon, I should not have had the slightest chance in a struggle
-with him.
-
-"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
-must be aware that what you are doing is quite illegal.'
-
-"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
-up to you. I must warn you, however, Mr. Melas, that if at any time
-to-night you attempt to raise an alarm or do anything which is against
-my interests, you will find it a very serious thing. I beg you to
-remember that no one knows where you are, and that, whether you are in
-this carriage or in my house, you are equally in my power.'
-
-"His words were quiet, but he had a rasping way of saying them which
-was very menacing. I sat in silence wondering what on earth could be
-his reason for kidnapping me in this extraordinary fashion. Whatever it
-might be, it was perfectly clear that there was no possible use in my
-resisting, and that I could only wait to see what might befall.
-
-"For nearly two hours we drove without my having the least clue as to
-where we were going. Sometimes the rattle of the stones told of a paved
-causeway, and at others our smooth, silent course suggested asphalt;
-but, save by this variation in sound, there was nothing at all which
-could in the remotest way help me to form a guess as to where we were.
-The paper over each window was impenetrable to light, and a blue curtain
-was drawn across the glass work in front. It was a quarter-past seven
-when we left Pall Mall, and my watch showed me that it was ten minutes
-to nine when we at last came to a standstill. My companion let down
-the window, and I caught a glimpse of a low, arched doorway with a lamp
-burning above it. As I was hurried from the carriage it swung open, and
-I found myself inside the house, with a vague impression of a lawn
-and trees on each side of me as I entered. Whether these were private
-grounds, however, or bona-fide country was more than I could possibly
-venture to say.
-
-"There was a colored gas-lamp inside which was turned so low that I
-could see little save that the hall was of some size and hung with
-pictures. In the dim light I could make out that the person who had
-opened the door was a small, mean-looking, middle-aged man with rounded
-shoulders. As he turned towards us the glint of the light showed me that
-he was wearing glasses.
-
-"'Is this Mr. Melas, Harold?' said he.
-
-"'Yes.'
-
-"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
-get on without you. If you deal fair with us you'll not regret it,
-but if you try any tricks, God help you!' He spoke in a nervous, jerky
-fashion, and with little giggling laughs in between, but somehow he
-impressed me with fear more than the other.
-
-"'What do you want with me?' I asked.
-
-"'Only to ask a few questions of a Greek gentleman who is visiting us,
-and to let us have the answers. But say no more than you are told to
-say, or--' here came the nervous giggle again--'you had better never
-have been born.'
-
-"As he spoke he opened a door and showed the way into a room which
-appeared to be very richly furnished, but again the only light was
-afforded by a single lamp half-turned down. The chamber was certainly
-large, and the way in which my feet sank into the carpet as I stepped
-across it told me of its richness. I caught glimpses of velvet chairs, a
-high white marble mantel-piece, and what seemed to be a suit of Japanese
-armor at one side of it. There was a chair just under the lamp, and the
-elderly man motioned that I should sit in it. The younger had left
-us, but he suddenly returned through another door, leading with him
-a gentleman clad in some sort of loose dressing-gown who moved slowly
-towards us. As he came into the circle of dim light which enables me to
-see him more clearly I was thrilled with horror at his appearance. He
-was deadly pale and terribly emaciated, with the protruding, brilliant
-eyes of a man whose spirit was greater than his strength. But what
-shocked me more than any signs of physical weakness was that his face
-was grotesquely criss-crossed with sticking-plaster, and that one large
-pad of it was fastened over his mouth.
-
-"'Have you the slate, Harold?' cried the older man, as this strange
-being fell rather than sat down into a chair. 'Are his hands loose? Now,
-then, give him the pencil. You are to ask the questions, Mr. Melas, and
-he will write the answers. Ask him first of all whether he is prepared
-to sign the papers?'
-
-"The man's eyes flashed fire.
-
-"'Never!' he wrote in Greek upon the slate.
-
-"'On no condition?' I asked, at the bidding of our tyrant.
-
-"'Only if I see her married in my presence by a Greek priest whom I
-know.'
-
-"The man giggled in his venomous way.
-
-"'You know what awaits you, then?'
-
-"'I care nothing for myself.'
-
-"These are samples of the questions and answers which made up our
-strange half-spoken, half-written conversation. Again and again I had to
-ask him whether he would give in and sign the documents. Again and again
-I had the same indignant reply. But soon a happy thought came to me. I
-took to adding on little sentences of my own to each question, innocent
-ones at first, to test whether either of our companions knew anything
-of the matter, and then, as I found that they showed no signs I played a
-more dangerous game. Our conversation ran something like this:
-
-"'You can do no good by this obstinacy. Who are you?'
-
-"'I care not. I am a stranger in London.'
-
-"'Your fate will be upon your own head. How long have you been here?'
-
-"'Let it be so. Three weeks.'
-
-"'The property can never be yours. What ails you?'
-
-"'It shall not go to villains. They are starving me.'
-
-"'You shall go free if you sign. What house is this?'
-
-"'I will never sign. I do not know.'
-
-"'You are not doing her any service. What is your name?'
-
-"'Let me hear her say so. Kratides.'
-
-"'You shall see her if you sign. Where are you from?'
-
-"'Then I shall never see her. Athens.'
-
-"Another five minutes, Mr. Holmes, and I should have wormed out the
-whole story under their very noses. My very next question might have
-cleared the matter up, but at that instant the door opened and a woman
-stepped into the room. I could not see her clearly enough to know more
-than that she was tall and graceful, with black hair, and clad in some
-sort of loose white gown.
-
-"'Harold,' said she, speaking English with a broken accent. 'I could not
-stay away longer. It is so lonely up there with only--Oh, my God, it is
-Paul!'
-
-"These last words were in Greek, and at the same instant the man with
-a convulsive effort tore the plaster from his lips, and screaming out
-'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
-an instant, however, for the younger man seized the woman and pushed
-her out of the room, while the elder easily overpowered his emaciated
-victim, and dragged him away through the other door. For a moment I was
-left alone in the room, and I sprang to my feet with some vague idea
-that I might in some way get a clue to what this house was in which I
-found myself. Fortunately, however, I took no steps, for looking up I
-saw that the older man was standing in the door-way with his eyes fixed
-upon me.
-
-"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
-you into our confidence over some very private business. We should not
-have troubled you, only that our friend who speaks Greek and who began
-these negotiations has been forced to return to the East. It was
-quite necessary for us to find some one to take his place, and we were
-fortunate in hearing of your powers.'
-
-"I bowed.
-
-"'There are five sovereigns here,' said he, walking up to me, 'which
-will, I hope, be a sufficient fee. But remember,' he added, tapping me
-lightly on the chest and giggling, 'if you speak to a human soul about
-this--one human soul, mind--well, may God have mercy upon your soul!"
-
-"I cannot tell you the loathing and horror with which this
-insignificant-looking man inspired me. I could see him better now as the
-lamp-light shone upon him. His features were peaky and sallow, and his
-little pointed beard was thready and ill-nourished. He pushed his face
-forward as he spoke and his lips and eyelids were continually twitching
-like a man with St. Vitus's dance. I could not help thinking that his
-strange, catchy little laugh was also a symptom of some nervous malady.
-The terror of his face lay in his eyes, however, steel gray, and
-glistening coldly with a malignant, inexorable cruelty in their depths.
-
-"'We shall know if you speak of this,' said he. 'We have our own means
-of information. Now you will find the carriage waiting, and my friend
-will see you on your way.'
-
-"I was hurried through the hall and into the vehicle, again obtaining
-that momentary glimpse of trees and a garden. Mr. Latimer followed
-closely at my heels, and took his place opposite to me without a word.
-In silence we again drove for an interminable distance with the windows
-raised, until at last, just after midnight, the carriage pulled up.
-
-"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
-to leave you so far from your house, but there is no alternative. Any
-attempt upon your part to follow the carriage can only end in injury to
-yourself.'
-
-"He opened the door as he spoke, and I had hardly time to spring out
-when the coachman lashed the horse and the carriage rattled away. I
-looked around me in astonishment. I was on some sort of a heathy common
-mottled over with dark clumps of furze-bushes. Far away stretched a
-line of houses, with a light here and there in the upper windows. On the
-other side I saw the red signal-lamps of a railway.
-
-"The carriage which had brought me was already out of sight. I stood
-gazing round and wondering where on earth I might be, when I saw some
-one coming towards me in the darkness. As he came up to me I made out
-that he was a railway porter.
-
-"'Can you tell me what place this is?' I asked.
-
-"'Wandsworth Common,' said he.
-
-"'Can I get a train into town?'
-
-"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
-just be in time for the last to Victoria.'
-
-"So that was the end of my adventure, Mr. Holmes. I do not know where I
-was, nor whom I spoke with, nor anything save what I have told you. But
-I know that there is foul play going on, and I want to help that unhappy
-man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
-and subsequently to the police."
-
-We all sat in silence for some little time after listening to this
-extraordinary narrative. Then Sherlock looked across at his brother.
-
-"Any steps?" he asked.
-
-Mycroft picked up the Daily News, which was lying on the side-table.
-
-"'Anybody supplying any information to the whereabouts of a Greek
-gentleman named Paul Kratides, from Athens, who is unable to speak
-English, will be rewarded. A similar reward paid to any one giving
-information about a Greek lady whose first name is Sophy. X 2473.' That
-was in all the dailies. No answer."
-
-"How about the Greek Legation?"
-
-"I have inquired. They know nothing."
-
-"A wire to the head of the Athens police, then?"
-
-"Sherlock has all the energy of the family," said Mycroft, turning to
-me. "Well, you take the case up by all means, and let me know if you do
-any good."
-
-"Certainly," answered my friend, rising from his chair. "I'll let you
-know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
-be on my guard, if I were you, for of course they must know through
-these advertisements that you have betrayed them."
-
-As we walked home together, Holmes stopped at a telegraph office and
-sent off several wires.
-
-"You see, Watson," he remarked, "our evening has been by no means
-wasted. Some of my most interesting cases have come to me in this way
-through Mycroft. The problem which we have just listened to, although
-it can admit of but one explanation, has still some distinguishing
-features."
-
-"You have hopes of solving it?"
-
-"Well, knowing as much as we do, it will be singular indeed if we fail
-to discover the rest. You must yourself have formed some theory which
-will explain the facts to which we have listened."
-
-"In a vague way, yes."
-
-"What was your idea, then?"
-
-"It seemed to me to be obvious that this Greek girl had been carried off
-by the young Englishman named Harold Latimer."
-
-"Carried off from where?"
-
-"Athens, perhaps."
-
-Sherlock Holmes shook his head. "This young man could not talk a word of
-Greek. The lady could talk English fairly well. Inference--that she had
-been in England some little time, but he had not been in Greece."
-
-"Well, then, we will presume that she had come on a visit to England,
-and that this Harold had persuaded her to fly with him."
-
-"That is more probable."
-
-"Then the brother--for that, I fancy, must be the relationship--comes
-over from Greece to interfere. He imprudently puts himself into the
-power of the young man and his older associate. They seize him and use
-violence towards him in order to make him sign some papers to make over
-the girl's fortune--of which he may be trustee--to them. This he refuses
-to do. In order to negotiate with him they have to get an interpreter,
-and they pitch upon this Mr. Melas, having used some other one before.
-The girl is not told of the arrival of her brother, and finds it out by
-the merest accident."
-
-"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
-from the truth. You see that we hold all the cards, and we have only to
-fear some sudden act of violence on their part. If they give us time we
-must have them."
-
-"But how can we find where this house lies?"
-
-"Well, if our conjecture is correct and the girl's name is or was Sophy
-Kratides, we should have no difficulty in tracing her. That must be our
-main hope, for the brother is, of course, a complete stranger. It is
-clear that some time has elapsed since this Harold established these
-relations with the girl--some weeks, at any rate--since the brother in
-Greece has had time to hear of it and come across. If they have been
-living in the same place during this time, it is probable that we shall
-have some answer to Mycroft's advertisement."
-
-We had reached our house in Baker Street while we had been talking.
-Holmes ascended the stair first, and as he opened the door of our room
-he gave a start of surprise. Looking over his shoulder, I was equally
-astonished. His brother Mycroft was sitting smoking in the arm-chair.
-
-"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
-surprised faces. "You don't expect such energy from me, do you,
-Sherlock? But somehow this case attracts me."
-
-"How did you get here?"
-
-"I passed you in a hansom."
-
-"There has been some new development?"
-
-"I had an answer to my advertisement."
-
-"Ah!"
-
-"Yes, it came within a few minutes of your leaving."
-
-"And to what effect?"
-
-Mycroft Holmes took out a sheet of paper.
-
-"Here it is," said he, "written with a J pen on royal cream paper by a
-middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
-your advertisement of to-day's date, I beg to inform you that I know the
-young lady in question very well. If you should care to call upon me I
-could give you some particulars as to her painful history. She is living
-at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
-
-"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
-that we might drive to him now, Sherlock, and learn these particulars?"
-
-"My dear Mycroft, the brother's life is more valuable than the sister's
-story. I think we should call at Scotland Yard for Inspector Gregson,
-and go straight out to Beckenham. We know that a man is being done to
-death, and every hour may be vital."
-
-"Better pick up Mr. Melas on our way," I suggested. "We may need an
-interpreter."
-
-"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
-we shall be off at once." He opened the table-drawer as he spoke, and I
-noticed that he slipped his revolver into his pocket. "Yes," said he, in
-answer to my glance; "I should say from what we have heard, that we are
-dealing with a particularly dangerous gang."
-
-It was almost dark before we found ourselves in Pall Mall, at the rooms
-of Mr. Melas. A gentleman had just called for him, and he was gone.
-
-"Can you tell me where?" asked Mycroft Holmes.
-
-"I don't know, sir," answered the woman who had opened the door; "I only
-know that he drove away with the gentleman in a carriage."
-
-"Did the gentleman give a name?"
-
-"No, sir."
-
-"He wasn't a tall, handsome, dark young man?"
-
-"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
-but very pleasant in his ways, for he was laughing all the time that he
-was talking."
-
-"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
-he observed, as we drove to Scotland Yard. "These men have got hold of
-Melas again. He is a man of no physical courage, as they are well
-aware from their experience the other night. This villain was able to
-terrorize him the instant that he got into his presence. No doubt
-they want his professional services, but, having used him, they may be
-inclined to punish him for what they will regard as his treachery."
-
-Our hope was that, by taking train, we might get to Beckenham as soon
-or sooner than the carriage. On reaching Scotland Yard, however, it was
-more than an hour before we could get Inspector Gregson and comply with
-the legal formalities which would enable us to enter the house. It was a
-quarter to ten before we reached London Bridge, and half past before the
-four of us alighted on the Beckenham platform. A drive of half a mile
-brought us to The Myrtles--a large, dark house standing back from the
-road in its own grounds. Here we dismissed our cab, and made our way up
-the drive together.
-
-"The windows are all dark," remarked the inspector. "The house seems
-deserted."
-
-"Our birds are flown and the nest empty," said Holmes.
-
-"Why do you say so?"
-
-"A carriage heavily loaded with luggage has passed out during the last
-hour."
-
-The inspector laughed. "I saw the wheel-tracks in the light of the
-gate-lamp, but where does the luggage come in?"
-
-"You may have observed the same wheel-tracks going the other way. But
-the outward-bound ones were very much deeper--so much so that we can
-say for a certainty that there was a very considerable weight on the
-carriage."
-
-"You get a trifle beyond me there," said the inspector, shrugging his
-shoulder. "It will not be an easy door to force, but we will try if we
-cannot make some one hear us."
-
-He hammered loudly at the knocker and pulled at the bell, but without
-any success. Holmes had slipped away, but he came back in a few minutes.
-
-"I have a window open," said he.
-
-"It is a mercy that you are on the side of the force, and not against
-it, Mr. Holmes," remarked the inspector, as he noted the clever way in
-which my friend had forced back the catch. "Well, I think that under the
-circumstances we may enter without an invitation."
-
-One after the other we made our way into a large apartment, which was
-evidently that in which Mr. Melas had found himself. The inspector
-had lit his lantern, and by its light we could see the two doors, the
-curtain, the lamp, and the suit of Japanese mail as he had described
-them. On the table lay two glasses, and empty brandy-bottle, and the
-remains of a meal.
-
-"What is that?" asked Holmes, suddenly.
-
-We all stood still and listened. A low moaning sound was coming from
-somewhere over our heads. Holmes rushed to the door and out into the
-hall. The dismal noise came from upstairs. He dashed up, the inspector
-and I at his heels, while his brother Mycroft followed as quickly as his
-great bulk would permit.
-
-Three doors faced up upon the second floor, and it was from the central
-of these that the sinister sounds were issuing, sinking sometimes into a
-dull mumble and rising again into a shrill whine. It was locked, but the
-key had been left on the outside. Holmes flung open the door and rushed
-in, but he was out again in an instant, with his hand to his throat.
-
-"It's charcoal," he cried. "Give it time. It will clear."
-
-Peering in, we could see that the only light in the room came from a
-dull blue flame which flickered from a small brass tripod in the centre.
-It threw a livid, unnatural circle upon the floor, while in the shadows
-beyond we saw the vague loom of two figures which crouched against the
-wall. From the open door there reeked a horrible poisonous exhalation
-which set us gasping and coughing. Holmes rushed to the top of the
-stairs to draw in the fresh air, and then, dashing into the room, he
-threw up the window and hurled the brazen tripod out into the garden.
-
-"We can enter in a minute," he gasped, darting out again. "Where is a
-candle? I doubt if we could strike a match in that atmosphere. Hold the
-light at the door and we shall get them out, Mycroft, now!"
-
-With a rush we got to the poisoned men and dragged them out into the
-well-lit hall. Both of them were blue-lipped and insensible, with
-swollen, congested faces and protruding eyes. Indeed, so distorted were
-their features that, save for his black beard and stout figure, we might
-have failed to recognize in one of them the Greek interpreter who had
-parted from us only a few hours before at the Diogenes Club. His hands
-and feet were securely strapped together, and he bore over one eye
-the marks of a violent blow. The other, who was secured in a similar
-fashion, was a tall man in the last stage of emaciation, with several
-strips of sticking-plaster arranged in a grotesque pattern over his
-face. He had ceased to moan as we laid him down, and a glance showed
-me that for him at least our aid had come too late. Mr. Melas, however,
-still lived, and in less than an hour, with the aid of ammonia and
-brandy I had the satisfaction of seeing him open his eyes, and of
-knowing that my hand had drawn him back from that dark valley in which
-all paths meet.
-
-It was a simple story which he had to tell, and one which did but
-confirm our own deductions. His visitor, on entering his rooms, had
-drawn a life-preserver from his sleeve, and had so impressed him with
-the fear of instant and inevitable death that he had kidnapped him for
-the second time. Indeed, it was almost mesmeric, the effect which this
-giggling ruffian had produced upon the unfortunate linguist, for he
-could not speak of him save with trembling hands and a blanched cheek.
-He had been taken swiftly to Beckenham, and had acted as interpreter in
-a second interview, even more dramatic than the first, in which the two
-Englishmen had menaced their prisoner with instant death if he did not
-comply with their demands. Finally, finding him proof against every
-threat, they had hurled him back into his prison, and after
-reproaching Melas with his treachery, which appeared from the newspaper
-advertisement, they had stunned him with a blow from a stick, and he
-remembered nothing more until he found us bending over him.
-
-And this was the singular case of the Grecian Interpreter, the
-explanation of which is still involved in some mystery. We were able
-to find out, by communicating with the gentleman who had answered the
-advertisement, that the unfortunate young lady came of a wealthy Grecian
-family, and that she had been on a visit to some friends in England.
-While there she had met a young man named Harold Latimer, who had
-acquired an ascendancy over he and had eventually persuaded her to fly
-with him. Her friends, shocked at the event, had contented themselves
-with informing her brother at Athens, and had then washed their hands
-of the matter. The brother, on his arrival in England, had imprudently
-placed himself in the power of Latimer and of his associate, whose name
-was Wilson Kemp--a man of the foulest antecedents. These two, finding
-that through his ignorance of the language he was helpless in their
-hands, had kept him a prisoner, and had endeavored by cruelty and
-starvation to make him sign away his own and his sister's property. They
-had kept him in the house without the girl's knowledge, and the plaster
-over the face had been for the purpose of making recognition difficult
-in case she should ever catch a glimpse of him. Her feminine perception,
-however, had instantly seen through the disguise when, on the occasion
-of the interpreter's visit, she had seen him for the first time. The
-poor girl, however, was herself a prisoner, for there was no one about
-the house except the man who acted as coachman, and his wife, both of
-whom were tools of the conspirators. Finding that their secret was out,
-and that their prisoner was not to be coerced, the two villains with the
-girl had fled away at a few hours' notice from the furnished house which
-they had hired, having first, as they thought, taken vengeance both upon
-the man who had defied and the one who had betrayed them.
-
-Months afterwards a curious newspaper cutting reached us from
-Buda-Pesth. It told how two Englishmen who had been traveling with a
-woman had met with a tragic end. They had each been stabbed, it seems,
-and the Hungarian police were of opinion that they had quarreled and had
-inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
-of a different way of thinking, and holds to this day that, if one could
-find the Grecian girl, one might learn how the wrongs of herself and her
-brother came to be avenged.
-
-
-
-
-Adventure X. The Naval Treaty
-
-
-The July which immediately succeeded my marriage was made memorable
-by three cases of interest, in which I had the privilege of being
-associated with Sherlock Holmes and of studying his methods. I find them
-recorded in my notes under the headings of "The Adventure of the Second
-Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
-Tired Captain." The first of these, however, deals with interest of such
-importance and implicates so many of the first families in the kingdom
-that for many years it will be impossible to make it public. No case,
-however, in which Holmes was engaged has ever illustrated the value
-of his analytical methods so clearly or has impressed those who were
-associated with him so deeply. I still retain an almost verbatim report
-of the interview in which he demonstrated the true facts of the case
-to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
-well-known specialist of Dantzig, both of whom had wasted their energies
-upon what proved to be side-issues. The new century will have come,
-however, before the story can be safely told. Meanwhile I pass on to
-the second on my list, which promised also at one time to be of national
-importance, and was marked by several incidents which give it a quite
-unique character.
-
-During my school-days I had been intimately associated with a lad named
-Percy Phelps, who was of much the same age as myself, though he was two
-classes ahead of me. He was a very brilliant boy, and carried away every
-prize which the school had to offer, finished his exploits by winning
-a scholarship which sent him on to continue his triumphant career at
-Cambridge. He was, I remember, extremely well connected, and even when
-we were all little boys together we knew that his mother's brother
-was Lord Holdhurst, the great conservative politician. This gaudy
-relationship did him little good at school. On the contrary, it seemed
-rather a piquant thing to us to chevy him about the playground and hit
-him over the shins with a wicket. But it was another thing when he
-came out into the world. I heard vaguely that his abilities and the
-influences which he commanded had won him a good position at the Foreign
-Office, and then he passed completely out of my mind until the following
-letter recalled his existence:
-
-
-Briarbrae, Woking. My dear Watson,--I have no doubt that you can
-remember "Tadpole" Phelps, who was in the fifth form when you were in
-the third. It is possible even that you may have heard that through my
-uncle's influence I obtained a good appointment at the Foreign Office,
-and that I was in a situation of trust and honor until a horrible
-misfortune came suddenly to blast my career.
-
-There is no use writing of the details of that dreadful event. In the
-event of your acceding to my request it is probably that I shall have
-to narrate them to you. I have only just recovered from nine weeks of
-brain-fever, and am still exceedingly weak. Do you think that you could
-bring your friend Mr. Holmes down to see me? I should like to have his
-opinion of the case, though the authorities assure me that nothing more
-can be done. Do try to bring him down, and as soon as possible. Every
-minute seems an hour while I live in this state of horrible suspense.
-Assure him that if I have not asked his advice sooner it was not because
-I did not appreciate his talents, but because I have been off my head
-ever since the blow fell. Now I am clear again, though I dare not think
-of it too much for fear of a relapse. I am still so weak that I have to
-write, as you see, by dictating. Do try to bring him.
-
-Your old school-fellow,
-
-Percy Phelps.
-
-
-There was something that touched me as I read this letter, something
-pitiable in the reiterated appeals to bring Holmes. So moved was I
-that even had it been a difficult matter I should have tried it, but
-of course I knew well that Holmes loved his art, so that he was ever
-as ready to bring his aid as his client could be to receive it. My wife
-agreed with me that not a moment should be lost in laying the matter
-before him, and so within an hour of breakfast-time I found myself back
-once more in the old rooms in Baker Street.
-
-Holmes was seated at his side-table clad in his dressing-gown, and
-working hard over a chemical investigation. A large curved retort
-was boiling furiously in the bluish flame of a Bunsen burner, and the
-distilled drops were condensing into a two-litre measure. My friend
-hardly glanced up as I entered, and I, seeing that his investigation
-must be of importance, seated myself in an arm-chair and waited. He
-dipped into this bottle or that, drawing out a few drops of each with
-his glass pipette, and finally brought a test-tube containing a solution
-over to the table. In his right hand he held a slip of litmus-paper.
-
-"You come at a crisis, Watson," said he. "If this paper remains blue,
-all is well. If it turns red, it means a man's life." He dipped it into
-the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
-I thought as much!" he cried. "I will be at your service in an instant,
-Watson. You will find tobacco in the Persian slipper." He turned to his
-desk and scribbled off several telegrams, which were handed over to the
-page-boy. Then he threw himself down into the chair opposite, and drew
-up his knees until his fingers clasped round his long, thin shins.
-
-"A very commonplace little murder," said he. "You've got something
-better, I fancy. You are the stormy petrel of crime, Watson. What is
-it?"
-
-I handed him the letter, which he read with the most concentrated
-attention.
-
-"It does not tell us very much, does it?" he remarked, as he handed it
-back to me.
-
-"Hardly anything."
-
-"And yet the writing is of interest."
-
-"But the writing is not his own."
-
-"Precisely. It is a woman's."
-
-"A man's surely," I cried.
-
-"No, a woman's, and a woman of rare character. You see, at the
-commencement of an investigation it is something to know that your
-client is in close contact with some one who, for good or evil, has an
-exceptional nature. My interest is already awakened in the case. If you
-are ready we will start at once for Woking, and see this diplomatist who
-is in such evil case, and the lady to whom he dictates his letters."
-
-We were fortunate enough to catch an early train at Waterloo, and in
-a little under an hour we found ourselves among the fir-woods and
-the heather of Woking. Briarbrae proved to be a large detached house
-standing in extensive grounds within a few minutes' walk of the station.
-On sending in our cards we were shown into an elegantly appointed
-drawing-room, where we were joined in a few minutes by a rather stout
-man who received us with much hospitality. His age may have been nearer
-forty than thirty, but his cheeks were so ruddy and his eyes so merry
-that he still conveyed the impression of a plump and mischievous boy.
-
-"I am so glad that you have come," said he, shaking our hands with
-effusion. "Percy has been inquiring for you all morning. Ah, poor old
-chap, he clings to any straw! His father and his mother asked me to see
-you, for the mere mention of the subject is very painful to them."
-
-"We have had no details yet," observed Holmes. "I perceive that you are
-not yourself a member of the family."
-
-Our acquaintance looked surprised, and then, glancing down, he began to
-laugh.
-
-"Of course you saw the J H monogram on my locket," said he. "For a
-moment I thought you had done something clever. Joseph Harrison is my
-name, and as Percy is to marry my sister Annie I shall at least be a
-relation by marriage. You will find my sister in his room, for she has
-nursed him hand-and-foot this two months back. Perhaps we'd better go in
-at once, for I know how impatient he is."
-
-The chamber in which we were shown was on the same floor as the
-drawing-room. It was furnished partly as a sitting and partly as a
-bedroom, with flowers arranged daintily in every nook and corner. A
-young man, very pale and worn, was lying upon a sofa near the open
-window, through which came the rich scent of the garden and the balmy
-summer air. A woman was sitting beside him, who rose as we entered.
-
-"Shall I leave, Percy?" she asked.
-
-He clutched her hand to detain her. "How are you, Watson?" said he,
-cordially. "I should never have known you under that moustache, and I
-dare say you would not be prepared to swear to me. This I presume is
-your celebrated friend, Mr. Sherlock Holmes?"
-
-I introduced him in a few words, and we both sat down. The stout young
-man had left us, but his sister still remained with her hand in that of
-the invalid. She was a striking-looking woman, a little short and
-thick for symmetry, but with a beautiful olive complexion, large, dark,
-Italian eyes, and a wealth of deep black hair. Her rich tints made the
-white face of her companion the more worn and haggard by the contrast.
-
-"I won't waste your time," said he, raising himself upon the sofa.
-"I'll plunge into the matter without further preamble. I was a happy
-and successful man, Mr. Holmes, and on the eve of being married, when a
-sudden and dreadful misfortune wrecked all my prospects in life.
-
-"I was, as Watson may have told you, in the Foreign Office, and
-through the influences of my uncle, Lord Holdhurst, I rose rapidly to
-a responsible position. When my uncle became foreign minister in this
-administration he gave me several missions of trust, and as I always
-brought them to a successful conclusion, he came at last to have the
-utmost confidence in my ability and tact.
-
-"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
-me into his private room, and, after complimenting me on the good work
-which I had done, he informed me that he had a new commission of trust
-for me to execute.
-
-"'This,' said he, taking a gray roll of paper from his bureau, 'is the
-original of that secret treaty between England and Italy of which, I
-regret to say, some rumors have already got into the public press. It is
-of enormous importance that nothing further should leak out. The French
-or the Russian embassy would pay an immense sum to learn the contents
-of these papers. They should not leave my bureau were it not that it
-is absolutely necessary to have them copied. You have a desk in your
-office?"
-
-"'Yes, sir.'
-
-"'Then take the treaty and lock it up there. I shall give directions
-that you may remain behind when the others go, so that you may copy
-it at your leisure without fear of being overlooked. When you have
-finished, relock both the original and the draft in the desk, and hand
-them over to me personally to-morrow morning.'
-
-"I took the papers and--"
-
-"Excuse me an instant," said Holmes. "Were you alone during this
-conversation?"
-
-"Absolutely."
-
-"In a large room?"
-
-"Thirty feet each way."
-
-"In the centre?"
-
-"Yes, about it."
-
-"And speaking low?"
-
-"My uncle's voice is always remarkably low. I hardly spoke at all."
-
-"Thank you," said Holmes, shutting his eyes; "pray go on."
-
-"I did exactly what he indicated, and waited until the other clerks had
-departed. One of them in my room, Charles Gorot, had some arrears
-of work to make up, so I left him there and went out to dine. When I
-returned he was gone. I was anxious to hurry my work, for I knew that
-Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
-would travel down to Woking by the eleven-o'clock train, and I wanted if
-possible to catch it.
-
-"When I came to examine the treaty I saw at once that it was of such
-importance that my uncle had been guilty of no exaggeration in what
-he had said. Without going into details, I may say that it defined the
-position of Great Britain towards the Triple Alliance, and fore-shadowed
-the policy which this country would pursue in the event of the
-French fleet gaining a complete ascendancy over that of Italy in the
-Mediterranean. The questions treated in it were purely naval. At the end
-were the signatures of the high dignitaries who had signed it. I glanced
-my eyes over it, and then settled down to my task of copying.
-
-"It was a long document, written in the French language, and containing
-twenty-six separate articles. I copied as quickly as I could, but at
-nine o'clock I had only done nine articles, and it seemed hopeless for
-me to attempt to catch my train. I was feeling drowsy and stupid, partly
-from my dinner and also from the effects of a long day's work. A cup of
-coffee would clear my brain. A commissionnaire remains all night in a
-little lodge at the foot of the stairs, and is in the habit of making
-coffee at his spirit-lamp for any of the officials who may be working
-over time. I rang the bell, therefore, to summon him.
-
-"To my surprise, it was a woman who answered the summons, a large,
-coarse-faced, elderly woman, in an apron. She explained that she was the
-commissionnaire's wife, who did the charing, and I gave her the order
-for the coffee.
-
-"I wrote two more articles and then, feeling more drowsy than ever, I
-rose and walked up and down the room to stretch my legs. My coffee had
-not yet come, and I wondered what was the cause of the delay could be.
-Opening the door, I started down the corridor to find out. There was a
-straight passage, dimly lighted, which led from the room in which I
-had been working, and was the only exit from it. It ended in a curving
-staircase, with the commissionnaire's lodge in the passage at the
-bottom. Half way down this staircase is a small landing, with another
-passage running into it at right angles. This second one leads by means
-of a second small stair to a side door, used by servants, and also as
-a short cut by clerks when coming from Charles Street. Here is a rough
-chart of the place."
-
-"Thank you. I think that I quite follow you," said Sherlock Holmes.
-
-"It is of the utmost importance that you should notice this point.
-I went down the stairs and into the hall, where I found the
-commissionnaire fast asleep in his box, with the kettle boiling
-furiously upon the spirit-lamp. I took off the kettle and blew out the
-lamp, for the water was spurting over the floor. Then I put out my hand
-and was about to shake the man, who was still sleeping soundly, when a
-bell over his head rang loudly, and he woke with a start.
-
-"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
-
-"'I came down to see if my coffee was ready.'
-
-"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
-then up at the still quivering bell with an ever-growing astonishment
-upon his face.
-
-"'If you was here, sir, then who rang the bell?' he asked.
-
-"'The bell!' I cried. 'What bell is it?'
-
-"'It's the bell of the room you were working in.'
-
-"A cold hand seemed to close round my heart. Some one, then, was in that
-room where my precious treaty lay upon the table. I ran frantically up
-the stair and along the passage. There was no one in the corridors, Mr.
-Holmes. There was no one in the room. All was exactly as I left it, save
-only that the papers which had been committed to my care had been taken
-from the desk on which they lay. The copy was there, and the original
-was gone."
-
-Holmes sat up in his chair and rubbed his hands. I could see that the
-problem was entirely to his heart. "Pray, what did you do then?" he
-murmured.
-
-"I recognized in an instant that the thief must have come up the stairs
-from the side door. Of course I must have met him if he had come the
-other way."
-
-"You were satisfied that he could not have been concealed in the room
-all the time, or in the corridor which you have just described as dimly
-lighted?"
-
-"It is absolutely impossible. A rat could not conceal himself either in
-the room or the corridor. There is no cover at all."
-
-"Thank you. Pray proceed."
-
-"The commissionnaire, seeing by my pale face that something was to be
-feared, had followed me upstairs. Now we both rushed along the corridor
-and down the steep steps which led to Charles Street. The door at the
-bottom was closed, but unlocked. We flung it open and rushed out. I can
-distinctly remember that as we did so there came three chimes from a
-neighboring clock. It was quarter to ten."
-
-"That is of enormous importance," said Holmes, making a note upon his
-shirt-cuff.
-
-"The night was very dark, and a thin, warm rain was falling. There was
-no one in Charles Street, but a great traffic was going on, as usual, in
-Whitehall, at the extremity. We rushed along the pavement, bare-headed
-as we were, and at the far corner we found a policeman standing.
-
-"'A robbery has been committed,' I gasped. 'A document of immense value
-has been stolen from the Foreign Office. Has any one passed this way?'
-
-"'I have been standing here for a quarter of an hour, sir,' said he;
-'only one person has passed during that time--a woman, tall and elderly,
-with a Paisley shawl.'
-
-"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
-passed?'
-
-"'No one.'
-
-"'Then it must be the other way that the thief took,' cried the fellow,
-tugging at my sleeve.
-
-"'But I was not satisfied, and the attempts which he made to draw me
-away increased my suspicions.
-
-"'Which way did the woman go?' I cried.
-
-"'I don't know, sir. I noticed her pass, but I had no special reason for
-watching her. She seemed to be in a hurry.'
-
-"'How long ago was it?'
-
-"'Oh, not very many minutes.'
-
-"'Within the last five?'
-
-"'Well, it could not be more than five.'
-
-"'You're only wasting your time, sir, and every minute now is of
-importance,' cried the commissionnaire; 'take my word for it that my old
-woman has nothing to do with it, and come down to the other end of the
-street. Well, if you won't, I will.' And with that he rushed off in the
-other direction.
-
-"But I was after him in an instant and caught him by the sleeve.
-
-"'Where do you live?' said I.
-
-"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
-away upon a false scent, Mr. Phelps. Come to the other end of the street
-and let us see if we can hear of anything.'
-
-"Nothing was to be lost by following his advice. With the policeman we
-both hurried down, but only to find the street full of traffic, many
-people coming and going, but all only too eager to get to a place of
-safety upon so wet a night. There was no lounger who could tell us who
-had passed.
-
-"Then we returned to the office, and searched the stairs and the passage
-without result. The corridor which led to the room was laid down with
-a kind of creamy linoleum which shows an impression very easily. We
-examined it very carefully, but found no outline of any footmark."
-
-"Had it been raining all evening?"
-
-"Since about seven."
-
-"How is it, then, that the woman who came into the room about nine left
-no traces with her muddy boots?"
-
-"I am glad you raised the point. It occurred to me at the time.
-The charwomen are in the habit of taking off their boots at the
-commissionnaire's office, and putting on list slippers."
-
-"That is very clear. There were no marks, then, though the night was a
-wet one? The chain of events is certainly one of extraordinary interest.
-What did you do next?
-
-"We examined the room also. There is no possibility of a secret door,
-and the windows are quite thirty feet from the ground. Both of them
-were fastened on the inside. The carpet prevents any possibility of a
-trap-door, and the ceiling is of the ordinary whitewashed kind. I will
-pledge my life that whoever stole my papers could only have come through
-the door."
-
-"How about the fireplace?"
-
-"They use none. There is a stove. The bell-rope hangs from the wire just
-to the right of my desk. Whoever rang it must have come right up to the
-desk to do it. But why should any criminal wish to ring the bell? It is
-a most insoluble mystery."
-
-"Certainly the incident was unusual. What were your next steps? You
-examined the room, I presume, to see if the intruder had left any
-traces--any cigar-end or dropped glove or hairpin or other trifle?"
-
-"There was nothing of the sort."
-
-"No smell?"
-
-"Well, we never thought of that."
-
-"Ah, a scent of tobacco would have been worth a great deal to us in such
-an investigation."
-
-"I never smoke myself, so I think I should have observed it if there had
-been any smell of tobacco. There was absolutely no clue of any kind. The
-only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
-the name--had hurried out of the place. He could give no explanation
-save that it was about the time when the woman always went home. The
-policeman and I agreed that our best plan would be to seize the woman
-before she could get rid of the papers, presuming that she had them.
-
-"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
-detective, came round at once and took up the case with a great deal of
-energy. We hired a hansom, and in half an hour we were at the address
-which had been given to us. A young woman opened the door, who proved to
-be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
-we were shown into the front room to wait.
-
-"About ten minutes later a knock came at the door, and here we made the
-one serious mistake for which I blame myself. Instead of opening the
-door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
-there are two men in the house waiting to see you,' and an instant
-afterwards we heard the patter of feet rushing down the passage. Forbes
-flung open the door, and we both ran into the back room or kitchen, but
-the woman had got there before us. She stared at us with defiant
-eyes, and then, suddenly recognizing me, an expression of absolute
-astonishment came over her face.
-
-"'Why, if it isn't Mr. Phelps, of the office!' she cried.
-
-"'Come, come, who did you think we were when you ran away from us?'
-asked my companion.
-
-"'I thought you were the brokers,' said she, 'we have had some trouble
-with a tradesman.'
-
-"'That's not quite good enough,' answered Forbes. 'We have reason to
-believe that you have taken a paper of importance from the Foreign
-Office, and that you ran in here to dispose of it. You must come back
-with us to Scotland Yard to be searched.'
-
-"It was in vain that she protested and resisted. A four-wheeler was
-brought, and we all three drove back in it. We had first made an
-examination of the kitchen, and especially of the kitchen fire, to see
-whether she might have made away with the papers during the instant that
-she was alone. There were no signs, however, of any ashes or scraps.
-When we reached Scotland Yard she was handed over at once to the female
-searcher. I waited in an agony of suspense until she came back with her
-report. There were no signs of the papers.
-
-"Then for the first time the horror of my situation came in its full
-force. Hitherto I had been acting, and action had numbed thought. I had
-been so confident of regaining the treaty at once that I had not dared
-to think of what would be the consequence if I failed to do so. But
-now there was nothing more to be done, and I had leisure to realize
-my position. It was horrible. Watson there would tell you that I was a
-nervous, sensitive boy at school. It is my nature. I thought of my uncle
-and of his colleagues in the Cabinet, of the shame which I had brought
-upon him, upon myself, upon every one connected with me. What though I
-was the victim of an extraordinary accident? No allowance is made
-for accidents where diplomatic interests are at stake. I was ruined,
-shamefully, hopelessly ruined. I don't know what I did. I fancy I must
-have made a scene. I have a dim recollection of a group of officials who
-crowded round me, endeavoring to soothe me. One of them drove down with
-me to Waterloo, and saw me into the Woking train. I believe that he
-would have come all the way had it not been that Dr. Ferrier, who lives
-near me, was going down by that very train. The doctor most kindly took
-charge of me, and it was well he did so, for I had a fit in the station,
-and before we reached home I was practically a raving maniac.
-
-"You can imagine the state of things here when they were roused from
-their beds by the doctor's ringing and found me in this condition. Poor
-Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
-enough from the detective at the station to be able to give an idea of
-what had happened, and his story did not mend matters. It was evident to
-all that I was in for a long illness, so Joseph was bundled out of this
-cheery bedroom, and it was turned into a sick-room for me. Here I have
-lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
-brain-fever. If it had not been for Miss Harrison here and for the
-doctor's care I should not be speaking to you now. She has nursed me by
-day and a hired nurse has looked after me by night, for in my mad fits
-I was capable of anything. Slowly my reason has cleared, but it is only
-during the last three days that my memory has quite returned. Sometimes
-I wish that it never had. The first thing that I did was to wire to
-Mr. Forbes, who had the case in hand. He came out, and assures me that,
-though everything has been done, no trace of a clue has been discovered.
-The commissionnaire and his wife have been examined in every way without
-any light being thrown upon the matter. The suspicions of the police
-then rested upon young Gorot, who, as you may remember, stayed over time
-in the office that night. His remaining behind and his French name were
-really the only two points which could suggest suspicion; but, as a
-matter of fact, I did not begin work until he had gone, and his people
-are of Huguenot extraction, but as English in sympathy and tradition as
-you and I are. Nothing was found to implicate him in any way, and there
-the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
-hope. If you fail me, then my honor as well as my position are forever
-forfeited."
-
-The invalid sank back upon his cushions, tired out by this long recital,
-while his nurse poured him out a glass of some stimulating medicine.
-Holmes sat silently, with his head thrown back and his eyes closed, in
-an attitude which might seem listless to a stranger, but which I knew
-betokened the most intense self-absorption.
-
-"You statement has been so explicit," said he at last, "that you have
-really left me very few questions to ask. There is one of the very
-utmost importance, however. Did you tell any one that you had this
-special task to perform?"
-
-"No one."
-
-"Not Miss Harrison here, for example?"
-
-"No. I had not been back to Woking between getting the order and
-executing the commission."
-
-"And none of your people had by chance been to see you?"
-
-"None."
-
-"Did any of them know their way about in the office?"
-
-"Oh, yes, all of them had been shown over it."
-
-"Still, of course, if you said nothing to any one about the treaty these
-inquiries are irrelevant."
-
-"I said nothing."
-
-"Do you know anything of the commissionnaire?"
-
-"Nothing except that he is an old soldier."
-
-"What regiment?"
-
-"Oh, I have heard--Coldstream Guards."
-
-"Thank you. I have no doubt I can get details from Forbes. The
-authorities are excellent at amassing facts, though they do not always
-use them to advantage. What a lovely thing a rose is!"
-
-He walked past the couch to the open window, and held up the drooping
-stalk of a moss-rose, looking down at the dainty blend of crimson and
-green. It was a new phase of his character to me, for I had never before
-seen him show any keen interest in natural objects.
-
-"There is nothing in which deduction is so necessary as in religion,"
-said he, leaning with his back against the shutters. "It can be built
-up as an exact science by the reasoner. Our highest assurance of the
-goodness of Providence seems to me to rest in the flowers. All other
-things, our powers our desires, our food, are all really necessary for
-our existence in the first instance. But this rose is an extra. Its
-smell and its color are an embellishment of life, not a condition of it.
-It is only goodness which gives extras, and so I say again that we have
-much to hope from the flowers."
-
-Percy Phelps and his nurse looked at Holmes during this demonstration
-with surprise and a good deal of disappointment written upon their
-faces. He had fallen into a reverie, with the moss-rose between his
-fingers. It had lasted some minutes before the young lady broke in upon
-it.
-
-"Do you see any prospect of solving this mystery, Mr. Holmes?" she
-asked, with a touch of asperity in her voice.
-
-"Oh, the mystery!" he answered, coming back with a start to the
-realities of life. "Well, it would be absurd to deny that the case is
-a very abstruse and complicated one, but I can promise you that I will
-look into the matter and let you know any points which may strike me."
-
-"Do you see any clue?"
-
-"You have furnished me with seven, but, of course, I must test them
-before I can pronounce upon their value."
-
-"You suspect some one?"
-
-"I suspect myself."
-
-"What!"
-
-"Of coming to conclusions too rapidly."
-
-"Then go to London and test your conclusions."
-
-"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
-think, Watson, we cannot do better. Do not allow yourself to indulge in
-false hopes, Mr. Phelps. The affair is a very tangled one."
-
-"I shall be in a fever until I see you again," cried the diplomatist.
-
-"Well, I'll come out by the same train to-morrow, though it's more than
-likely that my report will be a negative one."
-
-"God bless you for promising to come," cried our client. "It gives me
-fresh life to know that something is being done. By the way, I have had
-a letter from Lord Holdhurst."
-
-"Ha! What did he say?"
-
-"He was cold, but not harsh. I dare say my severe illness prevented
-him from being that. He repeated that the matter was of the utmost
-importance, and added that no steps would be taken about my future--by
-which he means, of course, my dismissal--until my health was restored
-and I had an opportunity of repairing my misfortune."
-
-"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
-for we have a good day's work before us in town."
-
-Mr. Joseph Harrison drove us down to the station, and we were soon
-whirling up in a Portsmouth train. Holmes was sunk in profound thought,
-and hardly opened his mouth until we had passed Clapham Junction.
-
-"It's a very cheery thing to come into London by any of these lines
-which run high, and allow you to look down upon the houses like this."
-
-I thought he was joking, for the view was sordid enough, but he soon
-explained himself.
-
-"Look at those big, isolated clumps of building rising up above the
-slates, like brick islands in a lead-colored sea."
-
-"The board-schools."
-
-"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
-bright little seeds in each, out of which will spring the wise, better
-England of the future. I suppose that man Phelps does not drink?"
-
-"I should not think so."
-
-"Nor should I, but we are bound to take every possibility into account.
-The poor devil has certainly got himself into very deep water, and it's
-a question whether we shall ever be able to get him ashore. What did you
-think of Miss Harrison?"
-
-"A girl of strong character."
-
-"Yes, but she is a good sort, or I am mistaken. She and her brother are
-the only children of an iron-master somewhere up Northumberland way. He
-got engaged to her when traveling last winter, and she came down to
-be introduced to his people, with her brother as escort. Then came
-the smash, and she stayed on to nurse her lover, while brother Joseph,
-finding himself pretty snug, stayed on too. I've been making a few
-independent inquiries, you see. But to-day must be a day of inquiries."
-
-"My practice--" I began.
-
-"Oh, if you find your own cases more interesting than mine--" said
-Holmes, with some asperity.
-
-"I was going to say that my practice could get along very well for a day
-or two, since it is the slackest time in the year."
-
-"Excellent," said he, recovering his good-humor. "Then we'll look into
-this matter together. I think that we should begin by seeing Forbes.
-He can probably tell us all the details we want until we know from what
-side the case is to be approached."
-
-"You said you had a clue?"
-
-"Well, we have several, but we can only test their value by further
-inquiry. The most difficult crime to track is the one which is
-purposeless. Now this is not purposeless. Who is it who profits by it?
-There is the French ambassador, there is the Russian, there is whoever
-might sell it to either of these, and there is Lord Holdhurst."
-
-"Lord Holdhurst!"
-
-"Well, it is just conceivable that a statesman might find himself in
-a position where he was not sorry to have such a document accidentally
-destroyed."
-
-"Not a statesman with the honorable record of Lord Holdhurst?"
-
-"It is a possibility and we cannot afford to disregard it. We shall see
-the noble lord to-day and find out if he can tell us anything. Meanwhile
-I have already set inquiries on foot."
-
-"Already?"
-
-"Yes, I sent wires from Woking station to every evening paper in London.
-This advertisement will appear in each of them."
-
-He handed over a sheet torn from a note-book. On it was scribbled in
-pencil: "L10 reward. The number of the cab which dropped a fare at or
-about the door of the Foreign Office in Charles Street at quarter to ten
-in the evening of May 23d. Apply 221 B, Baker Street."
-
-"You are confident that the thief came in a cab?"
-
-"If not, there is no harm done. But if Mr. Phelps is correct in stating
-that there is no hiding-place either in the room or the corridors, then
-the person must have come from outside. If he came from outside on so
-wet a night, and yet left no trace of damp upon the linoleum, which
-was examined within a few minutes of his passing, then it is exceeding
-probable that he came in a cab. Yes, I think that we may safely deduce a
-cab."
-
-"It sounds plausible."
-
-"That is one of the clues of which I spoke. It may lead us to something.
-And then, of course, there is the bell--which is the most distinctive
-feature of the case. Why should the bell ring? Was it the thief who did
-it out of bravado? Or was it some one who was with the thief who did it
-in order to prevent the crime? Or was it an accident? Or was it--?" He
-sank back into the state of intense and silent thought from which he
-had emerged; but it seemed to me, accustomed as I was to his every mood,
-that some new possibility had dawned suddenly upon him.
-
-It was twenty past three when we reached our terminus, and after a hasty
-luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
-had already wired to Forbes, and we found him waiting to receive us--a
-small, foxy man with a sharp but by no means amiable expression. He
-was decidedly frigid in his manner to us, especially when he heard the
-errand upon which we had come.
-
-"I've heard of your methods before now, Mr. Holmes," said he, tartly.
-"You are ready enough to use all the information that the police can lay
-at your disposal, and then you try to finish the case yourself and bring
-discredit on them."
-
-"On the contrary," said Holmes, "out of my last fifty-three cases my
-name has only appeared in four, and the police have had all the credit
-in forty-nine. I don't blame you for not knowing this, for you are young
-and inexperienced, but if you wish to get on in your new duties you will
-work with me and not against me."
-
-"I'd be very glad of a hint or two," said the detective, changing his
-manner. "I've certainly had no credit from the case so far."
-
-"What steps have you taken?"
-
-"Tangey, the commissionnaire, has been shadowed. He left the Guards with
-a good character and we can find nothing against him. His wife is a bad
-lot, though. I fancy she knows more about this than appears."
-
-"Have you shadowed her?"
-
-"We have set one of our women on to her. Mrs. Tangey drinks, and our
-woman has been with her twice when she was well on, but she could get
-nothing out of her."
-
-"I understand that they have had brokers in the house?"
-
-"Yes, but they were paid off."
-
-"Where did the money come from?"
-
-"That was all right. His pension was due. They have not shown any sign
-of being in funds."
-
-"What explanation did she give of having answered the bell when Mr.
-Phelps rang for the coffee?"
-
-"She said that he husband was very tired and she wished to relieve him."
-
-"Well, certainly that would agree with his being found a little later
-asleep in his chair. There is nothing against them then but the woman's
-character. Did you ask her why she hurried away that night? Her haste
-attracted the attention of the police constable."
-
-"She was later than usual and wanted to get home."
-
-"Did you point out to her that you and Mr. Phelps, who started at least
-twenty minutes after her, got home before her?"
-
-"She explains that by the difference between a 'bus and a hansom."
-
-"Did she make it clear why, on reaching her house, she ran into the back
-kitchen?"
-
-"Because she had the money there with which to pay off the brokers."
-
-"She has at least an answer for everything. Did you ask her whether in
-leaving she met any one or saw any one loitering about Charles Street?"
-
-"She saw no one but the constable."
-
-"Well, you seem to have cross-examined her pretty thoroughly. What else
-have you done?"
-
-"The clerk Gorot has been shadowed all these nine weeks, but without
-result. We can show nothing against him."
-
-"Anything else?"
-
-"Well, we have nothing else to go upon--no evidence of any kind."
-
-"Have you formed a theory about how that bell rang?"
-
-"Well, I must confess that it beats me. It was a cool hand, whoever it
-was, to go and give the alarm like that."
-
-"Yes, it was queer thing to do. Many thanks to you for what you have
-told me. If I can put the man into your hands you shall hear from me.
-Come along, Watson."
-
-"Where are we going to now?" I asked, as we left the office.
-
-"We are now going to interview Lord Holdhurst, the cabinet minister and
-future premier of England."
-
-We were fortunate in finding that Lord Holdhurst was still in his
-chambers in Downing Street, and on Holmes sending in his card we were
-instantly shown up. The statesman received us with that old-fashioned
-courtesy for which he is remarkable, and seated us on the two luxuriant
-lounges on either side of the fireplace. Standing on the rug between us,
-with his slight, tall figure, his sharp features, thoughtful face, and
-curling hair prematurely tinged with gray, he seemed to represent that
-not too common type, a nobleman who is in truth noble.
-
-"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
-of course, I cannot pretend to be ignorant of the object of your visit.
-There has only been one occurrence in these offices which could call for
-your attention. In whose interest are you acting, may I ask?"
-
-"In that of Mr. Percy Phelps," answered Holmes.
-
-"Ah, my unfortunate nephew! You can understand that our kinship makes
-it the more impossible for me to screen him in any way. I fear that the
-incident must have a very prejudicial effect upon his career."
-
-"But if the document is found?"
-
-"Ah, that, of course, would be different."
-
-"I had one or two questions which I wished to ask you, Lord Holdhurst."
-
-"I shall be happy to give you any information in my power."
-
-"Was it in this room that you gave your instructions as to the copying
-of the document?"
-
-"It was."
-
-"Then you could hardly have been overheard?"
-
-"It is out of the question."
-
-"Did you ever mention to any one that it was your intention to give any
-one the treaty to be copied?"
-
-"Never."
-
-"You are certain of that?"
-
-"Absolutely."
-
-"Well, since you never said so, and Mr. Phelps never said so, and nobody
-else knew anything of the matter, then the thief's presence in the room
-was purely accidental. He saw his chance and he took it."
-
-The statesman smiled. "You take me out of my province there," said he.
-
-Holmes considered for a moment. "There is another very important
-point which I wish to discuss with you," said he. "You feared, as I
-understand, that very grave results might follow from the details of
-this treaty becoming known."
-
-A shadow passed over the expressive face of the statesman. "Very grave
-results indeed."
-
-"Any have they occurred?"
-
-"Not yet."
-
-"If the treaty had reached, let us say, the French or Russian Foreign
-Office, you would expect to hear of it?"
-
-"I should," said Lord Holdhurst, with a wry face.
-
-"Since nearly ten weeks have elapsed, then, and nothing has been heard,
-it is not unfair to suppose that for some reason the treaty has not
-reached them."
-
-Lord Holdhurst shrugged his shoulders.
-
-"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
-order to frame it and hang it up."
-
-"Perhaps he is waiting for a better price."
-
-"If he waits a little longer he will get no price at all. The treaty
-will cease to be secret in a few months."
-
-"That is most important," said Holmes. "Of course, it is a possible
-supposition that the thief has had a sudden illness--"
-
-"An attack of brain-fever, for example?" asked the statesman, flashing a
-swift glance at him.
-
-"I did not say so," said Holmes, imperturbably. "And now, Lord
-Holdhurst, we have already taken up too much of your valuable time, and
-we shall wish you good-day."
-
-"Every success to your investigation, be the criminal who it may,"
-answered the nobleman, as he bowed us out the door.
-
-"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
-he has a struggle to keep up his position. He is far from rich and has
-many calls. You noticed, of course, that his boots had been resoled.
-Now, Watson, I won't detain you from your legitimate work any longer.
-I shall do nothing more to-day, unless I have an answer to my cab
-advertisement. But I should be extremely obliged to you if you would
-come down with me to Woking to-morrow, by the same train which we took
-yesterday."
-
-
-I met him accordingly next morning and we traveled down to Woking
-together. He had had no answer to his advertisement, he said, and no
-fresh light had been thrown upon the case. He had, when he so willed
-it, the utter immobility of countenance of a red Indian, and I could
-not gather from his appearance whether he was satisfied or not with
-the position of the case. His conversation, I remember, was about the
-Bertillon system of measurements, and he expressed his enthusiastic
-admiration of the French savant.
-
-We found our client still under the charge of his devoted nurse, but
-looking considerably better than before. He rose from the sofa and
-greeted us without difficulty when we entered.
-
-"Any news?" he asked, eagerly.
-
-"My report, as I expected, is a negative one," said Holmes. "I have seen
-Forbes, and I have seen your uncle, and I have set one or two trains of
-inquiry upon foot which may lead to something."
-
-"You have not lost heart, then?"
-
-"By no means."
-
-"God bless you for saying that!" cried Miss Harrison. "If we keep our
-courage and our patience the truth must come out."
-
-"We have more to tell you than you have for us," said Phelps, reseating
-himself upon the couch.
-
-"I hoped you might have something."
-
-"Yes, we have had an adventure during the night, and one which might
-have proved to be a serious one." His expression grew very grave as he
-spoke, and a look of something akin to fear sprang up in his eyes. "Do
-you know," said he, "that I begin to believe that I am the unconscious
-centre of some monstrous conspiracy, and that my life is aimed at as
-well as my honor?"
-
-"Ah!" cried Holmes.
-
-"It sounds incredible, for I have not, as far as I know, an enemy in
-the world. Yet from last night's experience I can come to no other
-conclusion."
-
-"Pray let me hear it."
-
-"You must know that last night was the very first night that I have ever
-slept without a nurse in the room. I was so much better that I thought
-I could dispense with one. I had a night-light burning, however. Well,
-about two in the morning I had sunk into a light sleep when I was
-suddenly aroused by a slight noise. It was like the sound which a mouse
-makes when it is gnawing a plank, and I lay listening to it for some
-time under the impression that it must come from that cause. Then it
-grew louder, and suddenly there came from the window a sharp metallic
-snick. I sat up in amazement. There could be no doubt what the sounds
-were now. The first ones had been caused by some one forcing an
-instrument through the slit between the sashes, and the second by the
-catch being pressed back.
-
-"There was a pause then for about ten minutes, as if the person were
-waiting to see whether the noise had awakened me. Then I heard a gentle
-creaking as the window was very slowly opened. I could stand it no
-longer, for my nerves are not what they used to be. I sprang out of bed
-and flung open the shutters. A man was crouching at the window. I could
-see little of him, for he was gone like a flash. He was wrapped in some
-sort of cloak which came across the lower part of his face. One thing
-only I am sure of, and that is that he had some weapon in his hand. It
-looked to me like a long knife. I distinctly saw the gleam of it as he
-turned to run."
-
-"This is most interesting," said Holmes. "Pray what did you do then?"
-
-"I should have followed him through the open window if I had been
-stronger. As it was, I rang the bell and roused the house. It took me
-some little time, for the bell rings in the kitchen and the servants all
-sleep upstairs. I shouted, however, and that brought Joseph down, and he
-roused the others. Joseph and the groom found marks on the bed outside
-the window, but the weather has been so dry lately that they found it
-hopeless to follow the trail across the grass. There's a place, however,
-on the wooden fence which skirts the road which shows signs, they tell
-me, as if some one had got over, and had snapped the top of the rail in
-doing so. I have said nothing to the local police yet, for I thought I
-had best have your opinion first."
-
-This tale of our client's appeared to have an extraordinary effect upon
-Sherlock Holmes. He rose from his chair and paced about the room in
-uncontrollable excitement.
-
-"Misfortunes never come single," said Phelps, smiling, though it was
-evident that his adventure had somewhat shaken him.
-
-"You have certainly had your share," said Holmes. "Do you think you
-could walk round the house with me?"
-
-"Oh, yes, I should like a little sunshine. Joseph will come, too."
-
-"And I also," said Miss Harrison.
-
-"I am afraid not," said Holmes, shaking his head. "I think I must ask
-you to remain sitting exactly where you are."
-
-The young lady resumed her seat with an air of displeasure. Her brother,
-however, had joined us and we set off all four together. We passed round
-the lawn to the outside of the young diplomatist's window. There were,
-as he had said, marks upon the bed, but they were hopelessly blurred and
-vague. Holmes stopped over them for an instant, and then rose shrugging
-his shoulders.
-
-"I don't think any one could make much of this," said he. "Let us go
-round the house and see why this particular room was chosen by the
-burglar. I should have thought those larger windows of the drawing-room
-and dining-room would have had more attractions for him."
-
-"They are more visible from the road," suggested Mr. Joseph Harrison.
-
-"Ah, yes, of course. There is a door here which he might have attempted.
-What is it for?"
-
-"It is the side entrance for trades-people. Of course it is locked at
-night."
-
-"Have you ever had an alarm like this before?"
-
-"Never," said our client.
-
-"Do you keep plate in the house, or anything to attract burglars?"
-
-"Nothing of value."
-
-Holmes strolled round the house with his hands in his pockets and a
-negligent air which was unusual with him.
-
-"By the way," said he to Joseph Harrison, "you found some place, I
-understand, where the fellow scaled the fence. Let us have a look at
-that!"
-
-The plump young man led us to a spot where the top of one of the wooden
-rails had been cracked. A small fragment of the wood was hanging down.
-Holmes pulled it off and examined it critically.
-
-"Do you think that was done last night? It looks rather old, does it
-not?"
-
-"Well, possibly so."
-
-"There are no marks of any one jumping down upon the other side. No, I
-fancy we shall get no help here. Let us go back to the bedroom and talk
-the matter over."
-
-Percy Phelps was walking very slowly, leaning upon the arm of his future
-brother-in-law. Holmes walked swiftly across the lawn, and we were at
-the open window of the bedroom long before the others came up.
-
-"Miss Harrison," said Holmes, speaking with the utmost intensity of
-manner, "you must stay where you are all day. Let nothing prevent you
-from staying where you are all day. It is of the utmost importance."
-
-"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
-
-"When you go to bed lock the door of this room on the outside and keep
-the key. Promise to do this."
-
-"But Percy?"
-
-"He will come to London with us."
-
-"And am I to remain here?"
-
-"It is for his sake. You can serve him. Quick! Promise!"
-
-She gave a quick nod of assent just as the other two came up.
-
-"Why do you sit moping there, Annie?" cried her brother. "Come out into
-the sunshine!"
-
-"No, thank you, Joseph. I have a slight headache and this room is
-deliciously cool and soothing."
-
-"What do you propose now, Mr. Holmes?" asked our client.
-
-"Well, in investigating this minor affair we must not lose sight of our
-main inquiry. It would be a very great help to me if you would come up
-to London with us."
-
-"At once?"
-
-"Well, as soon as you conveniently can. Say in an hour."
-
-"I feel quite strong enough, if I can really be of any help."
-
-"The greatest possible."
-
-"Perhaps you would like me to stay there to-night?"
-
-"I was just going to propose it."
-
-"Then, if my friend of the night comes to revisit me, he will find the
-bird flown. We are all in your hands, Mr. Holmes, and you must tell us
-exactly what you would like done. Perhaps you would prefer that Joseph
-came with us so as to look after me?"
-
-"Oh, no; my friend Watson is a medical man, you know, and he'll look
-after you. We'll have our lunch here, if you will permit us, and then we
-shall all three set off for town together."
-
-It was arranged as he suggested, though Miss Harrison excused herself
-from leaving the bedroom, in accordance with Holmes's suggestion. What
-the object of my friend's manoeuvres was I could not conceive, unless it
-were to keep the lady away from Phelps, who, rejoiced by his
-returning health and by the prospect of action, lunched with us in the
-dining-room. Holmes had a still more startling surprise for us, however,
-for, after accompanying us down to the station and seeing us into
-our carriage, he calmly announced that he had no intention of leaving
-Woking.
-
-"There are one or two small points which I should desire to clear up
-before I go," said he. "Your absence, Mr. Phelps, will in some ways
-rather assist me. Watson, when you reach London you would oblige me by
-driving at once to Baker Street with our friend here, and remaining
-with him until I see you again. It is fortunate that you are old
-school-fellows, as you must have much to talk over. Mr. Phelps can
-have the spare bedroom to-night, and I will be with you in time for
-breakfast, for there is a train which will take me into Waterloo at
-eight."
-
-"But how about our investigation in London?" asked Phelps, ruefully.
-
-"We can do that to-morrow. I think that just at present I can be of more
-immediate use here."
-
-"You might tell them at Briarbrae that I hope to be back to-morrow
-night," cried Phelps, as we began to move from the platform.
-
-"I hardly expect to go back to Briarbrae," answered Holmes, and waved
-his hand to us cheerily as we shot out from the station.
-
-Phelps and I talked it over on our journey, but neither of us could
-devise a satisfactory reason for this new development.
-
-"I suppose he wants to find out some clue as to the burglary last night,
-if a burglar it was. For myself, I don't believe it was an ordinary
-thief."
-
-"What is your own idea, then?"
-
-"Upon my word, you may put it down to my weak nerves or not, but I
-believe there is some deep political intrigue going on around me, and
-that for some reason that passes my understanding my life is aimed at
-by the conspirators. It sounds high-flown and absurd, but consider the
-facts! Why should a thief try to break in at a bedroom window, where
-there could be no hope of any plunder, and why should he come with a
-long knife in his hand?"
-
-"You are sure it was not a house-breaker's jimmy?"
-
-"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
-
-"But why on earth should you be pursued with such animosity?"
-
-"Ah, that is the question."
-
-"Well, if Holmes takes the same view, that would account for his action,
-would it not? Presuming that your theory is correct, if he can lay his
-hands upon the man who threatened you last night he will have gone a
-long way towards finding who took the naval treaty. It is absurd to
-suppose that you have two enemies, one of whom robs you, while the other
-threatens your life."
-
-"But Holmes said that he was not going to Briarbrae."
-
-"I have known him for some time," said I, "but I never knew him do
-anything yet without a very good reason," and with that our conversation
-drifted off on to other topics.
-
-But it was a weary day for me. Phelps was still weak after his long
-illness, and his misfortune made him querulous and nervous. In vain
-I endeavored to interest him in Afghanistan, in India, in social
-questions, in anything which might take his mind out of the groove.
-He would always come back to his lost treaty, wondering, guessing,
-speculating, as to what Holmes was doing, what steps Lord Holdhurst was
-taking, what news we should have in the morning. As the evening wore on
-his excitement became quite painful.
-
-"You have implicit faith in Holmes?" he asked.
-
-"I have seen him do some remarkable things."
-
-"But he never brought light into anything quite so dark as this?"
-
-"Oh, yes; I have known him solve questions which presented fewer clues
-than yours."
-
-"But not where such large interests are at stake?"
-
-"I don't know that. To my certain knowledge he has acted on behalf of
-three of the reigning houses of Europe in very vital matters."
-
-"But you know him well, Watson. He is such an inscrutable fellow that I
-never quite know what to make of him. Do you think he is hopeful? Do you
-think he expects to make a success of it?"
-
-"He has said nothing."
-
-"That is a bad sign."
-
-"On the contrary, I have noticed that when he is off the trail he
-generally says so. It is when he is on a scent and is not quite
-absolutely sure yet that it is the right one that he is most taciturn.
-Now, my dear fellow, we can't help matters by making ourselves nervous
-about them, so let me implore you to go to bed and so be fresh for
-whatever may await us to-morrow."
-
-I was able at last to persuade my companion to take my advice, though I
-knew from his excited manner that there was not much hope of sleep for
-him. Indeed, his mood was infectious, for I lay tossing half the night
-myself, brooding over this strange problem, and inventing a hundred
-theories, each of which was more impossible than the last. Why had
-Holmes remained at Woking? Why had he asked Miss Harrison to remain
-in the sick-room all day? Why had he been so careful not to inform the
-people at Briarbrae that he intended to remain near them? I cudgelled
-my brains until I fell asleep in the endeavor to find some explanation
-which would cover all these facts.
-
-It was seven o'clock when I awoke, and I set off at once for Phelps's
-room, to find him haggard and spent after a sleepless night. His first
-question was whether Holmes had arrived yet.
-
-"He'll be here when he promised," said I, "and not an instant sooner or
-later."
-
-And my words were true, for shortly after eight a hansom dashed up to
-the door and our friend got out of it. Standing in the window we saw
-that his left hand was swathed in a bandage and that his face was very
-grim and pale. He entered the house, but it was some little time before
-he came upstairs.
-
-"He looks like a beaten man," cried Phelps.
-
-I was forced to confess that he was right. "After all," said I, "the
-clue of the matter lies probably here in town."
-
-Phelps gave a groan.
-
-"I don't know how it is," said he, "but I had hoped for so much from his
-return. But surely his hand was not tied up like that yesterday. What
-can be the matter?"
-
-"You are not wounded, Holmes?" I asked, as my friend entered the room.
-
-"Tut, it is only a scratch through my own clumsiness," he answered,
-nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
-certainly one of the darkest which I have ever investigated."
-
-"I feared that you would find it beyond you."
-
-"It has been a most remarkable experience."
-
-"That bandage tells of adventures," said I. "Won't you tell us what has
-happened?"
-
-"After breakfast, my dear Watson. Remember that I have breathed thirty
-miles of Surrey air this morning. I suppose that there has been no
-answer from my cabman advertisement? Well, well, we cannot expect to
-score every time."
-
-The table was all laid, and just as I was about to ring Mrs. Hudson
-entered with the tea and coffee. A few minutes later she brought in
-three covers, and we all drew up to the table, Holmes ravenous, I
-curious, and Phelps in the gloomiest state of depression.
-
-"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
-of curried chicken. "Her cuisine is a little limited, but she has
-as good an idea of breakfast as a Scotch-woman. What have you here,
-Watson?"
-
-"Ham and eggs," I answered.
-
-"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
-will you help yourself?"
-
-"Thank you. I can eat nothing," said Phelps.
-
-"Oh, come! Try the dish before you."
-
-"Thank you, I would really rather not."
-
-"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
-you have no objection to helping me?"
-
-Phelps raised the cover, and as he did so he uttered a scream, and sat
-there staring with a face as white as the plate upon which he looked.
-Across the centre of it was lying a little cylinder of blue-gray paper.
-He caught it up, devoured it with his eyes, and then danced madly about
-the room, pressing it to his bosom and shrieking out in his delight.
-Then he fell back into an arm-chair so limp and exhausted with his own
-emotions that we had to pour brandy down his throat to keep him from
-fainting.
-
-"There! there!" said Holmes, soothing, patting him upon the shoulder.
-"It was too bad to spring it on you like this, but Watson here will tell
-you that I never can resist a touch of the dramatic."
-
-Phelps seized his hand and kissed it. "God bless you!" he cried. "You
-have saved my honor."
-
-"Well, my own was at stake, you know," said Holmes. "I assure you it is
-just as hateful to me to fail in a case as it can be to you to blunder
-over a commission."
-
-Phelps thrust away the precious document into the innermost pocket of
-his coat.
-
-"I have not the heart to interrupt your breakfast any further, and yet I
-am dying to know how you got it and where it was."
-
-Sherlock Holmes swallowed a cup of coffee, and turned his attention to
-the ham and eggs. Then he rose, lit his pipe, and settled himself down
-into his chair.
-
-"I'll tell you what I did first, and how I came to do it afterwards,"
-said he. "After leaving you at the station I went for a charming walk
-through some admirable Surrey scenery to a pretty little village called
-Ripley, where I had my tea at an inn, and took the precaution of filling
-my flask and of putting a paper of sandwiches in my pocket. There I
-remained until evening, when I set off for Woking again, and found
-myself in the high-road outside Briarbrae just after sunset.
-
-"Well, I waited until the road was clear--it is never a very frequented
-one at any time, I fancy--and then I clambered over the fence into the
-grounds."
-
-"Surely the gate was open!" ejaculated Phelps.
-
-"Yes, but I have a peculiar taste in these matters. I chose the place
-where the three fir-trees stand, and behind their screen I got over
-without the least chance of any one in the house being able to see me.
-I crouched down among the bushes on the other side, and crawled from one
-to the other--witness the disreputable state of my trouser knees--until
-I had reached the clump of rhododendrons just opposite to your bedroom
-window. There I squatted down and awaited developments.
-
-"The blind was not down in your room, and I could see Miss Harrison
-sitting there reading by the table. It was quarter-past ten when she
-closed her book, fastened the shutters, and retired.
-
-"I heard her shut the door, and felt quite sure that she had turned the
-key in the lock."
-
-"The key!" ejaculated Phelps.
-
-"Yes; I had given Miss Harrison instructions to lock the door on the
-outside and take the key with her when she went to bed. She carried out
-every one of my injunctions to the letter, and certainly without her
-cooperation you would not have that paper in you coat-pocket. She
-departed then and the lights went out, and I was left squatting in the
-rhododendron-bush.
-
-"The night was fine, but still it was a very weary vigil. Of course it
-has the sort of excitement about it that the sportsman feels when he
-lies beside the water-course and waits for the big game. It was very
-long, though--almost as long, Watson, as when you and I waited in that
-deadly room when we looked into the little problem of the Speckled Band.
-There was a church-clock down at Woking which struck the quarters, and I
-thought more than once that it had stopped. At last however about two
-in the morning, I suddenly heard the gentle sound of a bolt being pushed
-back and the creaking of a key. A moment later the servants' door was
-opened, and Mr. Joseph Harrison stepped out into the moonlight."
-
-"Joseph!" ejaculated Phelps.
-
-"He was bare-headed, but he had a black coat thrown over his shoulder so
-that he could conceal his face in an instant if there were any alarm. He
-walked on tiptoe under the shadow of the wall, and when he reached the
-window he worked a long-bladed knife through the sash and pushed back
-the catch. Then he flung open the window, and putting his knife through
-the crack in the shutters, he thrust the bar up and swung them open.
-
-"From where I lay I had a perfect view of the inside of the room and of
-every one of his movements. He lit the two candles which stood upon the
-mantelpiece, and then he proceeded to turn back the corner of the carpet
-in the neighborhood of the door. Presently he stopped and picked out a
-square piece of board, such as is usually left to enable plumbers to get
-at the joints of the gas-pipes. This one covered, as a matter of
-fact, the T joint which gives off the pipe which supplies the kitchen
-underneath. Out of this hiding-place he drew that little cylinder
-of paper, pushed down the board, rearranged the carpet, blew out the
-candles, and walked straight into my arms as I stood waiting for him
-outside the window.
-
-"Well, he has rather more viciousness than I gave him credit for, has
-Master Joseph. He flew at me with his knife, and I had to grasp him
-twice, and got a cut over the knuckles, before I had the upper hand of
-him. He looked murder out of the only eye he could see with when we had
-finished, but he listened to reason and gave up the papers. Having
-got them I let my man go, but I wired full particulars to Forbes this
-morning. If he is quick enough to catch his bird, well and good. But
-if, as I shrewdly suspect, he finds the nest empty before he gets there,
-why, all the better for the government. I fancy that Lord Holdhurst for
-one, and Mr. Percy Phelps for another, would very much rather that the
-affair never got as far as a police-court.
-
-"My God!" gasped our client. "Do you tell me that during these long ten
-weeks of agony the stolen papers were within the very room with me all
-the time?"
-
-"So it was."
-
-"And Joseph! Joseph a villain and a thief!"
-
-"Hum! I am afraid Joseph's character is a rather deeper and more
-dangerous one than one might judge from his appearance. From what I
-have heard from him this morning, I gather that he has lost heavily in
-dabbling with stocks, and that he is ready to do anything on earth to
-better his fortunes. Being an absolutely selfish man, when a chance
-presented itself he did not allow either his sister's happiness or your
-reputation to hold his hand."
-
-Percy Phelps sank back in his chair. "My head whirls," said he. "Your
-words have dazed me."
-
-"The principal difficulty in your case," remarked Holmes, in his
-didactic fashion, "lay in the fact of there being too much evidence.
-What was vital was overlaid and hidden by what was irrelevant. Of all
-the facts which were presented to us we had to pick just those which we
-deemed to be essential, and then piece them together in their order, so
-as to reconstruct this very remarkable chain of events. I had already
-begun to suspect Joseph, from the fact that you had intended to travel
-home with him that night, and that therefore it was a likely enough
-thing that he should call for you, knowing the Foreign Office well, upon
-his way. When I heard that some one had been so anxious to get into the
-bedroom, in which no one but Joseph could have concealed anything--you
-told us in your narrative how you had turned Joseph out when you arrived
-with the doctor--my suspicions all changed to certainties, especially as
-the attempt was made on the first night upon which the nurse was absent,
-showing that the intruder was well acquainted with the ways of the
-house."
-
-"How blind I have been!"
-
-"The facts of the case, as far as I have worked them out, are these:
-this Joseph Harrison entered the office through the Charles Street door,
-and knowing his way he walked straight into your room the instant after
-you left it. Finding no one there he promptly rang the bell, and at
-the instant that he did so his eyes caught the paper upon the table.
-A glance showed him that chance had put in his way a State document of
-immense value, and in an instant he had thrust it into his pocket and
-was gone. A few minutes elapsed, as you remember, before the sleepy
-commissionnaire drew your attention to the bell, and those were just
-enough to give the thief time to make his escape.
-
-"He made his way to Woking by the first train, and having examined his
-booty and assured himself that it really was of immense value, he
-had concealed it in what he thought was a very safe place, with the
-intention of taking it out again in a day or two, and carrying it to the
-French embassy, or wherever he thought that a long price was to be
-had. Then came your sudden return. He, without a moment's warning, was
-bundled out of his room, and from that time onward there were always at
-least two of you there to prevent him from regaining his treasure. The
-situation to him must have been a maddening one. But at last he thought
-he saw his chance. He tried to steal in, but was baffled by your
-wakefulness. You remember that you did not take your usual draught that
-night."
-
-"I remember."
-
-"I fancy that he had taken steps to make that draught efficacious,
-and that he quite relied upon your being unconscious. Of course, I
-understood that he would repeat the attempt whenever it could be done
-with safety. Your leaving the room gave him the chance he wanted. I kept
-Miss Harrison in it all day so that he might not anticipate us. Then,
-having given him the idea that the coast was clear, I kept guard as
-I have described. I already knew that the papers were probably in the
-room, but I had no desire to rip up all the planking and skirting in
-search of them. I let him take them, therefore, from the hiding-place,
-and so saved myself an infinity of trouble. Is there any other point
-which I can make clear?"
-
-"Why did he try the window on the first occasion," I asked, "when he
-might have entered by the door?"
-
-"In reaching the door he would have to pass seven bedrooms. On the other
-hand, he could get out on to the lawn with ease. Anything else?"
-
-"You do not think," asked Phelps, "that he had any murderous intention?
-The knife was only meant as a tool."
-
-"It may be so," answered Holmes, shrugging his shoulders. "I can only
-say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
-should be extremely unwilling to trust."
-
-
-
-
-Adventure XI. The Final Problem
-
-
-It is with a heavy heart that I take up my pen to write these the last
-words in which I shall ever record the singular gifts by which my friend
-Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
-feel, an entirely inadequate fashion, I have endeavored to give some
-account of my strange experiences in his company from the chance which
-first brought us together at the period of the "Study in Scarlet," up
-to the time of his interference in the matter of the "Naval Treaty"--an
-interference which had the unquestionable effect of preventing a serious
-international complication. It was my intention to have stopped there,
-and to have said nothing of that event which has created a void in my
-life which the lapse of two years has done little to fill. My hand
-has been forced, however, by the recent letters in which Colonel James
-Moriarty defends the memory of his brother, and I have no choice but to
-lay the facts before the public exactly as they occurred. I alone know
-the absolute truth of the matter, and I am satisfied that the time has
-come when no good purpose is to be served by its suppression. As far as
-I know, there have been only three accounts in the public press: that
-in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
-English papers on May 7th, and finally the recent letter to which I have
-alluded. Of these the first and second were extremely condensed, while
-the last is, as I shall now show, an absolute perversion of the facts.
-It lies with me to tell for the first time what really took place
-between Professor Moriarty and Mr. Sherlock Holmes.
-
-It may be remembered that after my marriage, and my subsequent start in
-private practice, the very intimate relations which had existed between
-Holmes and myself became to some extent modified. He still came to me
-from time to time when he desired a companion in his investigation, but
-these occasions grew more and more seldom, until I find that in the year
-1890 there were only three cases of which I retain any record. During
-the winter of that year and the early spring of 1891, I saw in the
-papers that he had been engaged by the French government upon a matter
-of supreme importance, and I received two notes from Holmes, dated from
-Narbonne and from Nimes, from which I gathered that his stay in France
-was likely to be a long one. It was with some surprise, therefore, that
-I saw him walk into my consulting-room upon the evening of April 24th.
-It struck me that he was looking even paler and thinner than usual.
-
-"Yes, I have been using myself up rather too freely," he remarked, in
-answer to my look rather than to my words; "I have been a little pressed
-of late. Have you any objection to my closing your shutters?"
-
-The only light in the room came from the lamp upon the table at which I
-had been reading. Holmes edged his way round the wall and flinging the
-shutters together, he bolted them securely.
-
-"You are afraid of something?" I asked.
-
-"Well, I am."
-
-"Of what?"
-
-"Of air-guns."
-
-"My dear Holmes, what do you mean?"
-
-"I think that you know me well enough, Watson, to understand that I am
-by no means a nervous man. At the same time, it is stupidity rather than
-courage to refuse to recognize danger when it is close upon you. Might
-I trouble you for a match?" He drew in the smoke of his cigarette as if
-the soothing influence was grateful to him.
-
-"I must apologize for calling so late," said he, "and I must further beg
-you to be so unconventional as to allow me to leave your house presently
-by scrambling over your back garden wall."
-
-"But what does it all mean?" I asked.
-
-He held out his hand, and I saw in the light of the lamp that two of his
-knuckles were burst and bleeding.
-
-"It is not an airy nothing, you see," said he, smiling. "On the
-contrary, it is solid enough for a man to break his hand over. Is Mrs.
-Watson in?"
-
-"She is away upon a visit."
-
-"Indeed! You are alone?"
-
-"Quite."
-
-"Then it makes it the easier for me to propose that you should come away
-with me for a week to the Continent."
-
-"Where?"
-
-"Oh, anywhere. It's all the same to me."
-
-There was something very strange in all this. It was not Holmes's nature
-to take an aimless holiday, and something about his pale, worn face told
-me that his nerves were at their highest tension. He saw the question in
-my eyes, and, putting his finger-tips together and his elbows upon his
-knees, he explained the situation.
-
-"You have probably never heard of Professor Moriarty?" said he.
-
-"Never."
-
-"Aye, there's the genius and the wonder of the thing!" he cried. "The
-man pervades London, and no one has heard of him. That's what puts
-him on a pinnacle in the records of crime. I tell you, Watson, in all
-seriousness, that if I could beat that man, if I could free society
-of him, I should feel that my own career had reached its summit, and
-I should be prepared to turn to some more placid line in life. Between
-ourselves, the recent cases in which I have been of assistance to the
-royal family of Scandinavia, and to the French republic, have left me in
-such a position that I could continue to live in the quiet fashion
-which is most congenial to me, and to concentrate my attention upon my
-chemical researches. But I could not rest, Watson, I could not sit quiet
-in my chair, if I thought that such a man as Professor Moriarty were
-walking the streets of London unchallenged."
-
-"What has he done, then?"
-
-"His career has been an extraordinary one. He is a man of good birth and
-excellent education, endowed by nature with a phenomenal mathematical
-faculty. At the age of twenty-one he wrote a treatise upon the Binomial
-Theorem, which has had a European vogue. On the strength of it he won
-the Mathematical Chair at one of our smaller universities, and had, to
-all appearances, a most brilliant career before him. But the man had
-hereditary tendencies of the most diabolical kind. A criminal strain
-ran in his blood, which, instead of being modified, was increased and
-rendered infinitely more dangerous by his extraordinary mental powers.
-Dark rumors gathered round him in the university town, and eventually he
-was compelled to resign his chair and to come down to London, where he
-set up as an army coach. So much is known to the world, but what I am
-telling you now is what I have myself discovered.
-
-"As you are aware, Watson, there is no one who knows the higher criminal
-world of London so well as I do. For years past I have continually been
-conscious of some power behind the malefactor, some deep organizing
-power which forever stands in the way of the law, and throws its shield
-over the wrong-doer. Again and again in cases of the most varying
-sorts--forgery cases, robberies, murders--I have felt the presence of
-this force, and I have deduced its action in many of those undiscovered
-crimes in which I have not been personally consulted. For years I have
-endeavored to break through the veil which shrouded it, and at last
-the time came when I seized my thread and followed it, until it led
-me, after a thousand cunning windings, to ex-Professor Moriarty of
-mathematical celebrity.
-
-"He is the Napoleon of crime, Watson. He is the organizer of half that
-is evil and of nearly all that is undetected in this great city. He is a
-genius, a philosopher, an abstract thinker. He has a brain of the first
-order. He sits motionless, like a spider in the center of its web, but
-that web has a thousand radiations, and he knows well every quiver of
-each of them. He does little himself. He only plans. But his agents are
-numerous and splendidly organized. Is there a crime to be done, a
-paper to be abstracted, we will say, a house to be rifled, a man to be
-removed--the word is passed to the Professor, the matter is organized
-and carried out. The agent may be caught. In that case money is found
-for his bail or his defence. But the central power which uses the agent
-is never caught--never so much as suspected. This was the organization
-which I deduced, Watson, and which I devoted my whole energy to exposing
-and breaking up.
-
-"But the Professor was fenced round with safeguards so cunningly devised
-that, do what I would, it seemed impossible to get evidence which would
-convict in a court of law. You know my powers, my dear Watson, and yet
-at the end of three months I was forced to confess that I had at last
-met an antagonist who was my intellectual equal. My horror at his crimes
-was lost in my admiration at his skill. But at last he made a trip--only
-a little, little trip--but it was more than he could afford when I was
-so close upon him. I had my chance, and, starting from that point, I
-have woven my net round him until now it is all ready to close. In three
-days--that is to say, on Monday next--matters will be ripe, and the
-Professor, with all the principal members of his gang, will be in the
-hands of the police. Then will come the greatest criminal trial of the
-century, the clearing up of over forty mysteries, and the rope for all
-of them; but if we move at all prematurely, you understand, they may
-slip out of our hands even at the last moment.
-
-"Now, if I could have done this without the knowledge of Professor
-Moriarty, all would have been well. But he was too wily for that. He saw
-every step which I took to draw my toils round him. Again and again
-he strove to break away, but I as often headed him off. I tell you,
-my friend, that if a detailed account of that silent contest could
-be written, it would take its place as the most brilliant bit of
-thrust-and-parry work in the history of detection. Never have I risen to
-such a height, and never have I been so hard pressed by an opponent. He
-cut deep, and yet I just undercut him. This morning the last steps were
-taken, and three days only were wanted to complete the business. I was
-sitting in my room thinking the matter over, when the door opened and
-Professor Moriarty stood before me.
-
-"My nerves are fairly proof, Watson, but I must confess to a start when
-I saw the very man who had been so much in my thoughts standing there on
-my threshhold. His appearance was quite familiar to me. He is extremely
-tall and thin, his forehead domes out in a white curve, and his two
-eyes are deeply sunken in his head. He is clean-shaven, pale, and
-ascetic-looking, retaining something of the professor in his features.
-His shoulders are rounded from much study, and his face protrudes
-forward, and is forever slowly oscillating from side to side in a
-curiously reptilian fashion. He peered at me with great curiosity in his
-puckered eyes.
-
-"'You have less frontal development than I should have expected,' said
-he, at last. 'It is a dangerous habit to finger loaded firearms in the
-pocket of one's dressing-gown.'
-
-"The fact is that upon his entrance I had instantly recognized the
-extreme personal danger in which I lay. The only conceivable escape for
-him lay in silencing my tongue. In an instant I had slipped the revolver
-from the drawer into my pocket, and was covering him through the cloth.
-At his remark I drew the weapon out and laid it cocked upon the table.
-He still smiled and blinked, but there was something about his eyes
-which made me feel very glad that I had it there.
-
-"'You evidently don't know me,' said he.
-
-"'On the contrary,' I answered, 'I think it is fairly evident that I do.
-Pray take a chair. I can spare you five minutes if you have anything to
-say.'
-
-"'All that I have to say has already crossed your mind,' said he.
-
-"'Then possibly my answer has crossed yours,' I replied.
-
-"'You stand fast?'
-
-"'Absolutely.'
-
-"He clapped his hand into his pocket, and I raised the pistol from
-the table. But he merely drew out a memorandum-book in which he had
-scribbled some dates.
-
-"'You crossed my path on the 4th of January,' said he. 'On the 23d you
-incommoded me; by the middle of February I was seriously inconvenienced
-by you; at the end of March I was absolutely hampered in my plans; and
-now, at the close of April, I find myself placed in such a position
-through your continual persecution that I am in positive danger of
-losing my liberty. The situation is becoming an impossible one.'
-
-"'Have you any suggestion to make?' I asked.
-
-"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
-really must, you know.'
-
-"'After Monday,' said I.
-
-"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
-will see that there can be but one outcome to this affair. It is
-necessary that you should withdraw. You have worked things in such a
-fashion that we have only one resource left. It has been an intellectual
-treat to me to see the way in which you have grappled with this affair,
-and I say, unaffectedly, that it would be a grief to me to be forced
-to take any extreme measure. You smile, sir, but I assure you that it
-really would.'
-
-"'Danger is part of my trade,' I remarked.
-
-"'That is not danger,' said he. 'It is inevitable destruction. You stand
-in the way not merely of an individual, but of a mighty organization,
-the full extent of which you, with all your cleverness, have been unable
-to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
-
-"'I am afraid,' said I, rising, 'that in the pleasure of this
-conversation I am neglecting business of importance which awaits me
-elsewhere.'
-
-"He rose also and looked at me in silence, shaking his head sadly.
-
-"'Well, well,' said he, at last. 'It seems a pity, but I have done
-what I could. I know every move of your game. You can do nothing before
-Monday. It has been a duel between you and me, Mr. Holmes. You hope to
-place me in the dock. I tell you that I will never stand in the dock.
-You hope to beat me. I tell you that you will never beat me. If you are
-clever enough to bring destruction upon me, rest assured that I shall do
-as much to you.'
-
-"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
-pay you one in return when I say that if I were assured of the former
-eventuality I would, in the interests of the public, cheerfully accept
-the latter.'
-
-"'I can promise you the one, but not the other,' he snarled, and so
-turned his rounded back upon me, and went peering and blinking out of
-the room.
-
-"That was my singular interview with Professor Moriarty. I confess that
-it left an unpleasant effect upon my mind. His soft, precise fashion
-of speech leaves a conviction of sincerity which a mere bully could
-not produce. Of course, you will say: 'Why not take police precautions
-against him?' the reason is that I am well convinced that it is from his
-agents the blow will fall. I have the best proofs that it would be so."
-
-"You have already been assaulted?"
-
-"My dear Watson, Professor Moriarty is not a man who lets the grass grow
-under his feet. I went out about mid-day to transact some business in
-Oxford Street. As I passed the corner which leads from Bentinck Street
-on to the Welbeck Street crossing a two-horse van furiously driven
-whizzed round and was on me like a flash. I sprang for the foot-path
-and saved myself by the fraction of a second. The van dashed round by
-Marylebone Lane and was gone in an instant. I kept to the pavement after
-that, Watson, but as I walked down Vere Street a brick came down from
-the roof of one of the houses, and was shattered to fragments at my
-feet. I called the police and had the place examined. There were slates
-and bricks piled up on the roof preparatory to some repairs, and they
-would have me believe that the wind had toppled over one of these. Of
-course I knew better, but I could prove nothing. I took a cab after that
-and reached my brother's rooms in Pall Mall, where I spent the day. Now
-I have come round to you, and on my way I was attacked by a rough with a
-bludgeon. I knocked him down, and the police have him in custody; but
-I can tell you with the most absolute confidence that no possible
-connection will ever be traced between the gentleman upon whose front
-teeth I have barked my knuckles and the retiring mathematical coach, who
-is, I dare say, working out problems upon a black-board ten miles away.
-You will not wonder, Watson, that my first act on entering your rooms
-was to close your shutters, and that I have been compelled to ask your
-permission to leave the house by some less conspicuous exit than the
-front door."
-
-I had often admired my friend's courage, but never more than now, as he
-sat quietly checking off a series of incidents which must have combined
-to make up a day of horror.
-
-"You will spend the night here?" I said.
-
-"No, my friend, you might find me a dangerous guest. I have my plans
-laid, and all will be well. Matters have gone so far now that they can
-move without my help as far as the arrest goes, though my presence is
-necessary for a conviction. It is obvious, therefore, that I cannot do
-better than get away for the few days which remain before the police are
-at liberty to act. It would be a great pleasure to me, therefore, if you
-could come on to the Continent with me."
-
-"The practice is quiet," said I, "and I have an accommodating neighbor.
-I should be glad to come."
-
-"And to start to-morrow morning?"
-
-"If necessary."
-
-"Oh yes, it is most necessary. Then these are your instructions, and I
-beg, my dear Watson, that you will obey them to the letter, for you are
-now playing a double-handed game with me against the cleverest rogue and
-the most powerful syndicate of criminals in Europe. Now listen! You
-will dispatch whatever luggage you intend to take by a trusty messenger
-unaddressed to Victoria to-night. In the morning you will send for a
-hansom, desiring your man to take neither the first nor the second which
-may present itself. Into this hansom you will jump, and you will drive
-to the Strand end of the Lowther Arcade, handing the address to the
-cabman upon a slip of paper, with a request that he will not throw it
-away. Have your fare ready, and the instant that your cab stops,
-dash through the Arcade, timing yourself to reach the other side at a
-quarter-past nine. You will find a small brougham waiting close to the
-curb, driven by a fellow with a heavy black cloak tipped at the collar
-with red. Into this you will step, and you will reach Victoria in time
-for the Continental express."
-
-"Where shall I meet you?"
-
-"At the station. The second first-class carriage from the front will be
-reserved for us."
-
-"The carriage is our rendezvous, then?"
-
-"Yes."
-
-It was in vain that I asked Holmes to remain for the evening. It was
-evident to me that he thought he might bring trouble to the roof he was
-under, and that that was the motive which impelled him to go. With a few
-hurried words as to our plans for the morrow he rose and came out with
-me into the garden, clambering over the wall which leads into Mortimer
-Street, and immediately whistling for a hansom, in which I heard him
-drive away.
-
-In the morning I obeyed Holmes's injunctions to the letter. A hansom was
-procured with such precaution as would prevent its being one which was
-placed ready for us, and I drove immediately after breakfast to the
-Lowther Arcade, through which I hurried at the top of my speed. A
-brougham was waiting with a very massive driver wrapped in a dark cloak,
-who, the instant that I had stepped in, whipped up the horse and rattled
-off to Victoria Station. On my alighting there he turned the carriage,
-and dashed away again without so much as a look in my direction.
-
-So far all had gone admirably. My luggage was waiting for me, and I had
-no difficulty in finding the carriage which Holmes had indicated, the
-less so as it was the only one in the train which was marked "Engaged."
-My only source of anxiety now was the non-appearance of Holmes. The
-station clock marked only seven minutes from the time when we were
-due to start. In vain I searched among the groups of travellers and
-leave-takers for the lithe figure of my friend. There was no sign of
-him. I spent a few minutes in assisting a venerable Italian priest, who
-was endeavoring to make a porter understand, in his broken English,
-that his luggage was to be booked through to Paris. Then, having taken
-another look round, I returned to my carriage, where I found that the
-porter, in spite of the ticket, had given me my decrepit Italian friend
-as a traveling companion. It was useless for me to explain to him that
-his presence was an intrusion, for my Italian was even more limited than
-his English, so I shrugged my shoulders resignedly, and continued to
-look out anxiously for my friend. A chill of fear had come over me, as I
-thought that his absence might mean that some blow had fallen during the
-night. Already the doors had all been shut and the whistle blown, when--
-
-"My dear Watson," said a voice, "you have not even condescended to say
-good-morning."
-
-I turned in uncontrollable astonishment. The aged ecclesiastic had
-turned his face towards me. For an instant the wrinkles were smoothed
-away, the nose drew away from the chin, the lower lip ceased to protrude
-and the mouth to mumble, the dull eyes regained their fire, the drooping
-figure expanded. The next the whole frame collapsed again, and Holmes
-had gone as quickly as he had come.
-
-"Good heavens!" I cried; "how you startled me!"
-
-"Every precaution is still necessary," he whispered. "I have reason to
-think that they are hot upon our trail. Ah, there is Moriarty himself."
-
-The train had already begun to move as Holmes spoke. Glancing back, I
-saw a tall man pushing his way furiously through the crowd, and waving
-his hand as if he desired to have the train stopped. It was too late,
-however, for we were rapidly gathering momentum, and an instant later
-had shot clear of the station.
-
-"With all our precautions, you see that we have cut it rather fine,"
-said Holmes, laughing. He rose, and throwing off the black cassock and
-hat which had formed his disguise, he packed them away in a hand-bag.
-
-"Have you seen the morning paper, Watson?"
-
-"No."
-
-"You haven't' seen about Baker Street, then?"
-
-"Baker Street?"
-
-"They set fire to our rooms last night. No great harm was done."
-
-"Good heavens, Holmes! this is intolerable."
-
-"They must have lost my track completely after their bludgeon-man was
-arrested. Otherwise they could not have imagined that I had returned
-to my rooms. They have evidently taken the precaution of watching you,
-however, and that is what has brought Moriarty to Victoria. You could
-not have made any slip in coming?"
-
-"I did exactly what you advised."
-
-"Did you find your brougham?"
-
-"Yes, it was waiting."
-
-"Did you recognize your coachman?"
-
-"No."
-
-"It was my brother Mycroft. It is an advantage to get about in such a
-case without taking a mercenary into your confidence. But we must plan
-what we are to do about Moriarty now."
-
-"As this is an express, and as the boat runs in connection with it, I
-should think we have shaken him off very effectively."
-
-"My dear Watson, you evidently did not realize my meaning when I said
-that this man may be taken as being quite on the same intellectual plane
-as myself. You do not imagine that if I were the pursuer I should allow
-myself to be baffled by so slight an obstacle. Why, then, should you
-think so meanly of him?"
-
-"What will he do?"
-
-"What I should do?"
-
-"What would you do, then?"
-
-"Engage a special."
-
-"But it must be late."
-
-"By no means. This train stops at Canterbury; and there is always at
-least a quarter of an hour's delay at the boat. He will catch us there."
-
-"One would think that we were the criminals. Let us have him arrested on
-his arrival."
-
-"It would be to ruin the work of three months. We should get the big
-fish, but the smaller would dart right and left out of the net. On
-Monday we should have them all. No, an arrest is inadmissible."
-
-"What then?"
-
-"We shall get out at Canterbury."
-
-"And then?"
-
-"Well, then we must make a cross-country journey to Newhaven, and so
-over to Dieppe. Moriarty will again do what I should do. He will get on
-to Paris, mark down our luggage, and wait for two days at the depot.
-In the meantime we shall treat ourselves to a couple of carpet-bags,
-encourage the manufactures of the countries through which we travel, and
-make our way at our leisure into Switzerland, via Luxembourg and Basle."
-
-At Canterbury, therefore, we alighted, only to find that we should have
-to wait an hour before we could get a train to Newhaven.
-
-I was still looking rather ruefully after the rapidly disappearing
-luggage-van which contained my wardrobe, when Holmes pulled my sleeve
-and pointed up the line.
-
-"Already, you see," said he.
-
-Far away, from among the Kentish woods there rose a thin spray of smoke.
-A minute later a carriage and engine could be seen flying along the open
-curve which leads to the station. We had hardly time to take our place
-behind a pile of luggage when it passed with a rattle and a roar,
-beating a blast of hot air into our faces.
-
-"There he goes," said Holmes, as we watched the carriage swing and
-rock over the points. "There are limits, you see, to our friend's
-intelligence. It would have been a coup-de-maitre had he deduced what I
-would deduce and acted accordingly."
-
-"And what would he have done had he overtaken us?"
-
-"There cannot be the least doubt that he would have made a murderous
-attack upon me. It is, however, a game at which two may play. The
-question now is whether we should take a premature lunch here, or run
-our chance of starving before we reach the buffet at Newhaven."
-
-
-We made our way to Brussels that night and spent two days there, moving
-on upon the third day as far as Strasburg. On the Monday morning Holmes
-had telegraphed to the London police, and in the evening we found a
-reply waiting for us at our hotel. Holmes tore it open, and then with a
-bitter curse hurled it into the grate.
-
-"I might have known it!" he groaned. "He has escaped!"
-
-"Moriarty?"
-
-"They have secured the whole gang with the exception of him. He has
-given them the slip. Of course, when I had left the country there was no
-one to cope with him. But I did think that I had put the game in their
-hands. I think that you had better return to England, Watson."
-
-"Why?"
-
-"Because you will find me a dangerous companion now. This man's
-occupation is gone. He is lost if he returns to London. If I read his
-character right he will devote his whole energies to revenging himself
-upon me. He said as much in our short interview, and I fancy that he
-meant it. I should certainly recommend you to return to your practice."
-
-It was hardly an appeal to be successful with one who was an
-old campaigner as well as an old friend. We sat in the Strasburg
-salle-à-manger arguing the question for half an hour, but the same night
-we had resumed our journey and were well on our way to Geneva.
-
-For a charming week we wandered up the Valley of the Rhone, and then,
-branching off at Leuk, we made our way over the Gemmi Pass, still deep
-in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
-trip, the dainty green of the spring below, the virgin white of the
-winter above; but it was clear to me that never for one instant did
-Holmes forget the shadow which lay across him. In the homely Alpine
-villages or in the lonely mountain passes, I could tell by his quick
-glancing eyes and his sharp scrutiny of every face that passed us,
-that he was well convinced that, walk where we would, we could not walk
-ourselves clear of the danger which was dogging our footsteps.
-
-Once, I remember, as we passed over the Gemmi, and walked along
-the border of the melancholy Daubensee, a large rock which had been
-dislodged from the ridge upon our right clattered down and roared into
-the lake behind us. In an instant Holmes had raced up on to the ridge,
-and, standing upon a lofty pinnacle, craned his neck in every direction.
-It was in vain that our guide assured him that a fall of stones was a
-common chance in the spring-time at that spot. He said nothing, but
-he smiled at me with the air of a man who sees the fulfillment of that
-which he had expected.
-
-And yet for all his watchfulness he was never depressed. On the
-contrary, I can never recollect having seen him in such exuberant
-spirits. Again and again he recurred to the fact that if he could
-be assured that society was freed from Professor Moriarty he would
-cheerfully bring his own career to a conclusion.
-
-"I think that I may go so far as to say, Watson, that I have not lived
-wholly in vain," he remarked. "If my record were closed to-night I could
-still survey it with equanimity. The air of London is the sweeter for my
-presence. In over a thousand cases I am not aware that I have ever used
-my powers upon the wrong side. Of late I have been tempted to look into
-the problems furnished by nature rather than those more superficial ones
-for which our artificial state of society is responsible. Your memoirs
-will draw to an end, Watson, upon the day that I crown my career by
-the capture or extinction of the most dangerous and capable criminal in
-Europe."
-
-I shall be brief, and yet exact, in the little which remains for me to
-tell. It is not a subject on which I would willingly dwell, and yet I am
-conscious that a duty devolves upon me to omit no detail.
-
-It was on the 3d of May that we reached the little village of Meiringen,
-where we put up at the Englischer Hof, then kept by Peter Steiler the
-elder. Our landlord was an intelligent man, and spoke excellent English,
-having served for three years as waiter at the Grosvenor Hotel in
-London. At his advice, on the afternoon of the 4th we set off together,
-with the intention of crossing the hills and spending the night at the
-hamlet of Rosenlaui. We had strict injunctions, however, on no account
-to pass the falls of Reichenbach, which are about half-way up the hill,
-without making a small detour to see them.
-
-It is indeed, a fearful place. The torrent, swollen by the melting snow,
-plunges into a tremendous abyss, from which the spray rolls up like the
-smoke from a burning house. The shaft into which the river hurls itself
-is an immense chasm, lined by glistening coal-black rock, and narrowing
-into a creaming, boiling pit of incalculable depth, which brims over and
-shoots the stream onward over its jagged lip. The long sweep of green
-water roaring forever down, and the thick flickering curtain of spray
-hissing forever upward, turn a man giddy with their constant whirl and
-clamor. We stood near the edge peering down at the gleam of the breaking
-water far below us against the black rocks, and listening to the
-half-human shout which came booming up with the spray out of the abyss.
-
-The path has been cut half-way round the fall to afford a complete view,
-but it ends abruptly, and the traveler has to return as he came. We had
-turned to do so, when we saw a Swiss lad come running along it with
-a letter in his hand. It bore the mark of the hotel which we had just
-left, and was addressed to me by the landlord. It appeared that within a
-very few minutes of our leaving, an English lady had arrived who was in
-the last stage of consumption. She had wintered at Davos Platz, and was
-journeying now to join her friends at Lucerne, when a sudden hemorrhage
-had overtaken her. It was thought that she could hardly live a few
-hours, but it would be a great consolation to her to see an English
-doctor, and, if I would only return, etc. The good Steiler assured me
-in a postscript that he would himself look upon my compliance as a very
-great favor, since the lady absolutely refused to see a Swiss physician,
-and he could not but feel that he was incurring a great responsibility.
-
-The appeal was one which could not be ignored. It was impossible to
-refuse the request of a fellow-countrywoman dying in a strange land. Yet
-I had my scruples about leaving Holmes. It was finally agreed, however,
-that he should retain the young Swiss messenger with him as guide and
-companion while I returned to Meiringen. My friend would stay some
-little time at the fall, he said, and would then walk slowly over the
-hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
-away I saw Holmes, with his back against a rock and his arms folded,
-gazing down at the rush of the waters. It was the last that I was ever
-destined to see of him in this world.
-
-When I was near the bottom of the descent I looked back. It was
-impossible, from that position, to see the fall, but I could see the
-curving path which winds over the shoulder of the hill and leads to it.
-Along this a man was, I remember, walking very rapidly.
-
-I could see his black figure clearly outlined against the green behind
-him. I noted him, and the energy with which he walked but he passed from
-my mind again as I hurried on upon my errand.
-
-It may have been a little over an hour before I reached Meiringen. Old
-Steiler was standing at the porch of his hotel.
-
-"Well," said I, as I came hurrying up, "I trust that she is no worse?"
-
-A look of surprise passed over his face, and at the first quiver of his
-eyebrows my heart turned to lead in my breast.
-
-"You did not write this?" I said, pulling the letter from my pocket.
-"There is no sick Englishwoman in the hotel?"
-
-"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
-must have been written by that tall Englishman who came in after you had
-gone. He said--"
-
-But I waited for none of the landlord's explanations. In a tingle of
-fear I was already running down the village street, and making for the
-path which I had so lately descended. It had taken me an hour to come
-down. For all my efforts two more had passed before I found myself at
-the fall of Reichenbach once more. There was Holmes's Alpine-stock still
-leaning against the rock by which I had left him. But there was no sign
-of him, and it was in vain that I shouted. My only answer was my own
-voice reverberating in a rolling echo from the cliffs around me.
-
-It was the sight of that Alpine-stock which turned me cold and sick.
-He had not gone to Rosenlaui, then. He had remained on that three-foot
-path, with sheer wall on one side and sheer drop on the other, until his
-enemy had overtaken him. The young Swiss had gone too. He had probably
-been in the pay of Moriarty, and had left the two men together. And then
-what had happened? Who was to tell us what had happened then?
-
-I stood for a minute or two to collect myself, for I was dazed with the
-horror of the thing. Then I began to think of Holmes's own methods and
-to try to practise them in reading this tragedy. It was, alas, only too
-easy to do. During our conversation we had not gone to the end of the
-path, and the Alpine-stock marked the place where we had stood. The
-blackish soil is kept forever soft by the incessant drift of spray,
-and a bird would leave its tread upon it. Two lines of footmarks were
-clearly marked along the farther end of the path, both leading away from
-me. There were none returning. A few yards from the end the soil was
-all ploughed up into a patch of mud, and the branches and ferns which
-fringed the chasm were torn and bedraggled. I lay upon my face and
-peered over with the spray spouting up all around me. It had darkened
-since I left, and now I could only see here and there the glistening of
-moisture upon the black walls, and far away down at the end of the shaft
-the gleam of the broken water. I shouted; but only the same half-human
-cry of the fall was borne back to my ears.
-
-But it was destined that I should after all have a last word of greeting
-from my friend and comrade. I have said that his Alpine-stock had been
-left leaning against a rock which jutted on to the path. From the top of
-this bowlder the gleam of something bright caught my eye, and, raising
-my hand, I found that it came from the silver cigarette-case which he
-used to carry. As I took it up a small square of paper upon which it
-had lain fluttered down on to the ground. Unfolding it, I found that it
-consisted of three pages torn from his note-book and addressed to me. It
-was characteristic of the man that the direction was a precise, and the
-writing as firm and clear, as though it had been written in his study.
-
-My dear Watson [it said], I write these few lines through the courtesy
-of Mr. Moriarty, who awaits my convenience for the final discussion of
-those questions which lie between us. He has been giving me a sketch
-of the methods by which he avoided the English police and kept himself
-informed of our movements. They certainly confirm the very high opinion
-which I had formed of his abilities. I am pleased to think that I shall
-be able to free society from any further effects of his presence, though
-I fear that it is at a cost which will give pain to my friends, and
-especially, my dear Watson, to you. I have already explained to you,
-however, that my career had in any case reached its crisis, and that
-no possible conclusion to it could be more congenial to me than this.
-Indeed, if I may make a full confession to you, I was quite convinced
-that the letter from Meiringen was a hoax, and I allowed you to depart
-on that errand under the persuasion that some development of this sort
-would follow. Tell Inspector Patterson that the papers which he needs
-to convict the gang are in pigeonhole M., done up in a blue envelope
-and inscribed "Moriarty." I made every disposition of my property before
-leaving England, and handed it to my brother Mycroft. Pray give my
-greetings to Mrs. Watson, and believe me to be, my dear fellow,
-
-Very sincerely yours,
-
-Sherlock Holmes
-
-
-A few words may suffice to tell the little that remains. An examination
-by experts leaves little doubt that a personal contest between the two
-men ended, as it could hardly fail to end in such a situation, in their
-reeling over, locked in each other's arms. Any attempt at recovering the
-bodies was absolutely hopeless, and there, deep down in that dreadful
-caldron of swirling water and seething foam, will lie for all time the
-most dangerous criminal and the foremost champion of the law of their
-generation. The Swiss youth was never found again, and there can be no
-doubt that he was one of the numerous agents whom Moriarty kept in this
-employ. As to the gang, it will be within the memory of the public
-how completely the evidence which Holmes had accumulated exposed their
-organization, and how heavily the hand of the dead man weighed
-upon them. Of their terrible chief few details came out during the
-proceedings, and if I have now been compelled to make a clear statement
-of his career it is due to those injudicious champions who have
-endeavored to clear his memory by attacks upon him whom I shall ever
-regard as the best and the wisest man whom I have ever known.
-
-
-
-
-
-End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
-Sir Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-***** This file should be named 834-8.txt or 834-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/8/3/834/
-
-Produced by Angela M. Cable
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.org/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need, is critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including checks, online payments and credit card donations.
-To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.org
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
deleted file mode 100644
index 1a008c2..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/job/wordcount/wordcount.job
+++ /dev/null
@@ -1,12 +0,0 @@
-mapred.input.dir=data/file1.txt
-mapred.output.dir=output
-mapred.job.name=wordcount(static)
-mapred.mapper.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Map
-mapred.combiner.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
-mapred.reducer.class=edu.uci.ics.hyracks.examples.wordcount.WordCount$Reduce
-mapred.input.format.class=org.apache.hadoop.mapred.TextInputFormat
-mapred.output.format.class=org.apache.hadoop.mapred.TextOutputFormat
-mapred.mapoutput.key.class=org.apache.hadoop.io.Text
-mapred.mapoutput.value.class=org.apache.hadoop.io.IntWritable
-mapred.output.key.class=org.apache.hadoop.io.Text
-mapred.output.value.class=org.apache.hadoop.io.IntWritable
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
deleted file mode 100644
index b1c0d41..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/pom.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-  <artifactId>hadoopcompatapp</artifactId>
-  <name>hadoopcompatapp</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks.examples</groupId>
-    <artifactId>hadoop-compat-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>copy-dependencies</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-	</pluginManagement>
-  
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/application/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/app-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>edu.uci.ics.hyracks</groupId>
-      	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
-        <configuration>
-          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
-          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
-          <jvmOptions>${jvm.extraargs}</jvmOptions>
-        </configuration>
-        <executions>
-          <execution>
-            <id>hyracks-cc-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-cc</goal>
-            </goals>
-            <configuration>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc1-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC1</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc2-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC2</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-	      <workingDir>${project.build.directory}</workingDir>
-            </configuration>
-          </execution>
-          <execution>
-            <id>deploy-app</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>deploy-app</goal>
-            </goals>
-            <configuration>
-              <ccHost>localhost</ccHost>
-              <appName>compat</appName>
-              <harFile>${project.build.directory}/hadoopcompatapp-${project.version}-app-assembly.zip</harFile>
-            </configuration>
-          </execution>
-	     <execution>
-	       <id>stop-services</id>
-	       <phase>post-integration-test</phase>
-	       <goals>
-	         <goal>stop-services</goal>
-	       </goals>
-             </execution>
-          </executions>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-compiler-plugin</artifactId>
-      	<version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-failsafe-plugin</artifactId>
-      	<version>2.8.1</version>
-      	<executions>
-      	  <execution>
-      	    <id>it</id>
-      	    <phase>integration-test</phase>
-      	    <goals>
-      	      <goal>integration-test</goal>
-      	    </goals>
-      	  </execution>
-      	</executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-     <dependency>
-        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-        <artifactId>hadoopcompathelper</artifactId>
-        <version>0.2.3-SNAPSHOT</version>
-        <scope>compile</scope>
-     </dependency>
-     <dependency>
-        <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
-  	    <artifactId>hadoopcompatclient</artifactId>
-  	    <version>0.2.3-SNAPSHOT</version>
-  	    <type>jar</type>
-  	    <scope>test</scope>
-     </dependency>
-     <dependency>
-  	    <groupId>junit</groupId>
-  	    <artifactId>junit</artifactId>
-  	    <version>4.8.2</version>
-  	    <type>jar</type>
-  	    <scope>test</scope>
-     </dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
deleted file mode 100644
index 43ace6c..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/main/assembly/app-assembly.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<assembly>
-  <id>app-assembly</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/application/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
deleted file mode 100644
index a2a8994..0000000
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/src/test/java/edu/uci/ics/hyracks/examples/compat/test/WordCountCompatibilityIT.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.hyracks.examples.compat.test;
-
-import java.io.File;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.examples.compat.client.WordCountCompatibility;
-
-public class WordCountCompatibilityIT {
-    @Test
-    public void runWordCount() throws Exception {
-        WordCountCompatibility.main(new String[] { "-cluster", getClusterConf(), "-jobFiles", getWordCountJobFile(),
-                "-applicationName", "compat" });
-    }
-
-    private String getClusterConf() {
-        return new File("conf/local_cluster.conf").getAbsolutePath();
-    }
-
-    private String getWordCountJobFile() {
-        return new File("job/wordcount/wordcount.job").getAbsolutePath();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
index 054f97d..31809c7 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatclient/pom.xml
@@ -7,20 +7,20 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>hadoop-compat-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.compat</groupId>
   		<artifactId>hadoopcompathelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
@@ -32,8 +32,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
index d4b9abb..e8a9a1b 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompathelper/pom.xml
@@ -7,20 +7,20 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>hadoop-compat-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   </dependencies>
@@ -31,8 +31,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatserver/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatserver/pom.xml
index b538db5..36d612b 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatserver/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatserver/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
   <artifactId>hadoopcompatserver</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hadoopcompatserver</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>hadoop-compat-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -60,7 +60,7 @@
       <plugin>
       	<groupId>edu.uci.ics.hyracks</groupId>
       	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
+      	<version>0.2.4-SNAPSHOT</version>
         <configuration>
           <hyracksServerHome>${basedir}/target/hadoopcompatserver-${project.version}-binary-assembly</hyracksServerHome>
           <jvmOptions>${jvm.extraargs}</jvmOptions>
@@ -135,27 +135,27 @@
      <dependency>
         <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
         <artifactId>hadoopcompathelper</artifactId>
-        <version>0.2.3-SNAPSHOT</version>
+        <version>0.2.4-SNAPSHOT</version>
         <scope>compile</scope>
      </dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
      <dependency>
         <groupId>edu.uci.ics.hyracks.examples.compat</groupId>
   	    <artifactId>hadoopcompatclient</artifactId>
-  	    <version>0.2.3-SNAPSHOT</version>
+  	    <version>0.2.4-SNAPSHOT</version>
   	    <type>jar</type>
   	    <scope>test</scope>
      </dependency>
diff --git a/hyracks/hyracks-examples/hadoop-compat-example/pom.xml b/hyracks/hyracks-examples/hadoop-compat-example/pom.xml
index 103d762..b4ba2a3 100644
--- a/hyracks/hyracks-examples/hadoop-compat-example/pom.xml
+++ b/hyracks/hyracks-examples/hadoop-compat-example/pom.xml
@@ -8,7 +8,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-examples</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
@@ -29,7 +29,7 @@
       <dependency>
          <groupId>edu.uci.ics.hyracks</groupId>
          <artifactId>hyracks-hadoop-compat</artifactId>
-         <version>0.2.3-SNAPSHOT</version>
+         <version>0.2.4-SNAPSHOT</version>
          <type>jar</type>
          <scope>compile</scope>
       </dependency>
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
index 26d6e32..f019b44 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
@@ -6,7 +6,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-examples</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -16,8 +16,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -34,63 +34,63 @@
   	<dependency>
         <groupId>edu.uci.ics.hyracks</groupId>
         <artifactId>hyracks-client</artifactId>
-        <version>0.2.3-SNAPSHOT</version>
+        <version>0.2.4-SNAPSHOT</version>
         <type>jar</type>
         <scope>compile</scope>
     </dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-invertedindex</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-rtree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-test-support</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>test</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-examples/pom.xml b/hyracks/hyracks-examples/pom.xml
index 551e2be..541220a 100644
--- a/hyracks/hyracks-examples/pom.xml
+++ b/hyracks/hyracks-examples/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-examples/text-example/pom.xml b/hyracks/hyracks-examples/text-example/pom.xml
index 469fd0e..a4b0311 100644
--- a/hyracks/hyracks-examples/text-example/pom.xml
+++ b/hyracks/hyracks-examples/text-example/pom.xml
@@ -8,7 +8,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-examples</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-examples/text-example/textapp/data/file1.txt b/hyracks/hyracks-examples/text-example/textapp/data/file1.txt
deleted file mode 100644
index c4c3130..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/data/file1.txt
+++ /dev/null
@@ -1,13052 +0,0 @@
-﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-
-Title: The Adventures of Sherlock Holmes
-
-Author: Arthur Conan Doyle
-
-Posting Date: April 18, 2011 [EBook #1661]
-First Posted: November 29, 2002
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-
-
-
-
-
-
-
-
-THE ADVENTURES OF SHERLOCK HOLMES
-
-by
-
-SIR ARTHUR CONAN DOYLE
-
-
-
-   I. A Scandal in Bohemia
-  II. The Red-headed League
- III. A Case of Identity
-  IV. The Boscombe Valley Mystery
-   V. The Five Orange Pips
-  VI. The Man with the Twisted Lip
- VII. The Adventure of the Blue Carbuncle
-VIII. The Adventure of the Speckled Band
-  IX. The Adventure of the Engineer's Thumb
-   X. The Adventure of the Noble Bachelor
-  XI. The Adventure of the Beryl Coronet
- XII. The Adventure of the Copper Beeches
-
-
-
-
-ADVENTURE I. A SCANDAL IN BOHEMIA
-
-I.
-
-To Sherlock Holmes she is always THE woman. I have seldom heard
-him mention her under any other name. In his eyes she eclipses
-and predominates the whole of her sex. It was not that he felt
-any emotion akin to love for Irene Adler. All emotions, and that
-one particularly, were abhorrent to his cold, precise but
-admirably balanced mind. He was, I take it, the most perfect
-reasoning and observing machine that the world has seen, but as a
-lover he would have placed himself in a false position. He never
-spoke of the softer passions, save with a gibe and a sneer. They
-were admirable things for the observer--excellent for drawing the
-veil from men's motives and actions. But for the trained reasoner
-to admit such intrusions into his own delicate and finely
-adjusted temperament was to introduce a distracting factor which
-might throw a doubt upon all his mental results. Grit in a
-sensitive instrument, or a crack in one of his own high-power
-lenses, would not be more disturbing than a strong emotion in a
-nature such as his. And yet there was but one woman to him, and
-that woman was the late Irene Adler, of dubious and questionable
-memory.
-
-I had seen little of Holmes lately. My marriage had drifted us
-away from each other. My own complete happiness, and the
-home-centred interests which rise up around the man who first
-finds himself master of his own establishment, were sufficient to
-absorb all my attention, while Holmes, who loathed every form of
-society with his whole Bohemian soul, remained in our lodgings in
-Baker Street, buried among his old books, and alternating from
-week to week between cocaine and ambition, the drowsiness of the
-drug, and the fierce energy of his own keen nature. He was still,
-as ever, deeply attracted by the study of crime, and occupied his
-immense faculties and extraordinary powers of observation in
-following out those clues, and clearing up those mysteries which
-had been abandoned as hopeless by the official police. From time
-to time I heard some vague account of his doings: of his summons
-to Odessa in the case of the Trepoff murder, of his clearing up
-of the singular tragedy of the Atkinson brothers at Trincomalee,
-and finally of the mission which he had accomplished so
-delicately and successfully for the reigning family of Holland.
-Beyond these signs of his activity, however, which I merely
-shared with all the readers of the daily press, I knew little of
-my former friend and companion.
-
-One night--it was on the twentieth of March, 1888--I was
-returning from a journey to a patient (for I had now returned to
-civil practice), when my way led me through Baker Street. As I
-passed the well-remembered door, which must always be associated
-in my mind with my wooing, and with the dark incidents of the
-Study in Scarlet, I was seized with a keen desire to see Holmes
-again, and to know how he was employing his extraordinary powers.
-His rooms were brilliantly lit, and, even as I looked up, I saw
-his tall, spare figure pass twice in a dark silhouette against
-the blind. He was pacing the room swiftly, eagerly, with his head
-sunk upon his chest and his hands clasped behind him. To me, who
-knew his every mood and habit, his attitude and manner told their
-own story. He was at work again. He had risen out of his
-drug-created dreams and was hot upon the scent of some new
-problem. I rang the bell and was shown up to the chamber which
-had formerly been in part my own.
-
-His manner was not effusive. It seldom was; but he was glad, I
-think, to see me. With hardly a word spoken, but with a kindly
-eye, he waved me to an armchair, threw across his case of cigars,
-and indicated a spirit case and a gasogene in the corner. Then he
-stood before the fire and looked me over in his singular
-introspective fashion.
-
-"Wedlock suits you," he remarked. "I think, Watson, that you have
-put on seven and a half pounds since I saw you."
-
-"Seven!" I answered.
-
-"Indeed, I should have thought a little more. Just a trifle more,
-I fancy, Watson. And in practice again, I observe. You did not
-tell me that you intended to go into harness."
-
-"Then, how do you know?"
-
-"I see it, I deduce it. How do I know that you have been getting
-yourself very wet lately, and that you have a most clumsy and
-careless servant girl?"
-
-"My dear Holmes," said I, "this is too much. You would certainly
-have been burned, had you lived a few centuries ago. It is true
-that I had a country walk on Thursday and came home in a dreadful
-mess, but as I have changed my clothes I can't imagine how you
-deduce it. As to Mary Jane, she is incorrigible, and my wife has
-given her notice, but there, again, I fail to see how you work it
-out."
-
-He chuckled to himself and rubbed his long, nervous hands
-together.
-
-"It is simplicity itself," said he; "my eyes tell me that on the
-inside of your left shoe, just where the firelight strikes it,
-the leather is scored by six almost parallel cuts. Obviously they
-have been caused by someone who has very carelessly scraped round
-the edges of the sole in order to remove crusted mud from it.
-Hence, you see, my double deduction that you had been out in vile
-weather, and that you had a particularly malignant boot-slitting
-specimen of the London slavey. As to your practice, if a
-gentleman walks into my rooms smelling of iodoform, with a black
-mark of nitrate of silver upon his right forefinger, and a bulge
-on the right side of his top-hat to show where he has secreted
-his stethoscope, I must be dull, indeed, if I do not pronounce
-him to be an active member of the medical profession."
-
-I could not help laughing at the ease with which he explained his
-process of deduction. "When I hear you give your reasons," I
-remarked, "the thing always appears to me to be so ridiculously
-simple that I could easily do it myself, though at each
-successive instance of your reasoning I am baffled until you
-explain your process. And yet I believe that my eyes are as good
-as yours."
-
-"Quite so," he answered, lighting a cigarette, and throwing
-himself down into an armchair. "You see, but you do not observe.
-The distinction is clear. For example, you have frequently seen
-the steps which lead up from the hall to this room."
-
-"Frequently."
-
-"How often?"
-
-"Well, some hundreds of times."
-
-"Then how many are there?"
-
-"How many? I don't know."
-
-"Quite so! You have not observed. And yet you have seen. That is
-just my point. Now, I know that there are seventeen steps,
-because I have both seen and observed. By-the-way, since you are
-interested in these little problems, and since you are good
-enough to chronicle one or two of my trifling experiences, you
-may be interested in this." He threw over a sheet of thick,
-pink-tinted note-paper which had been lying open upon the table.
-"It came by the last post," said he. "Read it aloud."
-
-The note was undated, and without either signature or address.
-
-"There will call upon you to-night, at a quarter to eight
-o'clock," it said, "a gentleman who desires to consult you upon a
-matter of the very deepest moment. Your recent services to one of
-the royal houses of Europe have shown that you are one who may
-safely be trusted with matters which are of an importance which
-can hardly be exaggerated. This account of you we have from all
-quarters received. Be in your chamber then at that hour, and do
-not take it amiss if your visitor wear a mask."
-
-"This is indeed a mystery," I remarked. "What do you imagine that
-it means?"
-
-"I have no data yet. It is a capital mistake to theorize before
-one has data. Insensibly one begins to twist facts to suit
-theories, instead of theories to suit facts. But the note itself.
-What do you deduce from it?"
-
-I carefully examined the writing, and the paper upon which it was
-written.
-
-"The man who wrote it was presumably well to do," I remarked,
-endeavouring to imitate my companion's processes. "Such paper
-could not be bought under half a crown a packet. It is peculiarly
-strong and stiff."
-
-"Peculiar--that is the very word," said Holmes. "It is not an
-English paper at all. Hold it up to the light."
-
-I did so, and saw a large "E" with a small "g," a "P," and a
-large "G" with a small "t" woven into the texture of the paper.
-
-"What do you make of that?" asked Holmes.
-
-"The name of the maker, no doubt; or his monogram, rather."
-
-"Not at all. The 'G' with the small 't' stands for
-'Gesellschaft,' which is the German for 'Company.' It is a
-customary contraction like our 'Co.' 'P,' of course, stands for
-'Papier.' Now for the 'Eg.' Let us glance at our Continental
-Gazetteer." He took down a heavy brown volume from his shelves.
-"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
-country--in Bohemia, not far from Carlsbad. 'Remarkable as being
-the scene of the death of Wallenstein, and for its numerous
-glass-factories and paper-mills.' Ha, ha, my boy, what do you
-make of that?" His eyes sparkled, and he sent up a great blue
-triumphant cloud from his cigarette.
-
-"The paper was made in Bohemia," I said.
-
-"Precisely. And the man who wrote the note is a German. Do you
-note the peculiar construction of the sentence--'This account of
-you we have from all quarters received.' A Frenchman or Russian
-could not have written that. It is the German who is so
-uncourteous to his verbs. It only remains, therefore, to discover
-what is wanted by this German who writes upon Bohemian paper and
-prefers wearing a mask to showing his face. And here he comes, if
-I am not mistaken, to resolve all our doubts."
-
-As he spoke there was the sharp sound of horses' hoofs and
-grating wheels against the curb, followed by a sharp pull at the
-bell. Holmes whistled.
-
-"A pair, by the sound," said he. "Yes," he continued, glancing
-out of the window. "A nice little brougham and a pair of
-beauties. A hundred and fifty guineas apiece. There's money in
-this case, Watson, if there is nothing else."
-
-"I think that I had better go, Holmes."
-
-"Not a bit, Doctor. Stay where you are. I am lost without my
-Boswell. And this promises to be interesting. It would be a pity
-to miss it."
-
-"But your client--"
-
-"Never mind him. I may want your help, and so may he. Here he
-comes. Sit down in that armchair, Doctor, and give us your best
-attention."
-
-A slow and heavy step, which had been heard upon the stairs and
-in the passage, paused immediately outside the door. Then there
-was a loud and authoritative tap.
-
-"Come in!" said Holmes.
-
-A man entered who could hardly have been less than six feet six
-inches in height, with the chest and limbs of a Hercules. His
-dress was rich with a richness which would, in England, be looked
-upon as akin to bad taste. Heavy bands of astrakhan were slashed
-across the sleeves and fronts of his double-breasted coat, while
-the deep blue cloak which was thrown over his shoulders was lined
-with flame-coloured silk and secured at the neck with a brooch
-which consisted of a single flaming beryl. Boots which extended
-halfway up his calves, and which were trimmed at the tops with
-rich brown fur, completed the impression of barbaric opulence
-which was suggested by his whole appearance. He carried a
-broad-brimmed hat in his hand, while he wore across the upper
-part of his face, extending down past the cheekbones, a black
-vizard mask, which he had apparently adjusted that very moment,
-for his hand was still raised to it as he entered. From the lower
-part of the face he appeared to be a man of strong character,
-with a thick, hanging lip, and a long, straight chin suggestive
-of resolution pushed to the length of obstinacy.
-
-"You had my note?" he asked with a deep harsh voice and a
-strongly marked German accent. "I told you that I would call." He
-looked from one to the other of us, as if uncertain which to
-address.
-
-"Pray take a seat," said Holmes. "This is my friend and
-colleague, Dr. Watson, who is occasionally good enough to help me
-in my cases. Whom have I the honour to address?"
-
-"You may address me as the Count Von Kramm, a Bohemian nobleman.
-I understand that this gentleman, your friend, is a man of honour
-and discretion, whom I may trust with a matter of the most
-extreme importance. If not, I should much prefer to communicate
-with you alone."
-
-I rose to go, but Holmes caught me by the wrist and pushed me
-back into my chair. "It is both, or none," said he. "You may say
-before this gentleman anything which you may say to me."
-
-The Count shrugged his broad shoulders. "Then I must begin," said
-he, "by binding you both to absolute secrecy for two years; at
-the end of that time the matter will be of no importance. At
-present it is not too much to say that it is of such weight it
-may have an influence upon European history."
-
-"I promise," said Holmes.
-
-"And I."
-
-"You will excuse this mask," continued our strange visitor. "The
-august person who employs me wishes his agent to be unknown to
-you, and I may confess at once that the title by which I have
-just called myself is not exactly my own."
-
-"I was aware of it," said Holmes dryly.
-
-"The circumstances are of great delicacy, and every precaution
-has to be taken to quench what might grow to be an immense
-scandal and seriously compromise one of the reigning families of
-Europe. To speak plainly, the matter implicates the great House
-of Ormstein, hereditary kings of Bohemia."
-
-"I was also aware of that," murmured Holmes, settling himself
-down in his armchair and closing his eyes.
-
-Our visitor glanced with some apparent surprise at the languid,
-lounging figure of the man who had been no doubt depicted to him
-as the most incisive reasoner and most energetic agent in Europe.
-Holmes slowly reopened his eyes and looked impatiently at his
-gigantic client.
-
-"If your Majesty would condescend to state your case," he
-remarked, "I should be better able to advise you."
-
-The man sprang from his chair and paced up and down the room in
-uncontrollable agitation. Then, with a gesture of desperation, he
-tore the mask from his face and hurled it upon the ground. "You
-are right," he cried; "I am the King. Why should I attempt to
-conceal it?"
-
-"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
-before I was aware that I was addressing Wilhelm Gottsreich
-Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
-hereditary King of Bohemia."
-
-"But you can understand," said our strange visitor, sitting down
-once more and passing his hand over his high white forehead, "you
-can understand that I am not accustomed to doing such business in
-my own person. Yet the matter was so delicate that I could not
-confide it to an agent without putting myself in his power. I
-have come incognito from Prague for the purpose of consulting
-you."
-
-"Then, pray consult," said Holmes, shutting his eyes once more.
-
-"The facts are briefly these: Some five years ago, during a
-lengthy visit to Warsaw, I made the acquaintance of the well-known
-adventuress, Irene Adler. The name is no doubt familiar to you."
-
-"Kindly look her up in my index, Doctor," murmured Holmes without
-opening his eyes. For many years he had adopted a system of
-docketing all paragraphs concerning men and things, so that it
-was difficult to name a subject or a person on which he could not
-at once furnish information. In this case I found her biography
-sandwiched in between that of a Hebrew rabbi and that of a
-staff-commander who had written a monograph upon the deep-sea
-fishes.
-
-"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
-1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
-of Warsaw--yes! Retired from operatic stage--ha! Living in
-London--quite so! Your Majesty, as I understand, became entangled
-with this young person, wrote her some compromising letters, and
-is now desirous of getting those letters back."
-
-"Precisely so. But how--"
-
-"Was there a secret marriage?"
-
-"None."
-
-"No legal papers or certificates?"
-
-"None."
-
-"Then I fail to follow your Majesty. If this young person should
-produce her letters for blackmailing or other purposes, how is
-she to prove their authenticity?"
-
-"There is the writing."
-
-"Pooh, pooh! Forgery."
-
-"My private note-paper."
-
-"Stolen."
-
-"My own seal."
-
-"Imitated."
-
-"My photograph."
-
-"Bought."
-
-"We were both in the photograph."
-
-"Oh, dear! That is very bad! Your Majesty has indeed committed an
-indiscretion."
-
-"I was mad--insane."
-
-"You have compromised yourself seriously."
-
-"I was only Crown Prince then. I was young. I am but thirty now."
-
-"It must be recovered."
-
-"We have tried and failed."
-
-"Your Majesty must pay. It must be bought."
-
-"She will not sell."
-
-"Stolen, then."
-
-"Five attempts have been made. Twice burglars in my pay ransacked
-her house. Once we diverted her luggage when she travelled. Twice
-she has been waylaid. There has been no result."
-
-"No sign of it?"
-
-"Absolutely none."
-
-Holmes laughed. "It is quite a pretty little problem," said he.
-
-"But a very serious one to me," returned the King reproachfully.
-
-"Very, indeed. And what does she propose to do with the
-photograph?"
-
-"To ruin me."
-
-"But how?"
-
-"I am about to be married."
-
-"So I have heard."
-
-"To Clotilde Lothman von Saxe-Meningen, second daughter of the
-King of Scandinavia. You may know the strict principles of her
-family. She is herself the very soul of delicacy. A shadow of a
-doubt as to my conduct would bring the matter to an end."
-
-"And Irene Adler?"
-
-"Threatens to send them the photograph. And she will do it. I
-know that she will do it. You do not know her, but she has a soul
-of steel. She has the face of the most beautiful of women, and
-the mind of the most resolute of men. Rather than I should marry
-another woman, there are no lengths to which she would not
-go--none."
-
-"You are sure that she has not sent it yet?"
-
-"I am sure."
-
-"And why?"
-
-"Because she has said that she would send it on the day when the
-betrothal was publicly proclaimed. That will be next Monday."
-
-"Oh, then we have three days yet," said Holmes with a yawn. "That
-is very fortunate, as I have one or two matters of importance to
-look into just at present. Your Majesty will, of course, stay in
-London for the present?"
-
-"Certainly. You will find me at the Langham under the name of the
-Count Von Kramm."
-
-"Then I shall drop you a line to let you know how we progress."
-
-"Pray do so. I shall be all anxiety."
-
-"Then, as to money?"
-
-"You have carte blanche."
-
-"Absolutely?"
-
-"I tell you that I would give one of the provinces of my kingdom
-to have that photograph."
-
-"And for present expenses?"
-
-The King took a heavy chamois leather bag from under his cloak
-and laid it on the table.
-
-"There are three hundred pounds in gold and seven hundred in
-notes," he said.
-
-Holmes scribbled a receipt upon a sheet of his note-book and
-handed it to him.
-
-"And Mademoiselle's address?" he asked.
-
-"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
-
-Holmes took a note of it. "One other question," said he. "Was the
-photograph a cabinet?"
-
-"It was."
-
-"Then, good-night, your Majesty, and I trust that we shall soon
-have some good news for you. And good-night, Watson," he added,
-as the wheels of the royal brougham rolled down the street. "If
-you will be good enough to call to-morrow afternoon at three
-o'clock I should like to chat this little matter over with you."
-
-
-II.
-
-At three o'clock precisely I was at Baker Street, but Holmes had
-not yet returned. The landlady informed me that he had left the
-house shortly after eight o'clock in the morning. I sat down
-beside the fire, however, with the intention of awaiting him,
-however long he might be. I was already deeply interested in his
-inquiry, for, though it was surrounded by none of the grim and
-strange features which were associated with the two crimes which
-I have already recorded, still, the nature of the case and the
-exalted station of his client gave it a character of its own.
-Indeed, apart from the nature of the investigation which my
-friend had on hand, there was something in his masterly grasp of
-a situation, and his keen, incisive reasoning, which made it a
-pleasure to me to study his system of work, and to follow the
-quick, subtle methods by which he disentangled the most
-inextricable mysteries. So accustomed was I to his invariable
-success that the very possibility of his failing had ceased to
-enter into my head.
-
-It was close upon four before the door opened, and a
-drunken-looking groom, ill-kempt and side-whiskered, with an
-inflamed face and disreputable clothes, walked into the room.
-Accustomed as I was to my friend's amazing powers in the use of
-disguises, I had to look three times before I was certain that it
-was indeed he. With a nod he vanished into the bedroom, whence he
-emerged in five minutes tweed-suited and respectable, as of old.
-Putting his hands into his pockets, he stretched out his legs in
-front of the fire and laughed heartily for some minutes.
-
-"Well, really!" he cried, and then he choked and laughed again
-until he was obliged to lie back, limp and helpless, in the
-chair.
-
-"What is it?"
-
-"It's quite too funny. I am sure you could never guess how I
-employed my morning, or what I ended by doing."
-
-"I can't imagine. I suppose that you have been watching the
-habits, and perhaps the house, of Miss Irene Adler."
-
-"Quite so; but the sequel was rather unusual. I will tell you,
-however. I left the house a little after eight o'clock this
-morning in the character of a groom out of work. There is a
-wonderful sympathy and freemasonry among horsey men. Be one of
-them, and you will know all that there is to know. I soon found
-Briony Lodge. It is a bijou villa, with a garden at the back, but
-built out in front right up to the road, two stories. Chubb lock
-to the door. Large sitting-room on the right side, well
-furnished, with long windows almost to the floor, and those
-preposterous English window fasteners which a child could open.
-Behind there was nothing remarkable, save that the passage window
-could be reached from the top of the coach-house. I walked round
-it and examined it closely from every point of view, but without
-noting anything else of interest.
-
-"I then lounged down the street and found, as I expected, that
-there was a mews in a lane which runs down by one wall of the
-garden. I lent the ostlers a hand in rubbing down their horses,
-and received in exchange twopence, a glass of half and half, two
-fills of shag tobacco, and as much information as I could desire
-about Miss Adler, to say nothing of half a dozen other people in
-the neighbourhood in whom I was not in the least interested, but
-whose biographies I was compelled to listen to."
-
-"And what of Irene Adler?" I asked.
-
-"Oh, she has turned all the men's heads down in that part. She is
-the daintiest thing under a bonnet on this planet. So say the
-Serpentine-mews, to a man. She lives quietly, sings at concerts,
-drives out at five every day, and returns at seven sharp for
-dinner. Seldom goes out at other times, except when she sings.
-Has only one male visitor, but a good deal of him. He is dark,
-handsome, and dashing, never calls less than once a day, and
-often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
-the advantages of a cabman as a confidant. They had driven him
-home a dozen times from Serpentine-mews, and knew all about him.
-When I had listened to all they had to tell, I began to walk up
-and down near Briony Lodge once more, and to think over my plan
-of campaign.
-
-"This Godfrey Norton was evidently an important factor in the
-matter. He was a lawyer. That sounded ominous. What was the
-relation between them, and what the object of his repeated
-visits? Was she his client, his friend, or his mistress? If the
-former, she had probably transferred the photograph to his
-keeping. If the latter, it was less likely. On the issue of this
-question depended whether I should continue my work at Briony
-Lodge, or turn my attention to the gentleman's chambers in the
-Temple. It was a delicate point, and it widened the field of my
-inquiry. I fear that I bore you with these details, but I have to
-let you see my little difficulties, if you are to understand the
-situation."
-
-"I am following you closely," I answered.
-
-"I was still balancing the matter in my mind when a hansom cab
-drove up to Briony Lodge, and a gentleman sprang out. He was a
-remarkably handsome man, dark, aquiline, and moustached--evidently
-the man of whom I had heard. He appeared to be in a
-great hurry, shouted to the cabman to wait, and brushed past the
-maid who opened the door with the air of a man who was thoroughly
-at home.
-
-"He was in the house about half an hour, and I could catch
-glimpses of him in the windows of the sitting-room, pacing up and
-down, talking excitedly, and waving his arms. Of her I could see
-nothing. Presently he emerged, looking even more flurried than
-before. As he stepped up to the cab, he pulled a gold watch from
-his pocket and looked at it earnestly, 'Drive like the devil,' he
-shouted, 'first to Gross & Hankey's in Regent Street, and then to
-the Church of St. Monica in the Edgeware Road. Half a guinea if
-you do it in twenty minutes!'
-
-"Away they went, and I was just wondering whether I should not do
-well to follow them when up the lane came a neat little landau,
-the coachman with his coat only half-buttoned, and his tie under
-his ear, while all the tags of his harness were sticking out of
-the buckles. It hadn't pulled up before she shot out of the hall
-door and into it. I only caught a glimpse of her at the moment,
-but she was a lovely woman, with a face that a man might die for.
-
-"'The Church of St. Monica, John,' she cried, 'and half a
-sovereign if you reach it in twenty minutes.'
-
-"This was quite too good to lose, Watson. I was just balancing
-whether I should run for it, or whether I should perch behind her
-landau when a cab came through the street. The driver looked
-twice at such a shabby fare, but I jumped in before he could
-object. 'The Church of St. Monica,' said I, 'and half a sovereign
-if you reach it in twenty minutes.' It was twenty-five minutes to
-twelve, and of course it was clear enough what was in the wind.
-
-"My cabby drove fast. I don't think I ever drove faster, but the
-others were there before us. The cab and the landau with their
-steaming horses were in front of the door when I arrived. I paid
-the man and hurried into the church. There was not a soul there
-save the two whom I had followed and a surpliced clergyman, who
-seemed to be expostulating with them. They were all three
-standing in a knot in front of the altar. I lounged up the side
-aisle like any other idler who has dropped into a church.
-Suddenly, to my surprise, the three at the altar faced round to
-me, and Godfrey Norton came running as hard as he could towards
-me.
-
-"'Thank God,' he cried. 'You'll do. Come! Come!'
-
-"'What then?' I asked.
-
-"'Come, man, come, only three minutes, or it won't be legal.'
-
-"I was half-dragged up to the altar, and before I knew where I was
-I found myself mumbling responses which were whispered in my ear,
-and vouching for things of which I knew nothing, and generally
-assisting in the secure tying up of Irene Adler, spinster, to
-Godfrey Norton, bachelor. It was all done in an instant, and
-there was the gentleman thanking me on the one side and the lady
-on the other, while the clergyman beamed on me in front. It was
-the most preposterous position in which I ever found myself in my
-life, and it was the thought of it that started me laughing just
-now. It seems that there had been some informality about their
-license, that the clergyman absolutely refused to marry them
-without a witness of some sort, and that my lucky appearance
-saved the bridegroom from having to sally out into the streets in
-search of a best man. The bride gave me a sovereign, and I mean
-to wear it on my watch-chain in memory of the occasion."
-
-"This is a very unexpected turn of affairs," said I; "and what
-then?"
-
-"Well, I found my plans very seriously menaced. It looked as if
-the pair might take an immediate departure, and so necessitate
-very prompt and energetic measures on my part. At the church
-door, however, they separated, he driving back to the Temple, and
-she to her own house. 'I shall drive out in the park at five as
-usual,' she said as she left him. I heard no more. They drove
-away in different directions, and I went off to make my own
-arrangements."
-
-"Which are?"
-
-"Some cold beef and a glass of beer," he answered, ringing the
-bell. "I have been too busy to think of food, and I am likely to
-be busier still this evening. By the way, Doctor, I shall want
-your co-operation."
-
-"I shall be delighted."
-
-"You don't mind breaking the law?"
-
-"Not in the least."
-
-"Nor running a chance of arrest?"
-
-"Not in a good cause."
-
-"Oh, the cause is excellent!"
-
-"Then I am your man."
-
-"I was sure that I might rely on you."
-
-"But what is it you wish?"
-
-"When Mrs. Turner has brought in the tray I will make it clear to
-you. Now," he said as he turned hungrily on the simple fare that
-our landlady had provided, "I must discuss it while I eat, for I
-have not much time. It is nearly five now. In two hours we must
-be on the scene of action. Miss Irene, or Madame, rather, returns
-from her drive at seven. We must be at Briony Lodge to meet her."
-
-"And what then?"
-
-"You must leave that to me. I have already arranged what is to
-occur. There is only one point on which I must insist. You must
-not interfere, come what may. You understand?"
-
-"I am to be neutral?"
-
-"To do nothing whatever. There will probably be some small
-unpleasantness. Do not join in it. It will end in my being
-conveyed into the house. Four or five minutes afterwards the
-sitting-room window will open. You are to station yourself close
-to that open window."
-
-"Yes."
-
-"You are to watch me, for I will be visible to you."
-
-"Yes."
-
-"And when I raise my hand--so--you will throw into the room what
-I give you to throw, and will, at the same time, raise the cry of
-fire. You quite follow me?"
-
-"Entirely."
-
-"It is nothing very formidable," he said, taking a long cigar-shaped
-roll from his pocket. "It is an ordinary plumber's smoke-rocket,
-fitted with a cap at either end to make it self-lighting.
-Your task is confined to that. When you raise your cry of fire,
-it will be taken up by quite a number of people. You may then
-walk to the end of the street, and I will rejoin you in ten
-minutes. I hope that I have made myself clear?"
-
-"I am to remain neutral, to get near the window, to watch you,
-and at the signal to throw in this object, then to raise the cry
-of fire, and to wait you at the corner of the street."
-
-"Precisely."
-
-"Then you may entirely rely on me."
-
-"That is excellent. I think, perhaps, it is almost time that I
-prepare for the new role I have to play."
-
-He disappeared into his bedroom and returned in a few minutes in
-the character of an amiable and simple-minded Nonconformist
-clergyman. His broad black hat, his baggy trousers, his white
-tie, his sympathetic smile, and general look of peering and
-benevolent curiosity were such as Mr. John Hare alone could have
-equalled. It was not merely that Holmes changed his costume. His
-expression, his manner, his very soul seemed to vary with every
-fresh part that he assumed. The stage lost a fine actor, even as
-science lost an acute reasoner, when he became a specialist in
-crime.
-
-It was a quarter past six when we left Baker Street, and it still
-wanted ten minutes to the hour when we found ourselves in
-Serpentine Avenue. It was already dusk, and the lamps were just
-being lighted as we paced up and down in front of Briony Lodge,
-waiting for the coming of its occupant. The house was just such
-as I had pictured it from Sherlock Holmes' succinct description,
-but the locality appeared to be less private than I expected. On
-the contrary, for a small street in a quiet neighbourhood, it was
-remarkably animated. There was a group of shabbily dressed men
-smoking and laughing in a corner, a scissors-grinder with his
-wheel, two guardsmen who were flirting with a nurse-girl, and
-several well-dressed young men who were lounging up and down with
-cigars in their mouths.
-
-"You see," remarked Holmes, as we paced to and fro in front of
-the house, "this marriage rather simplifies matters. The
-photograph becomes a double-edged weapon now. The chances are
-that she would be as averse to its being seen by Mr. Godfrey
-Norton, as our client is to its coming to the eyes of his
-princess. Now the question is, Where are we to find the
-photograph?"
-
-"Where, indeed?"
-
-"It is most unlikely that she carries it about with her. It is
-cabinet size. Too large for easy concealment about a woman's
-dress. She knows that the King is capable of having her waylaid
-and searched. Two attempts of the sort have already been made. We
-may take it, then, that she does not carry it about with her."
-
-"Where, then?"
-
-"Her banker or her lawyer. There is that double possibility. But
-I am inclined to think neither. Women are naturally secretive,
-and they like to do their own secreting. Why should she hand it
-over to anyone else? She could trust her own guardianship, but
-she could not tell what indirect or political influence might be
-brought to bear upon a business man. Besides, remember that she
-had resolved to use it within a few days. It must be where she
-can lay her hands upon it. It must be in her own house."
-
-"But it has twice been burgled."
-
-"Pshaw! They did not know how to look."
-
-"But how will you look?"
-
-"I will not look."
-
-"What then?"
-
-"I will get her to show me."
-
-"But she will refuse."
-
-"She will not be able to. But I hear the rumble of wheels. It is
-her carriage. Now carry out my orders to the letter."
-
-As he spoke the gleam of the side-lights of a carriage came round
-the curve of the avenue. It was a smart little landau which
-rattled up to the door of Briony Lodge. As it pulled up, one of
-the loafing men at the corner dashed forward to open the door in
-the hope of earning a copper, but was elbowed away by another
-loafer, who had rushed up with the same intention. A fierce
-quarrel broke out, which was increased by the two guardsmen, who
-took sides with one of the loungers, and by the scissors-grinder,
-who was equally hot upon the other side. A blow was struck, and
-in an instant the lady, who had stepped from her carriage, was
-the centre of a little knot of flushed and struggling men, who
-struck savagely at each other with their fists and sticks. Holmes
-dashed into the crowd to protect the lady; but just as he reached
-her he gave a cry and dropped to the ground, with the blood
-running freely down his face. At his fall the guardsmen took to
-their heels in one direction and the loungers in the other, while
-a number of better-dressed people, who had watched the scuffle
-without taking part in it, crowded in to help the lady and to
-attend to the injured man. Irene Adler, as I will still call her,
-had hurried up the steps; but she stood at the top with her
-superb figure outlined against the lights of the hall, looking
-back into the street.
-
-"Is the poor gentleman much hurt?" she asked.
-
-"He is dead," cried several voices.
-
-"No, no, there's life in him!" shouted another. "But he'll be
-gone before you can get him to hospital."
-
-"He's a brave fellow," said a woman. "They would have had the
-lady's purse and watch if it hadn't been for him. They were a
-gang, and a rough one, too. Ah, he's breathing now."
-
-"He can't lie in the street. May we bring him in, marm?"
-
-"Surely. Bring him into the sitting-room. There is a comfortable
-sofa. This way, please!"
-
-Slowly and solemnly he was borne into Briony Lodge and laid out
-in the principal room, while I still observed the proceedings
-from my post by the window. The lamps had been lit, but the
-blinds had not been drawn, so that I could see Holmes as he lay
-upon the couch. I do not know whether he was seized with
-compunction at that moment for the part he was playing, but I
-know that I never felt more heartily ashamed of myself in my life
-than when I saw the beautiful creature against whom I was
-conspiring, or the grace and kindliness with which she waited
-upon the injured man. And yet it would be the blackest treachery
-to Holmes to draw back now from the part which he had intrusted
-to me. I hardened my heart, and took the smoke-rocket from under
-my ulster. After all, I thought, we are not injuring her. We are
-but preventing her from injuring another.
-
-Holmes had sat up upon the couch, and I saw him motion like a man
-who is in need of air. A maid rushed across and threw open the
-window. At the same instant I saw him raise his hand and at the
-signal I tossed my rocket into the room with a cry of "Fire!" The
-word was no sooner out of my mouth than the whole crowd of
-spectators, well dressed and ill--gentlemen, ostlers, and
-servant-maids--joined in a general shriek of "Fire!" Thick clouds
-of smoke curled through the room and out at the open window. I
-caught a glimpse of rushing figures, and a moment later the voice
-of Holmes from within assuring them that it was a false alarm.
-Slipping through the shouting crowd I made my way to the corner
-of the street, and in ten minutes was rejoiced to find my
-friend's arm in mine, and to get away from the scene of uproar.
-He walked swiftly and in silence for some few minutes until we
-had turned down one of the quiet streets which lead towards the
-Edgeware Road.
-
-"You did it very nicely, Doctor," he remarked. "Nothing could
-have been better. It is all right."
-
-"You have the photograph?"
-
-"I know where it is."
-
-"And how did you find out?"
-
-"She showed me, as I told you she would."
-
-"I am still in the dark."
-
-"I do not wish to make a mystery," said he, laughing. "The matter
-was perfectly simple. You, of course, saw that everyone in the
-street was an accomplice. They were all engaged for the evening."
-
-"I guessed as much."
-
-"Then, when the row broke out, I had a little moist red paint in
-the palm of my hand. I rushed forward, fell down, clapped my hand
-to my face, and became a piteous spectacle. It is an old trick."
-
-"That also I could fathom."
-
-"Then they carried me in. She was bound to have me in. What else
-could she do? And into her sitting-room, which was the very room
-which I suspected. It lay between that and her bedroom, and I was
-determined to see which. They laid me on a couch, I motioned for
-air, they were compelled to open the window, and you had your
-chance."
-
-"How did that help you?"
-
-"It was all-important. When a woman thinks that her house is on
-fire, her instinct is at once to rush to the thing which she
-values most. It is a perfectly overpowering impulse, and I have
-more than once taken advantage of it. In the case of the
-Darlington substitution scandal it was of use to me, and also in
-the Arnsworth Castle business. A married woman grabs at her baby;
-an unmarried one reaches for her jewel-box. Now it was clear to
-me that our lady of to-day had nothing in the house more precious
-to her than what we are in quest of. She would rush to secure it.
-The alarm of fire was admirably done. The smoke and shouting were
-enough to shake nerves of steel. She responded beautifully. The
-photograph is in a recess behind a sliding panel just above the
-right bell-pull. She was there in an instant, and I caught a
-glimpse of it as she half-drew it out. When I cried out that it
-was a false alarm, she replaced it, glanced at the rocket, rushed
-from the room, and I have not seen her since. I rose, and, making
-my excuses, escaped from the house. I hesitated whether to
-attempt to secure the photograph at once; but the coachman had
-come in, and as he was watching me narrowly it seemed safer to
-wait. A little over-precipitance may ruin all."
-
-"And now?" I asked.
-
-"Our quest is practically finished. I shall call with the King
-to-morrow, and with you, if you care to come with us. We will be
-shown into the sitting-room to wait for the lady, but it is
-probable that when she comes she may find neither us nor the
-photograph. It might be a satisfaction to his Majesty to regain
-it with his own hands."
-
-"And when will you call?"
-
-"At eight in the morning. She will not be up, so that we shall
-have a clear field. Besides, we must be prompt, for this marriage
-may mean a complete change in her life and habits. I must wire to
-the King without delay."
-
-We had reached Baker Street and had stopped at the door. He was
-searching his pockets for the key when someone passing said:
-
-"Good-night, Mister Sherlock Holmes."
-
-There were several people on the pavement at the time, but the
-greeting appeared to come from a slim youth in an ulster who had
-hurried by.
-
-"I've heard that voice before," said Holmes, staring down the
-dimly lit street. "Now, I wonder who the deuce that could have
-been."
-
-
-III.
-
-I slept at Baker Street that night, and we were engaged upon our
-toast and coffee in the morning when the King of Bohemia rushed
-into the room.
-
-"You have really got it!" he cried, grasping Sherlock Holmes by
-either shoulder and looking eagerly into his face.
-
-"Not yet."
-
-"But you have hopes?"
-
-"I have hopes."
-
-"Then, come. I am all impatience to be gone."
-
-"We must have a cab."
-
-"No, my brougham is waiting."
-
-"Then that will simplify matters." We descended and started off
-once more for Briony Lodge.
-
-"Irene Adler is married," remarked Holmes.
-
-"Married! When?"
-
-"Yesterday."
-
-"But to whom?"
-
-"To an English lawyer named Norton."
-
-"But she could not love him."
-
-"I am in hopes that she does."
-
-"And why in hopes?"
-
-"Because it would spare your Majesty all fear of future
-annoyance. If the lady loves her husband, she does not love your
-Majesty. If she does not love your Majesty, there is no reason
-why she should interfere with your Majesty's plan."
-
-"It is true. And yet--Well! I wish she had been of my own
-station! What a queen she would have made!" He relapsed into a
-moody silence, which was not broken until we drew up in
-Serpentine Avenue.
-
-The door of Briony Lodge was open, and an elderly woman stood
-upon the steps. She watched us with a sardonic eye as we stepped
-from the brougham.
-
-"Mr. Sherlock Holmes, I believe?" said she.
-
-"I am Mr. Holmes," answered my companion, looking at her with a
-questioning and rather startled gaze.
-
-"Indeed! My mistress told me that you were likely to call. She
-left this morning with her husband by the 5:15 train from Charing
-Cross for the Continent."
-
-"What!" Sherlock Holmes staggered back, white with chagrin and
-surprise. "Do you mean that she has left England?"
-
-"Never to return."
-
-"And the papers?" asked the King hoarsely. "All is lost."
-
-"We shall see." He pushed past the servant and rushed into the
-drawing-room, followed by the King and myself. The furniture was
-scattered about in every direction, with dismantled shelves and
-open drawers, as if the lady had hurriedly ransacked them before
-her flight. Holmes rushed at the bell-pull, tore back a small
-sliding shutter, and, plunging in his hand, pulled out a
-photograph and a letter. The photograph was of Irene Adler
-herself in evening dress, the letter was superscribed to
-"Sherlock Holmes, Esq. To be left till called for." My friend
-tore it open and we all three read it together. It was dated at
-midnight of the preceding night and ran in this way:
-
-"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
-took me in completely. Until after the alarm of fire, I had not a
-suspicion. But then, when I found how I had betrayed myself, I
-began to think. I had been warned against you months ago. I had
-been told that if the King employed an agent it would certainly
-be you. And your address had been given me. Yet, with all this,
-you made me reveal what you wanted to know. Even after I became
-suspicious, I found it hard to think evil of such a dear, kind
-old clergyman. But, you know, I have been trained as an actress
-myself. Male costume is nothing new to me. I often take advantage
-of the freedom which it gives. I sent John, the coachman, to
-watch you, ran up stairs, got into my walking-clothes, as I call
-them, and came down just as you departed.
-
-"Well, I followed you to your door, and so made sure that I was
-really an object of interest to the celebrated Mr. Sherlock
-Holmes. Then I, rather imprudently, wished you good-night, and
-started for the Temple to see my husband.
-
-"We both thought the best resource was flight, when pursued by
-so formidable an antagonist; so you will find the nest empty when
-you call to-morrow. As to the photograph, your client may rest in
-peace. I love and am loved by a better man than he. The King may
-do what he will without hindrance from one whom he has cruelly
-wronged. I keep it only to safeguard myself, and to preserve a
-weapon which will always secure me from any steps which he might
-take in the future. I leave a photograph which he might care to
-possess; and I remain, dear Mr. Sherlock Holmes,
-
-                                      "Very truly yours,
-                                   "IRENE NORTON, née ADLER."
-
-"What a woman--oh, what a woman!" cried the King of Bohemia, when
-we had all three read this epistle. "Did I not tell you how quick
-and resolute she was? Would she not have made an admirable queen?
-Is it not a pity that she was not on my level?"
-
-"From what I have seen of the lady she seems indeed to be on a
-very different level to your Majesty," said Holmes coldly. "I am
-sorry that I have not been able to bring your Majesty's business
-to a more successful conclusion."
-
-"On the contrary, my dear sir," cried the King; "nothing could be
-more successful. I know that her word is inviolate. The
-photograph is now as safe as if it were in the fire."
-
-"I am glad to hear your Majesty say so."
-
-"I am immensely indebted to you. Pray tell me in what way I can
-reward you. This ring--" He slipped an emerald snake ring from
-his finger and held it out upon the palm of his hand.
-
-"Your Majesty has something which I should value even more
-highly," said Holmes.
-
-"You have but to name it."
-
-"This photograph!"
-
-The King stared at him in amazement.
-
-"Irene's photograph!" he cried. "Certainly, if you wish it."
-
-"I thank your Majesty. Then there is no more to be done in the
-matter. I have the honour to wish you a very good-morning." He
-bowed, and, turning away without observing the hand which the
-King had stretched out to him, he set off in my company for his
-chambers.
-
-And that was how a great scandal threatened to affect the kingdom
-of Bohemia, and how the best plans of Mr. Sherlock Holmes were
-beaten by a woman's wit. He used to make merry over the
-cleverness of women, but I have not heard him do it of late. And
-when he speaks of Irene Adler, or when he refers to her
-photograph, it is always under the honourable title of the woman.
-
-
-
-ADVENTURE II. THE RED-HEADED LEAGUE
-
-I had called upon my friend, Mr. Sherlock Holmes, one day in the
-autumn of last year and found him in deep conversation with a
-very stout, florid-faced, elderly gentleman with fiery red hair.
-With an apology for my intrusion, I was about to withdraw when
-Holmes pulled me abruptly into the room and closed the door
-behind me.
-
-"You could not possibly have come at a better time, my dear
-Watson," he said cordially.
-
-"I was afraid that you were engaged."
-
-"So I am. Very much so."
-
-"Then I can wait in the next room."
-
-"Not at all. This gentleman, Mr. Wilson, has been my partner and
-helper in many of my most successful cases, and I have no
-doubt that he will be of the utmost use to me in yours also."
-
-The stout gentleman half rose from his chair and gave a bob of
-greeting, with a quick little questioning glance from his small
-fat-encircled eyes.
-
-"Try the settee," said Holmes, relapsing into his armchair and
-putting his fingertips together, as was his custom when in
-judicial moods. "I know, my dear Watson, that you share my love
-of all that is bizarre and outside the conventions and humdrum
-routine of everyday life. You have shown your relish for it by
-the enthusiasm which has prompted you to chronicle, and, if you
-will excuse my saying so, somewhat to embellish so many of my own
-little adventures."
-
-"Your cases have indeed been of the greatest interest to me," I
-observed.
-
-"You will remember that I remarked the other day, just before we
-went into the very simple problem presented by Miss Mary
-Sutherland, that for strange effects and extraordinary
-combinations we must go to life itself, which is always far more
-daring than any effort of the imagination."
-
-"A proposition which I took the liberty of doubting."
-
-"You did, Doctor, but none the less you must come round to my
-view, for otherwise I shall keep on piling fact upon fact on you
-until your reason breaks down under them and acknowledges me to
-be right. Now, Mr. Jabez Wilson here has been good enough to call
-upon me this morning, and to begin a narrative which promises to
-be one of the most singular which I have listened to for some
-time. You have heard me remark that the strangest and most unique
-things are very often connected not with the larger but with the
-smaller crimes, and occasionally, indeed, where there is room for
-doubt whether any positive crime has been committed. As far as I
-have heard it is impossible for me to say whether the present
-case is an instance of crime or not, but the course of events is
-certainly among the most singular that I have ever listened to.
-Perhaps, Mr. Wilson, you would have the great kindness to
-recommence your narrative. I ask you not merely because my friend
-Dr. Watson has not heard the opening part but also because the
-peculiar nature of the story makes me anxious to have every
-possible detail from your lips. As a rule, when I have heard some
-slight indication of the course of events, I am able to guide
-myself by the thousands of other similar cases which occur to my
-memory. In the present instance I am forced to admit that the
-facts are, to the best of my belief, unique."
-
-The portly client puffed out his chest with an appearance of some
-little pride and pulled a dirty and wrinkled newspaper from the
-inside pocket of his greatcoat. As he glanced down the
-advertisement column, with his head thrust forward and the paper
-flattened out upon his knee, I took a good look at the man and
-endeavoured, after the fashion of my companion, to read the
-indications which might be presented by his dress or appearance.
-
-I did not gain very much, however, by my inspection. Our visitor
-bore every mark of being an average commonplace British
-tradesman, obese, pompous, and slow. He wore rather baggy grey
-shepherd's check trousers, a not over-clean black frock-coat,
-unbuttoned in the front, and a drab waistcoat with a heavy brassy
-Albert chain, and a square pierced bit of metal dangling down as
-an ornament. A frayed top-hat and a faded brown overcoat with a
-wrinkled velvet collar lay upon a chair beside him. Altogether,
-look as I would, there was nothing remarkable about the man save
-his blazing red head, and the expression of extreme chagrin and
-discontent upon his features.
-
-Sherlock Holmes' quick eye took in my occupation, and he shook
-his head with a smile as he noticed my questioning glances.
-"Beyond the obvious facts that he has at some time done manual
-labour, that he takes snuff, that he is a Freemason, that he has
-been in China, and that he has done a considerable amount of
-writing lately, I can deduce nothing else."
-
-Mr. Jabez Wilson started up in his chair, with his forefinger
-upon the paper, but his eyes upon my companion.
-
-"How, in the name of good-fortune, did you know all that, Mr.
-Holmes?" he asked. "How did you know, for example, that I did
-manual labour. It's as true as gospel, for I began as a ship's
-carpenter."
-
-"Your hands, my dear sir. Your right hand is quite a size larger
-than your left. You have worked with it, and the muscles are more
-developed."
-
-"Well, the snuff, then, and the Freemasonry?"
-
-"I won't insult your intelligence by telling you how I read that,
-especially as, rather against the strict rules of your order, you
-use an arc-and-compass breastpin."
-
-"Ah, of course, I forgot that. But the writing?"
-
-"What else can be indicated by that right cuff so very shiny for
-five inches, and the left one with the smooth patch near the
-elbow where you rest it upon the desk?"
-
-"Well, but China?"
-
-"The fish that you have tattooed immediately above your right
-wrist could only have been done in China. I have made a small
-study of tattoo marks and have even contributed to the literature
-of the subject. That trick of staining the fishes' scales of a
-delicate pink is quite peculiar to China. When, in addition, I
-see a Chinese coin hanging from your watch-chain, the matter
-becomes even more simple."
-
-Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
-thought at first that you had done something clever, but I see
-that there was nothing in it, after all."
-
-"I begin to think, Watson," said Holmes, "that I make a mistake
-in explaining. 'Omne ignotum pro magnifico,' you know, and my
-poor little reputation, such as it is, will suffer shipwreck if I
-am so candid. Can you not find the advertisement, Mr. Wilson?"
-
-"Yes, I have got it now," he answered with his thick red finger
-planted halfway down the column. "Here it is. This is what began
-it all. You just read it for yourself, sir."
-
-I took the paper from him and read as follows:
-
-"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
-Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
-another vacancy open which entitles a member of the League to a
-salary of 4 pounds a week for purely nominal services. All
-red-headed men who are sound in body and mind and above the age
-of twenty-one years, are eligible. Apply in person on Monday, at
-eleven o'clock, to Duncan Ross, at the offices of the League, 7
-Pope's Court, Fleet Street."
-
-"What on earth does this mean?" I ejaculated after I had twice
-read over the extraordinary announcement.
-
-Holmes chuckled and wriggled in his chair, as was his habit when
-in high spirits. "It is a little off the beaten track, isn't it?"
-said he. "And now, Mr. Wilson, off you go at scratch and tell us
-all about yourself, your household, and the effect which this
-advertisement had upon your fortunes. You will first make a note,
-Doctor, of the paper and the date."
-
-"It is The Morning Chronicle of April 27, 1890. Just two months
-ago."
-
-"Very good. Now, Mr. Wilson?"
-
-"Well, it is just as I have been telling you, Mr. Sherlock
-Holmes," said Jabez Wilson, mopping his forehead; "I have a small
-pawnbroker's business at Coburg Square, near the City. It's not a
-very large affair, and of late years it has not done more than
-just give me a living. I used to be able to keep two assistants,
-but now I only keep one; and I would have a job to pay him but
-that he is willing to come for half wages so as to learn the
-business."
-
-"What is the name of this obliging youth?" asked Sherlock Holmes.
-
-"His name is Vincent Spaulding, and he's not such a youth,
-either. It's hard to say his age. I should not wish a smarter
-assistant, Mr. Holmes; and I know very well that he could better
-himself and earn twice what I am able to give him. But, after
-all, if he is satisfied, why should I put ideas in his head?"
-
-"Why, indeed? You seem most fortunate in having an employé who
-comes under the full market price. It is not a common experience
-among employers in this age. I don't know that your assistant is
-not as remarkable as your advertisement."
-
-"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
-fellow for photography. Snapping away with a camera when he ought
-to be improving his mind, and then diving down into the cellar
-like a rabbit into its hole to develop his pictures. That is his
-main fault, but on the whole he's a good worker. There's no vice
-in him."
-
-"He is still with you, I presume?"
-
-"Yes, sir. He and a girl of fourteen, who does a bit of simple
-cooking and keeps the place clean--that's all I have in the
-house, for I am a widower and never had any family. We live very
-quietly, sir, the three of us; and we keep a roof over our heads
-and pay our debts, if we do nothing more.
-
-"The first thing that put us out was that advertisement.
-Spaulding, he came down into the office just this day eight
-weeks, with this very paper in his hand, and he says:
-
-"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
-
-"'Why that?' I asks.
-
-"'Why,' says he, 'here's another vacancy on the League of the
-Red-headed Men. It's worth quite a little fortune to any man who
-gets it, and I understand that there are more vacancies than
-there are men, so that the trustees are at their wits' end what
-to do with the money. If my hair would only change colour, here's
-a nice little crib all ready for me to step into.'
-
-"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
-very stay-at-home man, and as my business came to me instead of
-my having to go to it, I was often weeks on end without putting
-my foot over the door-mat. In that way I didn't know much of what
-was going on outside, and I was always glad of a bit of news.
-
-"'Have you never heard of the League of the Red-headed Men?' he
-asked with his eyes open.
-
-"'Never.'
-
-"'Why, I wonder at that, for you are eligible yourself for one
-of the vacancies.'
-
-"'And what are they worth?' I asked.
-
-"'Oh, merely a couple of hundred a year, but the work is slight,
-and it need not interfere very much with one's other
-occupations.'
-
-"Well, you can easily think that that made me prick up my ears,
-for the business has not been over-good for some years, and an
-extra couple of hundred would have been very handy.
-
-"'Tell me all about it,' said I.
-
-"'Well,' said he, showing me the advertisement, 'you can see for
-yourself that the League has a vacancy, and there is the address
-where you should apply for particulars. As far as I can make out,
-the League was founded by an American millionaire, Ezekiah
-Hopkins, who was very peculiar in his ways. He was himself
-red-headed, and he had a great sympathy for all red-headed men;
-so when he died it was found that he had left his enormous
-fortune in the hands of trustees, with instructions to apply the
-interest to the providing of easy berths to men whose hair is of
-that colour. From all I hear it is splendid pay and very little to
-do.'
-
-"'But,' said I, 'there would be millions of red-headed men who
-would apply.'
-
-"'Not so many as you might think,' he answered. 'You see it is
-really confined to Londoners, and to grown men. This American had
-started from London when he was young, and he wanted to do the
-old town a good turn. Then, again, I have heard it is no use your
-applying if your hair is light red, or dark red, or anything but
-real bright, blazing, fiery red. Now, if you cared to apply, Mr.
-Wilson, you would just walk in; but perhaps it would hardly be
-worth your while to put yourself out of the way for the sake of a
-few hundred pounds.'
-
-"Now, it is a fact, gentlemen, as you may see for yourselves,
-that my hair is of a very full and rich tint, so that it seemed
-to me that if there was to be any competition in the matter I
-stood as good a chance as any man that I had ever met. Vincent
-Spaulding seemed to know so much about it that I thought he might
-prove useful, so I just ordered him to put up the shutters for
-the day and to come right away with me. He was very willing to
-have a holiday, so we shut the business up and started off for
-the address that was given us in the advertisement.
-
-"I never hope to see such a sight as that again, Mr. Holmes. From
-north, south, east, and west every man who had a shade of red in
-his hair had tramped into the city to answer the advertisement.
-Fleet Street was choked with red-headed folk, and Pope's Court
-looked like a coster's orange barrow. I should not have thought
-there were so many in the whole country as were brought together
-by that single advertisement. Every shade of colour they
-were--straw, lemon, orange, brick, Irish-setter, liver, clay;
-but, as Spaulding said, there were not many who had the real
-vivid flame-coloured tint. When I saw how many were waiting, I
-would have given it up in despair; but Spaulding would not hear
-of it. How he did it I could not imagine, but he pushed and
-pulled and butted until he got me through the crowd, and right up
-to the steps which led to the office. There was a double stream
-upon the stair, some going up in hope, and some coming back
-dejected; but we wedged in as well as we could and soon found
-ourselves in the office."
-
-"Your experience has been a most entertaining one," remarked
-Holmes as his client paused and refreshed his memory with a huge
-pinch of snuff. "Pray continue your very interesting statement."
-
-"There was nothing in the office but a couple of wooden chairs
-and a deal table, behind which sat a small man with a head that
-was even redder than mine. He said a few words to each candidate
-as he came up, and then he always managed to find some fault in
-them which would disqualify them. Getting a vacancy did not seem
-to be such a very easy matter, after all. However, when our turn
-came the little man was much more favourable to me than to any of
-the others, and he closed the door as we entered, so that he
-might have a private word with us.
-
-"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
-willing to fill a vacancy in the League.'
-
-"'And he is admirably suited for it,' the other answered. 'He has
-every requirement. I cannot recall when I have seen anything so
-fine.' He took a step backward, cocked his head on one side, and
-gazed at my hair until I felt quite bashful. Then suddenly he
-plunged forward, wrung my hand, and congratulated me warmly on my
-success.
-
-"'It would be injustice to hesitate,' said he. 'You will,
-however, I am sure, excuse me for taking an obvious precaution.'
-With that he seized my hair in both his hands, and tugged until I
-yelled with the pain. 'There is water in your eyes,' said he as
-he released me. 'I perceive that all is as it should be. But we
-have to be careful, for we have twice been deceived by wigs and
-once by paint. I could tell you tales of cobbler's wax which
-would disgust you with human nature.' He stepped over to the
-window and shouted through it at the top of his voice that the
-vacancy was filled. A groan of disappointment came up from below,
-and the folk all trooped away in different directions until there
-was not a red-head to be seen except my own and that of the
-manager.
-
-"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
-the pensioners upon the fund left by our noble benefactor. Are
-you a married man, Mr. Wilson? Have you a family?'
-
-"I answered that I had not.
-
-"His face fell immediately.
-
-"'Dear me!' he said gravely, 'that is very serious indeed! I am
-sorry to hear you say that. The fund was, of course, for the
-propagation and spread of the red-heads as well as for their
-maintenance. It is exceedingly unfortunate that you should be a
-bachelor.'
-
-"My face lengthened at this, Mr. Holmes, for I thought that I was
-not to have the vacancy after all; but after thinking it over for
-a few minutes he said that it would be all right.
-
-"'In the case of another,' said he, 'the objection might be
-fatal, but we must stretch a point in favour of a man with such a
-head of hair as yours. When shall you be able to enter upon your
-new duties?'
-
-"'Well, it is a little awkward, for I have a business already,'
-said I.
-
-"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
-'I should be able to look after that for you.'
-
-"'What would be the hours?' I asked.
-
-"'Ten to two.'
-
-"Now a pawnbroker's business is mostly done of an evening, Mr.
-Holmes, especially Thursday and Friday evening, which is just
-before pay-day; so it would suit me very well to earn a little in
-the mornings. Besides, I knew that my assistant was a good man,
-and that he would see to anything that turned up.
-
-"'That would suit me very well,' said I. 'And the pay?'
-
-"'Is 4 pounds a week.'
-
-"'And the work?'
-
-"'Is purely nominal.'
-
-"'What do you call purely nominal?'
-
-"'Well, you have to be in the office, or at least in the
-building, the whole time. If you leave, you forfeit your whole
-position forever. The will is very clear upon that point. You
-don't comply with the conditions if you budge from the office
-during that time.'
-
-"'It's only four hours a day, and I should not think of leaving,'
-said I.
-
-"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
-nor business nor anything else. There you must stay, or you lose
-your billet.'
-
-"'And the work?'
-
-"'Is to copy out the "Encyclopaedia Britannica." There is the first
-volume of it in that press. You must find your own ink, pens, and
-blotting-paper, but we provide this table and chair. Will you be
-ready to-morrow?'
-
-"'Certainly,' I answered.
-
-"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
-once more on the important position which you have been fortunate
-enough to gain.' He bowed me out of the room and I went home with
-my assistant, hardly knowing what to say or do, I was so pleased
-at my own good fortune.
-
-"Well, I thought over the matter all day, and by evening I was in
-low spirits again; for I had quite persuaded myself that the
-whole affair must be some great hoax or fraud, though what its
-object might be I could not imagine. It seemed altogether past
-belief that anyone could make such a will, or that they would pay
-such a sum for doing anything so simple as copying out the
-'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
-cheer me up, but by bedtime I had reasoned myself out of the
-whole thing. However, in the morning I determined to have a look
-at it anyhow, so I bought a penny bottle of ink, and with a
-quill-pen, and seven sheets of foolscap paper, I started off for
-Pope's Court.
-
-"Well, to my surprise and delight, everything was as right as
-possible. The table was set out ready for me, and Mr. Duncan Ross
-was there to see that I got fairly to work. He started me off
-upon the letter A, and then he left me; but he would drop in from
-time to time to see that all was right with me. At two o'clock he
-bade me good-day, complimented me upon the amount that I had
-written, and locked the door of the office after me.
-
-"This went on day after day, Mr. Holmes, and on Saturday the
-manager came in and planked down four golden sovereigns for my
-week's work. It was the same next week, and the same the week
-after. Every morning I was there at ten, and every afternoon I
-left at two. By degrees Mr. Duncan Ross took to coming in only
-once of a morning, and then, after a time, he did not come in at
-all. Still, of course, I never dared to leave the room for an
-instant, for I was not sure when he might come, and the billet
-was such a good one, and suited me so well, that I would not risk
-the loss of it.
-
-"Eight weeks passed away like this, and I had written about
-Abbots and Archery and Armour and Architecture and Attica, and
-hoped with diligence that I might get on to the B's before very
-long. It cost me something in foolscap, and I had pretty nearly
-filled a shelf with my writings. And then suddenly the whole
-business came to an end."
-
-"To an end?"
-
-"Yes, sir. And no later than this morning. I went to my work as
-usual at ten o'clock, but the door was shut and locked, with a
-little square of cardboard hammered on to the middle of the
-panel with a tack. Here it is, and you can read for yourself."
-
-He held up a piece of white cardboard about the size of a sheet
-of note-paper. It read in this fashion:
-
-                  THE RED-HEADED LEAGUE
-
-                           IS
-
-                        DISSOLVED.
-
-                     October 9, 1890.
-
-Sherlock Holmes and I surveyed this curt announcement and the
-rueful face behind it, until the comical side of the affair so
-completely overtopped every other consideration that we both
-burst out into a roar of laughter.
-
-"I cannot see that there is anything very funny," cried our
-client, flushing up to the roots of his flaming head. "If you can
-do nothing better than laugh at me, I can go elsewhere."
-
-"No, no," cried Holmes, shoving him back into the chair from
-which he had half risen. "I really wouldn't miss your case for
-the world. It is most refreshingly unusual. But there is, if you
-will excuse my saying so, something just a little funny about it.
-Pray what steps did you take when you found the card upon the
-door?"
-
-"I was staggered, sir. I did not know what to do. Then I called
-at the offices round, but none of them seemed to know anything
-about it. Finally, I went to the landlord, who is an accountant
-living on the ground-floor, and I asked him if he could tell me
-what had become of the Red-headed League. He said that he had
-never heard of any such body. Then I asked him who Mr. Duncan
-Ross was. He answered that the name was new to him.
-
-"'Well,' said I, 'the gentleman at No. 4.'
-
-"'What, the red-headed man?'
-
-"'Yes.'
-
-"'Oh,' said he, 'his name was William Morris. He was a solicitor
-and was using my room as a temporary convenience until his new
-premises were ready. He moved out yesterday.'
-
-"'Where could I find him?'
-
-"'Oh, at his new offices. He did tell me the address. Yes, 17
-King Edward Street, near St. Paul's.'
-
-"I started off, Mr. Holmes, but when I got to that address it was
-a manufactory of artificial knee-caps, and no one in it had ever
-heard of either Mr. William Morris or Mr. Duncan Ross."
-
-"And what did you do then?" asked Holmes.
-
-"I went home to Saxe-Coburg Square, and I took the advice of my
-assistant. But he could not help me in any way. He could only say
-that if I waited I should hear by post. But that was not quite
-good enough, Mr. Holmes. I did not wish to lose such a place
-without a struggle, so, as I had heard that you were good enough
-to give advice to poor folk who were in need of it, I came right
-away to you."
-
-"And you did very wisely," said Holmes. "Your case is an
-exceedingly remarkable one, and I shall be happy to look into it.
-From what you have told me I think that it is possible that
-graver issues hang from it than might at first sight appear."
-
-"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
-pound a week."
-
-"As far as you are personally concerned," remarked Holmes, "I do
-not see that you have any grievance against this extraordinary
-league. On the contrary, you are, as I understand, richer by some
-30 pounds, to say nothing of the minute knowledge which you have
-gained on every subject which comes under the letter A. You have
-lost nothing by them."
-
-"No, sir. But I want to find out about them, and who they are,
-and what their object was in playing this prank--if it was a
-prank--upon me. It was a pretty expensive joke for them, for it
-cost them two and thirty pounds."
-
-"We shall endeavour to clear up these points for you. And, first,
-one or two questions, Mr. Wilson. This assistant of yours who
-first called your attention to the advertisement--how long had he
-been with you?"
-
-"About a month then."
-
-"How did he come?"
-
-"In answer to an advertisement."
-
-"Was he the only applicant?"
-
-"No, I had a dozen."
-
-"Why did you pick him?"
-
-"Because he was handy and would come cheap."
-
-"At half-wages, in fact."
-
-"Yes."
-
-"What is he like, this Vincent Spaulding?"
-
-"Small, stout-built, very quick in his ways, no hair on his face,
-though he's not short of thirty. Has a white splash of acid upon
-his forehead."
-
-Holmes sat up in his chair in considerable excitement. "I thought
-as much," said he. "Have you ever observed that his ears are
-pierced for earrings?"
-
-"Yes, sir. He told me that a gipsy had done it for him when he
-was a lad."
-
-"Hum!" said Holmes, sinking back in deep thought. "He is still
-with you?"
-
-"Oh, yes, sir; I have only just left him."
-
-"And has your business been attended to in your absence?"
-
-"Nothing to complain of, sir. There's never very much to do of a
-morning."
-
-"That will do, Mr. Wilson. I shall be happy to give you an
-opinion upon the subject in the course of a day or two. To-day is
-Saturday, and I hope that by Monday we may come to a conclusion."
-
-"Well, Watson," said Holmes when our visitor had left us, "what
-do you make of it all?"
-
-"I make nothing of it," I answered frankly. "It is a most
-mysterious business."
-
-"As a rule," said Holmes, "the more bizarre a thing is the less
-mysterious it proves to be. It is your commonplace, featureless
-crimes which are really puzzling, just as a commonplace face is
-the most difficult to identify. But I must be prompt over this
-matter."
-
-"What are you going to do, then?" I asked.
-
-"To smoke," he answered. "It is quite a three pipe problem, and I
-beg that you won't speak to me for fifty minutes." He curled
-himself up in his chair, with his thin knees drawn up to his
-hawk-like nose, and there he sat with his eyes closed and his
-black clay pipe thrusting out like the bill of some strange bird.
-I had come to the conclusion that he had dropped asleep, and
-indeed was nodding myself, when he suddenly sprang out of his
-chair with the gesture of a man who has made up his mind and put
-his pipe down upon the mantelpiece.
-
-"Sarasate plays at the St. James's Hall this afternoon," he
-remarked. "What do you think, Watson? Could your patients spare
-you for a few hours?"
-
-"I have nothing to do to-day. My practice is never very
-absorbing."
-
-"Then put on your hat and come. I am going through the City
-first, and we can have some lunch on the way. I observe that
-there is a good deal of German music on the programme, which is
-rather more to my taste than Italian or French. It is
-introspective, and I want to introspect. Come along!"
-
-We travelled by the Underground as far as Aldersgate; and a short
-walk took us to Saxe-Coburg Square, the scene of the singular
-story which we had listened to in the morning. It was a poky,
-little, shabby-genteel place, where four lines of dingy
-two-storied brick houses looked out into a small railed-in
-enclosure, where a lawn of weedy grass and a few clumps of faded
-laurel-bushes made a hard fight against a smoke-laden and
-uncongenial atmosphere. Three gilt balls and a brown board with
-"JABEZ WILSON" in white letters, upon a corner house, announced
-the place where our red-headed client carried on his business.
-Sherlock Holmes stopped in front of it with his head on one side
-and looked it all over, with his eyes shining brightly between
-puckered lids. Then he walked slowly up the street, and then down
-again to the corner, still looking keenly at the houses. Finally
-he returned to the pawnbroker's, and, having thumped vigorously
-upon the pavement with his stick two or three times, he went up
-to the door and knocked. It was instantly opened by a
-bright-looking, clean-shaven young fellow, who asked him to step
-in.
-
-"Thank you," said Holmes, "I only wished to ask you how you would
-go from here to the Strand."
-
-"Third right, fourth left," answered the assistant promptly,
-closing the door.
-
-"Smart fellow, that," observed Holmes as we walked away. "He is,
-in my judgment, the fourth smartest man in London, and for daring
-I am not sure that he has not a claim to be third. I have known
-something of him before."
-
-"Evidently," said I, "Mr. Wilson's assistant counts for a good
-deal in this mystery of the Red-headed League. I am sure that you
-inquired your way merely in order that you might see him."
-
-"Not him."
-
-"What then?"
-
-"The knees of his trousers."
-
-"And what did you see?"
-
-"What I expected to see."
-
-"Why did you beat the pavement?"
-
-"My dear doctor, this is a time for observation, not for talk. We
-are spies in an enemy's country. We know something of Saxe-Coburg
-Square. Let us now explore the parts which lie behind it."
-
-The road in which we found ourselves as we turned round the
-corner from the retired Saxe-Coburg Square presented as great a
-contrast to it as the front of a picture does to the back. It was
-one of the main arteries which conveyed the traffic of the City
-to the north and west. The roadway was blocked with the immense
-stream of commerce flowing in a double tide inward and outward,
-while the footpaths were black with the hurrying swarm of
-pedestrians. It was difficult to realise as we looked at the line
-of fine shops and stately business premises that they really
-abutted on the other side upon the faded and stagnant square
-which we had just quitted.
-
-"Let me see," said Holmes, standing at the corner and glancing
-along the line, "I should like just to remember the order of the
-houses here. It is a hobby of mine to have an exact knowledge of
-London. There is Mortimer's, the tobacconist, the little
-newspaper shop, the Coburg branch of the City and Suburban Bank,
-the Vegetarian Restaurant, and McFarlane's carriage-building
-depot. That carries us right on to the other block. And now,
-Doctor, we've done our work, so it's time we had some play. A
-sandwich and a cup of coffee, and then off to violin-land, where
-all is sweetness and delicacy and harmony, and there are no
-red-headed clients to vex us with their conundrums."
-
-My friend was an enthusiastic musician, being himself not only a
-very capable performer but a composer of no ordinary merit. All
-the afternoon he sat in the stalls wrapped in the most perfect
-happiness, gently waving his long, thin fingers in time to the
-music, while his gently smiling face and his languid, dreamy eyes
-were as unlike those of Holmes the sleuth-hound, Holmes the
-relentless, keen-witted, ready-handed criminal agent, as it was
-possible to conceive. In his singular character the dual nature
-alternately asserted itself, and his extreme exactness and
-astuteness represented, as I have often thought, the reaction
-against the poetic and contemplative mood which occasionally
-predominated in him. The swing of his nature took him from
-extreme languor to devouring energy; and, as I knew well, he was
-never so truly formidable as when, for days on end, he had been
-lounging in his armchair amid his improvisations and his
-black-letter editions. Then it was that the lust of the chase
-would suddenly come upon him, and that his brilliant reasoning
-power would rise to the level of intuition, until those who were
-unacquainted with his methods would look askance at him as on a
-man whose knowledge was not that of other mortals. When I saw him
-that afternoon so enwrapped in the music at St. James's Hall I
-felt that an evil time might be coming upon those whom he had set
-himself to hunt down.
-
-"You want to go home, no doubt, Doctor," he remarked as we
-emerged.
-
-"Yes, it would be as well."
-
-"And I have some business to do which will take some hours. This
-business at Coburg Square is serious."
-
-"Why serious?"
-
-"A considerable crime is in contemplation. I have every reason to
-believe that we shall be in time to stop it. But to-day being
-Saturday rather complicates matters. I shall want your help
-to-night."
-
-"At what time?"
-
-"Ten will be early enough."
-
-"I shall be at Baker Street at ten."
-
-"Very well. And, I say, Doctor, there may be some little danger,
-so kindly put your army revolver in your pocket." He waved his
-hand, turned on his heel, and disappeared in an instant among the
-crowd.
-
-I trust that I am not more dense than my neighbours, but I was
-always oppressed with a sense of my own stupidity in my dealings
-with Sherlock Holmes. Here I had heard what he had heard, I had
-seen what he had seen, and yet from his words it was evident that
-he saw clearly not only what had happened but what was about to
-happen, while to me the whole business was still confused and
-grotesque. As I drove home to my house in Kensington I thought
-over it all, from the extraordinary story of the red-headed
-copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
-Square, and the ominous words with which he had parted from me.
-What was this nocturnal expedition, and why should I go armed?
-Where were we going, and what were we to do? I had the hint from
-Holmes that this smooth-faced pawnbroker's assistant was a
-formidable man--a man who might play a deep game. I tried to
-puzzle it out, but gave it up in despair and set the matter aside
-until night should bring an explanation.
-
-It was a quarter-past nine when I started from home and made my
-way across the Park, and so through Oxford Street to Baker
-Street. Two hansoms were standing at the door, and as I entered
-the passage I heard the sound of voices from above. On entering
-his room I found Holmes in animated conversation with two men,
-one of whom I recognised as Peter Jones, the official police
-agent, while the other was a long, thin, sad-faced man, with a
-very shiny hat and oppressively respectable frock-coat.
-
-"Ha! Our party is complete," said Holmes, buttoning up his
-pea-jacket and taking his heavy hunting crop from the rack.
-"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
-introduce you to Mr. Merryweather, who is to be our companion in
-to-night's adventure."
-
-"We're hunting in couples again, Doctor, you see," said Jones in
-his consequential way. "Our friend here is a wonderful man for
-starting a chase. All he wants is an old dog to help him to do
-the running down."
-
-"I hope a wild goose may not prove to be the end of our chase,"
-observed Mr. Merryweather gloomily.
-
-"You may place considerable confidence in Mr. Holmes, sir," said
-the police agent loftily. "He has his own little methods, which
-are, if he won't mind my saying so, just a little too theoretical
-and fantastic, but he has the makings of a detective in him. It
-is not too much to say that once or twice, as in that business of
-the Sholto murder and the Agra treasure, he has been more nearly
-correct than the official force."
-
-"Oh, if you say so, Mr. Jones, it is all right," said the
-stranger with deference. "Still, I confess that I miss my rubber.
-It is the first Saturday night for seven-and-twenty years that I
-have not had my rubber."
-
-"I think you will find," said Sherlock Holmes, "that you will
-play for a higher stake to-night than you have ever done yet, and
-that the play will be more exciting. For you, Mr. Merryweather,
-the stake will be some 30,000 pounds; and for you, Jones, it will
-be the man upon whom you wish to lay your hands."
-
-"John Clay, the murderer, thief, smasher, and forger. He's a
-young man, Mr. Merryweather, but he is at the head of his
-profession, and I would rather have my bracelets on him than on
-any criminal in London. He's a remarkable man, is young John
-Clay. His grandfather was a royal duke, and he himself has been
-to Eton and Oxford. His brain is as cunning as his fingers, and
-though we meet signs of him at every turn, we never know where to
-find the man himself. He'll crack a crib in Scotland one week,
-and be raising money to build an orphanage in Cornwall the next.
-I've been on his track for years and have never set eyes on him
-yet."
-
-"I hope that I may have the pleasure of introducing you to-night.
-I've had one or two little turns also with Mr. John Clay, and I
-agree with you that he is at the head of his profession. It is
-past ten, however, and quite time that we started. If you two
-will take the first hansom, Watson and I will follow in the
-second."
-
-Sherlock Holmes was not very communicative during the long drive
-and lay back in the cab humming the tunes which he had heard in
-the afternoon. We rattled through an endless labyrinth of gas-lit
-streets until we emerged into Farrington Street.
-
-"We are close there now," my friend remarked. "This fellow
-Merryweather is a bank director, and personally interested in the
-matter. I thought it as well to have Jones with us also. He is
-not a bad fellow, though an absolute imbecile in his profession.
-He has one positive virtue. He is as brave as a bulldog and as
-tenacious as a lobster if he gets his claws upon anyone. Here we
-are, and they are waiting for us."
-
-We had reached the same crowded thoroughfare in which we had
-found ourselves in the morning. Our cabs were dismissed, and,
-following the guidance of Mr. Merryweather, we passed down a
-narrow passage and through a side door, which he opened for us.
-Within there was a small corridor, which ended in a very massive
-iron gate. This also was opened, and led down a flight of winding
-stone steps, which terminated at another formidable gate. Mr.
-Merryweather stopped to light a lantern, and then conducted us
-down a dark, earth-smelling passage, and so, after opening a
-third door, into a huge vault or cellar, which was piled all
-round with crates and massive boxes.
-
-"You are not very vulnerable from above," Holmes remarked as he
-held up the lantern and gazed about him.
-
-"Nor from below," said Mr. Merryweather, striking his stick upon
-the flags which lined the floor. "Why, dear me, it sounds quite
-hollow!" he remarked, looking up in surprise.
-
-"I must really ask you to be a little more quiet!" said Holmes
-severely. "You have already imperilled the whole success of our
-expedition. Might I beg that you would have the goodness to sit
-down upon one of those boxes, and not to interfere?"
-
-The solemn Mr. Merryweather perched himself upon a crate, with a
-very injured expression upon his face, while Holmes fell upon his
-knees upon the floor and, with the lantern and a magnifying lens,
-began to examine minutely the cracks between the stones. A few
-seconds sufficed to satisfy him, for he sprang to his feet again
-and put his glass in his pocket.
-
-"We have at least an hour before us," he remarked, "for they can
-hardly take any steps until the good pawnbroker is safely in bed.
-Then they will not lose a minute, for the sooner they do their
-work the longer time they will have for their escape. We are at
-present, Doctor--as no doubt you have divined--in the cellar of
-the City branch of one of the principal London banks. Mr.
-Merryweather is the chairman of directors, and he will explain to
-you that there are reasons why the more daring criminals of
-London should take a considerable interest in this cellar at
-present."
-
-"It is our French gold," whispered the director. "We have had
-several warnings that an attempt might be made upon it."
-
-"Your French gold?"
-
-"Yes. We had occasion some months ago to strengthen our resources
-and borrowed for that purpose 30,000 napoleons from the Bank of
-France. It has become known that we have never had occasion to
-unpack the money, and that it is still lying in our cellar. The
-crate upon which I sit contains 2,000 napoleons packed between
-layers of lead foil. Our reserve of bullion is much larger at
-present than is usually kept in a single branch office, and the
-directors have had misgivings upon the subject."
-
-"Which were very well justified," observed Holmes. "And now it is
-time that we arranged our little plans. I expect that within an
-hour matters will come to a head. In the meantime Mr.
-Merryweather, we must put the screen over that dark lantern."
-
-"And sit in the dark?"
-
-"I am afraid so. I had brought a pack of cards in my pocket, and
-I thought that, as we were a partie carrée, you might have your
-rubber after all. But I see that the enemy's preparations have
-gone so far that we cannot risk the presence of a light. And,
-first of all, we must choose our positions. These are daring men,
-and though we shall take them at a disadvantage, they may do us
-some harm unless we are careful. I shall stand behind this crate,
-and do you conceal yourselves behind those. Then, when I flash a
-light upon them, close in swiftly. If they fire, Watson, have no
-compunction about shooting them down."
-
-I placed my revolver, cocked, upon the top of the wooden case
-behind which I crouched. Holmes shot the slide across the front
-of his lantern and left us in pitch darkness--such an absolute
-darkness as I have never before experienced. The smell of hot
-metal remained to assure us that the light was still there, ready
-to flash out at a moment's notice. To me, with my nerves worked
-up to a pitch of expectancy, there was something depressing and
-subduing in the sudden gloom, and in the cold dank air of the
-vault.
-
-"They have but one retreat," whispered Holmes. "That is back
-through the house into Saxe-Coburg Square. I hope that you have
-done what I asked you, Jones?"
-
-"I have an inspector and two officers waiting at the front door."
-
-"Then we have stopped all the holes. And now we must be silent
-and wait."
-
-What a time it seemed! From comparing notes afterwards it was but
-an hour and a quarter, yet it appeared to me that the night must
-have almost gone and the dawn be breaking above us. My limbs
-were weary and stiff, for I feared to change my position; yet my
-nerves were worked up to the highest pitch of tension, and my
-hearing was so acute that I could not only hear the gentle
-breathing of my companions, but I could distinguish the deeper,
-heavier in-breath of the bulky Jones from the thin, sighing note
-of the bank director. From my position I could look over the case
-in the direction of the floor. Suddenly my eyes caught the glint
-of a light.
-
-At first it was but a lurid spark upon the stone pavement. Then
-it lengthened out until it became a yellow line, and then,
-without any warning or sound, a gash seemed to open and a hand
-appeared, a white, almost womanly hand, which felt about in the
-centre of the little area of light. For a minute or more the
-hand, with its writhing fingers, protruded out of the floor. Then
-it was withdrawn as suddenly as it appeared, and all was dark
-again save the single lurid spark which marked a chink between
-the stones.
-
-Its disappearance, however, was but momentary. With a rending,
-tearing sound, one of the broad, white stones turned over upon
-its side and left a square, gaping hole, through which streamed
-the light of a lantern. Over the edge there peeped a clean-cut,
-boyish face, which looked keenly about it, and then, with a hand
-on either side of the aperture, drew itself shoulder-high and
-waist-high, until one knee rested upon the edge. In another
-instant he stood at the side of the hole and was hauling after
-him a companion, lithe and small like himself, with a pale face
-and a shock of very red hair.
-
-"It's all clear," he whispered. "Have you the chisel and the
-bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
-
-Sherlock Holmes had sprung out and seized the intruder by the
-collar. The other dived down the hole, and I heard the sound of
-rending cloth as Jones clutched at his skirts. The light flashed
-upon the barrel of a revolver, but Holmes' hunting crop came
-down on the man's wrist, and the pistol clinked upon the stone
-floor.
-
-"It's no use, John Clay," said Holmes blandly. "You have no
-chance at all."
-
-"So I see," the other answered with the utmost coolness. "I fancy
-that my pal is all right, though I see you have got his
-coat-tails."
-
-"There are three men waiting for him at the door," said Holmes.
-
-"Oh, indeed! You seem to have done the thing very completely. I
-must compliment you."
-
-"And I you," Holmes answered. "Your red-headed idea was very new
-and effective."
-
-"You'll see your pal again presently," said Jones. "He's quicker
-at climbing down holes than I am. Just hold out while I fix the
-derbies."
-
-"I beg that you will not touch me with your filthy hands,"
-remarked our prisoner as the handcuffs clattered upon his wrists.
-"You may not be aware that I have royal blood in my veins. Have
-the goodness, also, when you address me always to say 'sir' and
-'please.'"
-
-"All right," said Jones with a stare and a snigger. "Well, would
-you please, sir, march upstairs, where we can get a cab to carry
-your Highness to the police-station?"
-
-"That is better," said John Clay serenely. He made a sweeping bow
-to the three of us and walked quietly off in the custody of the
-detective.
-
-"Really, Mr. Holmes," said Mr. Merryweather as we followed them
-from the cellar, "I do not know how the bank can thank you or
-repay you. There is no doubt that you have detected and defeated
-in the most complete manner one of the most determined attempts
-at bank robbery that have ever come within my experience."
-
-"I have had one or two little scores of my own to settle with Mr.
-John Clay," said Holmes. "I have been at some small expense over
-this matter, which I shall expect the bank to refund, but beyond
-that I am amply repaid by having had an experience which is in
-many ways unique, and by hearing the very remarkable narrative of
-the Red-headed League."
-
-
-"You see, Watson," he explained in the early hours of the morning
-as we sat over a glass of whisky and soda in Baker Street, "it
-was perfectly obvious from the first that the only possible
-object of this rather fantastic business of the advertisement of
-the League, and the copying of the 'Encyclopaedia,' must be to get
-this not over-bright pawnbroker out of the way for a number of
-hours every day. It was a curious way of managing it, but,
-really, it would be difficult to suggest a better. The method was
-no doubt suggested to Clay's ingenious mind by the colour of his
-accomplice's hair. The 4 pounds a week was a lure which must draw
-him, and what was it to them, who were playing for thousands?
-They put in the advertisement, one rogue has the temporary
-office, the other rogue incites the man to apply for it, and
-together they manage to secure his absence every morning in the
-week. From the time that I heard of the assistant having come for
-half wages, it was obvious to me that he had some strong motive
-for securing the situation."
-
-"But how could you guess what the motive was?"
-
-"Had there been women in the house, I should have suspected a
-mere vulgar intrigue. That, however, was out of the question. The
-man's business was a small one, and there was nothing in his
-house which could account for such elaborate preparations, and
-such an expenditure as they were at. It must, then, be something
-out of the house. What could it be? I thought of the assistant's
-fondness for photography, and his trick of vanishing into the
-cellar. The cellar! There was the end of this tangled clue. Then
-I made inquiries as to this mysterious assistant and found that I
-had to deal with one of the coolest and most daring criminals in
-London. He was doing something in the cellar--something which
-took many hours a day for months on end. What could it be, once
-more? I could think of nothing save that he was running a tunnel
-to some other building.
-
-"So far I had got when we went to visit the scene of action. I
-surprised you by beating upon the pavement with my stick. I was
-ascertaining whether the cellar stretched out in front or behind.
-It was not in front. Then I rang the bell, and, as I hoped, the
-assistant answered it. We have had some skirmishes, but we had
-never set eyes upon each other before. I hardly looked at his
-face. His knees were what I wished to see. You must yourself have
-remarked how worn, wrinkled, and stained they were. They spoke of
-those hours of burrowing. The only remaining point was what they
-were burrowing for. I walked round the corner, saw the City and
-Suburban Bank abutted on our friend's premises, and felt that I
-had solved my problem. When you drove home after the concert I
-called upon Scotland Yard and upon the chairman of the bank
-directors, with the result that you have seen."
-
-"And how could you tell that they would make their attempt
-to-night?" I asked.
-
-"Well, when they closed their League offices that was a sign that
-they cared no longer about Mr. Jabez Wilson's presence--in other
-words, that they had completed their tunnel. But it was essential
-that they should use it soon, as it might be discovered, or the
-bullion might be removed. Saturday would suit them better than
-any other day, as it would give them two days for their escape.
-For all these reasons I expected them to come to-night."
-
-"You reasoned it out beautifully," I exclaimed in unfeigned
-admiration. "It is so long a chain, and yet every link rings
-true."
-
-"It saved me from ennui," he answered, yawning. "Alas! I already
-feel it closing in upon me. My life is spent in one long effort
-to escape from the commonplaces of existence. These little
-problems help me to do so."
-
-"And you are a benefactor of the race," said I.
-
-He shrugged his shoulders. "Well, perhaps, after all, it is of
-some little use," he remarked. "'L'homme c'est rien--l'oeuvre
-c'est tout,' as Gustave Flaubert wrote to George Sand."
-
-
-
-ADVENTURE III. A CASE OF IDENTITY
-
-"My dear fellow," said Sherlock Holmes as we sat on either side
-of the fire in his lodgings at Baker Street, "life is infinitely
-stranger than anything which the mind of man could invent. We
-would not dare to conceive the things which are really mere
-commonplaces of existence. If we could fly out of that window
-hand in hand, hover over this great city, gently remove the
-roofs, and peep in at the queer things which are going on, the
-strange coincidences, the plannings, the cross-purposes, the
-wonderful chains of events, working through generations, and
-leading to the most outré results, it would make all fiction with
-its conventionalities and foreseen conclusions most stale and
-unprofitable."
-
-"And yet I am not convinced of it," I answered. "The cases which
-come to light in the papers are, as a rule, bald enough, and
-vulgar enough. We have in our police reports realism pushed to
-its extreme limits, and yet the result is, it must be confessed,
-neither fascinating nor artistic."
-
-"A certain selection and discretion must be used in producing a
-realistic effect," remarked Holmes. "This is wanting in the
-police report, where more stress is laid, perhaps, upon the
-platitudes of the magistrate than upon the details, which to an
-observer contain the vital essence of the whole matter. Depend
-upon it, there is nothing so unnatural as the commonplace."
-
-I smiled and shook my head. "I can quite understand your thinking
-so," I said. "Of course, in your position of unofficial adviser
-and helper to everybody who is absolutely puzzled, throughout
-three continents, you are brought in contact with all that is
-strange and bizarre. But here"--I picked up the morning paper
-from the ground--"let us put it to a practical test. Here is the
-first heading upon which I come. 'A husband's cruelty to his
-wife.' There is half a column of print, but I know without
-reading it that it is all perfectly familiar to me. There is, of
-course, the other woman, the drink, the push, the blow, the
-bruise, the sympathetic sister or landlady. The crudest of
-writers could invent nothing more crude."
-
-"Indeed, your example is an unfortunate one for your argument,"
-said Holmes, taking the paper and glancing his eye down it. "This
-is the Dundas separation case, and, as it happens, I was engaged
-in clearing up some small points in connection with it. The
-husband was a teetotaler, there was no other woman, and the
-conduct complained of was that he had drifted into the habit of
-winding up every meal by taking out his false teeth and hurling
-them at his wife, which, you will allow, is not an action likely
-to occur to the imagination of the average story-teller. Take a
-pinch of snuff, Doctor, and acknowledge that I have scored over
-you in your example."
-
-He held out his snuffbox of old gold, with a great amethyst in
-the centre of the lid. Its splendour was in such contrast to his
-homely ways and simple life that I could not help commenting upon
-it.
-
-"Ah," said he, "I forgot that I had not seen you for some weeks.
-It is a little souvenir from the King of Bohemia in return for my
-assistance in the case of the Irene Adler papers."
-
-"And the ring?" I asked, glancing at a remarkable brilliant which
-sparkled upon his finger.
-
-"It was from the reigning family of Holland, though the matter in
-which I served them was of such delicacy that I cannot confide it
-even to you, who have been good enough to chronicle one or two of
-my little problems."
-
-"And have you any on hand just now?" I asked with interest.
-
-"Some ten or twelve, but none which present any feature of
-interest. They are important, you understand, without being
-interesting. Indeed, I have found that it is usually in
-unimportant matters that there is a field for the observation,
-and for the quick analysis of cause and effect which gives the
-charm to an investigation. The larger crimes are apt to be the
-simpler, for the bigger the crime the more obvious, as a rule, is
-the motive. In these cases, save for one rather intricate matter
-which has been referred to me from Marseilles, there is nothing
-which presents any features of interest. It is possible, however,
-that I may have something better before very many minutes are
-over, for this is one of my clients, or I am much mistaken."
-
-He had risen from his chair and was standing between the parted
-blinds gazing down into the dull neutral-tinted London street.
-Looking over his shoulder, I saw that on the pavement opposite
-there stood a large woman with a heavy fur boa round her neck,
-and a large curling red feather in a broad-brimmed hat which was
-tilted in a coquettish Duchess of Devonshire fashion over her
-ear. From under this great panoply she peeped up in a nervous,
-hesitating fashion at our windows, while her body oscillated
-backward and forward, and her fingers fidgeted with her glove
-buttons. Suddenly, with a plunge, as of the swimmer who leaves
-the bank, she hurried across the road, and we heard the sharp
-clang of the bell.
-
-"I have seen those symptoms before," said Holmes, throwing his
-cigarette into the fire. "Oscillation upon the pavement always
-means an affaire de coeur. She would like advice, but is not sure
-that the matter is not too delicate for communication. And yet
-even here we may discriminate. When a woman has been seriously
-wronged by a man she no longer oscillates, and the usual symptom
-is a broken bell wire. Here we may take it that there is a love
-matter, but that the maiden is not so much angry as perplexed, or
-grieved. But here she comes in person to resolve our doubts."
-
-As he spoke there was a tap at the door, and the boy in buttons
-entered to announce Miss Mary Sutherland, while the lady herself
-loomed behind his small black figure like a full-sailed
-merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
-her with the easy courtesy for which he was remarkable, and,
-having closed the door and bowed her into an armchair, he looked
-her over in the minute and yet abstracted fashion which was
-peculiar to him.
-
-"Do you not find," he said, "that with your short sight it is a
-little trying to do so much typewriting?"
-
-"I did at first," she answered, "but now I know where the letters
-are without looking." Then, suddenly realising the full purport
-of his words, she gave a violent start and looked up, with fear
-and astonishment upon her broad, good-humoured face. "You've
-heard about me, Mr. Holmes," she cried, "else how could you know
-all that?"
-
-"Never mind," said Holmes, laughing; "it is my business to know
-things. Perhaps I have trained myself to see what others
-overlook. If not, why should you come to consult me?"
-
-"I came to you, sir, because I heard of you from Mrs. Etherege,
-whose husband you found so easy when the police and everyone had
-given him up for dead. Oh, Mr. Holmes, I wish you would do as
-much for me. I'm not rich, but still I have a hundred a year in
-my own right, besides the little that I make by the machine, and
-I would give it all to know what has become of Mr. Hosmer Angel."
-
-"Why did you come away to consult me in such a hurry?" asked
-Sherlock Holmes, with his finger-tips together and his eyes to
-the ceiling.
-
-Again a startled look came over the somewhat vacuous face of Miss
-Mary Sutherland. "Yes, I did bang out of the house," she said,
-"for it made me angry to see the easy way in which Mr.
-Windibank--that is, my father--took it all. He would not go to
-the police, and he would not go to you, and so at last, as he
-would do nothing and kept on saying that there was no harm done,
-it made me mad, and I just on with my things and came right away
-to you."
-
-"Your father," said Holmes, "your stepfather, surely, since the
-name is different."
-
-"Yes, my stepfather. I call him father, though it sounds funny,
-too, for he is only five years and two months older than myself."
-
-"And your mother is alive?"
-
-"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
-Holmes, when she married again so soon after father's death, and
-a man who was nearly fifteen years younger than herself. Father
-was a plumber in the Tottenham Court Road, and he left a tidy
-business behind him, which mother carried on with Mr. Hardy, the
-foreman; but when Mr. Windibank came he made her sell the
-business, for he was very superior, being a traveller in wines.
-They got 4700 pounds for the goodwill and interest, which wasn't
-near as much as father could have got if he had been alive."
-
-I had expected to see Sherlock Holmes impatient under this
-rambling and inconsequential narrative, but, on the contrary, he
-had listened with the greatest concentration of attention.
-
-"Your own little income," he asked, "does it come out of the
-business?"
-
-"Oh, no, sir. It is quite separate and was left me by my uncle
-Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
-cent. Two thousand five hundred pounds was the amount, but I can
-only touch the interest."
-
-"You interest me extremely," said Holmes. "And since you draw so
-large a sum as a hundred a year, with what you earn into the
-bargain, you no doubt travel a little and indulge yourself in
-every way. I believe that a single lady can get on very nicely
-upon an income of about 60 pounds."
-
-"I could do with much less than that, Mr. Holmes, but you
-understand that as long as I live at home I don't wish to be a
-burden to them, and so they have the use of the money just while
-I am staying with them. Of course, that is only just for the
-time. Mr. Windibank draws my interest every quarter and pays it
-over to mother, and I find that I can do pretty well with what I
-earn at typewriting. It brings me twopence a sheet, and I can
-often do from fifteen to twenty sheets in a day."
-
-"You have made your position very clear to me," said Holmes.
-"This is my friend, Dr. Watson, before whom you can speak as
-freely as before myself. Kindly tell us now all about your
-connection with Mr. Hosmer Angel."
-
-A flush stole over Miss Sutherland's face, and she picked
-nervously at the fringe of her jacket. "I met him first at the
-gasfitters' ball," she said. "They used to send father tickets
-when he was alive, and then afterwards they remembered us, and
-sent them to mother. Mr. Windibank did not wish us to go. He
-never did wish us to go anywhere. He would get quite mad if I
-wanted so much as to join a Sunday-school treat. But this time I
-was set on going, and I would go; for what right had he to
-prevent? He said the folk were not fit for us to know, when all
-father's friends were to be there. And he said that I had nothing
-fit to wear, when I had my purple plush that I had never so much
-as taken out of the drawer. At last, when nothing else would do,
-he went off to France upon the business of the firm, but we went,
-mother and I, with Mr. Hardy, who used to be our foreman, and it
-was there I met Mr. Hosmer Angel."
-
-"I suppose," said Holmes, "that when Mr. Windibank came back from
-France he was very annoyed at your having gone to the ball."
-
-"Oh, well, he was very good about it. He laughed, I remember, and
-shrugged his shoulders, and said there was no use denying
-anything to a woman, for she would have her way."
-
-"I see. Then at the gasfitters' ball you met, as I understand, a
-gentleman called Mr. Hosmer Angel."
-
-"Yes, sir. I met him that night, and he called next day to ask if
-we had got home all safe, and after that we met him--that is to
-say, Mr. Holmes, I met him twice for walks, but after that father
-came back again, and Mr. Hosmer Angel could not come to the house
-any more."
-
-"No?"
-
-"Well, you know father didn't like anything of the sort. He
-wouldn't have any visitors if he could help it, and he used to
-say that a woman should be happy in her own family circle. But
-then, as I used to say to mother, a woman wants her own circle to
-begin with, and I had not got mine yet."
-
-"But how about Mr. Hosmer Angel? Did he make no attempt to see
-you?"
-
-"Well, father was going off to France again in a week, and Hosmer
-wrote and said that it would be safer and better not to see each
-other until he had gone. We could write in the meantime, and he
-used to write every day. I took the letters in in the morning, so
-there was no need for father to know."
-
-"Were you engaged to the gentleman at this time?"
-
-"Oh, yes, Mr. Holmes. We were engaged after the first walk that
-we took. Hosmer--Mr. Angel--was a cashier in an office in
-Leadenhall Street--and--"
-
-"What office?"
-
-"That's the worst of it, Mr. Holmes, I don't know."
-
-"Where did he live, then?"
-
-"He slept on the premises."
-
-"And you don't know his address?"
-
-"No--except that it was Leadenhall Street."
-
-"Where did you address your letters, then?"
-
-"To the Leadenhall Street Post Office, to be left till called
-for. He said that if they were sent to the office he would be
-chaffed by all the other clerks about having letters from a lady,
-so I offered to typewrite them, like he did his, but he wouldn't
-have that, for he said that when I wrote them they seemed to come
-from me, but when they were typewritten he always felt that the
-machine had come between us. That will just show you how fond he
-was of me, Mr. Holmes, and the little things that he would think
-of."
-
-"It was most suggestive," said Holmes. "It has long been an axiom
-of mine that the little things are infinitely the most important.
-Can you remember any other little things about Mr. Hosmer Angel?"
-
-"He was a very shy man, Mr. Holmes. He would rather walk with me
-in the evening than in the daylight, for he said that he hated to
-be conspicuous. Very retiring and gentlemanly he was. Even his
-voice was gentle. He'd had the quinsy and swollen glands when he
-was young, he told me, and it had left him with a weak throat,
-and a hesitating, whispering fashion of speech. He was always
-well dressed, very neat and plain, but his eyes were weak, just
-as mine are, and he wore tinted glasses against the glare."
-
-"Well, and what happened when Mr. Windibank, your stepfather,
-returned to France?"
-
-"Mr. Hosmer Angel came to the house again and proposed that we
-should marry before father came back. He was in dreadful earnest
-and made me swear, with my hands on the Testament, that whatever
-happened I would always be true to him. Mother said he was quite
-right to make me swear, and that it was a sign of his passion.
-Mother was all in his favour from the first and was even fonder
-of him than I was. Then, when they talked of marrying within the
-week, I began to ask about father; but they both said never to
-mind about father, but just to tell him afterwards, and mother
-said she would make it all right with him. I didn't quite like
-that, Mr. Holmes. It seemed funny that I should ask his leave, as
-he was only a few years older than me; but I didn't want to do
-anything on the sly, so I wrote to father at Bordeaux, where the
-company has its French offices, but the letter came back to me on
-the very morning of the wedding."
-
-"It missed him, then?"
-
-"Yes, sir; for he had started to England just before it arrived."
-
-"Ha! that was unfortunate. Your wedding was arranged, then, for
-the Friday. Was it to be in church?"
-
-"Yes, sir, but very quietly. It was to be at St. Saviour's, near
-King's Cross, and we were to have breakfast afterwards at the St.
-Pancras Hotel. Hosmer came for us in a hansom, but as there were
-two of us he put us both into it and stepped himself into a
-four-wheeler, which happened to be the only other cab in the
-street. We got to the church first, and when the four-wheeler
-drove up we waited for him to step out, but he never did, and
-when the cabman got down from the box and looked there was no one
-there! The cabman said that he could not imagine what had become
-of him, for he had seen him get in with his own eyes. That was
-last Friday, Mr. Holmes, and I have never seen or heard anything
-since then to throw any light upon what became of him."
-
-"It seems to me that you have been very shamefully treated," said
-Holmes.
-
-"Oh, no, sir! He was too good and kind to leave me so. Why, all
-the morning he was saying to me that, whatever happened, I was to
-be true; and that even if something quite unforeseen occurred to
-separate us, I was always to remember that I was pledged to him,
-and that he would claim his pledge sooner or later. It seemed
-strange talk for a wedding-morning, but what has happened since
-gives a meaning to it."
-
-"Most certainly it does. Your own opinion is, then, that some
-unforeseen catastrophe has occurred to him?"
-
-"Yes, sir. I believe that he foresaw some danger, or else he
-would not have talked so. And then I think that what he foresaw
-happened."
-
-"But you have no notion as to what it could have been?"
-
-"None."
-
-"One more question. How did your mother take the matter?"
-
-"She was angry, and said that I was never to speak of the matter
-again."
-
-"And your father? Did you tell him?"
-
-"Yes; and he seemed to think, with me, that something had
-happened, and that I should hear of Hosmer again. As he said,
-what interest could anyone have in bringing me to the doors of
-the church, and then leaving me? Now, if he had borrowed my
-money, or if he had married me and got my money settled on him,
-there might be some reason, but Hosmer was very independent about
-money and never would look at a shilling of mine. And yet, what
-could have happened? And why could he not write? Oh, it drives me
-half-mad to think of it, and I can't sleep a wink at night." She
-pulled a little handkerchief out of her muff and began to sob
-heavily into it.
-
-"I shall glance into the case for you," said Holmes, rising, "and
-I have no doubt that we shall reach some definite result. Let the
-weight of the matter rest upon me now, and do not let your mind
-dwell upon it further. Above all, try to let Mr. Hosmer Angel
-vanish from your memory, as he has done from your life."
-
-"Then you don't think I'll see him again?"
-
-"I fear not."
-
-"Then what has happened to him?"
-
-"You will leave that question in my hands. I should like an
-accurate description of him and any letters of his which you can
-spare."
-
-"I advertised for him in last Saturday's Chronicle," said she.
-"Here is the slip and here are four letters from him."
-
-"Thank you. And your address?"
-
-"No. 31 Lyon Place, Camberwell."
-
-"Mr. Angel's address you never had, I understand. Where is your
-father's place of business?"
-
-"He travels for Westhouse & Marbank, the great claret importers
-of Fenchurch Street."
-
-"Thank you. You have made your statement very clearly. You will
-leave the papers here, and remember the advice which I have given
-you. Let the whole incident be a sealed book, and do not allow it
-to affect your life."
-
-"You are very kind, Mr. Holmes, but I cannot do that. I shall be
-true to Hosmer. He shall find me ready when he comes back."
-
-For all the preposterous hat and the vacuous face, there was
-something noble in the simple faith of our visitor which
-compelled our respect. She laid her little bundle of papers upon
-the table and went her way, with a promise to come again whenever
-she might be summoned.
-
-Sherlock Holmes sat silent for a few minutes with his fingertips
-still pressed together, his legs stretched out in front of him,
-and his gaze directed upward to the ceiling. Then he took down
-from the rack the old and oily clay pipe, which was to him as a
-counsellor, and, having lit it, he leaned back in his chair, with
-the thick blue cloud-wreaths spinning up from him, and a look of
-infinite languor in his face.
-
-"Quite an interesting study, that maiden," he observed. "I found
-her more interesting than her little problem, which, by the way,
-is rather a trite one. You will find parallel cases, if you
-consult my index, in Andover in '77, and there was something of
-the sort at The Hague last year. Old as is the idea, however,
-there were one or two details which were new to me. But the
-maiden herself was most instructive."
-
-"You appeared to read a good deal upon her which was quite
-invisible to me," I remarked.
-
-"Not invisible but unnoticed, Watson. You did not know where to
-look, and so you missed all that was important. I can never bring
-you to realise the importance of sleeves, the suggestiveness of
-thumb-nails, or the great issues that may hang from a boot-lace.
-Now, what did you gather from that woman's appearance? Describe
-it."
-
-"Well, she had a slate-coloured, broad-brimmed straw hat, with a
-feather of a brickish red. Her jacket was black, with black beads
-sewn upon it, and a fringe of little black jet ornaments. Her
-dress was brown, rather darker than coffee colour, with a little
-purple plush at the neck and sleeves. Her gloves were greyish and
-were worn through at the right forefinger. Her boots I didn't
-observe. She had small round, hanging gold earrings, and a
-general air of being fairly well-to-do in a vulgar, comfortable,
-easy-going way."
-
-Sherlock Holmes clapped his hands softly together and chuckled.
-
-"'Pon my word, Watson, you are coming along wonderfully. You have
-really done very well indeed. It is true that you have missed
-everything of importance, but you have hit upon the method, and
-you have a quick eye for colour. Never trust to general
-impressions, my boy, but concentrate yourself upon details. My
-first glance is always at a woman's sleeve. In a man it is
-perhaps better first to take the knee of the trouser. As you
-observe, this woman had plush upon her sleeves, which is a most
-useful material for showing traces. The double line a little
-above the wrist, where the typewritist presses against the table,
-was beautifully defined. The sewing-machine, of the hand type,
-leaves a similar mark, but only on the left arm, and on the side
-of it farthest from the thumb, instead of being right across the
-broadest part, as this was. I then glanced at her face, and,
-observing the dint of a pince-nez at either side of her nose, I
-ventured a remark upon short sight and typewriting, which seemed
-to surprise her."
-
-"It surprised me."
-
-"But, surely, it was obvious. I was then much surprised and
-interested on glancing down to observe that, though the boots
-which she was wearing were not unlike each other, they were
-really odd ones; the one having a slightly decorated toe-cap, and
-the other a plain one. One was buttoned only in the two lower
-buttons out of five, and the other at the first, third, and
-fifth. Now, when you see that a young lady, otherwise neatly
-dressed, has come away from home with odd boots, half-buttoned,
-it is no great deduction to say that she came away in a hurry."
-
-"And what else?" I asked, keenly interested, as I always was, by
-my friend's incisive reasoning.
-
-"I noted, in passing, that she had written a note before leaving
-home but after being fully dressed. You observed that her right
-glove was torn at the forefinger, but you did not apparently see
-that both glove and finger were stained with violet ink. She had
-written in a hurry and dipped her pen too deep. It must have been
-this morning, or the mark would not remain clear upon the finger.
-All this is amusing, though rather elementary, but I must go back
-to business, Watson. Would you mind reading me the advertised
-description of Mr. Hosmer Angel?"
-
-I held the little printed slip to the light.
-
-"Missing," it said, "on the morning of the fourteenth, a gentleman
-named Hosmer Angel. About five ft. seven in. in height;
-strongly built, sallow complexion, black hair, a little bald in
-the centre, bushy, black side-whiskers and moustache; tinted
-glasses, slight infirmity of speech. Was dressed, when last seen,
-in black frock-coat faced with silk, black waistcoat, gold Albert
-chain, and grey Harris tweed trousers, with brown gaiters over
-elastic-sided boots. Known to have been employed in an office in
-Leadenhall Street. Anybody bringing--"
-
-"That will do," said Holmes. "As to the letters," he continued,
-glancing over them, "they are very commonplace. Absolutely no
-clue in them to Mr. Angel, save that he quotes Balzac once. There
-is one remarkable point, however, which will no doubt strike
-you."
-
-"They are typewritten," I remarked.
-
-"Not only that, but the signature is typewritten. Look at the
-neat little 'Hosmer Angel' at the bottom. There is a date, you
-see, but no superscription except Leadenhall Street, which is
-rather vague. The point about the signature is very suggestive--in
-fact, we may call it conclusive."
-
-"Of what?"
-
-"My dear fellow, is it possible you do not see how strongly it
-bears upon the case?"
-
-"I cannot say that I do unless it were that he wished to be able
-to deny his signature if an action for breach of promise were
-instituted."
-
-"No, that was not the point. However, I shall write two letters,
-which should settle the matter. One is to a firm in the City, the
-other is to the young lady's stepfather, Mr. Windibank, asking
-him whether he could meet us here at six o'clock tomorrow
-evening. It is just as well that we should do business with the
-male relatives. And now, Doctor, we can do nothing until the
-answers to those letters come, so we may put our little problem
-upon the shelf for the interim."
-
-I had had so many reasons to believe in my friend's subtle powers
-of reasoning and extraordinary energy in action that I felt that
-he must have some solid grounds for the assured and easy
-demeanour with which he treated the singular mystery which he had
-been called upon to fathom. Once only had I known him to fail, in
-the case of the King of Bohemia and of the Irene Adler
-photograph; but when I looked back to the weird business of the
-Sign of Four, and the extraordinary circumstances connected with
-the Study in Scarlet, I felt that it would be a strange tangle
-indeed which he could not unravel.
-
-I left him then, still puffing at his black clay pipe, with the
-conviction that when I came again on the next evening I would
-find that he held in his hands all the clues which would lead up
-to the identity of the disappearing bridegroom of Miss Mary
-Sutherland.
-
-A professional case of great gravity was engaging my own
-attention at the time, and the whole of next day I was busy at
-the bedside of the sufferer. It was not until close upon six
-o'clock that I found myself free and was able to spring into a
-hansom and drive to Baker Street, half afraid that I might be too
-late to assist at the dénouement of the little mystery. I found
-Sherlock Holmes alone, however, half asleep, with his long, thin
-form curled up in the recesses of his armchair. A formidable
-array of bottles and test-tubes, with the pungent cleanly smell
-of hydrochloric acid, told me that he had spent his day in the
-chemical work which was so dear to him.
-
-"Well, have you solved it?" I asked as I entered.
-
-"Yes. It was the bisulphate of baryta."
-
-"No, no, the mystery!" I cried.
-
-"Oh, that! I thought of the salt that I have been working upon.
-There was never any mystery in the matter, though, as I said
-yesterday, some of the details are of interest. The only drawback
-is that there is no law, I fear, that can touch the scoundrel."
-
-"Who was he, then, and what was his object in deserting Miss
-Sutherland?"
-
-The question was hardly out of my mouth, and Holmes had not yet
-opened his lips to reply, when we heard a heavy footfall in the
-passage and a tap at the door.
-
-"This is the girl's stepfather, Mr. James Windibank," said
-Holmes. "He has written to me to say that he would be here at
-six. Come in!"
-
-The man who entered was a sturdy, middle-sized fellow, some
-thirty years of age, clean-shaven, and sallow-skinned, with a
-bland, insinuating manner, and a pair of wonderfully sharp and
-penetrating grey eyes. He shot a questioning glance at each of
-us, placed his shiny top-hat upon the sideboard, and with a
-slight bow sidled down into the nearest chair.
-
-"Good-evening, Mr. James Windibank," said Holmes. "I think that
-this typewritten letter is from you, in which you made an
-appointment with me for six o'clock?"
-
-"Yes, sir. I am afraid that I am a little late, but I am not
-quite my own master, you know. I am sorry that Miss Sutherland
-has troubled you about this little matter, for I think it is far
-better not to wash linen of the sort in public. It was quite
-against my wishes that she came, but she is a very excitable,
-impulsive girl, as you may have noticed, and she is not easily
-controlled when she has made up her mind on a point. Of course, I
-did not mind you so much, as you are not connected with the
-official police, but it is not pleasant to have a family
-misfortune like this noised abroad. Besides, it is a useless
-expense, for how could you possibly find this Hosmer Angel?"
-
-"On the contrary," said Holmes quietly; "I have every reason to
-believe that I will succeed in discovering Mr. Hosmer Angel."
-
-Mr. Windibank gave a violent start and dropped his gloves. "I am
-delighted to hear it," he said.
-
-"It is a curious thing," remarked Holmes, "that a typewriter has
-really quite as much individuality as a man's handwriting. Unless
-they are quite new, no two of them write exactly alike. Some
-letters get more worn than others, and some wear only on one
-side. Now, you remark in this note of yours, Mr. Windibank, that
-in every case there is some little slurring over of the 'e,' and
-a slight defect in the tail of the 'r.' There are fourteen other
-characteristics, but those are the more obvious."
-
-"We do all our correspondence with this machine at the office,
-and no doubt it is a little worn," our visitor answered, glancing
-keenly at Holmes with his bright little eyes.
-
-"And now I will show you what is really a very interesting study,
-Mr. Windibank," Holmes continued. "I think of writing another
-little monograph some of these days on the typewriter and its
-relation to crime. It is a subject to which I have devoted some
-little attention. I have here four letters which purport to come
-from the missing man. They are all typewritten. In each case, not
-only are the 'e's' slurred and the 'r's' tailless, but you will
-observe, if you care to use my magnifying lens, that the fourteen
-other characteristics to which I have alluded are there as well."
-
-Mr. Windibank sprang out of his chair and picked up his hat. "I
-cannot waste time over this sort of fantastic talk, Mr. Holmes,"
-he said. "If you can catch the man, catch him, and let me know
-when you have done it."
-
-"Certainly," said Holmes, stepping over and turning the key in
-the door. "I let you know, then, that I have caught him!"
-
-"What! where?" shouted Mr. Windibank, turning white to his lips
-and glancing about him like a rat in a trap.
-
-"Oh, it won't do--really it won't," said Holmes suavely. "There
-is no possible getting out of it, Mr. Windibank. It is quite too
-transparent, and it was a very bad compliment when you said that
-it was impossible for me to solve so simple a question. That's
-right! Sit down and let us talk it over."
-
-Our visitor collapsed into a chair, with a ghastly face and a
-glitter of moisture on his brow. "It--it's not actionable," he
-stammered.
-
-"I am very much afraid that it is not. But between ourselves,
-Windibank, it was as cruel and selfish and heartless a trick in a
-petty way as ever came before me. Now, let me just run over the
-course of events, and you will contradict me if I go wrong."
-
-The man sat huddled up in his chair, with his head sunk upon his
-breast, like one who is utterly crushed. Holmes stuck his feet up
-on the corner of the mantelpiece and, leaning back with his hands
-in his pockets, began talking, rather to himself, as it seemed,
-than to us.
-
-"The man married a woman very much older than himself for her
-money," said he, "and he enjoyed the use of the money of the
-daughter as long as she lived with them. It was a considerable
-sum, for people in their position, and the loss of it would have
-made a serious difference. It was worth an effort to preserve it.
-The daughter was of a good, amiable disposition, but affectionate
-and warm-hearted in her ways, so that it was evident that with
-her fair personal advantages, and her little income, she would
-not be allowed to remain single long. Now her marriage would
-mean, of course, the loss of a hundred a year, so what does her
-stepfather do to prevent it? He takes the obvious course of
-keeping her at home and forbidding her to seek the company of
-people of her own age. But soon he found that that would not
-answer forever. She became restive, insisted upon her rights, and
-finally announced her positive intention of going to a certain
-ball. What does her clever stepfather do then? He conceives an
-idea more creditable to his head than to his heart. With the
-connivance and assistance of his wife he disguised himself,
-covered those keen eyes with tinted glasses, masked the face with
-a moustache and a pair of bushy whiskers, sunk that clear voice
-into an insinuating whisper, and doubly secure on account of the
-girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
-other lovers by making love himself."
-
-"It was only a joke at first," groaned our visitor. "We never
-thought that she would have been so carried away."
-
-"Very likely not. However that may be, the young lady was very
-decidedly carried away, and, having quite made up her mind that
-her stepfather was in France, the suspicion of treachery never
-for an instant entered her mind. She was flattered by the
-gentleman's attentions, and the effect was increased by the
-loudly expressed admiration of her mother. Then Mr. Angel began
-to call, for it was obvious that the matter should be pushed as
-far as it would go if a real effect were to be produced. There
-were meetings, and an engagement, which would finally secure the
-girl's affections from turning towards anyone else. But the
-deception could not be kept up forever. These pretended journeys
-to France were rather cumbrous. The thing to do was clearly to
-bring the business to an end in such a dramatic manner that it
-would leave a permanent impression upon the young lady's mind and
-prevent her from looking upon any other suitor for some time to
-come. Hence those vows of fidelity exacted upon a Testament, and
-hence also the allusions to a possibility of something happening
-on the very morning of the wedding. James Windibank wished Miss
-Sutherland to be so bound to Hosmer Angel, and so uncertain as to
-his fate, that for ten years to come, at any rate, she would not
-listen to another man. As far as the church door he brought her,
-and then, as he could go no farther, he conveniently vanished
-away by the old trick of stepping in at one door of a
-four-wheeler and out at the other. I think that was the chain of
-events, Mr. Windibank!"
-
-Our visitor had recovered something of his assurance while Holmes
-had been talking, and he rose from his chair now with a cold
-sneer upon his pale face.
-
-"It may be so, or it may not, Mr. Holmes," said he, "but if you
-are so very sharp you ought to be sharp enough to know that it is
-you who are breaking the law now, and not me. I have done nothing
-actionable from the first, but as long as you keep that door
-locked you lay yourself open to an action for assault and illegal
-constraint."
-
-"The law cannot, as you say, touch you," said Holmes, unlocking
-and throwing open the door, "yet there never was a man who
-deserved punishment more. If the young lady has a brother or a
-friend, he ought to lay a whip across your shoulders. By Jove!"
-he continued, flushing up at the sight of the bitter sneer upon
-the man's face, "it is not part of my duties to my client, but
-here's a hunting crop handy, and I think I shall just treat
-myself to--" He took two swift steps to the whip, but before he
-could grasp it there was a wild clatter of steps upon the stairs,
-the heavy hall door banged, and from the window we could see Mr.
-James Windibank running at the top of his speed down the road.
-
-"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
-threw himself down into his chair once more. "That fellow will
-rise from crime to crime until he does something very bad, and
-ends on a gallows. The case has, in some respects, been not
-entirely devoid of interest."
-
-"I cannot now entirely see all the steps of your reasoning," I
-remarked.
-
-"Well, of course it was obvious from the first that this Mr.
-Hosmer Angel must have some strong object for his curious
-conduct, and it was equally clear that the only man who really
-profited by the incident, as far as we could see, was the
-stepfather. Then the fact that the two men were never together,
-but that the one always appeared when the other was away, was
-suggestive. So were the tinted spectacles and the curious voice,
-which both hinted at a disguise, as did the bushy whiskers. My
-suspicions were all confirmed by his peculiar action in
-typewriting his signature, which, of course, inferred that his
-handwriting was so familiar to her that she would recognise even
-the smallest sample of it. You see all these isolated facts,
-together with many minor ones, all pointed in the same
-direction."
-
-"And how did you verify them?"
-
-"Having once spotted my man, it was easy to get corroboration. I
-knew the firm for which this man worked. Having taken the printed
-description. I eliminated everything from it which could be the
-result of a disguise--the whiskers, the glasses, the voice, and I
-sent it to the firm, with a request that they would inform me
-whether it answered to the description of any of their
-travellers. I had already noticed the peculiarities of the
-typewriter, and I wrote to the man himself at his business
-address asking him if he would come here. As I expected, his
-reply was typewritten and revealed the same trivial but
-characteristic defects. The same post brought me a letter from
-Westhouse & Marbank, of Fenchurch Street, to say that the
-description tallied in every respect with that of their employé,
-James Windibank. Voilà tout!"
-
-"And Miss Sutherland?"
-
-"If I tell her she will not believe me. You may remember the old
-Persian saying, 'There is danger for him who taketh the tiger
-cub, and danger also for whoso snatches a delusion from a woman.'
-There is as much sense in Hafiz as in Horace, and as much
-knowledge of the world."
-
-
-
-ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
-
-We were seated at breakfast one morning, my wife and I, when the
-maid brought in a telegram. It was from Sherlock Holmes and ran
-in this way:
-
-"Have you a couple of days to spare? Have just been wired for from
-the west of England in connection with Boscombe Valley tragedy.
-Shall be glad if you will come with me. Air and scenery perfect.
-Leave Paddington by the 11:15."
-
-"What do you say, dear?" said my wife, looking across at me.
-"Will you go?"
-
-"I really don't know what to say. I have a fairly long list at
-present."
-
-"Oh, Anstruther would do your work for you. You have been looking
-a little pale lately. I think that the change would do you good,
-and you are always so interested in Mr. Sherlock Holmes' cases."
-
-"I should be ungrateful if I were not, seeing what I gained
-through one of them," I answered. "But if I am to go, I must pack
-at once, for I have only half an hour."
-
-My experience of camp life in Afghanistan had at least had the
-effect of making me a prompt and ready traveller. My wants were
-few and simple, so that in less than the time stated I was in a
-cab with my valise, rattling away to Paddington Station. Sherlock
-Holmes was pacing up and down the platform, his tall, gaunt
-figure made even gaunter and taller by his long grey
-travelling-cloak and close-fitting cloth cap.
-
-"It is really very good of you to come, Watson," said he. "It
-makes a considerable difference to me, having someone with me on
-whom I can thoroughly rely. Local aid is always either worthless
-or else biassed. If you will keep the two corner seats I shall
-get the tickets."
-
-We had the carriage to ourselves save for an immense litter of
-papers which Holmes had brought with him. Among these he rummaged
-and read, with intervals of note-taking and of meditation, until
-we were past Reading. Then he suddenly rolled them all into a
-gigantic ball and tossed them up onto the rack.
-
-"Have you heard anything of the case?" he asked.
-
-"Not a word. I have not seen a paper for some days."
-
-"The London press has not had very full accounts. I have just
-been looking through all the recent papers in order to master the
-particulars. It seems, from what I gather, to be one of those
-simple cases which are so extremely difficult."
-
-"That sounds a little paradoxical."
-
-"But it is profoundly true. Singularity is almost invariably a
-clue. The more featureless and commonplace a crime is, the more
-difficult it is to bring it home. In this case, however, they
-have established a very serious case against the son of the
-murdered man."
-
-"It is a murder, then?"
-
-"Well, it is conjectured to be so. I shall take nothing for
-granted until I have the opportunity of looking personally into
-it. I will explain the state of things to you, as far as I have
-been able to understand it, in a very few words.
-
-"Boscombe Valley is a country district not very far from Ross, in
-Herefordshire. The largest landed proprietor in that part is a
-Mr. John Turner, who made his money in Australia and returned
-some years ago to the old country. One of the farms which he
-held, that of Hatherley, was let to Mr. Charles McCarthy, who was
-also an ex-Australian. The men had known each other in the
-colonies, so that it was not unnatural that when they came to
-settle down they should do so as near each other as possible.
-Turner was apparently the richer man, so McCarthy became his
-tenant but still remained, it seems, upon terms of perfect
-equality, as they were frequently together. McCarthy had one son,
-a lad of eighteen, and Turner had an only daughter of the same
-age, but neither of them had wives living. They appear to have
-avoided the society of the neighbouring English families and to
-have led retired lives, though both the McCarthys were fond of
-sport and were frequently seen at the race-meetings of the
-neighbourhood. McCarthy kept two servants--a man and a girl.
-Turner had a considerable household, some half-dozen at the
-least. That is as much as I have been able to gather about the
-families. Now for the facts.
-
-"On June 3rd, that is, on Monday last, McCarthy left his house at
-Hatherley about three in the afternoon and walked down to the
-Boscombe Pool, which is a small lake formed by the spreading out
-of the stream which runs down the Boscombe Valley. He had been
-out with his serving-man in the morning at Ross, and he had told
-the man that he must hurry, as he had an appointment of
-importance to keep at three. From that appointment he never came
-back alive.
-
-"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
-mile, and two people saw him as he passed over this ground. One
-was an old woman, whose name is not mentioned, and the other was
-William Crowder, a game-keeper in the employ of Mr. Turner. Both
-these witnesses depose that Mr. McCarthy was walking alone. The
-game-keeper adds that within a few minutes of his seeing Mr.
-McCarthy pass he had seen his son, Mr. James McCarthy, going the
-same way with a gun under his arm. To the best of his belief, the
-father was actually in sight at the time, and the son was
-following him. He thought no more of the matter until he heard in
-the evening of the tragedy that had occurred.
-
-"The two McCarthys were seen after the time when William Crowder,
-the game-keeper, lost sight of them. The Boscombe Pool is thickly
-wooded round, with just a fringe of grass and of reeds round the
-edge. A girl of fourteen, Patience Moran, who is the daughter of
-the lodge-keeper of the Boscombe Valley estate, was in one of the
-woods picking flowers. She states that while she was there she
-saw, at the border of the wood and close by the lake, Mr.
-McCarthy and his son, and that they appeared to be having a
-violent quarrel. She heard Mr. McCarthy the elder using very
-strong language to his son, and she saw the latter raise up his
-hand as if to strike his father. She was so frightened by their
-violence that she ran away and told her mother when she reached
-home that she had left the two McCarthys quarrelling near
-Boscombe Pool, and that she was afraid that they were going to
-fight. She had hardly said the words when young Mr. McCarthy came
-running up to the lodge to say that he had found his father dead
-in the wood, and to ask for the help of the lodge-keeper. He was
-much excited, without either his gun or his hat, and his right
-hand and sleeve were observed to be stained with fresh blood. On
-following him they found the dead body stretched out upon the
-grass beside the pool. The head had been beaten in by repeated
-blows of some heavy and blunt weapon. The injuries were such as
-might very well have been inflicted by the butt-end of his son's
-gun, which was found lying on the grass within a few paces of the
-body. Under these circumstances the young man was instantly
-arrested, and a verdict of 'wilful murder' having been returned
-at the inquest on Tuesday, he was on Wednesday brought before the
-magistrates at Ross, who have referred the case to the next
-Assizes. Those are the main facts of the case as they came out
-before the coroner and the police-court."
-
-"I could hardly imagine a more damning case," I remarked. "If
-ever circumstantial evidence pointed to a criminal it does so
-here."
-
-"Circumstantial evidence is a very tricky thing," answered Holmes
-thoughtfully. "It may seem to point very straight to one thing,
-but if you shift your own point of view a little, you may find it
-pointing in an equally uncompromising manner to something
-entirely different. It must be confessed, however, that the case
-looks exceedingly grave against the young man, and it is very
-possible that he is indeed the culprit. There are several people
-in the neighbourhood, however, and among them Miss Turner, the
-daughter of the neighbouring landowner, who believe in his
-innocence, and who have retained Lestrade, whom you may recollect
-in connection with the Study in Scarlet, to work out the case in
-his interest. Lestrade, being rather puzzled, has referred the
-case to me, and hence it is that two middle-aged gentlemen are
-flying westward at fifty miles an hour instead of quietly
-digesting their breakfasts at home."
-
-"I am afraid," said I, "that the facts are so obvious that you
-will find little credit to be gained out of this case."
-
-"There is nothing more deceptive than an obvious fact," he
-answered, laughing. "Besides, we may chance to hit upon some
-other obvious facts which may have been by no means obvious to
-Mr. Lestrade. You know me too well to think that I am boasting
-when I say that I shall either confirm or destroy his theory by
-means which he is quite incapable of employing, or even of
-understanding. To take the first example to hand, I very clearly
-perceive that in your bedroom the window is upon the right-hand
-side, and yet I question whether Mr. Lestrade would have noted
-even so self-evident a thing as that."
-
-"How on earth--"
-
-"My dear fellow, I know you well. I know the military neatness
-which characterises you. You shave every morning, and in this
-season you shave by the sunlight; but since your shaving is less
-and less complete as we get farther back on the left side, until
-it becomes positively slovenly as we get round the angle of the
-jaw, it is surely very clear that that side is less illuminated
-than the other. I could not imagine a man of your habits looking
-at himself in an equal light and being satisfied with such a
-result. I only quote this as a trivial example of observation and
-inference. Therein lies my métier, and it is just possible that
-it may be of some service in the investigation which lies before
-us. There are one or two minor points which were brought out in
-the inquest, and which are worth considering."
-
-"What are they?"
-
-"It appears that his arrest did not take place at once, but after
-the return to Hatherley Farm. On the inspector of constabulary
-informing him that he was a prisoner, he remarked that he was not
-surprised to hear it, and that it was no more than his deserts.
-This observation of his had the natural effect of removing any
-traces of doubt which might have remained in the minds of the
-coroner's jury."
-
-"It was a confession," I ejaculated.
-
-"No, for it was followed by a protestation of innocence."
-
-"Coming on the top of such a damning series of events, it was at
-least a most suspicious remark."
-
-"On the contrary," said Holmes, "it is the brightest rift which I
-can at present see in the clouds. However innocent he might be,
-he could not be such an absolute imbecile as not to see that the
-circumstances were very black against him. Had he appeared
-surprised at his own arrest, or feigned indignation at it, I
-should have looked upon it as highly suspicious, because such
-surprise or anger would not be natural under the circumstances,
-and yet might appear to be the best policy to a scheming man. His
-frank acceptance of the situation marks him as either an innocent
-man, or else as a man of considerable self-restraint and
-firmness. As to his remark about his deserts, it was also not
-unnatural if you consider that he stood beside the dead body of
-his father, and that there is no doubt that he had that very day
-so far forgotten his filial duty as to bandy words with him, and
-even, according to the little girl whose evidence is so
-important, to raise his hand as if to strike him. The
-self-reproach and contrition which are displayed in his remark
-appear to me to be the signs of a healthy mind rather than of a
-guilty one."
-
-I shook my head. "Many men have been hanged on far slighter
-evidence," I remarked.
-
-"So they have. And many men have been wrongfully hanged."
-
-"What is the young man's own account of the matter?"
-
-"It is, I am afraid, not very encouraging to his supporters,
-though there are one or two points in it which are suggestive.
-You will find it here, and may read it for yourself."
-
-He picked out from his bundle a copy of the local Herefordshire
-paper, and having turned down the sheet he pointed out the
-paragraph in which the unfortunate young man had given his own
-statement of what had occurred. I settled myself down in the
-corner of the carriage and read it very carefully. It ran in this
-way:
-
-"Mr. James McCarthy, the only son of the deceased, was then called
-and gave evidence as follows: 'I had been away from home for
-three days at Bristol, and had only just returned upon the
-morning of last Monday, the 3rd. My father was absent from home at
-the time of my arrival, and I was informed by the maid that he
-had driven over to Ross with John Cobb, the groom. Shortly after
-my return I heard the wheels of his trap in the yard, and,
-looking out of my window, I saw him get out and walk rapidly out
-of the yard, though I was not aware in which direction he was
-going. I then took my gun and strolled out in the direction of
-the Boscombe Pool, with the intention of visiting the rabbit
-warren which is upon the other side. On my way I saw William
-Crowder, the game-keeper, as he had stated in his evidence; but
-he is mistaken in thinking that I was following my father. I had
-no idea that he was in front of me. When about a hundred yards
-from the pool I heard a cry of "Cooee!" which was a usual signal
-between my father and myself. I then hurried forward, and found
-him standing by the pool. He appeared to be much surprised at
-seeing me and asked me rather roughly what I was doing there. A
-conversation ensued which led to high words and almost to blows,
-for my father was a man of a very violent temper. Seeing that his
-passion was becoming ungovernable, I left him and returned
-towards Hatherley Farm. I had not gone more than 150 yards,
-however, when I heard a hideous outcry behind me, which caused me
-to run back again. I found my father expiring upon the ground,
-with his head terribly injured. I dropped my gun and held him in
-my arms, but he almost instantly expired. I knelt beside him for
-some minutes, and then made my way to Mr. Turner's lodge-keeper,
-his house being the nearest, to ask for assistance. I saw no one
-near my father when I returned, and I have no idea how he came by
-his injuries. He was not a popular man, being somewhat cold and
-forbidding in his manners, but he had, as far as I know, no
-active enemies. I know nothing further of the matter.'
-
-"The Coroner: Did your father make any statement to you before
-he died?
-
-"Witness: He mumbled a few words, but I could only catch some
-allusion to a rat.
-
-"The Coroner: What did you understand by that?
-
-"Witness: It conveyed no meaning to me. I thought that he was
-delirious.
-
-"The Coroner: What was the point upon which you and your father
-had this final quarrel?
-
-"Witness: I should prefer not to answer.
-
-"The Coroner: I am afraid that I must press it.
-
-"Witness: It is really impossible for me to tell you. I can
-assure you that it has nothing to do with the sad tragedy which
-followed.
-
-"The Coroner: That is for the court to decide. I need not point
-out to you that your refusal to answer will prejudice your case
-considerably in any future proceedings which may arise.
-
-"Witness: I must still refuse.
-
-"The Coroner: I understand that the cry of 'Cooee' was a common
-signal between you and your father?
-
-"Witness: It was.
-
-"The Coroner: How was it, then, that he uttered it before he saw
-you, and before he even knew that you had returned from Bristol?
-
-"Witness (with considerable confusion): I do not know.
-
-"A Juryman: Did you see nothing which aroused your suspicions
-when you returned on hearing the cry and found your father
-fatally injured?
-
-"Witness: Nothing definite.
-
-"The Coroner: What do you mean?
-
-"Witness: I was so disturbed and excited as I rushed out into
-the open, that I could think of nothing except of my father. Yet
-I have a vague impression that as I ran forward something lay
-upon the ground to the left of me. It seemed to me to be
-something grey in colour, a coat of some sort, or a plaid perhaps.
-When I rose from my father I looked round for it, but it was
-gone.
-
-"'Do you mean that it disappeared before you went for help?'
-
-"'Yes, it was gone.'
-
-"'You cannot say what it was?'
-
-"'No, I had a feeling something was there.'
-
-"'How far from the body?'
-
-"'A dozen yards or so.'
-
-"'And how far from the edge of the wood?'
-
-"'About the same.'
-
-"'Then if it was removed it was while you were within a dozen
-yards of it?'
-
-"'Yes, but with my back towards it.'
-
-"This concluded the examination of the witness."
-
-"I see," said I as I glanced down the column, "that the coroner
-in his concluding remarks was rather severe upon young McCarthy.
-He calls attention, and with reason, to the discrepancy about his
-father having signalled to him before seeing him, also to his
-refusal to give details of his conversation with his father, and
-his singular account of his father's dying words. They are all,
-as he remarks, very much against the son."
-
-Holmes laughed softly to himself and stretched himself out upon
-the cushioned seat. "Both you and the coroner have been at some
-pains," said he, "to single out the very strongest points in the
-young man's favour. Don't you see that you alternately give him
-credit for having too much imagination and too little? Too
-little, if he could not invent a cause of quarrel which would
-give him the sympathy of the jury; too much, if he evolved from
-his own inner consciousness anything so outré as a dying
-reference to a rat, and the incident of the vanishing cloth. No,
-sir, I shall approach this case from the point of view that what
-this young man says is true, and we shall see whither that
-hypothesis will lead us. And now here is my pocket Petrarch, and
-not another word shall I say of this case until we are on the
-scene of action. We lunch at Swindon, and I see that we shall be
-there in twenty minutes."
-
-It was nearly four o'clock when we at last, after passing through
-the beautiful Stroud Valley, and over the broad gleaming Severn,
-found ourselves at the pretty little country-town of Ross. A
-lean, ferret-like man, furtive and sly-looking, was waiting for
-us upon the platform. In spite of the light brown dustcoat and
-leather-leggings which he wore in deference to his rustic
-surroundings, I had no difficulty in recognising Lestrade, of
-Scotland Yard. With him we drove to the Hereford Arms where a
-room had already been engaged for us.
-
-"I have ordered a carriage," said Lestrade as we sat over a cup
-of tea. "I knew your energetic nature, and that you would not be
-happy until you had been on the scene of the crime."
-
-"It was very nice and complimentary of you," Holmes answered. "It
-is entirely a question of barometric pressure."
-
-Lestrade looked startled. "I do not quite follow," he said.
-
-"How is the glass? Twenty-nine, I see. No wind, and not a cloud
-in the sky. I have a caseful of cigarettes here which need
-smoking, and the sofa is very much superior to the usual country
-hotel abomination. I do not think that it is probable that I
-shall use the carriage to-night."
-
-Lestrade laughed indulgently. "You have, no doubt, already formed
-your conclusions from the newspapers," he said. "The case is as
-plain as a pikestaff, and the more one goes into it the plainer
-it becomes. Still, of course, one can't refuse a lady, and such a
-very positive one, too. She has heard of you, and would have your
-opinion, though I repeatedly told her that there was nothing
-which you could do which I had not already done. Why, bless my
-soul! here is her carriage at the door."
-
-He had hardly spoken before there rushed into the room one of the
-most lovely young women that I have ever seen in my life. Her
-violet eyes shining, her lips parted, a pink flush upon her
-cheeks, all thought of her natural reserve lost in her
-overpowering excitement and concern.
-
-"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
-other of us, and finally, with a woman's quick intuition,
-fastening upon my companion, "I am so glad that you have come. I
-have driven down to tell you so. I know that James didn't do it.
-I know it, and I want you to start upon your work knowing it,
-too. Never let yourself doubt upon that point. We have known each
-other since we were little children, and I know his faults as no
-one else does; but he is too tender-hearted to hurt a fly. Such a
-charge is absurd to anyone who really knows him."
-
-"I hope we may clear him, Miss Turner," said Sherlock Holmes.
-"You may rely upon my doing all that I can."
-
-"But you have read the evidence. You have formed some conclusion?
-Do you not see some loophole, some flaw? Do you not yourself
-think that he is innocent?"
-
-"I think that it is very probable."
-
-"There, now!" she cried, throwing back her head and looking
-defiantly at Lestrade. "You hear! He gives me hopes."
-
-Lestrade shrugged his shoulders. "I am afraid that my colleague
-has been a little quick in forming his conclusions," he said.
-
-"But he is right. Oh! I know that he is right. James never did
-it. And about his quarrel with his father, I am sure that the
-reason why he would not speak about it to the coroner was because
-I was concerned in it."
-
-"In what way?" asked Holmes.
-
-"It is no time for me to hide anything. James and his father had
-many disagreements about me. Mr. McCarthy was very anxious that
-there should be a marriage between us. James and I have always
-loved each other as brother and sister; but of course he is young
-and has seen very little of life yet, and--and--well, he
-naturally did not wish to do anything like that yet. So there
-were quarrels, and this, I am sure, was one of them."
-
-"And your father?" asked Holmes. "Was he in favour of such a
-union?"
-
-"No, he was averse to it also. No one but Mr. McCarthy was in
-favour of it." A quick blush passed over her fresh young face as
-Holmes shot one of his keen, questioning glances at her.
-
-"Thank you for this information," said he. "May I see your father
-if I call to-morrow?"
-
-"I am afraid the doctor won't allow it."
-
-"The doctor?"
-
-"Yes, have you not heard? Poor father has never been strong for
-years back, but this has broken him down completely. He has taken
-to his bed, and Dr. Willows says that he is a wreck and that his
-nervous system is shattered. Mr. McCarthy was the only man alive
-who had known dad in the old days in Victoria."
-
-"Ha! In Victoria! That is important."
-
-"Yes, at the mines."
-
-"Quite so; at the gold-mines, where, as I understand, Mr. Turner
-made his money."
-
-"Yes, certainly."
-
-"Thank you, Miss Turner. You have been of material assistance to
-me."
-
-"You will tell me if you have any news to-morrow. No doubt you
-will go to the prison to see James. Oh, if you do, Mr. Holmes, do
-tell him that I know him to be innocent."
-
-"I will, Miss Turner."
-
-"I must go home now, for dad is very ill, and he misses me so if
-I leave him. Good-bye, and God help you in your undertaking." She
-hurried from the room as impulsively as she had entered, and we
-heard the wheels of her carriage rattle off down the street.
-
-"I am ashamed of you, Holmes," said Lestrade with dignity after a
-few minutes' silence. "Why should you raise up hopes which you
-are bound to disappoint? I am not over-tender of heart, but I
-call it cruel."
-
-"I think that I see my way to clearing James McCarthy," said
-Holmes. "Have you an order to see him in prison?"
-
-"Yes, but only for you and me."
-
-"Then I shall reconsider my resolution about going out. We have
-still time to take a train to Hereford and see him to-night?"
-
-"Ample."
-
-"Then let us do so. Watson, I fear that you will find it very
-slow, but I shall only be away a couple of hours."
-
-I walked down to the station with them, and then wandered through
-the streets of the little town, finally returning to the hotel,
-where I lay upon the sofa and tried to interest myself in a
-yellow-backed novel. The puny plot of the story was so thin,
-however, when compared to the deep mystery through which we were
-groping, and I found my attention wander so continually from the
-action to the fact, that I at last flung it across the room and
-gave myself up entirely to a consideration of the events of the
-day. Supposing that this unhappy young man's story were
-absolutely true, then what hellish thing, what absolutely
-unforeseen and extraordinary calamity could have occurred between
-the time when he parted from his father, and the moment when,
-drawn back by his screams, he rushed into the glade? It was
-something terrible and deadly. What could it be? Might not the
-nature of the injuries reveal something to my medical instincts?
-I rang the bell and called for the weekly county paper, which
-contained a verbatim account of the inquest. In the surgeon's
-deposition it was stated that the posterior third of the left
-parietal bone and the left half of the occipital bone had been
-shattered by a heavy blow from a blunt weapon. I marked the spot
-upon my own head. Clearly such a blow must have been struck from
-behind. That was to some extent in favour of the accused, as when
-seen quarrelling he was face to face with his father. Still, it
-did not go for very much, for the older man might have turned his
-back before the blow fell. Still, it might be worth while to call
-Holmes' attention to it. Then there was the peculiar dying
-reference to a rat. What could that mean? It could not be
-delirium. A man dying from a sudden blow does not commonly become
-delirious. No, it was more likely to be an attempt to explain how
-he met his fate. But what could it indicate? I cudgelled my
-brains to find some possible explanation. And then the incident
-of the grey cloth seen by young McCarthy. If that were true the
-murderer must have dropped some part of his dress, presumably his
-overcoat, in his flight, and must have had the hardihood to
-return and to carry it away at the instant when the son was
-kneeling with his back turned not a dozen paces off. What a
-tissue of mysteries and improbabilities the whole thing was! I
-did not wonder at Lestrade's opinion, and yet I had so much faith
-in Sherlock Holmes' insight that I could not lose hope as long
-as every fresh fact seemed to strengthen his conviction of young
-McCarthy's innocence.
-
-It was late before Sherlock Holmes returned. He came back alone,
-for Lestrade was staying in lodgings in the town.
-
-"The glass still keeps very high," he remarked as he sat down.
-"It is of importance that it should not rain before we are able
-to go over the ground. On the other hand, a man should be at his
-very best and keenest for such nice work as that, and I did not
-wish to do it when fagged by a long journey. I have seen young
-McCarthy."
-
-"And what did you learn from him?"
-
-"Nothing."
-
-"Could he throw no light?"
-
-"None at all. I was inclined to think at one time that he knew
-who had done it and was screening him or her, but I am convinced
-now that he is as puzzled as everyone else. He is not a very
-quick-witted youth, though comely to look at and, I should think,
-sound at heart."
-
-"I cannot admire his taste," I remarked, "if it is indeed a fact
-that he was averse to a marriage with so charming a young lady as
-this Miss Turner."
-
-"Ah, thereby hangs a rather painful tale. This fellow is madly,
-insanely, in love with her, but some two years ago, when he was
-only a lad, and before he really knew her, for she had been away
-five years at a boarding-school, what does the idiot do but get
-into the clutches of a barmaid in Bristol and marry her at a
-registry office? No one knows a word of the matter, but you can
-imagine how maddening it must be to him to be upbraided for not
-doing what he would give his very eyes to do, but what he knows
-to be absolutely impossible. It was sheer frenzy of this sort
-which made him throw his hands up into the air when his father,
-at their last interview, was goading him on to propose to Miss
-Turner. On the other hand, he had no means of supporting himself,
-and his father, who was by all accounts a very hard man, would
-have thrown him over utterly had he known the truth. It was with
-his barmaid wife that he had spent the last three days in
-Bristol, and his father did not know where he was. Mark that
-point. It is of importance. Good has come out of evil, however,
-for the barmaid, finding from the papers that he is in serious
-trouble and likely to be hanged, has thrown him over utterly and
-has written to him to say that she has a husband already in the
-Bermuda Dockyard, so that there is really no tie between them. I
-think that that bit of news has consoled young McCarthy for all
-that he has suffered."
-
-"But if he is innocent, who has done it?"
-
-"Ah! who? I would call your attention very particularly to two
-points. One is that the murdered man had an appointment with
-someone at the pool, and that the someone could not have been his
-son, for his son was away, and he did not know when he would
-return. The second is that the murdered man was heard to cry
-'Cooee!' before he knew that his son had returned. Those are the
-crucial points upon which the case depends. And now let us talk
-about George Meredith, if you please, and we shall leave all
-minor matters until to-morrow."
-
-There was no rain, as Holmes had foretold, and the morning broke
-bright and cloudless. At nine o'clock Lestrade called for us with
-the carriage, and we set off for Hatherley Farm and the Boscombe
-Pool.
-
-"There is serious news this morning," Lestrade observed. "It is
-said that Mr. Turner, of the Hall, is so ill that his life is
-despaired of."
-
-"An elderly man, I presume?" said Holmes.
-
-"About sixty; but his constitution has been shattered by his life
-abroad, and he has been in failing health for some time. This
-business has had a very bad effect upon him. He was an old friend
-of McCarthy's, and, I may add, a great benefactor to him, for I
-have learned that he gave him Hatherley Farm rent free."
-
-"Indeed! That is interesting," said Holmes.
-
-"Oh, yes! In a hundred other ways he has helped him. Everybody
-about here speaks of his kindness to him."
-
-"Really! Does it not strike you as a little singular that this
-McCarthy, who appears to have had little of his own, and to have
-been under such obligations to Turner, should still talk of
-marrying his son to Turner's daughter, who is, presumably,
-heiress to the estate, and that in such a very cocksure manner,
-as if it were merely a case of a proposal and all else would
-follow? It is the more strange, since we know that Turner himself
-was averse to the idea. The daughter told us as much. Do you not
-deduce something from that?"
-
-"We have got to the deductions and the inferences," said
-Lestrade, winking at me. "I find it hard enough to tackle facts,
-Holmes, without flying away after theories and fancies."
-
-"You are right," said Holmes demurely; "you do find it very hard
-to tackle the facts."
-
-"Anyhow, I have grasped one fact which you seem to find it
-difficult to get hold of," replied Lestrade with some warmth.
-
-"And that is--"
-
-"That McCarthy senior met his death from McCarthy junior and that
-all theories to the contrary are the merest moonshine."
-
-"Well, moonshine is a brighter thing than fog," said Holmes,
-laughing. "But I am very much mistaken if this is not Hatherley
-Farm upon the left."
-
-"Yes, that is it." It was a widespread, comfortable-looking
-building, two-storied, slate-roofed, with great yellow blotches
-of lichen upon the grey walls. The drawn blinds and the smokeless
-chimneys, however, gave it a stricken look, as though the weight
-of this horror still lay heavy upon it. We called at the door,
-when the maid, at Holmes' request, showed us the boots which her
-master wore at the time of his death, and also a pair of the
-son's, though not the pair which he had then had. Having measured
-these very carefully from seven or eight different points, Holmes
-desired to be led to the court-yard, from which we all followed
-the winding track which led to Boscombe Pool.
-
-Sherlock Holmes was transformed when he was hot upon such a scent
-as this. Men who had only known the quiet thinker and logician of
-Baker Street would have failed to recognise him. His face flushed
-and darkened. His brows were drawn into two hard black lines,
-while his eyes shone out from beneath them with a steely glitter.
-His face was bent downward, his shoulders bowed, his lips
-compressed, and the veins stood out like whipcord in his long,
-sinewy neck. His nostrils seemed to dilate with a purely animal
-lust for the chase, and his mind was so absolutely concentrated
-upon the matter before him that a question or remark fell
-unheeded upon his ears, or, at the most, only provoked a quick,
-impatient snarl in reply. Swiftly and silently he made his way
-along the track which ran through the meadows, and so by way of
-the woods to the Boscombe Pool. It was damp, marshy ground, as is
-all that district, and there were marks of many feet, both upon
-the path and amid the short grass which bounded it on either
-side. Sometimes Holmes would hurry on, sometimes stop dead, and
-once he made quite a little detour into the meadow. Lestrade and
-I walked behind him, the detective indifferent and contemptuous,
-while I watched my friend with the interest which sprang from the
-conviction that every one of his actions was directed towards a
-definite end.
-
-The Boscombe Pool, which is a little reed-girt sheet of water
-some fifty yards across, is situated at the boundary between the
-Hatherley Farm and the private park of the wealthy Mr. Turner.
-Above the woods which lined it upon the farther side we could see
-the red, jutting pinnacles which marked the site of the rich
-landowner's dwelling. On the Hatherley side of the pool the woods
-grew very thick, and there was a narrow belt of sodden grass
-twenty paces across between the edge of the trees and the reeds
-which lined the lake. Lestrade showed us the exact spot at which
-the body had been found, and, indeed, so moist was the ground,
-that I could plainly see the traces which had been left by the
-fall of the stricken man. To Holmes, as I could see by his eager
-face and peering eyes, very many other things were to be read
-upon the trampled grass. He ran round, like a dog who is picking
-up a scent, and then turned upon my companion.
-
-"What did you go into the pool for?" he asked.
-
-"I fished about with a rake. I thought there might be some weapon
-or other trace. But how on earth--"
-
-"Oh, tut, tut! I have no time! That left foot of yours with its
-inward twist is all over the place. A mole could trace it, and
-there it vanishes among the reeds. Oh, how simple it would all
-have been had I been here before they came like a herd of buffalo
-and wallowed all over it. Here is where the party with the
-lodge-keeper came, and they have covered all tracks for six or
-eight feet round the body. But here are three separate tracks of
-the same feet." He drew out a lens and lay down upon his
-waterproof to have a better view, talking all the time rather to
-himself than to us. "These are young McCarthy's feet. Twice he
-was walking, and once he ran swiftly, so that the soles are
-deeply marked and the heels hardly visible. That bears out his
-story. He ran when he saw his father on the ground. Then here are
-the father's feet as he paced up and down. What is this, then? It
-is the butt-end of the gun as the son stood listening. And this?
-Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
-unusual boots! They come, they go, they come again--of course
-that was for the cloak. Now where did they come from?" He ran up
-and down, sometimes losing, sometimes finding the track until we
-were well within the edge of the wood and under the shadow of a
-great beech, the largest tree in the neighbourhood. Holmes traced
-his way to the farther side of this and lay down once more upon
-his face with a little cry of satisfaction. For a long time he
-remained there, turning over the leaves and dried sticks,
-gathering up what seemed to me to be dust into an envelope and
-examining with his lens not only the ground but even the bark of
-the tree as far as he could reach. A jagged stone was lying among
-the moss, and this also he carefully examined and retained. Then
-he followed a pathway through the wood until he came to the
-highroad, where all traces were lost.
-
-"It has been a case of considerable interest," he remarked,
-returning to his natural manner. "I fancy that this grey house on
-the right must be the lodge. I think that I will go in and have a
-word with Moran, and perhaps write a little note. Having done
-that, we may drive back to our luncheon. You may walk to the cab,
-and I shall be with you presently."
-
-It was about ten minutes before we regained our cab and drove
-back into Ross, Holmes still carrying with him the stone which he
-had picked up in the wood.
-
-"This may interest you, Lestrade," he remarked, holding it out.
-"The murder was done with it."
-
-"I see no marks."
-
-"There are none."
-
-"How do you know, then?"
-
-"The grass was growing under it. It had only lain there a few
-days. There was no sign of a place whence it had been taken. It
-corresponds with the injuries. There is no sign of any other
-weapon."
-
-"And the murderer?"
-
-"Is a tall man, left-handed, limps with the right leg, wears
-thick-soled shooting-boots and a grey cloak, smokes Indian
-cigars, uses a cigar-holder, and carries a blunt pen-knife in his
-pocket. There are several other indications, but these may be
-enough to aid us in our search."
-
-Lestrade laughed. "I am afraid that I am still a sceptic," he
-said. "Theories are all very well, but we have to deal with a
-hard-headed British jury."
-
-"Nous verrons," answered Holmes calmly. "You work your own
-method, and I shall work mine. I shall be busy this afternoon,
-and shall probably return to London by the evening train."
-
-"And leave your case unfinished?"
-
-"No, finished."
-
-"But the mystery?"
-
-"It is solved."
-
-"Who was the criminal, then?"
-
-"The gentleman I describe."
-
-"But who is he?"
-
-"Surely it would not be difficult to find out. This is not such a
-populous neighbourhood."
-
-Lestrade shrugged his shoulders. "I am a practical man," he said,
-"and I really cannot undertake to go about the country looking
-for a left-handed gentleman with a game leg. I should become the
-laughing-stock of Scotland Yard."
-
-"All right," said Holmes quietly. "I have given you the chance.
-Here are your lodgings. Good-bye. I shall drop you a line before
-I leave."
-
-Having left Lestrade at his rooms, we drove to our hotel, where
-we found lunch upon the table. Holmes was silent and buried in
-thought with a pained expression upon his face, as one who finds
-himself in a perplexing position.
-
-"Look here, Watson," he said when the cloth was cleared "just sit
-down in this chair and let me preach to you for a little. I don't
-know quite what to do, and I should value your advice. Light a
-cigar and let me expound."
-
- "Pray do so."
-
-"Well, now, in considering this case there are two points about
-young McCarthy's narrative which struck us both instantly,
-although they impressed me in his favour and you against him. One
-was the fact that his father should, according to his account,
-cry 'Cooee!' before seeing him. The other was his singular dying
-reference to a rat. He mumbled several words, you understand, but
-that was all that caught the son's ear. Now from this double
-point our research must commence, and we will begin it by
-presuming that what the lad says is absolutely true."
-
-"What of this 'Cooee!' then?"
-
-"Well, obviously it could not have been meant for the son. The
-son, as far as he knew, was in Bristol. It was mere chance that
-he was within earshot. The 'Cooee!' was meant to attract the
-attention of whoever it was that he had the appointment with. But
-'Cooee' is a distinctly Australian cry, and one which is used
-between Australians. There is a strong presumption that the
-person whom McCarthy expected to meet him at Boscombe Pool was
-someone who had been in Australia."
-
-"What of the rat, then?"
-
-Sherlock Holmes took a folded paper from his pocket and flattened
-it out on the table. "This is a map of the Colony of Victoria,"
-he said. "I wired to Bristol for it last night." He put his hand
-over part of the map. "What do you read?"
-
-"ARAT," I read.
-
-"And now?" He raised his hand.
-
-"BALLARAT."
-
-"Quite so. That was the word the man uttered, and of which his
-son only caught the last two syllables. He was trying to utter
-the name of his murderer. So and so, of Ballarat."
-
-"It is wonderful!" I exclaimed.
-
-"It is obvious. And now, you see, I had narrowed the field down
-considerably. The possession of a grey garment was a third point
-which, granting the son's statement to be correct, was a
-certainty. We have come now out of mere vagueness to the definite
-conception of an Australian from Ballarat with a grey cloak."
-
-"Certainly."
-
-"And one who was at home in the district, for the pool can only
-be approached by the farm or by the estate, where strangers could
-hardly wander."
-
-"Quite so."
-
-"Then comes our expedition of to-day. By an examination of the
-ground I gained the trifling details which I gave to that
-imbecile Lestrade, as to the personality of the criminal."
-
-"But how did you gain them?"
-
-"You know my method. It is founded upon the observation of
-trifles."
-
-"His height I know that you might roughly judge from the length
-of his stride. His boots, too, might be told from their traces."
-
-"Yes, they were peculiar boots."
-
-"But his lameness?"
-
-"The impression of his right foot was always less distinct than
-his left. He put less weight upon it. Why? Because he limped--he
-was lame."
-
-"But his left-handedness."
-
-"You were yourself struck by the nature of the injury as recorded
-by the surgeon at the inquest. The blow was struck from
-immediately behind, and yet was upon the left side. Now, how can
-that be unless it were by a left-handed man? He had stood behind
-that tree during the interview between the father and son. He had
-even smoked there. I found the ash of a cigar, which my special
-knowledge of tobacco ashes enables me to pronounce as an Indian
-cigar. I have, as you know, devoted some attention to this, and
-written a little monograph on the ashes of 140 different
-varieties of pipe, cigar, and cigarette tobacco. Having found the
-ash, I then looked round and discovered the stump among the moss
-where he had tossed it. It was an Indian cigar, of the variety
-which are rolled in Rotterdam."
-
-"And the cigar-holder?"
-
-"I could see that the end had not been in his mouth. Therefore he
-used a holder. The tip had been cut off, not bitten off, but the
-cut was not a clean one, so I deduced a blunt pen-knife."
-
-"Holmes," I said, "you have drawn a net round this man from which
-he cannot escape, and you have saved an innocent human life as
-truly as if you had cut the cord which was hanging him. I see the
-direction in which all this points. The culprit is--"
-
-"Mr. John Turner," cried the hotel waiter, opening the door of
-our sitting-room, and ushering in a visitor.
-
-The man who entered was a strange and impressive figure. His
-slow, limping step and bowed shoulders gave the appearance of
-decrepitude, and yet his hard, deep-lined, craggy features, and
-his enormous limbs showed that he was possessed of unusual
-strength of body and of character. His tangled beard, grizzled
-hair, and outstanding, drooping eyebrows combined to give an air
-of dignity and power to his appearance, but his face was of an
-ashen white, while his lips and the corners of his nostrils were
-tinged with a shade of blue. It was clear to me at a glance that
-he was in the grip of some deadly and chronic disease.
-
-"Pray sit down on the sofa," said Holmes gently. "You had my
-note?"
-
-"Yes, the lodge-keeper brought it up. You said that you wished to
-see me here to avoid scandal."
-
-"I thought people would talk if I went to the Hall."
-
-"And why did you wish to see me?" He looked across at my
-companion with despair in his weary eyes, as though his question
-was already answered.
-
-"Yes," said Holmes, answering the look rather than the words. "It
-is so. I know all about McCarthy."
-
-The old man sank his face in his hands. "God help me!" he cried.
-"But I would not have let the young man come to harm. I give you
-my word that I would have spoken out if it went against him at
-the Assizes."
-
-"I am glad to hear you say so," said Holmes gravely.
-
-"I would have spoken now had it not been for my dear girl. It
-would break her heart--it will break her heart when she hears
-that I am arrested."
-
-"It may not come to that," said Holmes.
-
-"What?"
-
-"I am no official agent. I understand that it was your daughter
-who required my presence here, and I am acting in her interests.
-Young McCarthy must be got off, however."
-
-"I am a dying man," said old Turner. "I have had diabetes for
-years. My doctor says it is a question whether I shall live a
-month. Yet I would rather die under my own roof than in a gaol."
-
-Holmes rose and sat down at the table with his pen in his hand
-and a bundle of paper before him. "Just tell us the truth," he
-said. "I shall jot down the facts. You will sign it, and Watson
-here can witness it. Then I could produce your confession at the
-last extremity to save young McCarthy. I promise you that I shall
-not use it unless it is absolutely needed."
-
-"It's as well," said the old man; "it's a question whether I
-shall live to the Assizes, so it matters little to me, but I
-should wish to spare Alice the shock. And now I will make the
-thing clear to you; it has been a long time in the acting, but
-will not take me long to tell.
-
-"You didn't know this dead man, McCarthy. He was a devil
-incarnate. I tell you that. God keep you out of the clutches of
-such a man as he. His grip has been upon me these twenty years,
-and he has blasted my life. I'll tell you first how I came to be
-in his power.
-
-"It was in the early '60's at the diggings. I was a young chap
-then, hot-blooded and reckless, ready to turn my hand at
-anything; I got among bad companions, took to drink, had no luck
-with my claim, took to the bush, and in a word became what you
-would call over here a highway robber. There were six of us, and
-we had a wild, free life of it, sticking up a station from time
-to time, or stopping the wagons on the road to the diggings.
-Black Jack of Ballarat was the name I went under, and our party
-is still remembered in the colony as the Ballarat Gang.
-
-"One day a gold convoy came down from Ballarat to Melbourne, and
-we lay in wait for it and attacked it. There were six troopers
-and six of us, so it was a close thing, but we emptied four of
-their saddles at the first volley. Three of our boys were killed,
-however, before we got the swag. I put my pistol to the head of
-the wagon-driver, who was this very man McCarthy. I wish to the
-Lord that I had shot him then, but I spared him, though I saw his
-wicked little eyes fixed on my face, as though to remember every
-feature. We got away with the gold, became wealthy men, and made
-our way over to England without being suspected. There I parted
-from my old pals and determined to settle down to a quiet and
-respectable life. I bought this estate, which chanced to be in
-the market, and I set myself to do a little good with my money,
-to make up for the way in which I had earned it. I married, too,
-and though my wife died young she left me my dear little Alice.
-Even when she was just a baby her wee hand seemed to lead me down
-the right path as nothing else had ever done. In a word, I turned
-over a new leaf and did my best to make up for the past. All was
-going well when McCarthy laid his grip upon me.
-
-"I had gone up to town about an investment, and I met him in
-Regent Street with hardly a coat to his back or a boot to his
-foot.
-
-"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
-as good as a family to you. There's two of us, me and my son, and
-you can have the keeping of us. If you don't--it's a fine,
-law-abiding country is England, and there's always a policeman
-within hail.'
-
-"Well, down they came to the west country, there was no shaking
-them off, and there they have lived rent free on my best land
-ever since. There was no rest for me, no peace, no forgetfulness;
-turn where I would, there was his cunning, grinning face at my
-elbow. It grew worse as Alice grew up, for he soon saw I was more
-afraid of her knowing my past than of the police. Whatever he
-wanted he must have, and whatever it was I gave him without
-question, land, money, houses, until at last he asked a thing
-which I could not give. He asked for Alice.
-
-"His son, you see, had grown up, and so had my girl, and as I was
-known to be in weak health, it seemed a fine stroke to him that
-his lad should step into the whole property. But there I was
-firm. I would not have his cursed stock mixed with mine; not that
-I had any dislike to the lad, but his blood was in him, and that
-was enough. I stood firm. McCarthy threatened. I braved him to do
-his worst. We were to meet at the pool midway between our houses
-to talk it over.
-
-"When I went down there I found him talking with his son, so I
-smoked a cigar and waited behind a tree until he should be alone.
-But as I listened to his talk all that was black and bitter in
-me seemed to come uppermost. He was urging his son to marry my
-daughter with as little regard for what she might think as if she
-were a slut from off the streets. It drove me mad to think that I
-and all that I held most dear should be in the power of such a
-man as this. Could I not snap the bond? I was already a dying and
-a desperate man. Though clear of mind and fairly strong of limb,
-I knew that my own fate was sealed. But my memory and my girl!
-Both could be saved if I could but silence that foul tongue. I
-did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
-I have led a life of martyrdom to atone for it. But that my girl
-should be entangled in the same meshes which held me was more
-than I could suffer. I struck him down with no more compunction
-than if he had been some foul and venomous beast. His cry brought
-back his son; but I had gained the cover of the wood, though I
-was forced to go back to fetch the cloak which I had dropped in
-my flight. That is the true story, gentlemen, of all that
-occurred."
-
-"Well, it is not for me to judge you," said Holmes as the old man
-signed the statement which had been drawn out. "I pray that we
-may never be exposed to such a temptation."
-
-"I pray not, sir. And what do you intend to do?"
-
-"In view of your health, nothing. You are yourself aware that you
-will soon have to answer for your deed at a higher court than the
-Assizes. I will keep your confession, and if McCarthy is
-condemned I shall be forced to use it. If not, it shall never be
-seen by mortal eye; and your secret, whether you be alive or
-dead, shall be safe with us."
-
-"Farewell, then," said the old man solemnly. "Your own deathbeds,
-when they come, will be the easier for the thought of the peace
-which you have given to mine." Tottering and shaking in all his
-giant frame, he stumbled slowly from the room.
-
-"God help us!" said Holmes after a long silence. "Why does fate
-play such tricks with poor, helpless worms? I never hear of such
-a case as this that I do not think of Baxter's words, and say,
-'There, but for the grace of God, goes Sherlock Holmes.'"
-
-James McCarthy was acquitted at the Assizes on the strength of a
-number of objections which had been drawn out by Holmes and
-submitted to the defending counsel. Old Turner lived for seven
-months after our interview, but he is now dead; and there is
-every prospect that the son and daughter may come to live happily
-together in ignorance of the black cloud which rests upon their
-past.
-
-
-
-ADVENTURE V. THE FIVE ORANGE PIPS
-
-When I glance over my notes and records of the Sherlock Holmes
-cases between the years '82 and '90, I am faced by so many which
-present strange and interesting features that it is no easy
-matter to know which to choose and which to leave. Some, however,
-have already gained publicity through the papers, and others have
-not offered a field for those peculiar qualities which my friend
-possessed in so high a degree, and which it is the object of
-these papers to illustrate. Some, too, have baffled his
-analytical skill, and would be, as narratives, beginnings without
-an ending, while others have been but partially cleared up, and
-have their explanations founded rather upon conjecture and
-surmise than on that absolute logical proof which was so dear to
-him. There is, however, one of these last which was so remarkable
-in its details and so startling in its results that I am tempted
-to give some account of it in spite of the fact that there are
-points in connection with it which never have been, and probably
-never will be, entirely cleared up.
-
-The year '87 furnished us with a long series of cases of greater
-or less interest, of which I retain the records. Among my
-headings under this one twelve months I find an account of the
-adventure of the Paradol Chamber, of the Amateur Mendicant
-Society, who held a luxurious club in the lower vault of a
-furniture warehouse, of the facts connected with the loss of the
-British barque "Sophy Anderson", of the singular adventures of the
-Grice Patersons in the island of Uffa, and finally of the
-Camberwell poisoning case. In the latter, as may be remembered,
-Sherlock Holmes was able, by winding up the dead man's watch, to
-prove that it had been wound up two hours before, and that
-therefore the deceased had gone to bed within that time--a
-deduction which was of the greatest importance in clearing up the
-case. All these I may sketch out at some future date, but none of
-them present such singular features as the strange train of
-circumstances which I have now taken up my pen to describe.
-
-It was in the latter days of September, and the equinoctial gales
-had set in with exceptional violence. All day the wind had
-screamed and the rain had beaten against the windows, so that
-even here in the heart of great, hand-made London we were forced
-to raise our minds for the instant from the routine of life and
-to recognise the presence of those great elemental forces which
-shriek at mankind through the bars of his civilisation, like
-untamed beasts in a cage. As evening drew in, the storm grew
-higher and louder, and the wind cried and sobbed like a child in
-the chimney. Sherlock Holmes sat moodily at one side of the
-fireplace cross-indexing his records of crime, while I at the
-other was deep in one of Clark Russell's fine sea-stories until
-the howl of the gale from without seemed to blend with the text,
-and the splash of the rain to lengthen out into the long swash of
-the sea waves. My wife was on a visit to her mother's, and for a
-few days I was a dweller once more in my old quarters at Baker
-Street.
-
-"Why," said I, glancing up at my companion, "that was surely the
-bell. Who could come to-night? Some friend of yours, perhaps?"
-
-"Except yourself I have none," he answered. "I do not encourage
-visitors."
-
-"A client, then?"
-
-"If so, it is a serious case. Nothing less would bring a man out
-on such a day and at such an hour. But I take it that it is more
-likely to be some crony of the landlady's."
-
-Sherlock Holmes was wrong in his conjecture, however, for there
-came a step in the passage and a tapping at the door. He
-stretched out his long arm to turn the lamp away from himself and
-towards the vacant chair upon which a newcomer must sit.
-
-"Come in!" said he.
-
-The man who entered was young, some two-and-twenty at the
-outside, well-groomed and trimly clad, with something of
-refinement and delicacy in his bearing. The streaming umbrella
-which he held in his hand, and his long shining waterproof told
-of the fierce weather through which he had come. He looked about
-him anxiously in the glare of the lamp, and I could see that his
-face was pale and his eyes heavy, like those of a man who is
-weighed down with some great anxiety.
-
-"I owe you an apology," he said, raising his golden pince-nez to
-his eyes. "I trust that I am not intruding. I fear that I have
-brought some traces of the storm and rain into your snug
-chamber."
-
-"Give me your coat and umbrella," said Holmes. "They may rest
-here on the hook and will be dry presently. You have come up from
-the south-west, I see."
-
-"Yes, from Horsham."
-
-"That clay and chalk mixture which I see upon your toe caps is
-quite distinctive."
-
-"I have come for advice."
-
-"That is easily got."
-
-"And help."
-
-"That is not always so easy."
-
-"I have heard of you, Mr. Holmes. I heard from Major Prendergast
-how you saved him in the Tankerville Club scandal."
-
-"Ah, of course. He was wrongfully accused of cheating at cards."
-
-"He said that you could solve anything."
-
-"He said too much."
-
-"That you are never beaten."
-
-"I have been beaten four times--three times by men, and once by a
-woman."
-
-"But what is that compared with the number of your successes?"
-
-"It is true that I have been generally successful."
-
-"Then you may be so with me."
-
-"I beg that you will draw your chair up to the fire and favour me
-with some details as to your case."
-
-"It is no ordinary one."
-
-"None of those which come to me are. I am the last court of
-appeal."
-
-"And yet I question, sir, whether, in all your experience, you
-have ever listened to a more mysterious and inexplicable chain of
-events than those which have happened in my own family."
-
-"You fill me with interest," said Holmes. "Pray give us the
-essential facts from the commencement, and I can afterwards
-question you as to those details which seem to me to be most
-important."
-
-The young man pulled his chair up and pushed his wet feet out
-towards the blaze.
-
-"My name," said he, "is John Openshaw, but my own affairs have,
-as far as I can understand, little to do with this awful
-business. It is a hereditary matter; so in order to give you an
-idea of the facts, I must go back to the commencement of the
-affair.
-
-"You must know that my grandfather had two sons--my uncle Elias
-and my father Joseph. My father had a small factory at Coventry,
-which he enlarged at the time of the invention of bicycling. He
-was a patentee of the Openshaw unbreakable tire, and his business
-met with such success that he was able to sell it and to retire
-upon a handsome competence.
-
-"My uncle Elias emigrated to America when he was a young man and
-became a planter in Florida, where he was reported to have done
-very well. At the time of the war he fought in Jackson's army,
-and afterwards under Hood, where he rose to be a colonel. When
-Lee laid down his arms my uncle returned to his plantation, where
-he remained for three or four years. About 1869 or 1870 he came
-back to Europe and took a small estate in Sussex, near Horsham.
-He had made a very considerable fortune in the States, and his
-reason for leaving them was his aversion to the negroes, and his
-dislike of the Republican policy in extending the franchise to
-them. He was a singular man, fierce and quick-tempered, very
-foul-mouthed when he was angry, and of a most retiring
-disposition. During all the years that he lived at Horsham, I
-doubt if ever he set foot in the town. He had a garden and two or
-three fields round his house, and there he would take his
-exercise, though very often for weeks on end he would never leave
-his room. He drank a great deal of brandy and smoked very
-heavily, but he would see no society and did not want any
-friends, not even his own brother.
-
-"He didn't mind me; in fact, he took a fancy to me, for at the
-time when he saw me first I was a youngster of twelve or so. This
-would be in the year 1878, after he had been eight or nine years
-in England. He begged my father to let me live with him and he
-was very kind to me in his way. When he was sober he used to be
-fond of playing backgammon and draughts with me, and he would
-make me his representative both with the servants and with the
-tradespeople, so that by the time that I was sixteen I was quite
-master of the house. I kept all the keys and could go where I
-liked and do what I liked, so long as I did not disturb him in
-his privacy. There was one singular exception, however, for he
-had a single room, a lumber-room up among the attics, which was
-invariably locked, and which he would never permit either me or
-anyone else to enter. With a boy's curiosity I have peeped
-through the keyhole, but I was never able to see more than such a
-collection of old trunks and bundles as would be expected in such
-a room.
-
-"One day--it was in March, 1883--a letter with a foreign stamp
-lay upon the table in front of the colonel's plate. It was not a
-common thing for him to receive letters, for his bills were all
-paid in ready money, and he had no friends of any sort. 'From
-India!' said he as he took it up, 'Pondicherry postmark! What can
-this be?' Opening it hurriedly, out there jumped five little
-dried orange pips, which pattered down upon his plate. I began to
-laugh at this, but the laugh was struck from my lips at the sight
-of his face. His lip had fallen, his eyes were protruding, his
-skin the colour of putty, and he glared at the envelope which he
-still held in his trembling hand, 'K. K. K.!' he shrieked, and
-then, 'My God, my God, my sins have overtaken me!'
-
-"'What is it, uncle?' I cried.
-
-"'Death,' said he, and rising from the table he retired to his
-room, leaving me palpitating with horror. I took up the envelope
-and saw scrawled in red ink upon the inner flap, just above the
-gum, the letter K three times repeated. There was nothing else
-save the five dried pips. What could be the reason of his
-overpowering terror? I left the breakfast-table, and as I
-ascended the stair I met him coming down with an old rusty key,
-which must have belonged to the attic, in one hand, and a small
-brass box, like a cashbox, in the other.
-
-"'They may do what they like, but I'll checkmate them still,'
-said he with an oath. 'Tell Mary that I shall want a fire in my
-room to-day, and send down to Fordham, the Horsham lawyer.'
-
-"I did as he ordered, and when the lawyer arrived I was asked to
-step up to the room. The fire was burning brightly, and in the
-grate there was a mass of black, fluffy ashes, as of burned
-paper, while the brass box stood open and empty beside it. As I
-glanced at the box I noticed, with a start, that upon the lid was
-printed the treble K which I had read in the morning upon the
-envelope.
-
-"'I wish you, John,' said my uncle, 'to witness my will. I leave
-my estate, with all its advantages and all its disadvantages, to
-my brother, your father, whence it will, no doubt, descend to
-you. If you can enjoy it in peace, well and good! If you find you
-cannot, take my advice, my boy, and leave it to your deadliest
-enemy. I am sorry to give you such a two-edged thing, but I can't
-say what turn things are going to take. Kindly sign the paper
-where Mr. Fordham shows you.'
-
-"I signed the paper as directed, and the lawyer took it away with
-him. The singular incident made, as you may think, the deepest
-impression upon me, and I pondered over it and turned it every
-way in my mind without being able to make anything of it. Yet I
-could not shake off the vague feeling of dread which it left
-behind, though the sensation grew less keen as the weeks passed
-and nothing happened to disturb the usual routine of our lives. I
-could see a change in my uncle, however. He drank more than ever,
-and he was less inclined for any sort of society. Most of his
-time he would spend in his room, with the door locked upon the
-inside, but sometimes he would emerge in a sort of drunken frenzy
-and would burst out of the house and tear about the garden with a
-revolver in his hand, screaming out that he was afraid of no man,
-and that he was not to be cooped up, like a sheep in a pen, by
-man or devil. When these hot fits were over, however, he would
-rush tumultuously in at the door and lock and bar it behind him,
-like a man who can brazen it out no longer against the terror
-which lies at the roots of his soul. At such times I have seen
-his face, even on a cold day, glisten with moisture, as though it
-were new raised from a basin.
-
-"Well, to come to an end of the matter, Mr. Holmes, and not to
-abuse your patience, there came a night when he made one of those
-drunken sallies from which he never came back. We found him, when
-we went to search for him, face downward in a little
-green-scummed pool, which lay at the foot of the garden. There
-was no sign of any violence, and the water was but two feet deep,
-so that the jury, having regard to his known eccentricity,
-brought in a verdict of 'suicide.' But I, who knew how he winced
-from the very thought of death, had much ado to persuade myself
-that he had gone out of his way to meet it. The matter passed,
-however, and my father entered into possession of the estate, and
-of some 14,000 pounds, which lay to his credit at the bank."
-
-"One moment," Holmes interposed, "your statement is, I foresee,
-one of the most remarkable to which I have ever listened. Let me
-have the date of the reception by your uncle of the letter, and
-the date of his supposed suicide."
-
-"The letter arrived on March 10, 1883. His death was seven weeks
-later, upon the night of May 2nd."
-
-"Thank you. Pray proceed."
-
-"When my father took over the Horsham property, he, at my
-request, made a careful examination of the attic, which had been
-always locked up. We found the brass box there, although its
-contents had been destroyed. On the inside of the cover was a
-paper label, with the initials of K. K. K. repeated upon it, and
-'Letters, memoranda, receipts, and a register' written beneath.
-These, we presume, indicated the nature of the papers which had
-been destroyed by Colonel Openshaw. For the rest, there was
-nothing of much importance in the attic save a great many
-scattered papers and note-books bearing upon my uncle's life in
-America. Some of them were of the war time and showed that he had
-done his duty well and had borne the repute of a brave soldier.
-Others were of a date during the reconstruction of the Southern
-states, and were mostly concerned with politics, for he had
-evidently taken a strong part in opposing the carpet-bag
-politicians who had been sent down from the North.
-
-"Well, it was the beginning of '84 when my father came to live at
-Horsham, and all went as well as possible with us until the
-January of '85. On the fourth day after the new year I heard my
-father give a sharp cry of surprise as we sat together at the
-breakfast-table. There he was, sitting with a newly opened
-envelope in one hand and five dried orange pips in the
-outstretched palm of the other one. He had always laughed at what
-he called my cock-and-bull story about the colonel, but he looked
-very scared and puzzled now that the same thing had come upon
-himself.
-
-"'Why, what on earth does this mean, John?' he stammered.
-
-"My heart had turned to lead. 'It is K. K. K.,' said I.
-
-"He looked inside the envelope. 'So it is,' he cried. 'Here are
-the very letters. But what is this written above them?'
-
-"'Put the papers on the sundial,' I read, peeping over his
-shoulder.
-
-"'What papers? What sundial?' he asked.
-
-"'The sundial in the garden. There is no other,' said I; 'but the
-papers must be those that are destroyed.'
-
-"'Pooh!' said he, gripping hard at his courage. 'We are in a
-civilised land here, and we can't have tomfoolery of this kind.
-Where does the thing come from?'
-
-"'From Dundee,' I answered, glancing at the postmark.
-
-"'Some preposterous practical joke,' said he. 'What have I to do
-with sundials and papers? I shall take no notice of such
-nonsense.'
-
-"'I should certainly speak to the police,' I said.
-
-"'And be laughed at for my pains. Nothing of the sort.'
-
-"'Then let me do so?'
-
-"'No, I forbid you. I won't have a fuss made about such
-nonsense.'
-
-"It was in vain to argue with him, for he was a very obstinate
-man. I went about, however, with a heart which was full of
-forebodings.
-
-"On the third day after the coming of the letter my father went
-from home to visit an old friend of his, Major Freebody, who is
-in command of one of the forts upon Portsdown Hill. I was glad
-that he should go, for it seemed to me that he was farther from
-danger when he was away from home. In that, however, I was in
-error. Upon the second day of his absence I received a telegram
-from the major, imploring me to come at once. My father had
-fallen over one of the deep chalk-pits which abound in the
-neighbourhood, and was lying senseless, with a shattered skull. I
-hurried to him, but he passed away without having ever recovered
-his consciousness. He had, as it appears, been returning from
-Fareham in the twilight, and as the country was unknown to him,
-and the chalk-pit unfenced, the jury had no hesitation in
-bringing in a verdict of 'death from accidental causes.'
-Carefully as I examined every fact connected with his death, I
-was unable to find anything which could suggest the idea of
-murder. There were no signs of violence, no footmarks, no
-robbery, no record of strangers having been seen upon the roads.
-And yet I need not tell you that my mind was far from at ease,
-and that I was well-nigh certain that some foul plot had been
-woven round him.
-
-"In this sinister way I came into my inheritance. You will ask me
-why I did not dispose of it? I answer, because I was well
-convinced that our troubles were in some way dependent upon an
-incident in my uncle's life, and that the danger would be as
-pressing in one house as in another.
-
-"It was in January, '85, that my poor father met his end, and two
-years and eight months have elapsed since then. During that time
-I have lived happily at Horsham, and I had begun to hope that
-this curse had passed away from the family, and that it had ended
-with the last generation. I had begun to take comfort too soon,
-however; yesterday morning the blow fell in the very shape in
-which it had come upon my father."
-
-The young man took from his waistcoat a crumpled envelope, and
-turning to the table he shook out upon it five little dried
-orange pips.
-
-"This is the envelope," he continued. "The postmark is
-London--eastern division. Within are the very words which were
-upon my father's last message: 'K. K. K.'; and then 'Put the
-papers on the sundial.'"
-
-"What have you done?" asked Holmes.
-
-"Nothing."
-
-"Nothing?"
-
-"To tell the truth"--he sank his face into his thin, white
-hands--"I have felt helpless. I have felt like one of those poor
-rabbits when the snake is writhing towards it. I seem to be in
-the grasp of some resistless, inexorable evil, which no foresight
-and no precautions can guard against."
-
-"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
-lost. Nothing but energy can save you. This is no time for
-despair."
-
-"I have seen the police."
-
-"Ah!"
-
-"But they listened to my story with a smile. I am convinced that
-the inspector has formed the opinion that the letters are all
-practical jokes, and that the deaths of my relations were really
-accidents, as the jury stated, and were not to be connected with
-the warnings."
-
-Holmes shook his clenched hands in the air. "Incredible
-imbecility!" he cried.
-
-"They have, however, allowed me a policeman, who may remain in
-the house with me."
-
-"Has he come with you to-night?"
-
-"No. His orders were to stay in the house."
-
-Again Holmes raved in the air.
-
-"Why did you come to me," he cried, "and, above all, why did you
-not come at once?"
-
-"I did not know. It was only to-day that I spoke to Major
-Prendergast about my troubles and was advised by him to come to
-you."
-
-"It is really two days since you had the letter. We should have
-acted before this. You have no further evidence, I suppose, than
-that which you have placed before us--no suggestive detail which
-might help us?"
-
-"There is one thing," said John Openshaw. He rummaged in his coat
-pocket, and, drawing out a piece of discoloured, blue-tinted
-paper, he laid it out upon the table. "I have some remembrance,"
-said he, "that on the day when my uncle burned the papers I
-observed that the small, unburned margins which lay amid the
-ashes were of this particular colour. I found this single sheet
-upon the floor of his room, and I am inclined to think that it
-may be one of the papers which has, perhaps, fluttered out from
-among the others, and in that way has escaped destruction. Beyond
-the mention of pips, I do not see that it helps us much. I think
-myself that it is a page from some private diary. The writing is
-undoubtedly my uncle's."
-
-Holmes moved the lamp, and we both bent over the sheet of paper,
-which showed by its ragged edge that it had indeed been torn from
-a book. It was headed, "March, 1869," and beneath were the
-following enigmatical notices:
-
-"4th. Hudson came. Same old platform.
-
-"7th. Set the pips on McCauley, Paramore, and
-      John Swain, of St. Augustine.
-
-"9th. McCauley cleared.
-
-"10th. John Swain cleared.
-
-"12th. Visited Paramore. All well."
-
-"Thank you!" said Holmes, folding up the paper and returning it
-to our visitor. "And now you must on no account lose another
-instant. We cannot spare time even to discuss what you have told
-me. You must get home instantly and act."
-
-"What shall I do?"
-
-"There is but one thing to do. It must be done at once. You must
-put this piece of paper which you have shown us into the brass
-box which you have described. You must also put in a note to say
-that all the other papers were burned by your uncle, and that
-this is the only one which remains. You must assert that in such
-words as will carry conviction with them. Having done this, you
-must at once put the box out upon the sundial, as directed. Do
-you understand?"
-
-"Entirely."
-
-"Do not think of revenge, or anything of the sort, at present. I
-think that we may gain that by means of the law; but we have our
-web to weave, while theirs is already woven. The first
-consideration is to remove the pressing danger which threatens
-you. The second is to clear up the mystery and to punish the
-guilty parties."
-
-"I thank you," said the young man, rising and pulling on his
-overcoat. "You have given me fresh life and hope. I shall
-certainly do as you advise."
-
-"Do not lose an instant. And, above all, take care of yourself in
-the meanwhile, for I do not think that there can be a doubt that
-you are threatened by a very real and imminent danger. How do you
-go back?"
-
-"By train from Waterloo."
-
-"It is not yet nine. The streets will be crowded, so I trust that
-you may be in safety. And yet you cannot guard yourself too
-closely."
-
-"I am armed."
-
-"That is well. To-morrow I shall set to work upon your case."
-
-"I shall see you at Horsham, then?"
-
-"No, your secret lies in London. It is there that I shall seek
-it."
-
-"Then I shall call upon you in a day, or in two days, with news
-as to the box and the papers. I shall take your advice in every
-particular." He shook hands with us and took his leave. Outside
-the wind still screamed and the rain splashed and pattered
-against the windows. This strange, wild story seemed to have come
-to us from amid the mad elements--blown in upon us like a sheet
-of sea-weed in a gale--and now to have been reabsorbed by them
-once more.
-
-Sherlock Holmes sat for some time in silence, with his head sunk
-forward and his eyes bent upon the red glow of the fire. Then he
-lit his pipe, and leaning back in his chair he watched the blue
-smoke-rings as they chased each other up to the ceiling.
-
-"I think, Watson," he remarked at last, "that of all our cases we
-have had none more fantastic than this."
-
-"Save, perhaps, the Sign of Four."
-
-"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
-to me to be walking amid even greater perils than did the
-Sholtos."
-
-"But have you," I asked, "formed any definite conception as to
-what these perils are?"
-
-"There can be no question as to their nature," he answered.
-
-"Then what are they? Who is this K. K. K., and why does he pursue
-this unhappy family?"
-
-Sherlock Holmes closed his eyes and placed his elbows upon the
-arms of his chair, with his finger-tips together. "The ideal
-reasoner," he remarked, "would, when he had once been shown a
-single fact in all its bearings, deduce from it not only all the
-chain of events which led up to it but also all the results which
-would follow from it. As Cuvier could correctly describe a whole
-animal by the contemplation of a single bone, so the observer who
-has thoroughly understood one link in a series of incidents
-should be able to accurately state all the other ones, both
-before and after. We have not yet grasped the results which the
-reason alone can attain to. Problems may be solved in the study
-which have baffled all those who have sought a solution by the
-aid of their senses. To carry the art, however, to its highest
-pitch, it is necessary that the reasoner should be able to
-utilise all the facts which have come to his knowledge; and this
-in itself implies, as you will readily see, a possession of all
-knowledge, which, even in these days of free education and
-encyclopaedias, is a somewhat rare accomplishment. It is not so
-impossible, however, that a man should possess all knowledge
-which is likely to be useful to him in his work, and this I have
-endeavoured in my case to do. If I remember rightly, you on one
-occasion, in the early days of our friendship, defined my limits
-in a very precise fashion."
-
-"Yes," I answered, laughing. "It was a singular document.
-Philosophy, astronomy, and politics were marked at zero, I
-remember. Botany variable, geology profound as regards the
-mud-stains from any region within fifty miles of town, chemistry
-eccentric, anatomy unsystematic, sensational literature and crime
-records unique, violin-player, boxer, swordsman, lawyer, and
-self-poisoner by cocaine and tobacco. Those, I think, were the
-main points of my analysis."
-
-Holmes grinned at the last item. "Well," he said, "I say now, as
-I said then, that a man should keep his little brain-attic
-stocked with all the furniture that he is likely to use, and the
-rest he can put away in the lumber-room of his library, where he
-can get it if he wants it. Now, for such a case as the one which
-has been submitted to us to-night, we need certainly to muster
-all our resources. Kindly hand me down the letter K of the
-'American Encyclopaedia' which stands upon the shelf beside you.
-Thank you. Now let us consider the situation and see what may be
-deduced from it. In the first place, we may start with a strong
-presumption that Colonel Openshaw had some very strong reason for
-leaving America. Men at his time of life do not change all their
-habits and exchange willingly the charming climate of Florida for
-the lonely life of an English provincial town. His extreme love
-of solitude in England suggests the idea that he was in fear of
-someone or something, so we may assume as a working hypothesis
-that it was fear of someone or something which drove him from
-America. As to what it was he feared, we can only deduce that by
-considering the formidable letters which were received by himself
-and his successors. Did you remark the postmarks of those
-letters?"
-
-"The first was from Pondicherry, the second from Dundee, and the
-third from London."
-
-"From East London. What do you deduce from that?"
-
-"They are all seaports. That the writer was on board of a ship."
-
-"Excellent. We have already a clue. There can be no doubt that
-the probability--the strong probability--is that the writer was
-on board of a ship. And now let us consider another point. In the
-case of Pondicherry, seven weeks elapsed between the threat and
-its fulfilment, in Dundee it was only some three or four days.
-Does that suggest anything?"
-
-"A greater distance to travel."
-
-"But the letter had also a greater distance to come."
-
-"Then I do not see the point."
-
-"There is at least a presumption that the vessel in which the man
-or men are is a sailing-ship. It looks as if they always send
-their singular warning or token before them when starting upon
-their mission. You see how quickly the deed followed the sign
-when it came from Dundee. If they had come from Pondicherry in a
-steamer they would have arrived almost as soon as their letter.
-But, as a matter of fact, seven weeks elapsed. I think that those
-seven weeks represented the difference between the mail-boat which
-brought the letter and the sailing vessel which brought the
-writer."
-
-"It is possible."
-
-"More than that. It is probable. And now you see the deadly
-urgency of this new case, and why I urged young Openshaw to
-caution. The blow has always fallen at the end of the time which
-it would take the senders to travel the distance. But this one
-comes from London, and therefore we cannot count upon delay."
-
-"Good God!" I cried. "What can it mean, this relentless
-persecution?"
-
-"The papers which Openshaw carried are obviously of vital
-importance to the person or persons in the sailing-ship. I think
-that it is quite clear that there must be more than one of them.
-A single man could not have carried out two deaths in such a way
-as to deceive a coroner's jury. There must have been several in
-it, and they must have been men of resource and determination.
-Their papers they mean to have, be the holder of them who it may.
-In this way you see K. K. K. ceases to be the initials of an
-individual and becomes the badge of a society."
-
-"But of what society?"
-
-"Have you never--" said Sherlock Holmes, bending forward and
-sinking his voice--"have you never heard of the Ku Klux Klan?"
-
-"I never have."
-
-Holmes turned over the leaves of the book upon his knee. "Here it
-is," said he presently:
-
-"'Ku Klux Klan. A name derived from the fanciful resemblance to
-the sound produced by cocking a rifle. This terrible secret
-society was formed by some ex-Confederate soldiers in the
-Southern states after the Civil War, and it rapidly formed local
-branches in different parts of the country, notably in Tennessee,
-Louisiana, the Carolinas, Georgia, and Florida. Its power was
-used for political purposes, principally for the terrorising of
-the negro voters and the murdering and driving from the country
-of those who were opposed to its views. Its outrages were usually
-preceded by a warning sent to the marked man in some fantastic
-but generally recognised shape--a sprig of oak-leaves in some
-parts, melon seeds or orange pips in others. On receiving this
-the victim might either openly abjure his former ways, or might
-fly from the country. If he braved the matter out, death would
-unfailingly come upon him, and usually in some strange and
-unforeseen manner. So perfect was the organisation of the
-society, and so systematic its methods, that there is hardly a
-case upon record where any man succeeded in braving it with
-impunity, or in which any of its outrages were traced home to the
-perpetrators. For some years the organisation flourished in spite
-of the efforts of the United States government and of the better
-classes of the community in the South. Eventually, in the year
-1869, the movement rather suddenly collapsed, although there have
-been sporadic outbreaks of the same sort since that date.'
-
-"You will observe," said Holmes, laying down the volume, "that
-the sudden breaking up of the society was coincident with the
-disappearance of Openshaw from America with their papers. It may
-well have been cause and effect. It is no wonder that he and his
-family have some of the more implacable spirits upon their track.
-You can understand that this register and diary may implicate
-some of the first men in the South, and that there may be many
-who will not sleep easy at night until it is recovered."
-
-"Then the page we have seen--"
-
-"Is such as we might expect. It ran, if I remember right, 'sent
-the pips to A, B, and C'--that is, sent the society's warning to
-them. Then there are successive entries that A and B cleared, or
-left the country, and finally that C was visited, with, I fear, a
-sinister result for C. Well, I think, Doctor, that we may let
-some light into this dark place, and I believe that the only
-chance young Openshaw has in the meantime is to do what I have
-told him. There is nothing more to be said or to be done
-to-night, so hand me over my violin and let us try to forget for
-half an hour the miserable weather and the still more miserable
-ways of our fellow-men."
-
-
-It had cleared in the morning, and the sun was shining with a
-subdued brightness through the dim veil which hangs over the
-great city. Sherlock Holmes was already at breakfast when I came
-down.
-
-"You will excuse me for not waiting for you," said he; "I have, I
-foresee, a very busy day before me in looking into this case of
-young Openshaw's."
-
-"What steps will you take?" I asked.
-
-"It will very much depend upon the results of my first inquiries.
-I may have to go down to Horsham, after all."
-
-"You will not go there first?"
-
-"No, I shall commence with the City. Just ring the bell and the
-maid will bring up your coffee."
-
-As I waited, I lifted the unopened newspaper from the table and
-glanced my eye over it. It rested upon a heading which sent a
-chill to my heart.
-
-"Holmes," I cried, "you are too late."
-
-"Ah!" said he, laying down his cup, "I feared as much. How was it
-done?" He spoke calmly, but I could see that he was deeply moved.
-
-"My eye caught the name of Openshaw, and the heading 'Tragedy
-Near Waterloo Bridge.' Here is the account:
-
-"Between nine and ten last night Police-Constable Cook, of the H
-Division, on duty near Waterloo Bridge, heard a cry for help and
-a splash in the water. The night, however, was extremely dark and
-stormy, so that, in spite of the help of several passers-by, it
-was quite impossible to effect a rescue. The alarm, however, was
-given, and, by the aid of the water-police, the body was
-eventually recovered. It proved to be that of a young gentleman
-whose name, as it appears from an envelope which was found in his
-pocket, was John Openshaw, and whose residence is near Horsham.
-It is conjectured that he may have been hurrying down to catch
-the last train from Waterloo Station, and that in his haste and
-the extreme darkness he missed his path and walked over the edge
-of one of the small landing-places for river steamboats. The body
-exhibited no traces of violence, and there can be no doubt that
-the deceased had been the victim of an unfortunate accident,
-which should have the effect of calling the attention of the
-authorities to the condition of the riverside landing-stages."
-
-We sat in silence for some minutes, Holmes more depressed and
-shaken than I had ever seen him.
-
-"That hurts my pride, Watson," he said at last. "It is a petty
-feeling, no doubt, but it hurts my pride. It becomes a personal
-matter with me now, and, if God sends me health, I shall set my
-hand upon this gang. That he should come to me for help, and that
-I should send him away to his death--!" He sprang from his chair
-and paced about the room in uncontrollable agitation, with a
-flush upon his sallow cheeks and a nervous clasping and
-unclasping of his long thin hands.
-
-"They must be cunning devils," he exclaimed at last. "How could
-they have decoyed him down there? The Embankment is not on the
-direct line to the station. The bridge, no doubt, was too
-crowded, even on such a night, for their purpose. Well, Watson,
-we shall see who will win in the long run. I am going out now!"
-
-"To the police?"
-
-"No; I shall be my own police. When I have spun the web they may
-take the flies, but not before."
-
-All day I was engaged in my professional work, and it was late in
-the evening before I returned to Baker Street. Sherlock Holmes
-had not come back yet. It was nearly ten o'clock before he
-entered, looking pale and worn. He walked up to the sideboard,
-and tearing a piece from the loaf he devoured it voraciously,
-washing it down with a long draught of water.
-
-"You are hungry," I remarked.
-
-"Starving. It had escaped my memory. I have had nothing since
-breakfast."
-
-"Nothing?"
-
-"Not a bite. I had no time to think of it."
-
-"And how have you succeeded?"
-
-"Well."
-
-"You have a clue?"
-
-"I have them in the hollow of my hand. Young Openshaw shall not
-long remain unavenged. Why, Watson, let us put their own devilish
-trade-mark upon them. It is well thought of!"
-
-"What do you mean?"
-
-He took an orange from the cupboard, and tearing it to pieces he
-squeezed out the pips upon the table. Of these he took five and
-thrust them into an envelope. On the inside of the flap he wrote
-"S. H. for J. O." Then he sealed it and addressed it to "Captain
-James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
-
-"That will await him when he enters port," said he, chuckling.
-"It may give him a sleepless night. He will find it as sure a
-precursor of his fate as Openshaw did before him."
-
-"And who is this Captain Calhoun?"
-
-"The leader of the gang. I shall have the others, but he first."
-
-"How did you trace it, then?"
-
-He took a large sheet of paper from his pocket, all covered with
-dates and names.
-
-"I have spent the whole day," said he, "over Lloyd's registers
-and files of the old papers, following the future career of every
-vessel which touched at Pondicherry in January and February in
-'83. There were thirty-six ships of fair tonnage which were
-reported there during those months. Of these, one, the 'Lone Star,'
-instantly attracted my attention, since, although it was reported
-as having cleared from London, the name is that which is given to
-one of the states of the Union."
-
-"Texas, I think."
-
-"I was not and am not sure which; but I knew that the ship must
-have an American origin."
-
-"What then?"
-
-"I searched the Dundee records, and when I found that the barque
-'Lone Star' was there in January, '85, my suspicion became a
-certainty. I then inquired as to the vessels which lay at present
-in the port of London."
-
-"Yes?"
-
-"The 'Lone Star' had arrived here last week. I went down to the
-Albert Dock and found that she had been taken down the river by
-the early tide this morning, homeward bound to Savannah. I wired
-to Gravesend and learned that she had passed some time ago, and
-as the wind is easterly I have no doubt that she is now past the
-Goodwins and not very far from the Isle of Wight."
-
-"What will you do, then?"
-
-"Oh, I have my hand upon him. He and the two mates, are as I
-learn, the only native-born Americans in the ship. The others are
-Finns and Germans. I know, also, that they were all three away
-from the ship last night. I had it from the stevedore who has
-been loading their cargo. By the time that their sailing-ship
-reaches Savannah the mail-boat will have carried this letter, and
-the cable will have informed the police of Savannah that these
-three gentlemen are badly wanted here upon a charge of murder."
-
-There is ever a flaw, however, in the best laid of human plans,
-and the murderers of John Openshaw were never to receive the
-orange pips which would show them that another, as cunning and as
-resolute as themselves, was upon their track. Very long and very
-severe were the equinoctial gales that year. We waited long for
-news of the "Lone Star" of Savannah, but none ever reached us. We
-did at last hear that somewhere far out in the Atlantic a
-shattered stern-post of a boat was seen swinging in the trough
-of a wave, with the letters "L. S." carved upon it, and that is
-all which we shall ever know of the fate of the "Lone Star."
-
-
-
-ADVENTURE VI. THE MAN WITH THE TWISTED LIP
-
-Isa Whitney, brother of the late Elias Whitney, D.D., Principal
-of the Theological College of St. George's, was much addicted to
-opium. The habit grew upon him, as I understand, from some
-foolish freak when he was at college; for having read De
-Quincey's description of his dreams and sensations, he had
-drenched his tobacco with laudanum in an attempt to produce the
-same effects. He found, as so many more have done, that the
-practice is easier to attain than to get rid of, and for many
-years he continued to be a slave to the drug, an object of
-mingled horror and pity to his friends and relatives. I can see
-him now, with yellow, pasty face, drooping lids, and pin-point
-pupils, all huddled in a chair, the wreck and ruin of a noble
-man.
-
-One night--it was in June, '89--there came a ring to my bell,
-about the hour when a man gives his first yawn and glances at the
-clock. I sat up in my chair, and my wife laid her needle-work
-down in her lap and made a little face of disappointment.
-
-"A patient!" said she. "You'll have to go out."
-
-I groaned, for I was newly come back from a weary day.
-
-We heard the door open, a few hurried words, and then quick steps
-upon the linoleum. Our own door flew open, and a lady, clad in
-some dark-coloured stuff, with a black veil, entered the room.
-
-"You will excuse my calling so late," she began, and then,
-suddenly losing her self-control, she ran forward, threw her arms
-about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
-such trouble!" she cried; "I do so want a little help."
-
-"Why," said my wife, pulling up her veil, "it is Kate Whitney.
-How you startled me, Kate! I had not an idea who you were when
-you came in."
-
-"I didn't know what to do, so I came straight to you." That was
-always the way. Folk who were in grief came to my wife like birds
-to a light-house.
-
-"It was very sweet of you to come. Now, you must have some wine
-and water, and sit here comfortably and tell us all about it. Or
-should you rather that I sent James off to bed?"
-
-"Oh, no, no! I want the doctor's advice and help, too. It's about
-Isa. He has not been home for two days. I am so frightened about
-him!"
-
-It was not the first time that she had spoken to us of her
-husband's trouble, to me as a doctor, to my wife as an old friend
-and school companion. We soothed and comforted her by such words
-as we could find. Did she know where her husband was? Was it
-possible that we could bring him back to her?
-
-It seems that it was. She had the surest information that of late
-he had, when the fit was on him, made use of an opium den in the
-farthest east of the City. Hitherto his orgies had always been
-confined to one day, and he had come back, twitching and
-shattered, in the evening. But now the spell had been upon him
-eight-and-forty hours, and he lay there, doubtless among the
-dregs of the docks, breathing in the poison or sleeping off the
-effects. There he was to be found, she was sure of it, at the Bar
-of Gold, in Upper Swandam Lane. But what was she to do? How could
-she, a young and timid woman, make her way into such a place and
-pluck her husband out from among the ruffians who surrounded him?
-
-There was the case, and of course there was but one way out of
-it. Might I not escort her to this place? And then, as a second
-thought, why should she come at all? I was Isa Whitney's medical
-adviser, and as such I had influence over him. I could manage it
-better if I were alone. I promised her on my word that I would
-send him home in a cab within two hours if he were indeed at the
-address which she had given me. And so in ten minutes I had left
-my armchair and cheery sitting-room behind me, and was speeding
-eastward in a hansom on a strange errand, as it seemed to me at
-the time, though the future only could show how strange it was to
-be.
-
-But there was no great difficulty in the first stage of my
-adventure. Upper Swandam Lane is a vile alley lurking behind the
-high wharves which line the north side of the river to the east
-of London Bridge. Between a slop-shop and a gin-shop, approached
-by a steep flight of steps leading down to a black gap like the
-mouth of a cave, I found the den of which I was in search.
-Ordering my cab to wait, I passed down the steps, worn hollow in
-the centre by the ceaseless tread of drunken feet; and by the
-light of a flickering oil-lamp above the door I found the latch
-and made my way into a long, low room, thick and heavy with the
-brown opium smoke, and terraced with wooden berths, like the
-forecastle of an emigrant ship.
-
-Through the gloom one could dimly catch a glimpse of bodies lying
-in strange fantastic poses, bowed shoulders, bent knees, heads
-thrown back, and chins pointing upward, with here and there a
-dark, lack-lustre eye turned upon the newcomer. Out of the black
-shadows there glimmered little red circles of light, now bright,
-now faint, as the burning poison waxed or waned in the bowls of
-the metal pipes. The most lay silent, but some muttered to
-themselves, and others talked together in a strange, low,
-monotonous voice, their conversation coming in gushes, and then
-suddenly tailing off into silence, each mumbling out his own
-thoughts and paying little heed to the words of his neighbour. At
-the farther end was a small brazier of burning charcoal, beside
-which on a three-legged wooden stool there sat a tall, thin old
-man, with his jaw resting upon his two fists, and his elbows upon
-his knees, staring into the fire.
-
-As I entered, a sallow Malay attendant had hurried up with a pipe
-for me and a supply of the drug, beckoning me to an empty berth.
-
-"Thank you. I have not come to stay," said I. "There is a friend
-of mine here, Mr. Isa Whitney, and I wish to speak with him."
-
-There was a movement and an exclamation from my right, and
-peering through the gloom, I saw Whitney, pale, haggard, and
-unkempt, staring out at me.
-
-"My God! It's Watson," said he. He was in a pitiable state of
-reaction, with every nerve in a twitter. "I say, Watson, what
-o'clock is it?"
-
-"Nearly eleven."
-
-"Of what day?"
-
-"Of Friday, June 19th."
-
-"Good heavens! I thought it was Wednesday. It is Wednesday. What
-d'you want to frighten a chap for?" He sank his face onto his
-arms and began to sob in a high treble key.
-
-"I tell you that it is Friday, man. Your wife has been waiting
-this two days for you. You should be ashamed of yourself!"
-
-"So I am. But you've got mixed, Watson, for I have only been here
-a few hours, three pipes, four pipes--I forget how many. But I'll
-go home with you. I wouldn't frighten Kate--poor little Kate.
-Give me your hand! Have you a cab?"
-
-"Yes, I have one waiting."
-
-"Then I shall go in it. But I must owe something. Find what I
-owe, Watson. I am all off colour. I can do nothing for myself."
-
-I walked down the narrow passage between the double row of
-sleepers, holding my breath to keep out the vile, stupefying
-fumes of the drug, and looking about for the manager. As I passed
-the tall man who sat by the brazier I felt a sudden pluck at my
-skirt, and a low voice whispered, "Walk past me, and then look
-back at me." The words fell quite distinctly upon my ear. I
-glanced down. They could only have come from the old man at my
-side, and yet he sat now as absorbed as ever, very thin, very
-wrinkled, bent with age, an opium pipe dangling down from between
-his knees, as though it had dropped in sheer lassitude from his
-fingers. I took two steps forward and looked back. It took all my
-self-control to prevent me from breaking out into a cry of
-astonishment. He had turned his back so that none could see him
-but I. His form had filled out, his wrinkles were gone, the dull
-eyes had regained their fire, and there, sitting by the fire and
-grinning at my surprise, was none other than Sherlock Holmes. He
-made a slight motion to me to approach him, and instantly, as he
-turned his face half round to the company once more, subsided
-into a doddering, loose-lipped senility.
-
-"Holmes!" I whispered, "what on earth are you doing in this den?"
-
-"As low as you can," he answered; "I have excellent ears. If you
-would have the great kindness to get rid of that sottish friend
-of yours I should be exceedingly glad to have a little talk with
-you."
-
-"I have a cab outside."
-
-"Then pray send him home in it. You may safely trust him, for he
-appears to be too limp to get into any mischief. I should
-recommend you also to send a note by the cabman to your wife to
-say that you have thrown in your lot with me. If you will wait
-outside, I shall be with you in five minutes."
-
-It was difficult to refuse any of Sherlock Holmes' requests, for
-they were always so exceedingly definite, and put forward with
-such a quiet air of mastery. I felt, however, that when Whitney
-was once confined in the cab my mission was practically
-accomplished; and for the rest, I could not wish anything better
-than to be associated with my friend in one of those singular
-adventures which were the normal condition of his existence. In a
-few minutes I had written my note, paid Whitney's bill, led him
-out to the cab, and seen him driven through the darkness. In a
-very short time a decrepit figure had emerged from the opium den,
-and I was walking down the street with Sherlock Holmes. For two
-streets he shuffled along with a bent back and an uncertain foot.
-Then, glancing quickly round, he straightened himself out and
-burst into a hearty fit of laughter.
-
-"I suppose, Watson," said he, "that you imagine that I have added
-opium-smoking to cocaine injections, and all the other little
-weaknesses on which you have favoured me with your medical
-views."
-
-"I was certainly surprised to find you there."
-
-"But not more so than I to find you."
-
-"I came to find a friend."
-
-"And I to find an enemy."
-
-"An enemy?"
-
-"Yes; one of my natural enemies, or, shall I say, my natural
-prey. Briefly, Watson, I am in the midst of a very remarkable
-inquiry, and I have hoped to find a clue in the incoherent
-ramblings of these sots, as I have done before now. Had I been
-recognised in that den my life would not have been worth an
-hour's purchase; for I have used it before now for my own
-purposes, and the rascally Lascar who runs it has sworn to have
-vengeance upon me. There is a trap-door at the back of that
-building, near the corner of Paul's Wharf, which could tell some
-strange tales of what has passed through it upon the moonless
-nights."
-
-"What! You do not mean bodies?"
-
-"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
-for every poor devil who has been done to death in that den. It
-is the vilest murder-trap on the whole riverside, and I fear that
-Neville St. Clair has entered it never to leave it more. But our
-trap should be here." He put his two forefingers between his
-teeth and whistled shrilly--a signal which was answered by a
-similar whistle from the distance, followed shortly by the rattle
-of wheels and the clink of horses' hoofs.
-
-"Now, Watson," said Holmes, as a tall dog-cart dashed up through
-the gloom, throwing out two golden tunnels of yellow light from
-its side lanterns. "You'll come with me, won't you?"
-
-"If I can be of use."
-
-"Oh, a trusty comrade is always of use; and a chronicler still
-more so. My room at The Cedars is a double-bedded one."
-
-"The Cedars?"
-
-"Yes; that is Mr. St. Clair's house. I am staying there while I
-conduct the inquiry."
-
-"Where is it, then?"
-
-"Near Lee, in Kent. We have a seven-mile drive before us."
-
-"But I am all in the dark."
-
-"Of course you are. You'll know all about it presently. Jump up
-here. All right, John; we shall not need you. Here's half a
-crown. Look out for me to-morrow, about eleven. Give her her
-head. So long, then!"
-
-He flicked the horse with his whip, and we dashed away through
-the endless succession of sombre and deserted streets, which
-widened gradually, until we were flying across a broad
-balustraded bridge, with the murky river flowing sluggishly
-beneath us. Beyond lay another dull wilderness of bricks and
-mortar, its silence broken only by the heavy, regular footfall of
-the policeman, or the songs and shouts of some belated party of
-revellers. A dull wrack was drifting slowly across the sky, and a
-star or two twinkled dimly here and there through the rifts of
-the clouds. Holmes drove in silence, with his head sunk upon his
-breast, and the air of a man who is lost in thought, while I sat
-beside him, curious to learn what this new quest might be which
-seemed to tax his powers so sorely, and yet afraid to break in
-upon the current of his thoughts. We had driven several miles,
-and were beginning to get to the fringe of the belt of suburban
-villas, when he shook himself, shrugged his shoulders, and lit up
-his pipe with the air of a man who has satisfied himself that he
-is acting for the best.
-
-"You have a grand gift of silence, Watson," said he. "It makes
-you quite invaluable as a companion. 'Pon my word, it is a great
-thing for me to have someone to talk to, for my own thoughts are
-not over-pleasant. I was wondering what I should say to this dear
-little woman to-night when she meets me at the door."
-
-"You forget that I know nothing about it."
-
-"I shall just have time to tell you the facts of the case before
-we get to Lee. It seems absurdly simple, and yet, somehow I can
-get nothing to go upon. There's plenty of thread, no doubt, but I
-can't get the end of it into my hand. Now, I'll state the case
-clearly and concisely to you, Watson, and maybe you can see a
-spark where all is dark to me."
-
-"Proceed, then."
-
-"Some years ago--to be definite, in May, 1884--there came to Lee
-a gentleman, Neville St. Clair by name, who appeared to have
-plenty of money. He took a large villa, laid out the grounds very
-nicely, and lived generally in good style. By degrees he made
-friends in the neighbourhood, and in 1887 he married the daughter
-of a local brewer, by whom he now has two children. He had no
-occupation, but was interested in several companies and went into
-town as a rule in the morning, returning by the 5:14 from Cannon
-Street every night. Mr. St. Clair is now thirty-seven years of
-age, is a man of temperate habits, a good husband, a very
-affectionate father, and a man who is popular with all who know
-him. I may add that his whole debts at the present moment, as far
-as we have been able to ascertain, amount to 88 pounds 10s., while
-he has 220 pounds standing to his credit in the Capital and
-Counties Bank. There is no reason, therefore, to think that money
-troubles have been weighing upon his mind.
-
-"Last Monday Mr. Neville St. Clair went into town rather earlier
-than usual, remarking before he started that he had two important
-commissions to perform, and that he would bring his little boy
-home a box of bricks. Now, by the merest chance, his wife
-received a telegram upon this same Monday, very shortly after his
-departure, to the effect that a small parcel of considerable
-value which she had been expecting was waiting for her at the
-offices of the Aberdeen Shipping Company. Now, if you are well up
-in your London, you will know that the office of the company is
-in Fresno Street, which branches out of Upper Swandam Lane, where
-you found me to-night. Mrs. St. Clair had her lunch, started for
-the City, did some shopping, proceeded to the company's office,
-got her packet, and found herself at exactly 4:35 walking through
-Swandam Lane on her way back to the station. Have you followed me
-so far?"
-
-"It is very clear."
-
-"If you remember, Monday was an exceedingly hot day, and Mrs. St.
-Clair walked slowly, glancing about in the hope of seeing a cab,
-as she did not like the neighbourhood in which she found herself.
-While she was walking in this way down Swandam Lane, she suddenly
-heard an ejaculation or cry, and was struck cold to see her
-husband looking down at her and, as it seemed to her, beckoning
-to her from a second-floor window. The window was open, and she
-distinctly saw his face, which she describes as being terribly
-agitated. He waved his hands frantically to her, and then
-vanished from the window so suddenly that it seemed to her that
-he had been plucked back by some irresistible force from behind.
-One singular point which struck her quick feminine eye was that
-although he wore some dark coat, such as he had started to town
-in, he had on neither collar nor necktie.
-
-"Convinced that something was amiss with him, she rushed down the
-steps--for the house was none other than the opium den in which
-you found me to-night--and running through the front room she
-attempted to ascend the stairs which led to the first floor. At
-the foot of the stairs, however, she met this Lascar scoundrel of
-whom I have spoken, who thrust her back and, aided by a Dane, who
-acts as assistant there, pushed her out into the street. Filled
-with the most maddening doubts and fears, she rushed down the
-lane and, by rare good-fortune, met in Fresno Street a number of
-constables with an inspector, all on their way to their beat. The
-inspector and two men accompanied her back, and in spite of the
-continued resistance of the proprietor, they made their way to
-the room in which Mr. St. Clair had last been seen. There was no
-sign of him there. In fact, in the whole of that floor there was
-no one to be found save a crippled wretch of hideous aspect, who,
-it seems, made his home there. Both he and the Lascar stoutly
-swore that no one else had been in the front room during the
-afternoon. So determined was their denial that the inspector was
-staggered, and had almost come to believe that Mrs. St. Clair had
-been deluded when, with a cry, she sprang at a small deal box
-which lay upon the table and tore the lid from it. Out there fell
-a cascade of children's bricks. It was the toy which he had
-promised to bring home.
-
-"This discovery, and the evident confusion which the cripple
-showed, made the inspector realise that the matter was serious.
-The rooms were carefully examined, and results all pointed to an
-abominable crime. The front room was plainly furnished as a
-sitting-room and led into a small bedroom, which looked out upon
-the back of one of the wharves. Between the wharf and the bedroom
-window is a narrow strip, which is dry at low tide but is covered
-at high tide with at least four and a half feet of water. The
-bedroom window was a broad one and opened from below. On
-examination traces of blood were to be seen upon the windowsill,
-and several scattered drops were visible upon the wooden floor of
-the bedroom. Thrust away behind a curtain in the front room were
-all the clothes of Mr. Neville St. Clair, with the exception of
-his coat. His boots, his socks, his hat, and his watch--all were
-there. There were no signs of violence upon any of these
-garments, and there were no other traces of Mr. Neville St.
-Clair. Out of the window he must apparently have gone for no
-other exit could be discovered, and the ominous bloodstains upon
-the sill gave little promise that he could save himself by
-swimming, for the tide was at its very highest at the moment of
-the tragedy.
-
-"And now as to the villains who seemed to be immediately
-implicated in the matter. The Lascar was known to be a man of the
-vilest antecedents, but as, by Mrs. St. Clair's story, he was
-known to have been at the foot of the stair within a very few
-seconds of her husband's appearance at the window, he could
-hardly have been more than an accessory to the crime. His defence
-was one of absolute ignorance, and he protested that he had no
-knowledge as to the doings of Hugh Boone, his lodger, and that he
-could not account in any way for the presence of the missing
-gentleman's clothes.
-
-"So much for the Lascar manager. Now for the sinister cripple who
-lives upon the second floor of the opium den, and who was
-certainly the last human being whose eyes rested upon Neville St.
-Clair. His name is Hugh Boone, and his hideous face is one which
-is familiar to every man who goes much to the City. He is a
-professional beggar, though in order to avoid the police
-regulations he pretends to a small trade in wax vestas. Some
-little distance down Threadneedle Street, upon the left-hand
-side, there is, as you may have remarked, a small angle in the
-wall. Here it is that this creature takes his daily seat,
-cross-legged with his tiny stock of matches on his lap, and as he
-is a piteous spectacle a small rain of charity descends into the
-greasy leather cap which lies upon the pavement beside him. I
-have watched the fellow more than once before ever I thought of
-making his professional acquaintance, and I have been surprised
-at the harvest which he has reaped in a short time. His
-appearance, you see, is so remarkable that no one can pass him
-without observing him. A shock of orange hair, a pale face
-disfigured by a horrible scar, which, by its contraction, has
-turned up the outer edge of his upper lip, a bulldog chin, and a
-pair of very penetrating dark eyes, which present a singular
-contrast to the colour of his hair, all mark him out from amid
-the common crowd of mendicants and so, too, does his wit, for he
-is ever ready with a reply to any piece of chaff which may be
-thrown at him by the passers-by. This is the man whom we now
-learn to have been the lodger at the opium den, and to have been
-the last man to see the gentleman of whom we are in quest."
-
-"But a cripple!" said I. "What could he have done single-handed
-against a man in the prime of life?"
-
-"He is a cripple in the sense that he walks with a limp; but in
-other respects he appears to be a powerful and well-nurtured man.
-Surely your medical experience would tell you, Watson, that
-weakness in one limb is often compensated for by exceptional
-strength in the others."
-
-"Pray continue your narrative."
-
-"Mrs. St. Clair had fainted at the sight of the blood upon the
-window, and she was escorted home in a cab by the police, as her
-presence could be of no help to them in their investigations.
-Inspector Barton, who had charge of the case, made a very careful
-examination of the premises, but without finding anything which
-threw any light upon the matter. One mistake had been made in not
-arresting Boone instantly, as he was allowed some few minutes
-during which he might have communicated with his friend the
-Lascar, but this fault was soon remedied, and he was seized and
-searched, without anything being found which could incriminate
-him. There were, it is true, some blood-stains upon his right
-shirt-sleeve, but he pointed to his ring-finger, which had been
-cut near the nail, and explained that the bleeding came from
-there, adding that he had been to the window not long before, and
-that the stains which had been observed there came doubtless from
-the same source. He denied strenuously having ever seen Mr.
-Neville St. Clair and swore that the presence of the clothes in
-his room was as much a mystery to him as to the police. As to
-Mrs. St. Clair's assertion that she had actually seen her husband
-at the window, he declared that she must have been either mad or
-dreaming. He was removed, loudly protesting, to the
-police-station, while the inspector remained upon the premises in
-the hope that the ebbing tide might afford some fresh clue.
-
-"And it did, though they hardly found upon the mud-bank what they
-had feared to find. It was Neville St. Clair's coat, and not
-Neville St. Clair, which lay uncovered as the tide receded. And
-what do you think they found in the pockets?"
-
-"I cannot imagine."
-
-"No, I don't think you would guess. Every pocket stuffed with
-pennies and half-pennies--421 pennies and 270 half-pennies. It
-was no wonder that it had not been swept away by the tide. But a
-human body is a different matter. There is a fierce eddy between
-the wharf and the house. It seemed likely enough that the
-weighted coat had remained when the stripped body had been sucked
-away into the river."
-
-"But I understand that all the other clothes were found in the
-room. Would the body be dressed in a coat alone?"
-
-"No, sir, but the facts might be met speciously enough. Suppose
-that this man Boone had thrust Neville St. Clair through the
-window, there is no human eye which could have seen the deed.
-What would he do then? It would of course instantly strike him
-that he must get rid of the tell-tale garments. He would seize
-the coat, then, and be in the act of throwing it out, when it
-would occur to him that it would swim and not sink. He has little
-time, for he has heard the scuffle downstairs when the wife tried
-to force her way up, and perhaps he has already heard from his
-Lascar confederate that the police are hurrying up the street.
-There is not an instant to be lost. He rushes to some secret
-hoard, where he has accumulated the fruits of his beggary, and he
-stuffs all the coins upon which he can lay his hands into the
-pockets to make sure of the coat's sinking. He throws it out, and
-would have done the same with the other garments had not he heard
-the rush of steps below, and only just had time to close the
-window when the police appeared."
-
-"It certainly sounds feasible."
-
-"Well, we will take it as a working hypothesis for want of a
-better. Boone, as I have told you, was arrested and taken to the
-station, but it could not be shown that there had ever before
-been anything against him. He had for years been known as a
-professional beggar, but his life appeared to have been a very
-quiet and innocent one. There the matter stands at present, and
-the questions which have to be solved--what Neville St. Clair was
-doing in the opium den, what happened to him when there, where is
-he now, and what Hugh Boone had to do with his disappearance--are
-all as far from a solution as ever. I confess that I cannot
-recall any case within my experience which looked at the first
-glance so simple and yet which presented such difficulties."
-
-While Sherlock Holmes had been detailing this singular series of
-events, we had been whirling through the outskirts of the great
-town until the last straggling houses had been left behind, and
-we rattled along with a country hedge upon either side of us.
-Just as he finished, however, we drove through two scattered
-villages, where a few lights still glimmered in the windows.
-
-"We are on the outskirts of Lee," said my companion. "We have
-touched on three English counties in our short drive, starting in
-Middlesex, passing over an angle of Surrey, and ending in Kent.
-See that light among the trees? That is The Cedars, and beside
-that lamp sits a woman whose anxious ears have already, I have
-little doubt, caught the clink of our horse's feet."
-
-"But why are you not conducting the case from Baker Street?" I
-asked.
-
-"Because there are many inquiries which must be made out here.
-Mrs. St. Clair has most kindly put two rooms at my disposal, and
-you may rest assured that she will have nothing but a welcome for
-my friend and colleague. I hate to meet her, Watson, when I have
-no news of her husband. Here we are. Whoa, there, whoa!"
-
-We had pulled up in front of a large villa which stood within its
-own grounds. A stable-boy had run out to the horse's head, and
-springing down, I followed Holmes up the small, winding
-gravel-drive which led to the house. As we approached, the door
-flew open, and a little blonde woman stood in the opening, clad
-in some sort of light mousseline de soie, with a touch of fluffy
-pink chiffon at her neck and wrists. She stood with her figure
-outlined against the flood of light, one hand upon the door, one
-half-raised in her eagerness, her body slightly bent, her head
-and face protruded, with eager eyes and parted lips, a standing
-question.
-
-"Well?" she cried, "well?" And then, seeing that there were two
-of us, she gave a cry of hope which sank into a groan as she saw
-that my companion shook his head and shrugged his shoulders.
-
-"No good news?"
-
-"None."
-
-"No bad?"
-
-"No."
-
-"Thank God for that. But come in. You must be weary, for you have
-had a long day."
-
-"This is my friend, Dr. Watson. He has been of most vital use to
-me in several of my cases, and a lucky chance has made it
-possible for me to bring him out and associate him with this
-investigation."
-
-"I am delighted to see you," said she, pressing my hand warmly.
-"You will, I am sure, forgive anything that may be wanting in our
-arrangements, when you consider the blow which has come so
-suddenly upon us."
-
-"My dear madam," said I, "I am an old campaigner, and if I were
-not I can very well see that no apology is needed. If I can be of
-any assistance, either to you or to my friend here, I shall be
-indeed happy."
-
-"Now, Mr. Sherlock Holmes," said the lady as we entered a
-well-lit dining-room, upon the table of which a cold supper had
-been laid out, "I should very much like to ask you one or two
-plain questions, to which I beg that you will give a plain
-answer."
-
-"Certainly, madam."
-
-"Do not trouble about my feelings. I am not hysterical, nor given
-to fainting. I simply wish to hear your real, real opinion."
-
-"Upon what point?"
-
-"In your heart of hearts, do you think that Neville is alive?"
-
-Sherlock Holmes seemed to be embarrassed by the question.
-"Frankly, now!" she repeated, standing upon the rug and looking
-keenly down at him as he leaned back in a basket-chair.
-
-"Frankly, then, madam, I do not."
-
-"You think that he is dead?"
-
-"I do."
-
-"Murdered?"
-
-"I don't say that. Perhaps."
-
-"And on what day did he meet his death?"
-
-"On Monday."
-
-"Then perhaps, Mr. Holmes, you will be good enough to explain how
-it is that I have received a letter from him to-day."
-
-Sherlock Holmes sprang out of his chair as if he had been
-galvanised.
-
-"What!" he roared.
-
-"Yes, to-day." She stood smiling, holding up a little slip of
-paper in the air.
-
-"May I see it?"
-
-"Certainly."
-
-He snatched it from her in his eagerness, and smoothing it out
-upon the table he drew over the lamp and examined it intently. I
-had left my chair and was gazing at it over his shoulder. The
-envelope was a very coarse one and was stamped with the Gravesend
-postmark and with the date of that very day, or rather of the day
-before, for it was considerably after midnight.
-
-"Coarse writing," murmured Holmes. "Surely this is not your
-husband's writing, madam."
-
-"No, but the enclosure is."
-
-"I perceive also that whoever addressed the envelope had to go
-and inquire as to the address."
-
-"How can you tell that?"
-
-"The name, you see, is in perfectly black ink, which has dried
-itself. The rest is of the greyish colour, which shows that
-blotting-paper has been used. If it had been written straight
-off, and then blotted, none would be of a deep black shade. This
-man has written the name, and there has then been a pause before
-he wrote the address, which can only mean that he was not
-familiar with it. It is, of course, a trifle, but there is
-nothing so important as trifles. Let us now see the letter. Ha!
-there has been an enclosure here!"
-
-"Yes, there was a ring. His signet-ring."
-
-"And you are sure that this is your husband's hand?"
-
-"One of his hands."
-
-"One?"
-
-"His hand when he wrote hurriedly. It is very unlike his usual
-writing, and yet I know it well."
-
-"'Dearest do not be frightened. All will come well. There is a
-huge error which it may take some little time to rectify.
-Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
-of a book, octavo size, no water-mark. Hum! Posted to-day in
-Gravesend by a man with a dirty thumb. Ha! And the flap has been
-gummed, if I am not very much in error, by a person who had been
-chewing tobacco. And you have no doubt that it is your husband's
-hand, madam?"
-
-"None. Neville wrote those words."
-
-"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
-the clouds lighten, though I should not venture to say that the
-danger is over."
-
-"But he must be alive, Mr. Holmes."
-
-"Unless this is a clever forgery to put us on the wrong scent.
-The ring, after all, proves nothing. It may have been taken from
-him."
-
-"No, no; it is, it is his very own writing!"
-
-"Very well. It may, however, have been written on Monday and only
-posted to-day."
-
-"That is possible."
-
-"If so, much may have happened between."
-
-"Oh, you must not discourage me, Mr. Holmes. I know that all is
-well with him. There is so keen a sympathy between us that I
-should know if evil came upon him. On the very day that I saw him
-last he cut himself in the bedroom, and yet I in the dining-room
-rushed upstairs instantly with the utmost certainty that
-something had happened. Do you think that I would respond to such
-a trifle and yet be ignorant of his death?"
-
-"I have seen too much not to know that the impression of a woman
-may be more valuable than the conclusion of an analytical
-reasoner. And in this letter you certainly have a very strong
-piece of evidence to corroborate your view. But if your husband
-is alive and able to write letters, why should he remain away
-from you?"
-
-"I cannot imagine. It is unthinkable."
-
-"And on Monday he made no remarks before leaving you?"
-
-"No."
-
-"And you were surprised to see him in Swandam Lane?"
-
-"Very much so."
-
-"Was the window open?"
-
-"Yes."
-
-"Then he might have called to you?"
-
-"He might."
-
-"He only, as I understand, gave an inarticulate cry?"
-
-"Yes."
-
-"A call for help, you thought?"
-
-"Yes. He waved his hands."
-
-"But it might have been a cry of surprise. Astonishment at the
-unexpected sight of you might cause him to throw up his hands?"
-
-"It is possible."
-
-"And you thought he was pulled back?"
-
-"He disappeared so suddenly."
-
-"He might have leaped back. You did not see anyone else in the
-room?"
-
-"No, but this horrible man confessed to having been there, and
-the Lascar was at the foot of the stairs."
-
-"Quite so. Your husband, as far as you could see, had his
-ordinary clothes on?"
-
-"But without his collar or tie. I distinctly saw his bare
-throat."
-
-"Had he ever spoken of Swandam Lane?"
-
-"Never."
-
-"Had he ever showed any signs of having taken opium?"
-
-"Never."
-
-"Thank you, Mrs. St. Clair. Those are the principal points about
-which I wished to be absolutely clear. We shall now have a little
-supper and then retire, for we may have a very busy day
-to-morrow."
-
-A large and comfortable double-bedded room had been placed at our
-disposal, and I was quickly between the sheets, for I was weary
-after my night of adventure. Sherlock Holmes was a man, however,
-who, when he had an unsolved problem upon his mind, would go for
-days, and even for a week, without rest, turning it over,
-rearranging his facts, looking at it from every point of view
-until he had either fathomed it or convinced himself that his
-data were insufficient. It was soon evident to me that he was now
-preparing for an all-night sitting. He took off his coat and
-waistcoat, put on a large blue dressing-gown, and then wandered
-about the room collecting pillows from his bed and cushions from
-the sofa and armchairs. With these he constructed a sort of
-Eastern divan, upon which he perched himself cross-legged, with
-an ounce of shag tobacco and a box of matches laid out in front
-of him. In the dim light of the lamp I saw him sitting there, an
-old briar pipe between his lips, his eyes fixed vacantly upon the
-corner of the ceiling, the blue smoke curling up from him,
-silent, motionless, with the light shining upon his strong-set
-aquiline features. So he sat as I dropped off to sleep, and so he
-sat when a sudden ejaculation caused me to wake up, and I found
-the summer sun shining into the apartment. The pipe was still
-between his lips, the smoke still curled upward, and the room was
-full of a dense tobacco haze, but nothing remained of the heap of
-shag which I had seen upon the previous night.
-
-"Awake, Watson?" he asked.
-
-"Yes."
-
-"Game for a morning drive?"
-
-"Certainly."
-
-"Then dress. No one is stirring yet, but I know where the
-stable-boy sleeps, and we shall soon have the trap out." He
-chuckled to himself as he spoke, his eyes twinkled, and he seemed
-a different man to the sombre thinker of the previous night.
-
-As I dressed I glanced at my watch. It was no wonder that no one
-was stirring. It was twenty-five minutes past four. I had hardly
-finished when Holmes returned with the news that the boy was
-putting in the horse.
-
-"I want to test a little theory of mine," said he, pulling on his
-boots. "I think, Watson, that you are now standing in the
-presence of one of the most absolute fools in Europe. I deserve
-to be kicked from here to Charing Cross. But I think I have the
-key of the affair now."
-
-"And where is it?" I asked, smiling.
-
-"In the bathroom," he answered. "Oh, yes, I am not joking," he
-continued, seeing my look of incredulity. "I have just been
-there, and I have taken it out, and I have got it in this
-Gladstone bag. Come on, my boy, and we shall see whether it will
-not fit the lock."
-
-We made our way downstairs as quietly as possible, and out into
-the bright morning sunshine. In the road stood our horse and
-trap, with the half-clad stable-boy waiting at the head. We both
-sprang in, and away we dashed down the London Road. A few country
-carts were stirring, bearing in vegetables to the metropolis, but
-the lines of villas on either side were as silent and lifeless as
-some city in a dream.
-
-"It has been in some points a singular case," said Holmes,
-flicking the horse on into a gallop. "I confess that I have been
-as blind as a mole, but it is better to learn wisdom late than
-never to learn it at all."
-
-In town the earliest risers were just beginning to look sleepily
-from their windows as we drove through the streets of the Surrey
-side. Passing down the Waterloo Bridge Road we crossed over the
-river, and dashing up Wellington Street wheeled sharply to the
-right and found ourselves in Bow Street. Sherlock Holmes was well
-known to the force, and the two constables at the door saluted
-him. One of them held the horse's head while the other led us in.
-
-"Who is on duty?" asked Holmes.
-
-"Inspector Bradstreet, sir."
-
-"Ah, Bradstreet, how are you?" A tall, stout official had come
-down the stone-flagged passage, in a peaked cap and frogged
-jacket. "I wish to have a quiet word with you, Bradstreet."
-"Certainly, Mr. Holmes. Step into my room here." It was a small,
-office-like room, with a huge ledger upon the table, and a
-telephone projecting from the wall. The inspector sat down at his
-desk.
-
-"What can I do for you, Mr. Holmes?"
-
-"I called about that beggarman, Boone--the one who was charged
-with being concerned in the disappearance of Mr. Neville St.
-Clair, of Lee."
-
-"Yes. He was brought up and remanded for further inquiries."
-
-"So I heard. You have him here?"
-
-"In the cells."
-
-"Is he quiet?"
-
-"Oh, he gives no trouble. But he is a dirty scoundrel."
-
-"Dirty?"
-
-"Yes, it is all we can do to make him wash his hands, and his
-face is as black as a tinker's. Well, when once his case has been
-settled, he will have a regular prison bath; and I think, if you
-saw him, you would agree with me that he needed it."
-
-"I should like to see him very much."
-
-"Would you? That is easily done. Come this way. You can leave
-your bag."
-
-"No, I think that I'll take it."
-
-"Very good. Come this way, if you please." He led us down a
-passage, opened a barred door, passed down a winding stair, and
-brought us to a whitewashed corridor with a line of doors on each
-side.
-
-"The third on the right is his," said the inspector. "Here it
-is!" He quietly shot back a panel in the upper part of the door
-and glanced through.
-
-"He is asleep," said he. "You can see him very well."
-
-We both put our eyes to the grating. The prisoner lay with his
-face towards us, in a very deep sleep, breathing slowly and
-heavily. He was a middle-sized man, coarsely clad as became his
-calling, with a coloured shirt protruding through the rent in his
-tattered coat. He was, as the inspector had said, extremely
-dirty, but the grime which covered his face could not conceal its
-repulsive ugliness. A broad wheal from an old scar ran right
-across it from eye to chin, and by its contraction had turned up
-one side of the upper lip, so that three teeth were exposed in a
-perpetual snarl. A shock of very bright red hair grew low over
-his eyes and forehead.
-
-"He's a beauty, isn't he?" said the inspector.
-
-"He certainly needs a wash," remarked Holmes. "I had an idea that
-he might, and I took the liberty of bringing the tools with me."
-He opened the Gladstone bag as he spoke, and took out, to my
-astonishment, a very large bath-sponge.
-
-"He! he! You are a funny one," chuckled the inspector.
-
-"Now, if you will have the great goodness to open that door very
-quietly, we will soon make him cut a much more respectable
-figure."
-
-"Well, I don't know why not," said the inspector. "He doesn't
-look a credit to the Bow Street cells, does he?" He slipped his
-key into the lock, and we all very quietly entered the cell. The
-sleeper half turned, and then settled down once more into a deep
-slumber. Holmes stooped to the water-jug, moistened his sponge,
-and then rubbed it twice vigorously across and down the
-prisoner's face.
-
-"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
-Lee, in the county of Kent."
-
-Never in my life have I seen such a sight. The man's face peeled
-off under the sponge like the bark from a tree. Gone was the
-coarse brown tint! Gone, too, was the horrid scar which had
-seamed it across, and the twisted lip which had given the
-repulsive sneer to the face! A twitch brought away the tangled
-red hair, and there, sitting up in his bed, was a pale,
-sad-faced, refined-looking man, black-haired and smooth-skinned,
-rubbing his eyes and staring about him with sleepy bewilderment.
-Then suddenly realising the exposure, he broke into a scream and
-threw himself down with his face to the pillow.
-
-"Great heavens!" cried the inspector, "it is, indeed, the missing
-man. I know him from the photograph."
-
-The prisoner turned with the reckless air of a man who abandons
-himself to his destiny. "Be it so," said he. "And pray what am I
-charged with?"
-
-"With making away with Mr. Neville St.-- Oh, come, you can't be
-charged with that unless they make a case of attempted suicide of
-it," said the inspector with a grin. "Well, I have been
-twenty-seven years in the force, but this really takes the cake."
-
-"If I am Mr. Neville St. Clair, then it is obvious that no crime
-has been committed, and that, therefore, I am illegally
-detained."
-
-"No crime, but a very great error has been committed," said
-Holmes. "You would have done better to have trusted your wife."
-
-"It was not the wife; it was the children," groaned the prisoner.
-"God help me, I would not have them ashamed of their father. My
-God! What an exposure! What can I do?"
-
-Sherlock Holmes sat down beside him on the couch and patted him
-kindly on the shoulder.
-
-"If you leave it to a court of law to clear the matter up," said
-he, "of course you can hardly avoid publicity. On the other hand,
-if you convince the police authorities that there is no possible
-case against you, I do not know that there is any reason that the
-details should find their way into the papers. Inspector
-Bradstreet would, I am sure, make notes upon anything which you
-might tell us and submit it to the proper authorities. The case
-would then never go into court at all."
-
-"God bless you!" cried the prisoner passionately. "I would have
-endured imprisonment, ay, even execution, rather than have left
-my miserable secret as a family blot to my children.
-
-"You are the first who have ever heard my story. My father was a
-schoolmaster in Chesterfield, where I received an excellent
-education. I travelled in my youth, took to the stage, and
-finally became a reporter on an evening paper in London. One day
-my editor wished to have a series of articles upon begging in the
-metropolis, and I volunteered to supply them. There was the point
-from which all my adventures started. It was only by trying
-begging as an amateur that I could get the facts upon which to
-base my articles. When an actor I had, of course, learned all the
-secrets of making up, and had been famous in the green-room for
-my skill. I took advantage now of my attainments. I painted my
-face, and to make myself as pitiable as possible I made a good
-scar and fixed one side of my lip in a twist by the aid of a
-small slip of flesh-coloured plaster. Then with a red head of
-hair, and an appropriate dress, I took my station in the business
-part of the city, ostensibly as a match-seller but really as a
-beggar. For seven hours I plied my trade, and when I returned
-home in the evening I found to my surprise that I had received no
-less than 26s. 4d.
-
-"I wrote my articles and thought little more of the matter until,
-some time later, I backed a bill for a friend and had a writ
-served upon me for 25 pounds. I was at my wit's end where to get
-the money, but a sudden idea came to me. I begged a fortnight's
-grace from the creditor, asked for a holiday from my employers,
-and spent the time in begging in the City under my disguise. In
-ten days I had the money and had paid the debt.
-
-"Well, you can imagine how hard it was to settle down to arduous
-work at 2 pounds a week when I knew that I could earn as much in
-a day by smearing my face with a little paint, laying my cap on
-the ground, and sitting still. It was a long fight between my
-pride and the money, but the dollars won at last, and I threw up
-reporting and sat day after day in the corner which I had first
-chosen, inspiring pity by my ghastly face and filling my pockets
-with coppers. Only one man knew my secret. He was the keeper of a
-low den in which I used to lodge in Swandam Lane, where I could
-every morning emerge as a squalid beggar and in the evenings
-transform myself into a well-dressed man about town. This fellow,
-a Lascar, was well paid by me for his rooms, so that I knew that
-my secret was safe in his possession.
-
-"Well, very soon I found that I was saving considerable sums of
-money. I do not mean that any beggar in the streets of London
-could earn 700 pounds a year--which is less than my average
-takings--but I had exceptional advantages in my power of making
-up, and also in a facility of repartee, which improved by
-practice and made me quite a recognised character in the City.
-All day a stream of pennies, varied by silver, poured in upon me,
-and it was a very bad day in which I failed to take 2 pounds.
-
-"As I grew richer I grew more ambitious, took a house in the
-country, and eventually married, without anyone having a
-suspicion as to my real occupation. My dear wife knew that I had
-business in the City. She little knew what.
-
-"Last Monday I had finished for the day and was dressing in my
-room above the opium den when I looked out of my window and saw,
-to my horror and astonishment, that my wife was standing in the
-street, with her eyes fixed full upon me. I gave a cry of
-surprise, threw up my arms to cover my face, and, rushing to my
-confidant, the Lascar, entreated him to prevent anyone from
-coming up to me. I heard her voice downstairs, but I knew that
-she could not ascend. Swiftly I threw off my clothes, pulled on
-those of a beggar, and put on my pigments and wig. Even a wife's
-eyes could not pierce so complete a disguise. But then it
-occurred to me that there might be a search in the room, and that
-the clothes might betray me. I threw open the window, reopening
-by my violence a small cut which I had inflicted upon myself in
-the bedroom that morning. Then I seized my coat, which was
-weighted by the coppers which I had just transferred to it from
-the leather bag in which I carried my takings. I hurled it out of
-the window, and it disappeared into the Thames. The other clothes
-would have followed, but at that moment there was a rush of
-constables up the stair, and a few minutes after I found, rather,
-I confess, to my relief, that instead of being identified as Mr.
-Neville St. Clair, I was arrested as his murderer.
-
-"I do not know that there is anything else for me to explain. I
-was determined to preserve my disguise as long as possible, and
-hence my preference for a dirty face. Knowing that my wife would
-be terribly anxious, I slipped off my ring and confided it to the
-Lascar at a moment when no constable was watching me, together
-with a hurried scrawl, telling her that she had no cause to
-fear."
-
-"That note only reached her yesterday," said Holmes.
-
-"Good God! What a week she must have spent!"
-
-"The police have watched this Lascar," said Inspector Bradstreet,
-"and I can quite understand that he might find it difficult to
-post a letter unobserved. Probably he handed it to some sailor
-customer of his, who forgot all about it for some days."
-
-"That was it," said Holmes, nodding approvingly; "I have no doubt
-of it. But have you never been prosecuted for begging?"
-
-"Many times; but what was a fine to me?"
-
-"It must stop here, however," said Bradstreet. "If the police are
-to hush this thing up, there must be no more of Hugh Boone."
-
-"I have sworn it by the most solemn oaths which a man can take."
-
-"In that case I think that it is probable that no further steps
-may be taken. But if you are found again, then all must come out.
-I am sure, Mr. Holmes, that we are very much indebted to you for
-having cleared the matter up. I wish I knew how you reach your
-results."
-
-"I reached this one," said my friend, "by sitting upon five
-pillows and consuming an ounce of shag. I think, Watson, that if
-we drive to Baker Street we shall just be in time for breakfast."
-
-
-
-VII. THE ADVENTURE OF THE BLUE CARBUNCLE
-
-I had called upon my friend Sherlock Holmes upon the second
-morning after Christmas, with the intention of wishing him the
-compliments of the season. He was lounging upon the sofa in a
-purple dressing-gown, a pipe-rack within his reach upon the
-right, and a pile of crumpled morning papers, evidently newly
-studied, near at hand. Beside the couch was a wooden chair, and
-on the angle of the back hung a very seedy and disreputable
-hard-felt hat, much the worse for wear, and cracked in several
-places. A lens and a forceps lying upon the seat of the chair
-suggested that the hat had been suspended in this manner for the
-purpose of examination.
-
-"You are engaged," said I; "perhaps I interrupt you."
-
-"Not at all. I am glad to have a friend with whom I can discuss
-my results. The matter is a perfectly trivial one"--he jerked his
-thumb in the direction of the old hat--"but there are points in
-connection with it which are not entirely devoid of interest and
-even of instruction."
-
-I seated myself in his armchair and warmed my hands before his
-crackling fire, for a sharp frost had set in, and the windows
-were thick with the ice crystals. "I suppose," I remarked, "that,
-homely as it looks, this thing has some deadly story linked on to
-it--that it is the clue which will guide you in the solution of
-some mystery and the punishment of some crime."
-
-"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
-those whimsical little incidents which will happen when you have
-four million human beings all jostling each other within the
-space of a few square miles. Amid the action and reaction of so
-dense a swarm of humanity, every possible combination of events
-may be expected to take place, and many a little problem will be
-presented which may be striking and bizarre without being
-criminal. We have already had experience of such."
-
-"So much so," I remarked, "that of the last six cases which I
-have added to my notes, three have been entirely free of any
-legal crime."
-
-"Precisely. You allude to my attempt to recover the Irene Adler
-papers, to the singular case of Miss Mary Sutherland, and to the
-adventure of the man with the twisted lip. Well, I have no doubt
-that this small matter will fall into the same innocent category.
-You know Peterson, the commissionaire?"
-
-"Yes."
-
-"It is to him that this trophy belongs."
-
-"It is his hat."
-
-"No, no, he found it. Its owner is unknown. I beg that you will
-look upon it not as a battered billycock but as an intellectual
-problem. And, first, as to how it came here. It arrived upon
-Christmas morning, in company with a good fat goose, which is, I
-have no doubt, roasting at this moment in front of Peterson's
-fire. The facts are these: about four o'clock on Christmas
-morning, Peterson, who, as you know, is a very honest fellow, was
-returning from some small jollification and was making his way
-homeward down Tottenham Court Road. In front of him he saw, in
-the gaslight, a tallish man, walking with a slight stagger, and
-carrying a white goose slung over his shoulder. As he reached the
-corner of Goodge Street, a row broke out between this stranger
-and a little knot of roughs. One of the latter knocked off the
-man's hat, on which he raised his stick to defend himself and,
-swinging it over his head, smashed the shop window behind him.
-Peterson had rushed forward to protect the stranger from his
-assailants; but the man, shocked at having broken the window, and
-seeing an official-looking person in uniform rushing towards him,
-dropped his goose, took to his heels, and vanished amid the
-labyrinth of small streets which lie at the back of Tottenham
-Court Road. The roughs had also fled at the appearance of
-Peterson, so that he was left in possession of the field of
-battle, and also of the spoils of victory in the shape of this
-battered hat and a most unimpeachable Christmas goose."
-
-"Which surely he restored to their owner?"
-
-"My dear fellow, there lies the problem. It is true that 'For
-Mrs. Henry Baker' was printed upon a small card which was tied to
-the bird's left leg, and it is also true that the initials 'H.
-B.' are legible upon the lining of this hat, but as there are
-some thousands of Bakers, and some hundreds of Henry Bakers in
-this city of ours, it is not easy to restore lost property to any
-one of them."
-
-"What, then, did Peterson do?"
-
-"He brought round both hat and goose to me on Christmas morning,
-knowing that even the smallest problems are of interest to me.
-The goose we retained until this morning, when there were signs
-that, in spite of the slight frost, it would be well that it
-should be eaten without unnecessary delay. Its finder has carried
-it off, therefore, to fulfil the ultimate destiny of a goose,
-while I continue to retain the hat of the unknown gentleman who
-lost his Christmas dinner."
-
-"Did he not advertise?"
-
-"No."
-
-"Then, what clue could you have as to his identity?"
-
-"Only as much as we can deduce."
-
-"From his hat?"
-
-"Precisely."
-
-"But you are joking. What can you gather from this old battered
-felt?"
-
-"Here is my lens. You know my methods. What can you gather
-yourself as to the individuality of the man who has worn this
-article?"
-
-I took the tattered object in my hands and turned it over rather
-ruefully. It was a very ordinary black hat of the usual round
-shape, hard and much the worse for wear. The lining had been of
-red silk, but was a good deal discoloured. There was no maker's
-name; but, as Holmes had remarked, the initials "H. B." were
-scrawled upon one side. It was pierced in the brim for a
-hat-securer, but the elastic was missing. For the rest, it was
-cracked, exceedingly dusty, and spotted in several places,
-although there seemed to have been some attempt to hide the
-discoloured patches by smearing them with ink.
-
-"I can see nothing," said I, handing it back to my friend.
-
-"On the contrary, Watson, you can see everything. You fail,
-however, to reason from what you see. You are too timid in
-drawing your inferences."
-
-"Then, pray tell me what it is that you can infer from this hat?"
-
-He picked it up and gazed at it in the peculiar introspective
-fashion which was characteristic of him. "It is perhaps less
-suggestive than it might have been," he remarked, "and yet there
-are a few inferences which are very distinct, and a few others
-which represent at least a strong balance of probability. That
-the man was highly intellectual is of course obvious upon the
-face of it, and also that he was fairly well-to-do within the
-last three years, although he has now fallen upon evil days. He
-had foresight, but has less now than formerly, pointing to a
-moral retrogression, which, when taken with the decline of his
-fortunes, seems to indicate some evil influence, probably drink,
-at work upon him. This may account also for the obvious fact that
-his wife has ceased to love him."
-
-"My dear Holmes!"
-
-"He has, however, retained some degree of self-respect," he
-continued, disregarding my remonstrance. "He is a man who leads a
-sedentary life, goes out little, is out of training entirely, is
-middle-aged, has grizzled hair which he has had cut within the
-last few days, and which he anoints with lime-cream. These are
-the more patent facts which are to be deduced from his hat. Also,
-by the way, that it is extremely improbable that he has gas laid
-on in his house."
-
-"You are certainly joking, Holmes."
-
-"Not in the least. Is it possible that even now, when I give you
-these results, you are unable to see how they are attained?"
-
-"I have no doubt that I am very stupid, but I must confess that I
-am unable to follow you. For example, how did you deduce that
-this man was intellectual?"
-
-For answer Holmes clapped the hat upon his head. It came right
-over the forehead and settled upon the bridge of his nose. "It is
-a question of cubic capacity," said he; "a man with so large a
-brain must have something in it."
-
-"The decline of his fortunes, then?"
-
-"This hat is three years old. These flat brims curled at the edge
-came in then. It is a hat of the very best quality. Look at the
-band of ribbed silk and the excellent lining. If this man could
-afford to buy so expensive a hat three years ago, and has had no
-hat since, then he has assuredly gone down in the world."
-
-"Well, that is clear enough, certainly. But how about the
-foresight and the moral retrogression?"
-
-Sherlock Holmes laughed. "Here is the foresight," said he putting
-his finger upon the little disc and loop of the hat-securer.
-"They are never sold upon hats. If this man ordered one, it is a
-sign of a certain amount of foresight, since he went out of his
-way to take this precaution against the wind. But since we see
-that he has broken the elastic and has not troubled to replace
-it, it is obvious that he has less foresight now than formerly,
-which is a distinct proof of a weakening nature. On the other
-hand, he has endeavoured to conceal some of these stains upon the
-felt by daubing them with ink, which is a sign that he has not
-entirely lost his self-respect."
-
-"Your reasoning is certainly plausible."
-
-"The further points, that he is middle-aged, that his hair is
-grizzled, that it has been recently cut, and that he uses
-lime-cream, are all to be gathered from a close examination of the
-lower part of the lining. The lens discloses a large number of
-hair-ends, clean cut by the scissors of the barber. They all
-appear to be adhesive, and there is a distinct odour of
-lime-cream. This dust, you will observe, is not the gritty, grey
-dust of the street but the fluffy brown dust of the house,
-showing that it has been hung up indoors most of the time, while
-the marks of moisture upon the inside are proof positive that the
-wearer perspired very freely, and could therefore, hardly be in
-the best of training."
-
-"But his wife--you said that she had ceased to love him."
-
-"This hat has not been brushed for weeks. When I see you, my dear
-Watson, with a week's accumulation of dust upon your hat, and
-when your wife allows you to go out in such a state, I shall fear
-that you also have been unfortunate enough to lose your wife's
-affection."
-
-"But he might be a bachelor."
-
-"Nay, he was bringing home the goose as a peace-offering to his
-wife. Remember the card upon the bird's leg."
-
-"You have an answer to everything. But how on earth do you deduce
-that the gas is not laid on in his house?"
-
-"One tallow stain, or even two, might come by chance; but when I
-see no less than five, I think that there can be little doubt
-that the individual must be brought into frequent contact with
-burning tallow--walks upstairs at night probably with his hat in
-one hand and a guttering candle in the other. Anyhow, he never
-got tallow-stains from a gas-jet. Are you satisfied?"
-
-"Well, it is very ingenious," said I, laughing; "but since, as
-you said just now, there has been no crime committed, and no harm
-done save the loss of a goose, all this seems to be rather a
-waste of energy."
-
-Sherlock Holmes had opened his mouth to reply, when the door flew
-open, and Peterson, the commissionaire, rushed into the apartment
-with flushed cheeks and the face of a man who is dazed with
-astonishment.
-
-"The goose, Mr. Holmes! The goose, sir!" he gasped.
-
-"Eh? What of it, then? Has it returned to life and flapped off
-through the kitchen window?" Holmes twisted himself round upon
-the sofa to get a fairer view of the man's excited face.
-
-"See here, sir! See what my wife found in its crop!" He held out
-his hand and displayed upon the centre of the palm a brilliantly
-scintillating blue stone, rather smaller than a bean in size, but
-of such purity and radiance that it twinkled like an electric
-point in the dark hollow of his hand.
-
-Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
-he, "this is treasure trove indeed. I suppose you know what you
-have got?"
-
-"A diamond, sir? A precious stone. It cuts into glass as though
-it were putty."
-
-"It's more than a precious stone. It is the precious stone."
-
-"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
-
-"Precisely so. I ought to know its size and shape, seeing that I
-have read the advertisement about it in The Times every day
-lately. It is absolutely unique, and its value can only be
-conjectured, but the reward offered of 1000 pounds is certainly
-not within a twentieth part of the market price."
-
-"A thousand pounds! Great Lord of mercy!" The commissionaire
-plumped down into a chair and stared from one to the other of us.
-
-"That is the reward, and I have reason to know that there are
-sentimental considerations in the background which would induce
-the Countess to part with half her fortune if she could but
-recover the gem."
-
-"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
-remarked.
-
-"Precisely so, on December 22nd, just five days ago. John Horner,
-a plumber, was accused of having abstracted it from the lady's
-jewel-case. The evidence against him was so strong that the case
-has been referred to the Assizes. I have some account of the
-matter here, I believe." He rummaged amid his newspapers,
-glancing over the dates, until at last he smoothed one out,
-doubled it over, and read the following paragraph:
-
-"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
-brought up upon the charge of having upon the 22nd inst.,
-abstracted from the jewel-case of the Countess of Morcar the
-valuable gem known as the blue carbuncle. James Ryder,
-upper-attendant at the hotel, gave his evidence to the effect
-that he had shown Horner up to the dressing-room of the Countess
-of Morcar upon the day of the robbery in order that he might
-solder the second bar of the grate, which was loose. He had
-remained with Horner some little time, but had finally been
-called away. On returning, he found that Horner had disappeared,
-that the bureau had been forced open, and that the small morocco
-casket in which, as it afterwards transpired, the Countess was
-accustomed to keep her jewel, was lying empty upon the
-dressing-table. Ryder instantly gave the alarm, and Horner was
-arrested the same evening; but the stone could not be found
-either upon his person or in his rooms. Catherine Cusack, maid to
-the Countess, deposed to having heard Ryder's cry of dismay on
-discovering the robbery, and to having rushed into the room,
-where she found matters as described by the last witness.
-Inspector Bradstreet, B division, gave evidence as to the arrest
-of Horner, who struggled frantically, and protested his innocence
-in the strongest terms. Evidence of a previous conviction for
-robbery having been given against the prisoner, the magistrate
-refused to deal summarily with the offence, but referred it to
-the Assizes. Horner, who had shown signs of intense emotion
-during the proceedings, fainted away at the conclusion and was
-carried out of court."
-
-"Hum! So much for the police-court," said Holmes thoughtfully,
-tossing aside the paper. "The question for us now to solve is the
-sequence of events leading from a rifled jewel-case at one end to
-the crop of a goose in Tottenham Court Road at the other. You
-see, Watson, our little deductions have suddenly assumed a much
-more important and less innocent aspect. Here is the stone; the
-stone came from the goose, and the goose came from Mr. Henry
-Baker, the gentleman with the bad hat and all the other
-characteristics with which I have bored you. So now we must set
-ourselves very seriously to finding this gentleman and
-ascertaining what part he has played in this little mystery. To
-do this, we must try the simplest means first, and these lie
-undoubtedly in an advertisement in all the evening papers. If
-this fail, I shall have recourse to other methods."
-
-"What will you say?"
-
-"Give me a pencil and that slip of paper. Now, then: 'Found at
-the corner of Goodge Street, a goose and a black felt hat. Mr.
-Henry Baker can have the same by applying at 6:30 this evening at
-221B, Baker Street.' That is clear and concise."
-
-"Very. But will he see it?"
-
-"Well, he is sure to keep an eye on the papers, since, to a poor
-man, the loss was a heavy one. He was clearly so scared by his
-mischance in breaking the window and by the approach of Peterson
-that he thought of nothing but flight, but since then he must
-have bitterly regretted the impulse which caused him to drop his
-bird. Then, again, the introduction of his name will cause him to
-see it, for everyone who knows him will direct his attention to
-it. Here you are, Peterson, run down to the advertising agency
-and have this put in the evening papers."
-
-"In which, sir?"
-
-"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
-Standard, Echo, and any others that occur to you."
-
-"Very well, sir. And this stone?"
-
-"Ah, yes, I shall keep the stone. Thank you. And, I say,
-Peterson, just buy a goose on your way back and leave it here
-with me, for we must have one to give to this gentleman in place
-of the one which your family is now devouring."
-
-When the commissionaire had gone, Holmes took up the stone and
-held it against the light. "It's a bonny thing," said he. "Just
-see how it glints and sparkles. Of course it is a nucleus and
-focus of crime. Every good stone is. They are the devil's pet
-baits. In the larger and older jewels every facet may stand for a
-bloody deed. This stone is not yet twenty years old. It was found
-in the banks of the Amoy River in southern China and is remarkable
-in having every characteristic of the carbuncle, save that it is
-blue in shade instead of ruby red. In spite of its youth, it has
-already a sinister history. There have been two murders, a
-vitriol-throwing, a suicide, and several robberies brought about
-for the sake of this forty-grain weight of crystallised charcoal.
-Who would think that so pretty a toy would be a purveyor to the
-gallows and the prison? I'll lock it up in my strong box now and
-drop a line to the Countess to say that we have it."
-
-"Do you think that this man Horner is innocent?"
-
-"I cannot tell."
-
-"Well, then, do you imagine that this other one, Henry Baker, had
-anything to do with the matter?"
-
-"It is, I think, much more likely that Henry Baker is an
-absolutely innocent man, who had no idea that the bird which he
-was carrying was of considerably more value than if it were made
-of solid gold. That, however, I shall determine by a very simple
-test if we have an answer to our advertisement."
-
-"And you can do nothing until then?"
-
-"Nothing."
-
-"In that case I shall continue my professional round. But I shall
-come back in the evening at the hour you have mentioned, for I
-should like to see the solution of so tangled a business."
-
-"Very glad to see you. I dine at seven. There is a woodcock, I
-believe. By the way, in view of recent occurrences, perhaps I
-ought to ask Mrs. Hudson to examine its crop."
-
-I had been delayed at a case, and it was a little after half-past
-six when I found myself in Baker Street once more. As I
-approached the house I saw a tall man in a Scotch bonnet with a
-coat which was buttoned up to his chin waiting outside in the
-bright semicircle which was thrown from the fanlight. Just as I
-arrived the door was opened, and we were shown up together to
-Holmes' room.
-
-"Mr. Henry Baker, I believe," said he, rising from his armchair
-and greeting his visitor with the easy air of geniality which he
-could so readily assume. "Pray take this chair by the fire, Mr.
-Baker. It is a cold night, and I observe that your circulation is
-more adapted for summer than for winter. Ah, Watson, you have
-just come at the right time. Is that your hat, Mr. Baker?"
-
-"Yes, sir, that is undoubtedly my hat."
-
-He was a large man with rounded shoulders, a massive head, and a
-broad, intelligent face, sloping down to a pointed beard of
-grizzled brown. A touch of red in nose and cheeks, with a slight
-tremor of his extended hand, recalled Holmes' surmise as to his
-habits. His rusty black frock-coat was buttoned right up in
-front, with the collar turned up, and his lank wrists protruded
-from his sleeves without a sign of cuff or shirt. He spoke in a
-slow staccato fashion, choosing his words with care, and gave the
-impression generally of a man of learning and letters who had had
-ill-usage at the hands of fortune.
-
-"We have retained these things for some days," said Holmes,
-"because we expected to see an advertisement from you giving your
-address. I am at a loss to know now why you did not advertise."
-
-Our visitor gave a rather shamefaced laugh. "Shillings have not
-been so plentiful with me as they once were," he remarked. "I had
-no doubt that the gang of roughs who assaulted me had carried off
-both my hat and the bird. I did not care to spend more money in a
-hopeless attempt at recovering them."
-
-"Very naturally. By the way, about the bird, we were compelled to
-eat it."
-
-"To eat it!" Our visitor half rose from his chair in his
-excitement.
-
-"Yes, it would have been of no use to anyone had we not done so.
-But I presume that this other goose upon the sideboard, which is
-about the same weight and perfectly fresh, will answer your
-purpose equally well?"
-
-"Oh, certainly, certainly," answered Mr. Baker with a sigh of
-relief.
-
-"Of course, we still have the feathers, legs, crop, and so on of
-your own bird, so if you wish--"
-
-The man burst into a hearty laugh. "They might be useful to me as
-relics of my adventure," said he, "but beyond that I can hardly
-see what use the disjecta membra of my late acquaintance are
-going to be to me. No, sir, I think that, with your permission, I
-will confine my attentions to the excellent bird which I perceive
-upon the sideboard."
-
-Sherlock Holmes glanced sharply across at me with a slight shrug
-of his shoulders.
-
-"There is your hat, then, and there your bird," said he. "By the
-way, would it bore you to tell me where you got the other one
-from? I am somewhat of a fowl fancier, and I have seldom seen a
-better grown goose."
-
-"Certainly, sir," said Baker, who had risen and tucked his newly
-gained property under his arm. "There are a few of us who
-frequent the Alpha Inn, near the Museum--we are to be found in
-the Museum itself during the day, you understand. This year our
-good host, Windigate by name, instituted a goose club, by which,
-on consideration of some few pence every week, we were each to
-receive a bird at Christmas. My pence were duly paid, and the
-rest is familiar to you. I am much indebted to you, sir, for a
-Scotch bonnet is fitted neither to my years nor my gravity." With
-a comical pomposity of manner he bowed solemnly to both of us and
-strode off upon his way.
-
-"So much for Mr. Henry Baker," said Holmes when he had closed the
-door behind him. "It is quite certain that he knows nothing
-whatever about the matter. Are you hungry, Watson?"
-
-"Not particularly."
-
-"Then I suggest that we turn our dinner into a supper and follow
-up this clue while it is still hot."
-
-"By all means."
-
-It was a bitter night, so we drew on our ulsters and wrapped
-cravats about our throats. Outside, the stars were shining coldly
-in a cloudless sky, and the breath of the passers-by blew out
-into smoke like so many pistol shots. Our footfalls rang out
-crisply and loudly as we swung through the doctors' quarter,
-Wimpole Street, Harley Street, and so through Wigmore Street into
-Oxford Street. In a quarter of an hour we were in Bloomsbury at
-the Alpha Inn, which is a small public-house at the corner of one
-of the streets which runs down into Holborn. Holmes pushed open
-the door of the private bar and ordered two glasses of beer from
-the ruddy-faced, white-aproned landlord.
-
-"Your beer should be excellent if it is as good as your geese,"
-said he.
-
-"My geese!" The man seemed surprised.
-
-"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
-who was a member of your goose club."
-
-"Ah! yes, I see. But you see, sir, them's not our geese."
-
-"Indeed! Whose, then?"
-
-"Well, I got the two dozen from a salesman in Covent Garden."
-
-"Indeed? I know some of them. Which was it?"
-
-"Breckinridge is his name."
-
-"Ah! I don't know him. Well, here's your good health landlord,
-and prosperity to your house. Good-night."
-
-"Now for Mr. Breckinridge," he continued, buttoning up his coat
-as we came out into the frosty air. "Remember, Watson that though
-we have so homely a thing as a goose at one end of this chain, we
-have at the other a man who will certainly get seven years' penal
-servitude unless we can establish his innocence. It is possible
-that our inquiry may but confirm his guilt; but, in any case, we
-have a line of investigation which has been missed by the police,
-and which a singular chance has placed in our hands. Let us
-follow it out to the bitter end. Faces to the south, then, and
-quick march!"
-
-We passed across Holborn, down Endell Street, and so through a
-zigzag of slums to Covent Garden Market. One of the largest
-stalls bore the name of Breckinridge upon it, and the proprietor
-a horsey-looking man, with a sharp face and trim side-whiskers was
-helping a boy to put up the shutters.
-
-"Good-evening. It's a cold night," said Holmes.
-
-The salesman nodded and shot a questioning glance at my
-companion.
-
-"Sold out of geese, I see," continued Holmes, pointing at the
-bare slabs of marble.
-
-"Let you have five hundred to-morrow morning."
-
-"That's no good."
-
-"Well, there are some on the stall with the gas-flare."
-
-"Ah, but I was recommended to you."
-
-"Who by?"
-
-"The landlord of the Alpha."
-
-"Oh, yes; I sent him a couple of dozen."
-
-"Fine birds they were, too. Now where did you get them from?"
-
-To my surprise the question provoked a burst of anger from the
-salesman.
-
-"Now, then, mister," said he, with his head cocked and his arms
-akimbo, "what are you driving at? Let's have it straight, now."
-
-"It is straight enough. I should like to know who sold you the
-geese which you supplied to the Alpha."
-
-"Well then, I shan't tell you. So now!"
-
-"Oh, it is a matter of no importance; but I don't know why you
-should be so warm over such a trifle."
-
-"Warm! You'd be as warm, maybe, if you were as pestered as I am.
-When I pay good money for a good article there should be an end
-of the business; but it's 'Where are the geese?' and 'Who did you
-sell the geese to?' and 'What will you take for the geese?' One
-would think they were the only geese in the world, to hear the
-fuss that is made over them."
-
-"Well, I have no connection with any other people who have been
-making inquiries," said Holmes carelessly. "If you won't tell us
-the bet is off, that is all. But I'm always ready to back my
-opinion on a matter of fowls, and I have a fiver on it that the
-bird I ate is country bred."
-
-"Well, then, you've lost your fiver, for it's town bred," snapped
-the salesman.
-
-"It's nothing of the kind."
-
-"I say it is."
-
-"I don't believe it."
-
-"D'you think you know more about fowls than I, who have handled
-them ever since I was a nipper? I tell you, all those birds that
-went to the Alpha were town bred."
-
-"You'll never persuade me to believe that."
-
-"Will you bet, then?"
-
-"It's merely taking your money, for I know that I am right. But
-I'll have a sovereign on with you, just to teach you not to be
-obstinate."
-
-The salesman chuckled grimly. "Bring me the books, Bill," said
-he.
-
-The small boy brought round a small thin volume and a great
-greasy-backed one, laying them out together beneath the hanging
-lamp.
-
-"Now then, Mr. Cocksure," said the salesman, "I thought that I
-was out of geese, but before I finish you'll find that there is
-still one left in my shop. You see this little book?"
-
-"Well?"
-
-"That's the list of the folk from whom I buy. D'you see? Well,
-then, here on this page are the country folk, and the numbers
-after their names are where their accounts are in the big ledger.
-Now, then! You see this other page in red ink? Well, that is a
-list of my town suppliers. Now, look at that third name. Just
-read it out to me."
-
-"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
-
-"Quite so. Now turn that up in the ledger."
-
-Holmes turned to the page indicated. "Here you are, 'Mrs.
-Oakshott, 117, Brixton Road, egg and poultry supplier.'"
-
-"Now, then, what's the last entry?"
-
-"'December 22nd. Twenty-four geese at 7s. 6d.'"
-
-"Quite so. There you are. And underneath?"
-
-"'Sold to Mr. Windigate of the Alpha, at 12s.'"
-
-"What have you to say now?"
-
-Sherlock Holmes looked deeply chagrined. He drew a sovereign from
-his pocket and threw it down upon the slab, turning away with the
-air of a man whose disgust is too deep for words. A few yards off
-he stopped under a lamp-post and laughed in the hearty, noiseless
-fashion which was peculiar to him.
-
-"When you see a man with whiskers of that cut and the 'Pink 'un'
-protruding out of his pocket, you can always draw him by a bet,"
-said he. "I daresay that if I had put 100 pounds down in front of
-him, that man would not have given me such complete information
-as was drawn from him by the idea that he was doing me on a
-wager. Well, Watson, we are, I fancy, nearing the end of our
-quest, and the only point which remains to be determined is
-whether we should go on to this Mrs. Oakshott to-night, or
-whether we should reserve it for to-morrow. It is clear from what
-that surly fellow said that there are others besides ourselves
-who are anxious about the matter, and I should--"
-
-His remarks were suddenly cut short by a loud hubbub which broke
-out from the stall which we had just left. Turning round we saw a
-little rat-faced fellow standing in the centre of the circle of
-yellow light which was thrown by the swinging lamp, while
-Breckinridge, the salesman, framed in the door of his stall, was
-shaking his fists fiercely at the cringing figure.
-
-"I've had enough of you and your geese," he shouted. "I wish you
-were all at the devil together. If you come pestering me any more
-with your silly talk I'll set the dog at you. You bring Mrs.
-Oakshott here and I'll answer her, but what have you to do with
-it? Did I buy the geese off you?"
-
-"No; but one of them was mine all the same," whined the little
-man.
-
-"Well, then, ask Mrs. Oakshott for it."
-
-"She told me to ask you."
-
-"Well, you can ask the King of Proosia, for all I care. I've had
-enough of it. Get out of this!" He rushed fiercely forward, and
-the inquirer flitted away into the darkness.
-
-"Ha! this may save us a visit to Brixton Road," whispered Holmes.
-"Come with me, and we will see what is to be made of this
-fellow." Striding through the scattered knots of people who
-lounged round the flaring stalls, my companion speedily overtook
-the little man and touched him upon the shoulder. He sprang
-round, and I could see in the gas-light that every vestige of
-colour had been driven from his face.
-
-"Who are you, then? What do you want?" he asked in a quavering
-voice.
-
-"You will excuse me," said Holmes blandly, "but I could not help
-overhearing the questions which you put to the salesman just now.
-I think that I could be of assistance to you."
-
-"You? Who are you? How could you know anything of the matter?"
-
-"My name is Sherlock Holmes. It is my business to know what other
-people don't know."
-
-"But you can know nothing of this?"
-
-"Excuse me, I know everything of it. You are endeavouring to
-trace some geese which were sold by Mrs. Oakshott, of Brixton
-Road, to a salesman named Breckinridge, by him in turn to Mr.
-Windigate, of the Alpha, and by him to his club, of which Mr.
-Henry Baker is a member."
-
-"Oh, sir, you are the very man whom I have longed to meet," cried
-the little fellow with outstretched hands and quivering fingers.
-"I can hardly explain to you how interested I am in this matter."
-
-Sherlock Holmes hailed a four-wheeler which was passing. "In that
-case we had better discuss it in a cosy room rather than in this
-wind-swept market-place," said he. "But pray tell me, before we
-go farther, who it is that I have the pleasure of assisting."
-
-The man hesitated for an instant. "My name is John Robinson," he
-answered with a sidelong glance.
-
-"No, no; the real name," said Holmes sweetly. "It is always
-awkward doing business with an alias."
-
-A flush sprang to the white cheeks of the stranger. "Well then,"
-said he, "my real name is James Ryder."
-
-"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
-step into the cab, and I shall soon be able to tell you
-everything which you would wish to know."
-
-The little man stood glancing from one to the other of us with
-half-frightened, half-hopeful eyes, as one who is not sure
-whether he is on the verge of a windfall or of a catastrophe.
-Then he stepped into the cab, and in half an hour we were back in
-the sitting-room at Baker Street. Nothing had been said during
-our drive, but the high, thin breathing of our new companion, and
-the claspings and unclaspings of his hands, spoke of the nervous
-tension within him.
-
-"Here we are!" said Holmes cheerily as we filed into the room.
-"The fire looks very seasonable in this weather. You look cold,
-Mr. Ryder. Pray take the basket-chair. I will just put on my
-slippers before we settle this little matter of yours. Now, then!
-You want to know what became of those geese?"
-
-"Yes, sir."
-
-"Or rather, I fancy, of that goose. It was one bird, I imagine in
-which you were interested--white, with a black bar across the
-tail."
-
-Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
-me where it went to?"
-
-"It came here."
-
-"Here?"
-
-"Yes, and a most remarkable bird it proved. I don't wonder that
-you should take an interest in it. It laid an egg after it was
-dead--the bonniest, brightest little blue egg that ever was seen.
-I have it here in my museum."
-
-Our visitor staggered to his feet and clutched the mantelpiece
-with his right hand. Holmes unlocked his strong-box and held up
-the blue carbuncle, which shone out like a star, with a cold,
-brilliant, many-pointed radiance. Ryder stood glaring with a
-drawn face, uncertain whether to claim or to disown it.
-
-"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
-you'll be into the fire! Give him an arm back into his chair,
-Watson. He's not got blood enough to go in for felony with
-impunity. Give him a dash of brandy. So! Now he looks a little
-more human. What a shrimp it is, to be sure!"
-
-For a moment he had staggered and nearly fallen, but the brandy
-brought a tinge of colour into his cheeks, and he sat staring
-with frightened eyes at his accuser.
-
-"I have almost every link in my hands, and all the proofs which I
-could possibly need, so there is little which you need tell me.
-Still, that little may as well be cleared up to make the case
-complete. You had heard, Ryder, of this blue stone of the
-Countess of Morcar's?"
-
-"It was Catherine Cusack who told me of it," said he in a
-crackling voice.
-
-"I see--her ladyship's waiting-maid. Well, the temptation of
-sudden wealth so easily acquired was too much for you, as it has
-been for better men before you; but you were not very scrupulous
-in the means you used. It seems to me, Ryder, that there is the
-making of a very pretty villain in you. You knew that this man
-Horner, the plumber, had been concerned in some such matter
-before, and that suspicion would rest the more readily upon him.
-What did you do, then? You made some small job in my lady's
-room--you and your confederate Cusack--and you managed that he
-should be the man sent for. Then, when he had left, you rifled
-the jewel-case, raised the alarm, and had this unfortunate man
-arrested. You then--"
-
-Ryder threw himself down suddenly upon the rug and clutched at my
-companion's knees. "For God's sake, have mercy!" he shrieked.
-"Think of my father! Of my mother! It would break their hearts. I
-never went wrong before! I never will again. I swear it. I'll
-swear it on a Bible. Oh, don't bring it into court! For Christ's
-sake, don't!"
-
-"Get back into your chair!" said Holmes sternly. "It is very well
-to cringe and crawl now, but you thought little enough of this
-poor Horner in the dock for a crime of which he knew nothing."
-
-"I will fly, Mr. Holmes. I will leave the country, sir. Then the
-charge against him will break down."
-
-"Hum! We will talk about that. And now let us hear a true account
-of the next act. How came the stone into the goose, and how came
-the goose into the open market? Tell us the truth, for there lies
-your only hope of safety."
-
-Ryder passed his tongue over his parched lips. "I will tell you
-it just as it happened, sir," said he. "When Horner had been
-arrested, it seemed to me that it would be best for me to get
-away with the stone at once, for I did not know at what moment
-the police might not take it into their heads to search me and my
-room. There was no place about the hotel where it would be safe.
-I went out, as if on some commission, and I made for my sister's
-house. She had married a man named Oakshott, and lived in Brixton
-Road, where she fattened fowls for the market. All the way there
-every man I met seemed to me to be a policeman or a detective;
-and, for all that it was a cold night, the sweat was pouring down
-my face before I came to the Brixton Road. My sister asked me
-what was the matter, and why I was so pale; but I told her that I
-had been upset by the jewel robbery at the hotel. Then I went
-into the back yard and smoked a pipe and wondered what it would
-be best to do.
-
-"I had a friend once called Maudsley, who went to the bad, and
-has just been serving his time in Pentonville. One day he had met
-me, and fell into talk about the ways of thieves, and how they
-could get rid of what they stole. I knew that he would be true to
-me, for I knew one or two things about him; so I made up my mind
-to go right on to Kilburn, where he lived, and take him into my
-confidence. He would show me how to turn the stone into money.
-But how to get to him in safety? I thought of the agonies I had
-gone through in coming from the hotel. I might at any moment be
-seized and searched, and there would be the stone in my waistcoat
-pocket. I was leaning against the wall at the time and looking at
-the geese which were waddling about round my feet, and suddenly
-an idea came into my head which showed me how I could beat the
-best detective that ever lived.
-
-"My sister had told me some weeks before that I might have the
-pick of her geese for a Christmas present, and I knew that she
-was always as good as her word. I would take my goose now, and in
-it I would carry my stone to Kilburn. There was a little shed in
-the yard, and behind this I drove one of the birds--a fine big
-one, white, with a barred tail. I caught it, and prying its bill
-open, I thrust the stone down its throat as far as my finger
-could reach. The bird gave a gulp, and I felt the stone pass
-along its gullet and down into its crop. But the creature flapped
-and struggled, and out came my sister to know what was the
-matter. As I turned to speak to her the brute broke loose and
-fluttered off among the others.
-
-"'Whatever were you doing with that bird, Jem?' says she.
-
-"'Well,' said I, 'you said you'd give me one for Christmas, and I
-was feeling which was the fattest.'
-
-"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
-call it. It's the big white one over yonder. There's twenty-six
-of them, which makes one for you, and one for us, and two dozen
-for the market.'
-
-"'Thank you, Maggie,' says I; 'but if it is all the same to you,
-I'd rather have that one I was handling just now.'
-
-"'The other is a good three pound heavier,' said she, 'and we
-fattened it expressly for you.'
-
-"'Never mind. I'll have the other, and I'll take it now,' said I.
-
-"'Oh, just as you like,' said she, a little huffed. 'Which is it
-you want, then?'
-
-"'That white one with the barred tail, right in the middle of the
-flock.'
-
-"'Oh, very well. Kill it and take it with you.'
-
-"Well, I did what she said, Mr. Holmes, and I carried the bird
-all the way to Kilburn. I told my pal what I had done, for he was
-a man that it was easy to tell a thing like that to. He laughed
-until he choked, and we got a knife and opened the goose. My
-heart turned to water, for there was no sign of the stone, and I
-knew that some terrible mistake had occurred. I left the bird,
-rushed back to my sister's, and hurried into the back yard. There
-was not a bird to be seen there.
-
-"'Where are they all, Maggie?' I cried.
-
-"'Gone to the dealer's, Jem.'
-
-"'Which dealer's?'
-
-"'Breckinridge, of Covent Garden.'
-
-"'But was there another with a barred tail?' I asked, 'the same
-as the one I chose?'
-
-"'Yes, Jem; there were two barred-tailed ones, and I could never
-tell them apart.'
-
-"Well, then, of course I saw it all, and I ran off as hard as my
-feet would carry me to this man Breckinridge; but he had sold the
-lot at once, and not one word would he tell me as to where they
-had gone. You heard him yourselves to-night. Well, he has always
-answered me like that. My sister thinks that I am going mad.
-Sometimes I think that I am myself. And now--and now I am myself
-a branded thief, without ever having touched the wealth for which
-I sold my character. God help me! God help me!" He burst into
-convulsive sobbing, with his face buried in his hands.
-
-There was a long silence, broken only by his heavy breathing and
-by the measured tapping of Sherlock Holmes' finger-tips upon the
-edge of the table. Then my friend rose and threw open the door.
-
-"Get out!" said he.
-
-"What, sir! Oh, Heaven bless you!"
-
-"No more words. Get out!"
-
-And no more words were needed. There was a rush, a clatter upon
-the stairs, the bang of a door, and the crisp rattle of running
-footfalls from the street.
-
-"After all, Watson," said Holmes, reaching up his hand for his
-clay pipe, "I am not retained by the police to supply their
-deficiencies. If Horner were in danger it would be another thing;
-but this fellow will not appear against him, and the case must
-collapse. I suppose that I am commuting a felony, but it is just
-possible that I am saving a soul. This fellow will not go wrong
-again; he is too terribly frightened. Send him to gaol now, and
-you make him a gaol-bird for life. Besides, it is the season of
-forgiveness. Chance has put in our way a most singular and
-whimsical problem, and its solution is its own reward. If you
-will have the goodness to touch the bell, Doctor, we will begin
-another investigation, in which, also a bird will be the chief
-feature."
-
-
-
-VIII. THE ADVENTURE OF THE SPECKLED BAND
-
-On glancing over my notes of the seventy odd cases in which I
-have during the last eight years studied the methods of my friend
-Sherlock Holmes, I find many tragic, some comic, a large number
-merely strange, but none commonplace; for, working as he did
-rather for the love of his art than for the acquirement of
-wealth, he refused to associate himself with any investigation
-which did not tend towards the unusual, and even the fantastic.
-Of all these varied cases, however, I cannot recall any which
-presented more singular features than that which was associated
-with the well-known Surrey family of the Roylotts of Stoke Moran.
-The events in question occurred in the early days of my
-association with Holmes, when we were sharing rooms as bachelors
-in Baker Street. It is possible that I might have placed them
-upon record before, but a promise of secrecy was made at the
-time, from which I have only been freed during the last month by
-the untimely death of the lady to whom the pledge was given. It
-is perhaps as well that the facts should now come to light, for I
-have reasons to know that there are widespread rumours as to the
-death of Dr. Grimesby Roylott which tend to make the matter even
-more terrible than the truth.
-
-It was early in April in the year '83 that I woke one morning to
-find Sherlock Holmes standing, fully dressed, by the side of my
-bed. He was a late riser, as a rule, and as the clock on the
-mantelpiece showed me that it was only a quarter-past seven, I
-blinked up at him in some surprise, and perhaps just a little
-resentment, for I was myself regular in my habits.
-
-"Very sorry to knock you up, Watson," said he, "but it's the
-common lot this morning. Mrs. Hudson has been knocked up, she
-retorted upon me, and I on you."
-
-"What is it, then--a fire?"
-
-"No; a client. It seems that a young lady has arrived in a
-considerable state of excitement, who insists upon seeing me. She
-is waiting now in the sitting-room. Now, when young ladies wander
-about the metropolis at this hour of the morning, and knock
-sleepy people up out of their beds, I presume that it is
-something very pressing which they have to communicate. Should it
-prove to be an interesting case, you would, I am sure, wish to
-follow it from the outset. I thought, at any rate, that I should
-call you and give you the chance."
-
-"My dear fellow, I would not miss it for anything."
-
-I had no keener pleasure than in following Holmes in his
-professional investigations, and in admiring the rapid
-deductions, as swift as intuitions, and yet always founded on a
-logical basis with which he unravelled the problems which were
-submitted to him. I rapidly threw on my clothes and was ready in
-a few minutes to accompany my friend down to the sitting-room. A
-lady dressed in black and heavily veiled, who had been sitting in
-the window, rose as we entered.
-
-"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
-Holmes. This is my intimate friend and associate, Dr. Watson,
-before whom you can speak as freely as before myself. Ha! I am
-glad to see that Mrs. Hudson has had the good sense to light the
-fire. Pray draw up to it, and I shall order you a cup of hot
-coffee, for I observe that you are shivering."
-
-"It is not cold which makes me shiver," said the woman in a low
-voice, changing her seat as requested.
-
-"What, then?"
-
-"It is fear, Mr. Holmes. It is terror." She raised her veil as
-she spoke, and we could see that she was indeed in a pitiable
-state of agitation, her face all drawn and grey, with restless
-frightened eyes, like those of some hunted animal. Her features
-and figure were those of a woman of thirty, but her hair was shot
-with premature grey, and her expression was weary and haggard.
-Sherlock Holmes ran her over with one of his quick,
-all-comprehensive glances.
-
-"You must not fear," said he soothingly, bending forward and
-patting her forearm. "We shall soon set matters right, I have no
-doubt. You have come in by train this morning, I see."
-
-"You know me, then?"
-
-"No, but I observe the second half of a return ticket in the palm
-of your left glove. You must have started early, and yet you had
-a good drive in a dog-cart, along heavy roads, before you reached
-the station."
-
-The lady gave a violent start and stared in bewilderment at my
-companion.
-
-"There is no mystery, my dear madam," said he, smiling. "The left
-arm of your jacket is spattered with mud in no less than seven
-places. The marks are perfectly fresh. There is no vehicle save a
-dog-cart which throws up mud in that way, and then only when you
-sit on the left-hand side of the driver."
-
-"Whatever your reasons may be, you are perfectly correct," said
-she. "I started from home before six, reached Leatherhead at
-twenty past, and came in by the first train to Waterloo. Sir, I
-can stand this strain no longer; I shall go mad if it continues.
-I have no one to turn to--none, save only one, who cares for me,
-and he, poor fellow, can be of little aid. I have heard of you,
-Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
-helped in the hour of her sore need. It was from her that I had
-your address. Oh, sir, do you not think that you could help me,
-too, and at least throw a little light through the dense darkness
-which surrounds me? At present it is out of my power to reward
-you for your services, but in a month or six weeks I shall be
-married, with the control of my own income, and then at least you
-shall not find me ungrateful."
-
-Holmes turned to his desk and, unlocking it, drew out a small
-case-book, which he consulted.
-
-"Farintosh," said he. "Ah yes, I recall the case; it was
-concerned with an opal tiara. I think it was before your time,
-Watson. I can only say, madam, that I shall be happy to devote
-the same care to your case as I did to that of your friend. As to
-reward, my profession is its own reward; but you are at liberty
-to defray whatever expenses I may be put to, at the time which
-suits you best. And now I beg that you will lay before us
-everything that may help us in forming an opinion upon the
-matter."
-
-"Alas!" replied our visitor, "the very horror of my situation
-lies in the fact that my fears are so vague, and my suspicions
-depend so entirely upon small points, which might seem trivial to
-another, that even he to whom of all others I have a right to
-look for help and advice looks upon all that I tell him about it
-as the fancies of a nervous woman. He does not say so, but I can
-read it from his soothing answers and averted eyes. But I have
-heard, Mr. Holmes, that you can see deeply into the manifold
-wickedness of the human heart. You may advise me how to walk amid
-the dangers which encompass me."
-
-"I am all attention, madam."
-
-"My name is Helen Stoner, and I am living with my stepfather, who
-is the last survivor of one of the oldest Saxon families in
-England, the Roylotts of Stoke Moran, on the western border of
-Surrey."
-
-Holmes nodded his head. "The name is familiar to me," said he.
-
-"The family was at one time among the richest in England, and the
-estates extended over the borders into Berkshire in the north,
-and Hampshire in the west. In the last century, however, four
-successive heirs were of a dissolute and wasteful disposition,
-and the family ruin was eventually completed by a gambler in the
-days of the Regency. Nothing was left save a few acres of ground,
-and the two-hundred-year-old house, which is itself crushed under
-a heavy mortgage. The last squire dragged out his existence
-there, living the horrible life of an aristocratic pauper; but
-his only son, my stepfather, seeing that he must adapt himself to
-the new conditions, obtained an advance from a relative, which
-enabled him to take a medical degree and went out to Calcutta,
-where, by his professional skill and his force of character, he
-established a large practice. In a fit of anger, however, caused
-by some robberies which had been perpetrated in the house, he
-beat his native butler to death and narrowly escaped a capital
-sentence. As it was, he suffered a long term of imprisonment and
-afterwards returned to England a morose and disappointed man.
-
-"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
-the young widow of Major-General Stoner, of the Bengal Artillery.
-My sister Julia and I were twins, and we were only two years old
-at the time of my mother's re-marriage. She had a considerable
-sum of money--not less than 1000 pounds a year--and this she
-bequeathed to Dr. Roylott entirely while we resided with him,
-with a provision that a certain annual sum should be allowed to
-each of us in the event of our marriage. Shortly after our return
-to England my mother died--she was killed eight years ago in a
-railway accident near Crewe. Dr. Roylott then abandoned his
-attempts to establish himself in practice in London and took us
-to live with him in the old ancestral house at Stoke Moran. The
-money which my mother had left was enough for all our wants, and
-there seemed to be no obstacle to our happiness.
-
-"But a terrible change came over our stepfather about this time.
-Instead of making friends and exchanging visits with our
-neighbours, who had at first been overjoyed to see a Roylott of
-Stoke Moran back in the old family seat, he shut himself up in
-his house and seldom came out save to indulge in ferocious
-quarrels with whoever might cross his path. Violence of temper
-approaching to mania has been hereditary in the men of the
-family, and in my stepfather's case it had, I believe, been
-intensified by his long residence in the tropics. A series of
-disgraceful brawls took place, two of which ended in the
-police-court, until at last he became the terror of the village,
-and the folks would fly at his approach, for he is a man of
-immense strength, and absolutely uncontrollable in his anger.
-
-"Last week he hurled the local blacksmith over a parapet into a
-stream, and it was only by paying over all the money which I
-could gather together that I was able to avert another public
-exposure. He had no friends at all save the wandering gipsies,
-and he would give these vagabonds leave to encamp upon the few
-acres of bramble-covered land which represent the family estate,
-and would accept in return the hospitality of their tents,
-wandering away with them sometimes for weeks on end. He has a
-passion also for Indian animals, which are sent over to him by a
-correspondent, and he has at this moment a cheetah and a baboon,
-which wander freely over his grounds and are feared by the
-villagers almost as much as their master.
-
-"You can imagine from what I say that my poor sister Julia and I
-had no great pleasure in our lives. No servant would stay with
-us, and for a long time we did all the work of the house. She was
-but thirty at the time of her death, and yet her hair had already
-begun to whiten, even as mine has."
-
-"Your sister is dead, then?"
-
-"She died just two years ago, and it is of her death that I wish
-to speak to you. You can understand that, living the life which I
-have described, we were little likely to see anyone of our own
-age and position. We had, however, an aunt, my mother's maiden
-sister, Miss Honoria Westphail, who lives near Harrow, and we
-were occasionally allowed to pay short visits at this lady's
-house. Julia went there at Christmas two years ago, and met there
-a half-pay major of marines, to whom she became engaged. My
-stepfather learned of the engagement when my sister returned and
-offered no objection to the marriage; but within a fortnight of
-the day which had been fixed for the wedding, the terrible event
-occurred which has deprived me of my only companion."
-
-Sherlock Holmes had been leaning back in his chair with his eyes
-closed and his head sunk in a cushion, but he half opened his
-lids now and glanced across at his visitor.
-
-"Pray be precise as to details," said he.
-
-"It is easy for me to be so, for every event of that dreadful
-time is seared into my memory. The manor-house is, as I have
-already said, very old, and only one wing is now inhabited. The
-bedrooms in this wing are on the ground floor, the sitting-rooms
-being in the central block of the buildings. Of these bedrooms
-the first is Dr. Roylott's, the second my sister's, and the third
-my own. There is no communication between them, but they all open
-out into the same corridor. Do I make myself plain?"
-
-"Perfectly so."
-
-"The windows of the three rooms open out upon the lawn. That
-fatal night Dr. Roylott had gone to his room early, though we
-knew that he had not retired to rest, for my sister was troubled
-by the smell of the strong Indian cigars which it was his custom
-to smoke. She left her room, therefore, and came into mine, where
-she sat for some time, chatting about her approaching wedding. At
-eleven o'clock she rose to leave me, but she paused at the door
-and looked back.
-
-"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
-in the dead of the night?'
-
-"'Never,' said I.
-
-"'I suppose that you could not possibly whistle, yourself, in
-your sleep?'
-
-"'Certainly not. But why?'
-
-"'Because during the last few nights I have always, about three
-in the morning, heard a low, clear whistle. I am a light sleeper,
-and it has awakened me. I cannot tell where it came from--perhaps
-from the next room, perhaps from the lawn. I thought that I would
-just ask you whether you had heard it.'
-
-"'No, I have not. It must be those wretched gipsies in the
-plantation.'
-
-"'Very likely. And yet if it were on the lawn, I wonder that you
-did not hear it also.'
-
-"'Ah, but I sleep more heavily than you.'
-
-"'Well, it is of no great consequence, at any rate.' She smiled
-back at me, closed my door, and a few moments later I heard her
-key turn in the lock."
-
-"Indeed," said Holmes. "Was it your custom always to lock
-yourselves in at night?"
-
-"Always."
-
-"And why?"
-
-"I think that I mentioned to you that the doctor kept a cheetah
-and a baboon. We had no feeling of security unless our doors were
-locked."
-
-"Quite so. Pray proceed with your statement."
-
-"I could not sleep that night. A vague feeling of impending
-misfortune impressed me. My sister and I, you will recollect,
-were twins, and you know how subtle are the links which bind two
-souls which are so closely allied. It was a wild night. The wind
-was howling outside, and the rain was beating and splashing
-against the windows. Suddenly, amid all the hubbub of the gale,
-there burst forth the wild scream of a terrified woman. I knew
-that it was my sister's voice. I sprang from my bed, wrapped a
-shawl round me, and rushed into the corridor. As I opened my door
-I seemed to hear a low whistle, such as my sister described, and
-a few moments later a clanging sound, as if a mass of metal had
-fallen. As I ran down the passage, my sister's door was unlocked,
-and revolved slowly upon its hinges. I stared at it
-horror-stricken, not knowing what was about to issue from it. By
-the light of the corridor-lamp I saw my sister appear at the
-opening, her face blanched with terror, her hands groping for
-help, her whole figure swaying to and fro like that of a
-drunkard. I ran to her and threw my arms round her, but at that
-moment her knees seemed to give way and she fell to the ground.
-She writhed as one who is in terrible pain, and her limbs were
-dreadfully convulsed. At first I thought that she had not
-recognised me, but as I bent over her she suddenly shrieked out
-in a voice which I shall never forget, 'Oh, my God! Helen! It was
-the band! The speckled band!' There was something else which she
-would fain have said, and she stabbed with her finger into the
-air in the direction of the doctor's room, but a fresh convulsion
-seized her and choked her words. I rushed out, calling loudly for
-my stepfather, and I met him hastening from his room in his
-dressing-gown. When he reached my sister's side she was
-unconscious, and though he poured brandy down her throat and sent
-for medical aid from the village, all efforts were in vain, for
-she slowly sank and died without having recovered her
-consciousness. Such was the dreadful end of my beloved sister."
-
-"One moment," said Holmes, "are you sure about this whistle and
-metallic sound? Could you swear to it?"
-
-"That was what the county coroner asked me at the inquiry. It is
-my strong impression that I heard it, and yet, among the crash of
-the gale and the creaking of an old house, I may possibly have
-been deceived."
-
-"Was your sister dressed?"
-
-"No, she was in her night-dress. In her right hand was found the
-charred stump of a match, and in her left a match-box."
-
-"Showing that she had struck a light and looked about her when
-the alarm took place. That is important. And what conclusions did
-the coroner come to?"
-
-"He investigated the case with great care, for Dr. Roylott's
-conduct had long been notorious in the county, but he was unable
-to find any satisfactory cause of death. My evidence showed that
-the door had been fastened upon the inner side, and the windows
-were blocked by old-fashioned shutters with broad iron bars,
-which were secured every night. The walls were carefully sounded,
-and were shown to be quite solid all round, and the flooring was
-also thoroughly examined, with the same result. The chimney is
-wide, but is barred up by four large staples. It is certain,
-therefore, that my sister was quite alone when she met her end.
-Besides, there were no marks of any violence upon her."
-
-"How about poison?"
-
-"The doctors examined her for it, but without success."
-
-"What do you think that this unfortunate lady died of, then?"
-
-"It is my belief that she died of pure fear and nervous shock,
-though what it was that frightened her I cannot imagine."
-
-"Were there gipsies in the plantation at the time?"
-
-"Yes, there are nearly always some there."
-
-"Ah, and what did you gather from this allusion to a band--a
-speckled band?"
-
-"Sometimes I have thought that it was merely the wild talk of
-delirium, sometimes that it may have referred to some band of
-people, perhaps to these very gipsies in the plantation. I do not
-know whether the spotted handkerchiefs which so many of them wear
-over their heads might have suggested the strange adjective which
-she used."
-
-Holmes shook his head like a man who is far from being satisfied.
-
-"These are very deep waters," said he; "pray go on with your
-narrative."
-
-"Two years have passed since then, and my life has been until
-lately lonelier than ever. A month ago, however, a dear friend,
-whom I have known for many years, has done me the honour to ask
-my hand in marriage. His name is Armitage--Percy Armitage--the
-second son of Mr. Armitage, of Crane Water, near Reading. My
-stepfather has offered no opposition to the match, and we are to
-be married in the course of the spring. Two days ago some repairs
-were started in the west wing of the building, and my bedroom
-wall has been pierced, so that I have had to move into the
-chamber in which my sister died, and to sleep in the very bed in
-which she slept. Imagine, then, my thrill of terror when last
-night, as I lay awake, thinking over her terrible fate, I
-suddenly heard in the silence of the night the low whistle which
-had been the herald of her own death. I sprang up and lit the
-lamp, but nothing was to be seen in the room. I was too shaken to
-go to bed again, however, so I dressed, and as soon as it was
-daylight I slipped down, got a dog-cart at the Crown Inn, which
-is opposite, and drove to Leatherhead, from whence I have come on
-this morning with the one object of seeing you and asking your
-advice."
-
-"You have done wisely," said my friend. "But have you told me
-all?"
-
-"Yes, all."
-
-"Miss Roylott, you have not. You are screening your stepfather."
-
-"Why, what do you mean?"
-
-For answer Holmes pushed back the frill of black lace which
-fringed the hand that lay upon our visitor's knee. Five little
-livid spots, the marks of four fingers and a thumb, were printed
-upon the white wrist.
-
-"You have been cruelly used," said Holmes.
-
-The lady coloured deeply and covered over her injured wrist. "He
-is a hard man," she said, "and perhaps he hardly knows his own
-strength."
-
-There was a long silence, during which Holmes leaned his chin
-upon his hands and stared into the crackling fire.
-
-"This is a very deep business," he said at last. "There are a
-thousand details which I should desire to know before I decide
-upon our course of action. Yet we have not a moment to lose. If
-we were to come to Stoke Moran to-day, would it be possible for
-us to see over these rooms without the knowledge of your
-stepfather?"
-
-"As it happens, he spoke of coming into town to-day upon some
-most important business. It is probable that he will be away all
-day, and that there would be nothing to disturb you. We have a
-housekeeper now, but she is old and foolish, and I could easily
-get her out of the way."
-
-"Excellent. You are not averse to this trip, Watson?"
-
-"By no means."
-
-"Then we shall both come. What are you going to do yourself?"
-
-"I have one or two things which I would wish to do now that I am
-in town. But I shall return by the twelve o'clock train, so as to
-be there in time for your coming."
-
-"And you may expect us early in the afternoon. I have myself some
-small business matters to attend to. Will you not wait and
-breakfast?"
-
-"No, I must go. My heart is lightened already since I have
-confided my trouble to you. I shall look forward to seeing you
-again this afternoon." She dropped her thick black veil over her
-face and glided from the room.
-
-"And what do you think of it all, Watson?" asked Sherlock Holmes,
-leaning back in his chair.
-
-"It seems to me to be a most dark and sinister business."
-
-"Dark enough and sinister enough."
-
-"Yet if the lady is correct in saying that the flooring and walls
-are sound, and that the door, window, and chimney are impassable,
-then her sister must have been undoubtedly alone when she met her
-mysterious end."
-
-"What becomes, then, of these nocturnal whistles, and what of the
-very peculiar words of the dying woman?"
-
-"I cannot think."
-
-"When you combine the ideas of whistles at night, the presence of
-a band of gipsies who are on intimate terms with this old doctor,
-the fact that we have every reason to believe that the doctor has
-an interest in preventing his stepdaughter's marriage, the dying
-allusion to a band, and, finally, the fact that Miss Helen Stoner
-heard a metallic clang, which might have been caused by one of
-those metal bars that secured the shutters falling back into its
-place, I think that there is good ground to think that the
-mystery may be cleared along those lines."
-
-"But what, then, did the gipsies do?"
-
-"I cannot imagine."
-
-"I see many objections to any such theory."
-
-"And so do I. It is precisely for that reason that we are going
-to Stoke Moran this day. I want to see whether the objections are
-fatal, or if they may be explained away. But what in the name of
-the devil!"
-
-The ejaculation had been drawn from my companion by the fact that
-our door had been suddenly dashed open, and that a huge man had
-framed himself in the aperture. His costume was a peculiar
-mixture of the professional and of the agricultural, having a
-black top-hat, a long frock-coat, and a pair of high gaiters,
-with a hunting-crop swinging in his hand. So tall was he that his
-hat actually brushed the cross bar of the doorway, and his
-breadth seemed to span it across from side to side. A large face,
-seared with a thousand wrinkles, burned yellow with the sun, and
-marked with every evil passion, was turned from one to the other
-of us, while his deep-set, bile-shot eyes, and his high, thin,
-fleshless nose, gave him somewhat the resemblance to a fierce old
-bird of prey.
-
-"Which of you is Holmes?" asked this apparition.
-
-"My name, sir; but you have the advantage of me," said my
-companion quietly.
-
-"I am Dr. Grimesby Roylott, of Stoke Moran."
-
-"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
-
-"I will do nothing of the kind. My stepdaughter has been here. I
-have traced her. What has she been saying to you?"
-
-"It is a little cold for the time of the year," said Holmes.
-
-"What has she been saying to you?" screamed the old man
-furiously.
-
-"But I have heard that the crocuses promise well," continued my
-companion imperturbably.
-
-"Ha! You put me off, do you?" said our new visitor, taking a step
-forward and shaking his hunting-crop. "I know you, you scoundrel!
-I have heard of you before. You are Holmes, the meddler."
-
-My friend smiled.
-
-"Holmes, the busybody!"
-
-His smile broadened.
-
-"Holmes, the Scotland Yard Jack-in-office!"
-
-Holmes chuckled heartily. "Your conversation is most
-entertaining," said he. "When you go out close the door, for
-there is a decided draught."
-
-"I will go when I have said my say. Don't you dare to meddle with
-my affairs. I know that Miss Stoner has been here. I traced her!
-I am a dangerous man to fall foul of! See here." He stepped
-swiftly forward, seized the poker, and bent it into a curve with
-his huge brown hands.
-
-"See that you keep yourself out of my grip," he snarled, and
-hurling the twisted poker into the fireplace he strode out of the
-room.
-
-"He seems a very amiable person," said Holmes, laughing. "I am
-not quite so bulky, but if he had remained I might have shown him
-that my grip was not much more feeble than his own." As he spoke
-he picked up the steel poker and, with a sudden effort,
-straightened it out again.
-
-"Fancy his having the insolence to confound me with the official
-detective force! This incident gives zest to our investigation,
-however, and I only trust that our little friend will not suffer
-from her imprudence in allowing this brute to trace her. And now,
-Watson, we shall order breakfast, and afterwards I shall walk
-down to Doctors' Commons, where I hope to get some data which may
-help us in this matter."
-
-
-It was nearly one o'clock when Sherlock Holmes returned from his
-excursion. He held in his hand a sheet of blue paper, scrawled
-over with notes and figures.
-
-"I have seen the will of the deceased wife," said he. "To
-determine its exact meaning I have been obliged to work out the
-present prices of the investments with which it is concerned. The
-total income, which at the time of the wife's death was little
-short of 1100 pounds, is now, through the fall in agricultural
-prices, not more than 750 pounds. Each daughter can claim an
-income of 250 pounds, in case of marriage. It is evident,
-therefore, that if both girls had married, this beauty would have
-had a mere pittance, while even one of them would cripple him to
-a very serious extent. My morning's work has not been wasted,
-since it has proved that he has the very strongest motives for
-standing in the way of anything of the sort. And now, Watson,
-this is too serious for dawdling, especially as the old man is
-aware that we are interesting ourselves in his affairs; so if you
-are ready, we shall call a cab and drive to Waterloo. I should be
-very much obliged if you would slip your revolver into your
-pocket. An Eley's No. 2 is an excellent argument with gentlemen
-who can twist steel pokers into knots. That and a tooth-brush
-are, I think, all that we need."
-
-At Waterloo we were fortunate in catching a train for
-Leatherhead, where we hired a trap at the station inn and drove
-for four or five miles through the lovely Surrey lanes. It was a
-perfect day, with a bright sun and a few fleecy clouds in the
-heavens. The trees and wayside hedges were just throwing out
-their first green shoots, and the air was full of the pleasant
-smell of the moist earth. To me at least there was a strange
-contrast between the sweet promise of the spring and this
-sinister quest upon which we were engaged. My companion sat in
-the front of the trap, his arms folded, his hat pulled down over
-his eyes, and his chin sunk upon his breast, buried in the
-deepest thought. Suddenly, however, he started, tapped me on the
-shoulder, and pointed over the meadows.
-
-"Look there!" said he.
-
-A heavily timbered park stretched up in a gentle slope,
-thickening into a grove at the highest point. From amid the
-branches there jutted out the grey gables and high roof-tree of a
-very old mansion.
-
-"Stoke Moran?" said he.
-
-"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
-the driver.
-
-"There is some building going on there," said Holmes; "that is
-where we are going."
-
-"There's the village," said the driver, pointing to a cluster of
-roofs some distance to the left; "but if you want to get to the
-house, you'll find it shorter to get over this stile, and so by
-the foot-path over the fields. There it is, where the lady is
-walking."
-
-"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
-his eyes. "Yes, I think we had better do as you suggest."
-
-We got off, paid our fare, and the trap rattled back on its way
-to Leatherhead.
-
-"I thought it as well," said Holmes as we climbed the stile,
-"that this fellow should think we had come here as architects, or
-on some definite business. It may stop his gossip.
-Good-afternoon, Miss Stoner. You see that we have been as good as
-our word."
-
-Our client of the morning had hurried forward to meet us with a
-face which spoke her joy. "I have been waiting so eagerly for
-you," she cried, shaking hands with us warmly. "All has turned
-out splendidly. Dr. Roylott has gone to town, and it is unlikely
-that he will be back before evening."
-
-"We have had the pleasure of making the doctor's acquaintance,"
-said Holmes, and in a few words he sketched out what had
-occurred. Miss Stoner turned white to the lips as she listened.
-
-"Good heavens!" she cried, "he has followed me, then."
-
-"So it appears."
-
-"He is so cunning that I never know when I am safe from him. What
-will he say when he returns?"
-
-"He must guard himself, for he may find that there is someone
-more cunning than himself upon his track. You must lock yourself
-up from him to-night. If he is violent, we shall take you away to
-your aunt's at Harrow. Now, we must make the best use of our
-time, so kindly take us at once to the rooms which we are to
-examine."
-
-The building was of grey, lichen-blotched stone, with a high
-central portion and two curving wings, like the claws of a crab,
-thrown out on each side. In one of these wings the windows were
-broken and blocked with wooden boards, while the roof was partly
-caved in, a picture of ruin. The central portion was in little
-better repair, but the right-hand block was comparatively modern,
-and the blinds in the windows, with the blue smoke curling up
-from the chimneys, showed that this was where the family resided.
-Some scaffolding had been erected against the end wall, and the
-stone-work had been broken into, but there were no signs of any
-workmen at the moment of our visit. Holmes walked slowly up and
-down the ill-trimmed lawn and examined with deep attention the
-outsides of the windows.
-
-"This, I take it, belongs to the room in which you used to sleep,
-the centre one to your sister's, and the one next to the main
-building to Dr. Roylott's chamber?"
-
-"Exactly so. But I am now sleeping in the middle one."
-
-"Pending the alterations, as I understand. By the way, there does
-not seem to be any very pressing need for repairs at that end
-wall."
-
-"There were none. I believe that it was an excuse to move me from
-my room."
-
-"Ah! that is suggestive. Now, on the other side of this narrow
-wing runs the corridor from which these three rooms open. There
-are windows in it, of course?"
-
-"Yes, but very small ones. Too narrow for anyone to pass
-through."
-
-"As you both locked your doors at night, your rooms were
-unapproachable from that side. Now, would you have the kindness
-to go into your room and bar your shutters?"
-
-Miss Stoner did so, and Holmes, after a careful examination
-through the open window, endeavoured in every way to force the
-shutter open, but without success. There was no slit through
-which a knife could be passed to raise the bar. Then with his
-lens he tested the hinges, but they were of solid iron, built
-firmly into the massive masonry. "Hum!" said he, scratching his
-chin in some perplexity, "my theory certainly presents some
-difficulties. No one could pass these shutters if they were
-bolted. Well, we shall see if the inside throws any light upon
-the matter."
-
-A small side door led into the whitewashed corridor from which
-the three bedrooms opened. Holmes refused to examine the third
-chamber, so we passed at once to the second, that in which Miss
-Stoner was now sleeping, and in which her sister had met with her
-fate. It was a homely little room, with a low ceiling and a
-gaping fireplace, after the fashion of old country-houses. A
-brown chest of drawers stood in one corner, a narrow
-white-counterpaned bed in another, and a dressing-table on the
-left-hand side of the window. These articles, with two small
-wicker-work chairs, made up all the furniture in the room save
-for a square of Wilton carpet in the centre. The boards round and
-the panelling of the walls were of brown, worm-eaten oak, so old
-and discoloured that it may have dated from the original building
-of the house. Holmes drew one of the chairs into a corner and sat
-silent, while his eyes travelled round and round and up and down,
-taking in every detail of the apartment.
-
-"Where does that bell communicate with?" he asked at last
-pointing to a thick bell-rope which hung down beside the bed, the
-tassel actually lying upon the pillow.
-
-"It goes to the housekeeper's room."
-
-"It looks newer than the other things?"
-
-"Yes, it was only put there a couple of years ago."
-
-"Your sister asked for it, I suppose?"
-
-"No, I never heard of her using it. We used always to get what we
-wanted for ourselves."
-
-"Indeed, it seemed unnecessary to put so nice a bell-pull there.
-You will excuse me for a few minutes while I satisfy myself as to
-this floor." He threw himself down upon his face with his lens in
-his hand and crawled swiftly backward and forward, examining
-minutely the cracks between the boards. Then he did the same with
-the wood-work with which the chamber was panelled. Finally he
-walked over to the bed and spent some time in staring at it and
-in running his eye up and down the wall. Finally he took the
-bell-rope in his hand and gave it a brisk tug.
-
-"Why, it's a dummy," said he.
-
-"Won't it ring?"
-
-"No, it is not even attached to a wire. This is very interesting.
-You can see now that it is fastened to a hook just above where
-the little opening for the ventilator is."
-
-"How very absurd! I never noticed that before."
-
-"Very strange!" muttered Holmes, pulling at the rope. "There are
-one or two very singular points about this room. For example,
-what a fool a builder must be to open a ventilator into another
-room, when, with the same trouble, he might have communicated
-with the outside air!"
-
-"That is also quite modern," said the lady.
-
-"Done about the same time as the bell-rope?" remarked Holmes.
-
-"Yes, there were several little changes carried out about that
-time."
-
-"They seem to have been of a most interesting character--dummy
-bell-ropes, and ventilators which do not ventilate. With your
-permission, Miss Stoner, we shall now carry our researches into
-the inner apartment."
-
-Dr. Grimesby Roylott's chamber was larger than that of his
-step-daughter, but was as plainly furnished. A camp-bed, a small
-wooden shelf full of books, mostly of a technical character, an
-armchair beside the bed, a plain wooden chair against the wall, a
-round table, and a large iron safe were the principal things
-which met the eye. Holmes walked slowly round and examined each
-and all of them with the keenest interest.
-
-"What's in here?" he asked, tapping the safe.
-
-"My stepfather's business papers."
-
-"Oh! you have seen inside, then?"
-
-"Only once, some years ago. I remember that it was full of
-papers."
-
-"There isn't a cat in it, for example?"
-
-"No. What a strange idea!"
-
-"Well, look at this!" He took up a small saucer of milk which
-stood on the top of it.
-
-"No; we don't keep a cat. But there is a cheetah and a baboon."
-
-"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
-saucer of milk does not go very far in satisfying its wants, I
-daresay. There is one point which I should wish to determine." He
-squatted down in front of the wooden chair and examined the seat
-of it with the greatest attention.
-
-"Thank you. That is quite settled," said he, rising and putting
-his lens in his pocket. "Hullo! Here is something interesting!"
-
-The object which had caught his eye was a small dog lash hung on
-one corner of the bed. The lash, however, was curled upon itself
-and tied so as to make a loop of whipcord.
-
-"What do you make of that, Watson?"
-
-"It's a common enough lash. But I don't know why it should be
-tied."
-
-"That is not quite so common, is it? Ah, me! it's a wicked world,
-and when a clever man turns his brains to crime it is the worst
-of all. I think that I have seen enough now, Miss Stoner, and
-with your permission we shall walk out upon the lawn."
-
-I had never seen my friend's face so grim or his brow so dark as
-it was when we turned from the scene of this investigation. We
-had walked several times up and down the lawn, neither Miss
-Stoner nor myself liking to break in upon his thoughts before he
-roused himself from his reverie.
-
-"It is very essential, Miss Stoner," said he, "that you should
-absolutely follow my advice in every respect."
-
-"I shall most certainly do so."
-
-"The matter is too serious for any hesitation. Your life may
-depend upon your compliance."
-
-"I assure you that I am in your hands."
-
-"In the first place, both my friend and I must spend the night in
-your room."
-
-Both Miss Stoner and I gazed at him in astonishment.
-
-"Yes, it must be so. Let me explain. I believe that that is the
-village inn over there?"
-
-"Yes, that is the Crown."
-
-"Very good. Your windows would be visible from there?"
-
-"Certainly."
-
-"You must confine yourself to your room, on pretence of a
-headache, when your stepfather comes back. Then when you hear him
-retire for the night, you must open the shutters of your window,
-undo the hasp, put your lamp there as a signal to us, and then
-withdraw quietly with everything which you are likely to want
-into the room which you used to occupy. I have no doubt that, in
-spite of the repairs, you could manage there for one night."
-
-"Oh, yes, easily."
-
-"The rest you will leave in our hands."
-
-"But what will you do?"
-
-"We shall spend the night in your room, and we shall investigate
-the cause of this noise which has disturbed you."
-
-"I believe, Mr. Holmes, that you have already made up your mind,"
-said Miss Stoner, laying her hand upon my companion's sleeve.
-
-"Perhaps I have."
-
-"Then, for pity's sake, tell me what was the cause of my sister's
-death."
-
-"I should prefer to have clearer proofs before I speak."
-
-"You can at least tell me whether my own thought is correct, and
-if she died from some sudden fright."
-
-"No, I do not think so. I think that there was probably some more
-tangible cause. And now, Miss Stoner, we must leave you for if
-Dr. Roylott returned and saw us our journey would be in vain.
-Good-bye, and be brave, for if you will do what I have told you,
-you may rest assured that we shall soon drive away the dangers
-that threaten you."
-
-Sherlock Holmes and I had no difficulty in engaging a bedroom and
-sitting-room at the Crown Inn. They were on the upper floor, and
-from our window we could command a view of the avenue gate, and
-of the inhabited wing of Stoke Moran Manor House. At dusk we saw
-Dr. Grimesby Roylott drive past, his huge form looming up beside
-the little figure of the lad who drove him. The boy had some
-slight difficulty in undoing the heavy iron gates, and we heard
-the hoarse roar of the doctor's voice and saw the fury with which
-he shook his clinched fists at him. The trap drove on, and a few
-minutes later we saw a sudden light spring up among the trees as
-the lamp was lit in one of the sitting-rooms.
-
-"Do you know, Watson," said Holmes as we sat together in the
-gathering darkness, "I have really some scruples as to taking you
-to-night. There is a distinct element of danger."
-
-"Can I be of assistance?"
-
-"Your presence might be invaluable."
-
-"Then I shall certainly come."
-
-"It is very kind of you."
-
-"You speak of danger. You have evidently seen more in these rooms
-than was visible to me."
-
-"No, but I fancy that I may have deduced a little more. I imagine
-that you saw all that I did."
-
-"I saw nothing remarkable save the bell-rope, and what purpose
-that could answer I confess is more than I can imagine."
-
-"You saw the ventilator, too?"
-
-"Yes, but I do not think that it is such a very unusual thing to
-have a small opening between two rooms. It was so small that a
-rat could hardly pass through."
-
-"I knew that we should find a ventilator before ever we came to
-Stoke Moran."
-
-"My dear Holmes!"
-
-"Oh, yes, I did. You remember in her statement she said that her
-sister could smell Dr. Roylott's cigar. Now, of course that
-suggested at once that there must be a communication between the
-two rooms. It could only be a small one, or it would have been
-remarked upon at the coroner's inquiry. I deduced a ventilator."
-
-"But what harm can there be in that?"
-
-"Well, there is at least a curious coincidence of dates. A
-ventilator is made, a cord is hung, and a lady who sleeps in the
-bed dies. Does not that strike you?"
-
-"I cannot as yet see any connection."
-
-"Did you observe anything very peculiar about that bed?"
-
-"No."
-
-"It was clamped to the floor. Did you ever see a bed fastened
-like that before?"
-
-"I cannot say that I have."
-
-"The lady could not move her bed. It must always be in the same
-relative position to the ventilator and to the rope--or so we may
-call it, since it was clearly never meant for a bell-pull."
-
-"Holmes," I cried, "I seem to see dimly what you are hinting at.
-We are only just in time to prevent some subtle and horrible
-crime."
-
-"Subtle enough and horrible enough. When a doctor does go wrong
-he is the first of criminals. He has nerve and he has knowledge.
-Palmer and Pritchard were among the heads of their profession.
-This man strikes even deeper, but I think, Watson, that we shall
-be able to strike deeper still. But we shall have horrors enough
-before the night is over; for goodness' sake let us have a quiet
-pipe and turn our minds for a few hours to something more
-cheerful."
-
-
-About nine o'clock the light among the trees was extinguished,
-and all was dark in the direction of the Manor House. Two hours
-passed slowly away, and then, suddenly, just at the stroke of
-eleven, a single bright light shone out right in front of us.
-
-"That is our signal," said Holmes, springing to his feet; "it
-comes from the middle window."
-
-As we passed out he exchanged a few words with the landlord,
-explaining that we were going on a late visit to an acquaintance,
-and that it was possible that we might spend the night there. A
-moment later we were out on the dark road, a chill wind blowing
-in our faces, and one yellow light twinkling in front of us
-through the gloom to guide us on our sombre errand.
-
-There was little difficulty in entering the grounds, for
-unrepaired breaches gaped in the old park wall. Making our way
-among the trees, we reached the lawn, crossed it, and were about
-to enter through the window when out from a clump of laurel
-bushes there darted what seemed to be a hideous and distorted
-child, who threw itself upon the grass with writhing limbs and
-then ran swiftly across the lawn into the darkness.
-
-"My God!" I whispered; "did you see it?"
-
-Holmes was for the moment as startled as I. His hand closed like
-a vice upon my wrist in his agitation. Then he broke into a low
-laugh and put his lips to my ear.
-
-"It is a nice household," he murmured. "That is the baboon."
-
-I had forgotten the strange pets which the doctor affected. There
-was a cheetah, too; perhaps we might find it upon our shoulders
-at any moment. I confess that I felt easier in my mind when,
-after following Holmes' example and slipping off my shoes, I
-found myself inside the bedroom. My companion noiselessly closed
-the shutters, moved the lamp onto the table, and cast his eyes
-round the room. All was as we had seen it in the daytime. Then
-creeping up to me and making a trumpet of his hand, he whispered
-into my ear again so gently that it was all that I could do to
-distinguish the words:
-
-"The least sound would be fatal to our plans."
-
-I nodded to show that I had heard.
-
-"We must sit without light. He would see it through the
-ventilator."
-
-I nodded again.
-
-"Do not go asleep; your very life may depend upon it. Have your
-pistol ready in case we should need it. I will sit on the side of
-the bed, and you in that chair."
-
-I took out my revolver and laid it on the corner of the table.
-
-Holmes had brought up a long thin cane, and this he placed upon
-the bed beside him. By it he laid the box of matches and the
-stump of a candle. Then he turned down the lamp, and we were left
-in darkness.
-
-How shall I ever forget that dreadful vigil? I could not hear a
-sound, not even the drawing of a breath, and yet I knew that my
-companion sat open-eyed, within a few feet of me, in the same
-state of nervous tension in which I was myself. The shutters cut
-off the least ray of light, and we waited in absolute darkness.
-
-From outside came the occasional cry of a night-bird, and once at
-our very window a long drawn catlike whine, which told us that
-the cheetah was indeed at liberty. Far away we could hear the
-deep tones of the parish clock, which boomed out every quarter of
-an hour. How long they seemed, those quarters! Twelve struck, and
-one and two and three, and still we sat waiting silently for
-whatever might befall.
-
-Suddenly there was the momentary gleam of a light up in the
-direction of the ventilator, which vanished immediately, but was
-succeeded by a strong smell of burning oil and heated metal.
-Someone in the next room had lit a dark-lantern. I heard a gentle
-sound of movement, and then all was silent once more, though the
-smell grew stronger. For half an hour I sat with straining ears.
-Then suddenly another sound became audible--a very gentle,
-soothing sound, like that of a small jet of steam escaping
-continually from a kettle. The instant that we heard it, Holmes
-sprang from the bed, struck a match, and lashed furiously with
-his cane at the bell-pull.
-
-"You see it, Watson?" he yelled. "You see it?"
-
-But I saw nothing. At the moment when Holmes struck the light I
-heard a low, clear whistle, but the sudden glare flashing into my
-weary eyes made it impossible for me to tell what it was at which
-my friend lashed so savagely. I could, however, see that his face
-was deadly pale and filled with horror and loathing. He had
-ceased to strike and was gazing up at the ventilator when
-suddenly there broke from the silence of the night the most
-horrible cry to which I have ever listened. It swelled up louder
-and louder, a hoarse yell of pain and fear and anger all mingled
-in the one dreadful shriek. They say that away down in the
-village, and even in the distant parsonage, that cry raised the
-sleepers from their beds. It struck cold to our hearts, and I
-stood gazing at Holmes, and he at me, until the last echoes of it
-had died away into the silence from which it rose.
-
-"What can it mean?" I gasped.
-
-"It means that it is all over," Holmes answered. "And perhaps,
-after all, it is for the best. Take your pistol, and we will
-enter Dr. Roylott's room."
-
-With a grave face he lit the lamp and led the way down the
-corridor. Twice he struck at the chamber door without any reply
-from within. Then he turned the handle and entered, I at his
-heels, with the cocked pistol in my hand.
-
-It was a singular sight which met our eyes. On the table stood a
-dark-lantern with the shutter half open, throwing a brilliant
-beam of light upon the iron safe, the door of which was ajar.
-Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
-clad in a long grey dressing-gown, his bare ankles protruding
-beneath, and his feet thrust into red heelless Turkish slippers.
-Across his lap lay the short stock with the long lash which we
-had noticed during the day. His chin was cocked upward and his
-eyes were fixed in a dreadful, rigid stare at the corner of the
-ceiling. Round his brow he had a peculiar yellow band, with
-brownish speckles, which seemed to be bound tightly round his
-head. As we entered he made neither sound nor motion.
-
-"The band! the speckled band!" whispered Holmes.
-
-I took a step forward. In an instant his strange headgear began
-to move, and there reared itself from among his hair the squat
-diamond-shaped head and puffed neck of a loathsome serpent.
-
-"It is a swamp adder!" cried Holmes; "the deadliest snake in
-India. He has died within ten seconds of being bitten. Violence
-does, in truth, recoil upon the violent, and the schemer falls
-into the pit which he digs for another. Let us thrust this
-creature back into its den, and we can then remove Miss Stoner to
-some place of shelter and let the county police know what has
-happened."
-
-As he spoke he drew the dog-whip swiftly from the dead man's lap,
-and throwing the noose round the reptile's neck he drew it from
-its horrid perch and, carrying it at arm's length, threw it into
-the iron safe, which he closed upon it.
-
-Such are the true facts of the death of Dr. Grimesby Roylott, of
-Stoke Moran. It is not necessary that I should prolong a
-narrative which has already run to too great a length by telling
-how we broke the sad news to the terrified girl, how we conveyed
-her by the morning train to the care of her good aunt at Harrow,
-of how the slow process of official inquiry came to the
-conclusion that the doctor met his fate while indiscreetly
-playing with a dangerous pet. The little which I had yet to learn
-of the case was told me by Sherlock Holmes as we travelled back
-next day.
-
-"I had," said he, "come to an entirely erroneous conclusion which
-shows, my dear Watson, how dangerous it always is to reason from
-insufficient data. The presence of the gipsies, and the use of
-the word 'band,' which was used by the poor girl, no doubt, to
-explain the appearance which she had caught a hurried glimpse of
-by the light of her match, were sufficient to put me upon an
-entirely wrong scent. I can only claim the merit that I instantly
-reconsidered my position when, however, it became clear to me
-that whatever danger threatened an occupant of the room could not
-come either from the window or the door. My attention was
-speedily drawn, as I have already remarked to you, to this
-ventilator, and to the bell-rope which hung down to the bed. The
-discovery that this was a dummy, and that the bed was clamped to
-the floor, instantly gave rise to the suspicion that the rope was
-there as a bridge for something passing through the hole and
-coming to the bed. The idea of a snake instantly occurred to me,
-and when I coupled it with my knowledge that the doctor was
-furnished with a supply of creatures from India, I felt that I
-was probably on the right track. The idea of using a form of
-poison which could not possibly be discovered by any chemical
-test was just such a one as would occur to a clever and ruthless
-man who had had an Eastern training. The rapidity with which such
-a poison would take effect would also, from his point of view, be
-an advantage. It would be a sharp-eyed coroner, indeed, who could
-distinguish the two little dark punctures which would show where
-the poison fangs had done their work. Then I thought of the
-whistle. Of course he must recall the snake before the morning
-light revealed it to the victim. He had trained it, probably by
-the use of the milk which we saw, to return to him when summoned.
-He would put it through this ventilator at the hour that he
-thought best, with the certainty that it would crawl down the
-rope and land on the bed. It might or might not bite the
-occupant, perhaps she might escape every night for a week, but
-sooner or later she must fall a victim.
-
-"I had come to these conclusions before ever I had entered his
-room. An inspection of his chair showed me that he had been in
-the habit of standing on it, which of course would be necessary
-in order that he should reach the ventilator. The sight of the
-safe, the saucer of milk, and the loop of whipcord were enough to
-finally dispel any doubts which may have remained. The metallic
-clang heard by Miss Stoner was obviously caused by her stepfather
-hastily closing the door of his safe upon its terrible occupant.
-Having once made up my mind, you know the steps which I took in
-order to put the matter to the proof. I heard the creature hiss
-as I have no doubt that you did also, and I instantly lit the
-light and attacked it."
-
-"With the result of driving it through the ventilator."
-
-"And also with the result of causing it to turn upon its master
-at the other side. Some of the blows of my cane came home and
-roused its snakish temper, so that it flew upon the first person
-it saw. In this way I am no doubt indirectly responsible for Dr.
-Grimesby Roylott's death, and I cannot say that it is likely to
-weigh very heavily upon my conscience."
-
-
-
-IX. THE ADVENTURE OF THE ENGINEER'S THUMB
-
-Of all the problems which have been submitted to my friend, Mr.
-Sherlock Holmes, for solution during the years of our intimacy,
-there were only two which I was the means of introducing to his
-notice--that of Mr. Hatherley's thumb, and that of Colonel
-Warburton's madness. Of these the latter may have afforded a
-finer field for an acute and original observer, but the other was
-so strange in its inception and so dramatic in its details that
-it may be the more worthy of being placed upon record, even if it
-gave my friend fewer openings for those deductive methods of
-reasoning by which he achieved such remarkable results. The story
-has, I believe, been told more than once in the newspapers, but,
-like all such narratives, its effect is much less striking when
-set forth en bloc in a single half-column of print than when the
-facts slowly evolve before your own eyes, and the mystery clears
-gradually away as each new discovery furnishes a step which leads
-on to the complete truth. At the time the circumstances made a
-deep impression upon me, and the lapse of two years has hardly
-served to weaken the effect.
-
-It was in the summer of '89, not long after my marriage, that the
-events occurred which I am now about to summarise. I had returned
-to civil practice and had finally abandoned Holmes in his Baker
-Street rooms, although I continually visited him and occasionally
-even persuaded him to forgo his Bohemian habits so far as to come
-and visit us. My practice had steadily increased, and as I
-happened to live at no very great distance from Paddington
-Station, I got a few patients from among the officials. One of
-these, whom I had cured of a painful and lingering disease, was
-never weary of advertising my virtues and of endeavouring to send
-me on every sufferer over whom he might have any influence.
-
-One morning, at a little before seven o'clock, I was awakened by
-the maid tapping at the door to announce that two men had come
-from Paddington and were waiting in the consulting-room. I
-dressed hurriedly, for I knew by experience that railway cases
-were seldom trivial, and hastened downstairs. As I descended, my
-old ally, the guard, came out of the room and closed the door
-tightly behind him.
-
-"I've got him here," he whispered, jerking his thumb over his
-shoulder; "he's all right."
-
-"What is it, then?" I asked, for his manner suggested that it was
-some strange creature which he had caged up in my room.
-
-"It's a new patient," he whispered. "I thought I'd bring him
-round myself; then he couldn't slip away. There he is, all safe
-and sound. I must go now, Doctor; I have my dooties, just the
-same as you." And off he went, this trusty tout, without even
-giving me time to thank him.
-
-I entered my consulting-room and found a gentleman seated by the
-table. He was quietly dressed in a suit of heather tweed with a
-soft cloth cap which he had laid down upon my books. Round one of
-his hands he had a handkerchief wrapped, which was mottled all
-over with bloodstains. He was young, not more than
-five-and-twenty, I should say, with a strong, masculine face; but
-he was exceedingly pale and gave me the impression of a man who
-was suffering from some strong agitation, which it took all his
-strength of mind to control.
-
-"I am sorry to knock you up so early, Doctor," said he, "but I
-have had a very serious accident during the night. I came in by
-train this morning, and on inquiring at Paddington as to where I
-might find a doctor, a worthy fellow very kindly escorted me
-here. I gave the maid a card, but I see that she has left it upon
-the side-table."
-
-I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
-engineer, 16A, Victoria Street (3rd floor)." That was the name,
-style, and abode of my morning visitor. "I regret that I have
-kept you waiting," said I, sitting down in my library-chair. "You
-are fresh from a night journey, I understand, which is in itself
-a monotonous occupation."
-
-"Oh, my night could not be called monotonous," said he, and
-laughed. He laughed very heartily, with a high, ringing note,
-leaning back in his chair and shaking his sides. All my medical
-instincts rose up against that laugh.
-
-"Stop it!" I cried; "pull yourself together!" and I poured out
-some water from a caraffe.
-
-It was useless, however. He was off in one of those hysterical
-outbursts which come upon a strong nature when some great crisis
-is over and gone. Presently he came to himself once more, very
-weary and pale-looking.
-
-"I have been making a fool of myself," he gasped.
-
-"Not at all. Drink this." I dashed some brandy into the water,
-and the colour began to come back to his bloodless cheeks.
-
-"That's better!" said he. "And now, Doctor, perhaps you would
-kindly attend to my thumb, or rather to the place where my thumb
-used to be."
-
-He unwound the handkerchief and held out his hand. It gave even
-my hardened nerves a shudder to look at it. There were four
-protruding fingers and a horrid red, spongy surface where the
-thumb should have been. It had been hacked or torn right out from
-the roots.
-
-"Good heavens!" I cried, "this is a terrible injury. It must have
-bled considerably."
-
-"Yes, it did. I fainted when it was done, and I think that I must
-have been senseless for a long time. When I came to I found that
-it was still bleeding, so I tied one end of my handkerchief very
-tightly round the wrist and braced it up with a twig."
-
-"Excellent! You should have been a surgeon."
-
-"It is a question of hydraulics, you see, and came within my own
-province."
-
-"This has been done," said I, examining the wound, "by a very
-heavy and sharp instrument."
-
-"A thing like a cleaver," said he.
-
-"An accident, I presume?"
-
-"By no means."
-
-"What! a murderous attack?"
-
-"Very murderous indeed."
-
-"You horrify me."
-
-I sponged the wound, cleaned it, dressed it, and finally covered
-it over with cotton wadding and carbolised bandages. He lay back
-without wincing, though he bit his lip from time to time.
-
-"How is that?" I asked when I had finished.
-
-"Capital! Between your brandy and your bandage, I feel a new man.
-I was very weak, but I have had a good deal to go through."
-
-"Perhaps you had better not speak of the matter. It is evidently
-trying to your nerves."
-
-"Oh, no, not now. I shall have to tell my tale to the police;
-but, between ourselves, if it were not for the convincing
-evidence of this wound of mine, I should be surprised if they
-believed my statement, for it is a very extraordinary one, and I
-have not much in the way of proof with which to back it up; and,
-even if they believe me, the clues which I can give them are so
-vague that it is a question whether justice will be done."
-
-"Ha!" cried I, "if it is anything in the nature of a problem
-which you desire to see solved, I should strongly recommend you
-to come to my friend, Mr. Sherlock Holmes, before you go to the
-official police."
-
-"Oh, I have heard of that fellow," answered my visitor, "and I
-should be very glad if he would take the matter up, though of
-course I must use the official police as well. Would you give me
-an introduction to him?"
-
-"I'll do better. I'll take you round to him myself."
-
-"I should be immensely obliged to you."
-
-"We'll call a cab and go together. We shall just be in time to
-have a little breakfast with him. Do you feel equal to it?"
-
-"Yes; I shall not feel easy until I have told my story."
-
-"Then my servant will call a cab, and I shall be with you in an
-instant." I rushed upstairs, explained the matter shortly to my
-wife, and in five minutes was inside a hansom, driving with my
-new acquaintance to Baker Street.
-
-Sherlock Holmes was, as I expected, lounging about his
-sitting-room in his dressing-gown, reading the agony column of The
-Times and smoking his before-breakfast pipe, which was composed
-of all the plugs and dottles left from his smokes of the day
-before, all carefully dried and collected on the corner of the
-mantelpiece. He received us in his quietly genial fashion,
-ordered fresh rashers and eggs, and joined us in a hearty meal.
-When it was concluded he settled our new acquaintance upon the
-sofa, placed a pillow beneath his head, and laid a glass of
-brandy and water within his reach.
-
-"It is easy to see that your experience has been no common one,
-Mr. Hatherley," said he. "Pray, lie down there and make yourself
-absolutely at home. Tell us what you can, but stop when you are
-tired and keep up your strength with a little stimulant."
-
-"Thank you," said my patient, "but I have felt another man since
-the doctor bandaged me, and I think that your breakfast has
-completed the cure. I shall take up as little of your valuable
-time as possible, so I shall start at once upon my peculiar
-experiences."
-
-Holmes sat in his big armchair with the weary, heavy-lidded
-expression which veiled his keen and eager nature, while I sat
-opposite to him, and we listened in silence to the strange story
-which our visitor detailed to us.
-
-"You must know," said he, "that I am an orphan and a bachelor,
-residing alone in lodgings in London. By profession I am a
-hydraulic engineer, and I have had considerable experience of my
-work during the seven years that I was apprenticed to Venner &
-Matheson, the well-known firm, of Greenwich. Two years ago,
-having served my time, and having also come into a fair sum of
-money through my poor father's death, I determined to start in
-business for myself and took professional chambers in Victoria
-Street.
-
-"I suppose that everyone finds his first independent start in
-business a dreary experience. To me it has been exceptionally so.
-During two years I have had three consultations and one small
-job, and that is absolutely all that my profession has brought
-me. My gross takings amount to 27 pounds 10s. Every day, from
-nine in the morning until four in the afternoon, I waited in my
-little den, until at last my heart began to sink, and I came to
-believe that I should never have any practice at all.
-
-"Yesterday, however, just as I was thinking of leaving the
-office, my clerk entered to say there was a gentleman waiting who
-wished to see me upon business. He brought up a card, too, with
-the name of 'Colonel Lysander Stark' engraved upon it. Close at
-his heels came the colonel himself, a man rather over the middle
-size, but of an exceeding thinness. I do not think that I have
-ever seen so thin a man. His whole face sharpened away into nose
-and chin, and the skin of his cheeks was drawn quite tense over
-his outstanding bones. Yet this emaciation seemed to be his
-natural habit, and due to no disease, for his eye was bright, his
-step brisk, and his bearing assured. He was plainly but neatly
-dressed, and his age, I should judge, would be nearer forty than
-thirty.
-
-"'Mr. Hatherley?' said he, with something of a German accent.
-'You have been recommended to me, Mr. Hatherley, as being a man
-who is not only proficient in his profession but is also discreet
-and capable of preserving a secret.'
-
-"I bowed, feeling as flattered as any young man would at such an
-address. 'May I ask who it was who gave me so good a character?'
-
-"'Well, perhaps it is better that I should not tell you that just
-at this moment. I have it from the same source that you are both
-an orphan and a bachelor and are residing alone in London.'
-
-"'That is quite correct,' I answered; 'but you will excuse me if
-I say that I cannot see how all this bears upon my professional
-qualifications. I understand that it was on a professional matter
-that you wished to speak to me?'
-
-"'Undoubtedly so. But you will find that all I say is really to
-the point. I have a professional commission for you, but absolute
-secrecy is quite essential--absolute secrecy, you understand, and
-of course we may expect that more from a man who is alone than
-from one who lives in the bosom of his family.'
-
-"'If I promise to keep a secret,' said I, 'you may absolutely
-depend upon my doing so.'
-
-"He looked very hard at me as I spoke, and it seemed to me that I
-had never seen so suspicious and questioning an eye.
-
-"'Do you promise, then?' said he at last.
-
-"'Yes, I promise.'
-
-"'Absolute and complete silence before, during, and after? No
-reference to the matter at all, either in word or writing?'
-
-"'I have already given you my word.'
-
-"'Very good.' He suddenly sprang up, and darting like lightning
-across the room he flung open the door. The passage outside was
-empty.
-
-"'That's all right,' said he, coming back. 'I know that clerks are
-sometimes curious as to their master's affairs. Now we can talk
-in safety.' He drew up his chair very close to mine and began to
-stare at me again with the same questioning and thoughtful look.
-
-"A feeling of repulsion, and of something akin to fear had begun
-to rise within me at the strange antics of this fleshless man.
-Even my dread of losing a client could not restrain me from
-showing my impatience.
-
-"'I beg that you will state your business, sir,' said I; 'my time
-is of value.' Heaven forgive me for that last sentence, but the
-words came to my lips.
-
-"'How would fifty guineas for a night's work suit you?' he asked.
-
-"'Most admirably.'
-
-"'I say a night's work, but an hour's would be nearer the mark. I
-simply want your opinion about a hydraulic stamping machine which
-has got out of gear. If you show us what is wrong we shall soon
-set it right ourselves. What do you think of such a commission as
-that?'
-
-"'The work appears to be light and the pay munificent.'
-
-"'Precisely so. We shall want you to come to-night by the last
-train.'
-
-"'Where to?'
-
-"'To Eyford, in Berkshire. It is a little place near the borders
-of Oxfordshire, and within seven miles of Reading. There is a
-train from Paddington which would bring you there at about
-11:15.'
-
-"'Very good.'
-
-"'I shall come down in a carriage to meet you.'
-
-"'There is a drive, then?'
-
-"'Yes, our little place is quite out in the country. It is a good
-seven miles from Eyford Station.'
-
-"'Then we can hardly get there before midnight. I suppose there
-would be no chance of a train back. I should be compelled to stop
-the night.'
-
-"'Yes, we could easily give you a shake-down.'
-
-"'That is very awkward. Could I not come at some more convenient
-hour?'
-
-"'We have judged it best that you should come late. It is to
-recompense you for any inconvenience that we are paying to you, a
-young and unknown man, a fee which would buy an opinion from the
-very heads of your profession. Still, of course, if you would
-like to draw out of the business, there is plenty of time to do
-so.'
-
-"I thought of the fifty guineas, and of how very useful they
-would be to me. 'Not at all,' said I, 'I shall be very happy to
-accommodate myself to your wishes. I should like, however, to
-understand a little more clearly what it is that you wish me to
-do.'
-
-"'Quite so. It is very natural that the pledge of secrecy which
-we have exacted from you should have aroused your curiosity. I
-have no wish to commit you to anything without your having it all
-laid before you. I suppose that we are absolutely safe from
-eavesdroppers?'
-
-"'Entirely.'
-
-"'Then the matter stands thus. You are probably aware that
-fuller's-earth is a valuable product, and that it is only found
-in one or two places in England?'
-
-"'I have heard so.'
-
-"'Some little time ago I bought a small place--a very small
-place--within ten miles of Reading. I was fortunate enough to
-discover that there was a deposit of fuller's-earth in one of my
-fields. On examining it, however, I found that this deposit was a
-comparatively small one, and that it formed a link between two
-very much larger ones upon the right and left--both of them,
-however, in the grounds of my neighbours. These good people were
-absolutely ignorant that their land contained that which was
-quite as valuable as a gold-mine. Naturally, it was to my
-interest to buy their land before they discovered its true value,
-but unfortunately I had no capital by which I could do this. I
-took a few of my friends into the secret, however, and they
-suggested that we should quietly and secretly work our own little
-deposit and that in this way we should earn the money which would
-enable us to buy the neighbouring fields. This we have now been
-doing for some time, and in order to help us in our operations we
-erected a hydraulic press. This press, as I have already
-explained, has got out of order, and we wish your advice upon the
-subject. We guard our secret very jealously, however, and if it
-once became known that we had hydraulic engineers coming to our
-little house, it would soon rouse inquiry, and then, if the facts
-came out, it would be good-bye to any chance of getting these
-fields and carrying out our plans. That is why I have made you
-promise me that you will not tell a human being that you are
-going to Eyford to-night. I hope that I make it all plain?'
-
-"'I quite follow you,' said I. 'The only point which I could not
-quite understand was what use you could make of a hydraulic press
-in excavating fuller's-earth, which, as I understand, is dug out
-like gravel from a pit.'
-
-"'Ah!' said he carelessly, 'we have our own process. We compress
-the earth into bricks, so as to remove them without revealing
-what they are. But that is a mere detail. I have taken you fully
-into my confidence now, Mr. Hatherley, and I have shown you how I
-trust you.' He rose as he spoke. 'I shall expect you, then, at
-Eyford at 11:15.'
-
-"'I shall certainly be there.'
-
-"'And not a word to a soul.' He looked at me with a last long,
-questioning gaze, and then, pressing my hand in a cold, dank
-grasp, he hurried from the room.
-
-"Well, when I came to think it all over in cool blood I was very
-much astonished, as you may both think, at this sudden commission
-which had been intrusted to me. On the one hand, of course, I was
-glad, for the fee was at least tenfold what I should have asked
-had I set a price upon my own services, and it was possible that
-this order might lead to other ones. On the other hand, the face
-and manner of my patron had made an unpleasant impression upon
-me, and I could not think that his explanation of the
-fuller's-earth was sufficient to explain the necessity for my
-coming at midnight, and his extreme anxiety lest I should tell
-anyone of my errand. However, I threw all fears to the winds, ate
-a hearty supper, drove to Paddington, and started off, having
-obeyed to the letter the injunction as to holding my tongue.
-
-"At Reading I had to change not only my carriage but my station.
-However, I was in time for the last train to Eyford, and I
-reached the little dim-lit station after eleven o'clock. I was the
-only passenger who got out there, and there was no one upon the
-platform save a single sleepy porter with a lantern. As I passed
-out through the wicket gate, however, I found my acquaintance of
-the morning waiting in the shadow upon the other side. Without a
-word he grasped my arm and hurried me into a carriage, the door
-of which was standing open. He drew up the windows on either
-side, tapped on the wood-work, and away we went as fast as the
-horse could go."
-
-"One horse?" interjected Holmes.
-
-"Yes, only one."
-
-"Did you observe the colour?"
-
-"Yes, I saw it by the side-lights when I was stepping into the
-carriage. It was a chestnut."
-
-"Tired-looking or fresh?"
-
-"Oh, fresh and glossy."
-
-"Thank you. I am sorry to have interrupted you. Pray continue
-your most interesting statement."
-
-"Away we went then, and we drove for at least an hour. Colonel
-Lysander Stark had said that it was only seven miles, but I
-should think, from the rate that we seemed to go, and from the
-time that we took, that it must have been nearer twelve. He sat
-at my side in silence all the time, and I was aware, more than
-once when I glanced in his direction, that he was looking at me
-with great intensity. The country roads seem to be not very good
-in that part of the world, for we lurched and jolted terribly. I
-tried to look out of the windows to see something of where we
-were, but they were made of frosted glass, and I could make out
-nothing save the occasional bright blur of a passing light. Now
-and then I hazarded some remark to break the monotony of the
-journey, but the colonel answered only in monosyllables, and the
-conversation soon flagged. At last, however, the bumping of the
-road was exchanged for the crisp smoothness of a gravel-drive,
-and the carriage came to a stand. Colonel Lysander Stark sprang
-out, and, as I followed after him, pulled me swiftly into a porch
-which gaped in front of us. We stepped, as it were, right out of
-the carriage and into the hall, so that I failed to catch the
-most fleeting glance of the front of the house. The instant that
-I had crossed the threshold the door slammed heavily behind us,
-and I heard faintly the rattle of the wheels as the carriage
-drove away.
-
-"It was pitch dark inside the house, and the colonel fumbled
-about looking for matches and muttering under his breath.
-Suddenly a door opened at the other end of the passage, and a
-long, golden bar of light shot out in our direction. It grew
-broader, and a woman appeared with a lamp in her hand, which she
-held above her head, pushing her face forward and peering at us.
-I could see that she was pretty, and from the gloss with which
-the light shone upon her dark dress I knew that it was a rich
-material. She spoke a few words in a foreign tongue in a tone as
-though asking a question, and when my companion answered in a
-gruff monosyllable she gave such a start that the lamp nearly
-fell from her hand. Colonel Stark went up to her, whispered
-something in her ear, and then, pushing her back into the room
-from whence she had come, he walked towards me again with the
-lamp in his hand.
-
-"'Perhaps you will have the kindness to wait in this room for a
-few minutes,' said he, throwing open another door. It was a
-quiet, little, plainly furnished room, with a round table in the
-centre, on which several German books were scattered. Colonel
-Stark laid down the lamp on the top of a harmonium beside the
-door. 'I shall not keep you waiting an instant,' said he, and
-vanished into the darkness.
-
-"I glanced at the books upon the table, and in spite of my
-ignorance of German I could see that two of them were treatises
-on science, the others being volumes of poetry. Then I walked
-across to the window, hoping that I might catch some glimpse of
-the country-side, but an oak shutter, heavily barred, was folded
-across it. It was a wonderfully silent house. There was an old
-clock ticking loudly somewhere in the passage, but otherwise
-everything was deadly still. A vague feeling of uneasiness began
-to steal over me. Who were these German people, and what were
-they doing living in this strange, out-of-the-way place? And
-where was the place? I was ten miles or so from Eyford, that was
-all I knew, but whether north, south, east, or west I had no
-idea. For that matter, Reading, and possibly other large towns,
-were within that radius, so the place might not be so secluded,
-after all. Yet it was quite certain, from the absolute stillness,
-that we were in the country. I paced up and down the room,
-humming a tune under my breath to keep up my spirits and feeling
-that I was thoroughly earning my fifty-guinea fee.
-
-"Suddenly, without any preliminary sound in the midst of the
-utter stillness, the door of my room swung slowly open. The woman
-was standing in the aperture, the darkness of the hall behind
-her, the yellow light from my lamp beating upon her eager and
-beautiful face. I could see at a glance that she was sick with
-fear, and the sight sent a chill to my own heart. She held up one
-shaking finger to warn me to be silent, and she shot a few
-whispered words of broken English at me, her eyes glancing back,
-like those of a frightened horse, into the gloom behind her.
-
-"'I would go,' said she, trying hard, as it seemed to me, to
-speak calmly; 'I would go. I should not stay here. There is no
-good for you to do.'
-
-"'But, madam,' said I, 'I have not yet done what I came for. I
-cannot possibly leave until I have seen the machine.'
-
-"'It is not worth your while to wait,' she went on. 'You can pass
-through the door; no one hinders.' And then, seeing that I smiled
-and shook my head, she suddenly threw aside her constraint and
-made a step forward, with her hands wrung together. 'For the love
-of Heaven!' she whispered, 'get away from here before it is too
-late!'
-
-"But I am somewhat headstrong by nature, and the more ready to
-engage in an affair when there is some obstacle in the way. I
-thought of my fifty-guinea fee, of my wearisome journey, and of
-the unpleasant night which seemed to be before me. Was it all to
-go for nothing? Why should I slink away without having carried
-out my commission, and without the payment which was my due? This
-woman might, for all I knew, be a monomaniac. With a stout
-bearing, therefore, though her manner had shaken me more than I
-cared to confess, I still shook my head and declared my intention
-of remaining where I was. She was about to renew her entreaties
-when a door slammed overhead, and the sound of several footsteps
-was heard upon the stairs. She listened for an instant, threw up
-her hands with a despairing gesture, and vanished as suddenly and
-as noiselessly as she had come.
-
-"The newcomers were Colonel Lysander Stark and a short thick man
-with a chinchilla beard growing out of the creases of his double
-chin, who was introduced to me as Mr. Ferguson.
-
-"'This is my secretary and manager,' said the colonel. 'By the
-way, I was under the impression that I left this door shut just
-now. I fear that you have felt the draught.'
-
-"'On the contrary,' said I, 'I opened the door myself because I
-felt the room to be a little close.'
-
-"He shot one of his suspicious looks at me. 'Perhaps we had
-better proceed to business, then,' said he. 'Mr. Ferguson and I
-will take you up to see the machine.'
-
-"'I had better put my hat on, I suppose.'
-
-"'Oh, no, it is in the house.'
-
-"'What, you dig fuller's-earth in the house?'
-
-"'No, no. This is only where we compress it. But never mind that.
-All we wish you to do is to examine the machine and to let us
-know what is wrong with it.'
-
-"We went upstairs together, the colonel first with the lamp, the
-fat manager and I behind him. It was a labyrinth of an old house,
-with corridors, passages, narrow winding staircases, and little
-low doors, the thresholds of which were hollowed out by the
-generations who had crossed them. There were no carpets and no
-signs of any furniture above the ground floor, while the plaster
-was peeling off the walls, and the damp was breaking through in
-green, unhealthy blotches. I tried to put on as unconcerned an
-air as possible, but I had not forgotten the warnings of the
-lady, even though I disregarded them, and I kept a keen eye upon
-my two companions. Ferguson appeared to be a morose and silent
-man, but I could see from the little that he said that he was at
-least a fellow-countryman.
-
-"Colonel Lysander Stark stopped at last before a low door, which
-he unlocked. Within was a small, square room, in which the three
-of us could hardly get at one time. Ferguson remained outside,
-and the colonel ushered me in.
-
-"'We are now,' said he, 'actually within the hydraulic press, and
-it would be a particularly unpleasant thing for us if anyone were
-to turn it on. The ceiling of this small chamber is really the
-end of the descending piston, and it comes down with the force of
-many tons upon this metal floor. There are small lateral columns
-of water outside which receive the force, and which transmit and
-multiply it in the manner which is familiar to you. The machine
-goes readily enough, but there is some stiffness in the working
-of it, and it has lost a little of its force. Perhaps you will
-have the goodness to look it over and to show us how we can set
-it right.'
-
-"I took the lamp from him, and I examined the machine very
-thoroughly. It was indeed a gigantic one, and capable of
-exercising enormous pressure. When I passed outside, however, and
-pressed down the levers which controlled it, I knew at once by
-the whishing sound that there was a slight leakage, which allowed
-a regurgitation of water through one of the side cylinders. An
-examination showed that one of the india-rubber bands which was
-round the head of a driving-rod had shrunk so as not quite to
-fill the socket along which it worked. This was clearly the cause
-of the loss of power, and I pointed it out to my companions, who
-followed my remarks very carefully and asked several practical
-questions as to how they should proceed to set it right. When I
-had made it clear to them, I returned to the main chamber of the
-machine and took a good look at it to satisfy my own curiosity.
-It was obvious at a glance that the story of the fuller's-earth
-was the merest fabrication, for it would be absurd to suppose
-that so powerful an engine could be designed for so inadequate a
-purpose. The walls were of wood, but the floor consisted of a
-large iron trough, and when I came to examine it I could see a
-crust of metallic deposit all over it. I had stooped and was
-scraping at this to see exactly what it was when I heard a
-muttered exclamation in German and saw the cadaverous face of the
-colonel looking down at me.
-
-"'What are you doing there?' he asked.
-
-"I felt angry at having been tricked by so elaborate a story as
-that which he had told me. 'I was admiring your fuller's-earth,'
-said I; 'I think that I should be better able to advise you as to
-your machine if I knew what the exact purpose was for which it
-was used.'
-
-"The instant that I uttered the words I regretted the rashness of
-my speech. His face set hard, and a baleful light sprang up in
-his grey eyes.
-
-"'Very well,' said he, 'you shall know all about the machine.' He
-took a step backward, slammed the little door, and turned the key
-in the lock. I rushed towards it and pulled at the handle, but it
-was quite secure, and did not give in the least to my kicks and
-shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
-
-"And then suddenly in the silence I heard a sound which sent my
-heart into my mouth. It was the clank of the levers and the swish
-of the leaking cylinder. He had set the engine at work. The lamp
-still stood upon the floor where I had placed it when examining
-the trough. By its light I saw that the black ceiling was coming
-down upon me, slowly, jerkily, but, as none knew better than
-myself, with a force which must within a minute grind me to a
-shapeless pulp. I threw myself, screaming, against the door, and
-dragged with my nails at the lock. I implored the colonel to let
-me out, but the remorseless clanking of the levers drowned my
-cries. The ceiling was only a foot or two above my head, and with
-my hand upraised I could feel its hard, rough surface. Then it
-flashed through my mind that the pain of my death would depend
-very much upon the position in which I met it. If I lay on my
-face the weight would come upon my spine, and I shuddered to
-think of that dreadful snap. Easier the other way, perhaps; and
-yet, had I the nerve to lie and look up at that deadly black
-shadow wavering down upon me? Already I was unable to stand
-erect, when my eye caught something which brought a gush of hope
-back to my heart.
-
-"I have said that though the floor and ceiling were of iron, the
-walls were of wood. As I gave a last hurried glance around, I saw
-a thin line of yellow light between two of the boards, which
-broadened and broadened as a small panel was pushed backward. For
-an instant I could hardly believe that here was indeed a door
-which led away from death. The next instant I threw myself
-through, and lay half-fainting upon the other side. The panel had
-closed again behind me, but the crash of the lamp, and a few
-moments afterwards the clang of the two slabs of metal, told me
-how narrow had been my escape.
-
-"I was recalled to myself by a frantic plucking at my wrist, and
-I found myself lying upon the stone floor of a narrow corridor,
-while a woman bent over me and tugged at me with her left hand,
-while she held a candle in her right. It was the same good friend
-whose warning I had so foolishly rejected.
-
-"'Come! come!' she cried breathlessly. 'They will be here in a
-moment. They will see that you are not there. Oh, do not waste
-the so-precious time, but come!'
-
-"This time, at least, I did not scorn her advice. I staggered to
-my feet and ran with her along the corridor and down a winding
-stair. The latter led to another broad passage, and just as we
-reached it we heard the sound of running feet and the shouting of
-two voices, one answering the other from the floor on which  we
-were and from the one beneath. My guide stopped and looked about
-her like one  who is at her wit's end. Then she threw open a door
-which led into a bedroom, through the window of which the moon
-was shining brightly.
-
-"'It is your only chance,' said she. 'It is high, but it may be
-that you can jump it.'
-
-"As she spoke a light sprang into view at the further end of the
-passage, and I saw the lean figure of Colonel Lysander Stark
-rushing forward with a lantern in one hand and a weapon like a
-butcher's cleaver in the other. I rushed across the bedroom,
-flung open the window, and looked out. How quiet and sweet and
-wholesome the garden looked in the moonlight, and it could not be
-more than thirty feet down. I clambered out upon the sill, but I
-hesitated to jump until I should have heard what passed between
-my saviour and the ruffian who pursued me. If she were ill-used,
-then at any risks I was determined to go back to her assistance.
-The thought had hardly flashed through my mind before he was at
-the door, pushing his way past her; but she threw her arms round
-him and tried to hold him back.
-
-"'Fritz! Fritz!' she cried in English, 'remember your promise
-after the last time. You said it should not be again. He will be
-silent! Oh, he will be silent!'
-
-"'You are mad, Elise!' he shouted, struggling to break away from
-her. 'You will be the ruin of us. He has seen too much. Let me
-pass, I say!' He dashed her to one side, and, rushing to the
-window, cut at me with his heavy weapon. I had let myself go, and
-was hanging by the hands to the sill, when his blow fell. I was
-conscious of a dull pain, my grip loosened, and I fell into the
-garden below.
-
-"I was shaken but not hurt by the fall; so I picked myself up and
-rushed off among the bushes as hard as I could run, for I
-understood that I was far from being out of danger yet. Suddenly,
-however, as I ran, a deadly dizziness and sickness came over me.
-I glanced down at my hand, which was throbbing painfully, and
-then, for the first time, saw that my thumb had been cut off and
-that the blood was pouring from my wound. I endeavoured to tie my
-handkerchief round it, but there came a sudden buzzing in my
-ears, and next moment I fell in a dead faint among the
-rose-bushes.
-
-"How long I remained unconscious I cannot tell. It must have been
-a very long time, for the moon had sunk, and a bright morning was
-breaking when I came to myself. My clothes were all sodden with
-dew, and my coat-sleeve was drenched with blood from my wounded
-thumb. The smarting of it recalled in an instant all the
-particulars of my night's adventure, and I sprang to my feet with
-the feeling that I might hardly yet be safe from my pursuers. But
-to my astonishment, when I came to look round me, neither house
-nor garden were to be seen. I had been lying in an angle of the
-hedge close by the highroad, and just a little lower down was a
-long building, which proved, upon my approaching it, to be the
-very station at which I had arrived upon the previous night. Were
-it not for the ugly wound upon my hand, all that had passed
-during those dreadful hours might have been an evil dream.
-
-"Half dazed, I went into the station and asked about the morning
-train. There would be one to Reading in less than an hour. The
-same porter was on duty, I found, as had been there when I
-arrived. I inquired of him whether he had ever heard of Colonel
-Lysander Stark. The name was strange to him. Had he observed a
-carriage the night before waiting for me? No, he had not. Was
-there a police-station anywhere near? There was one about three
-miles off.
-
-"It was too far for me to go, weak and ill as I was. I determined
-to wait until I got back to town before telling my story to the
-police. It was a little past six when I arrived, so I went first
-to have my wound dressed, and then the doctor was kind enough to
-bring me along here. I put the case into your hands and shall do
-exactly what you advise."
-
-We both sat in silence for some little time after listening to
-this extraordinary narrative. Then Sherlock Holmes pulled down
-from the shelf one of the ponderous commonplace books in which he
-placed his cuttings.
-
-"Here is an advertisement which will interest you," said he. "It
-appeared in all the papers about a year ago. Listen to this:
-'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
-twenty-six, a hydraulic engineer. Left his lodgings at ten
-o'clock at night, and has not been heard of since. Was
-dressed in,' etc., etc. Ha! That represents the last time that
-the colonel needed to have his machine overhauled, I fancy."
-
-"Good heavens!" cried my patient. "Then that explains what the
-girl said."
-
-"Undoubtedly. It is quite clear that the colonel was a cool and
-desperate man, who was absolutely determined that nothing should
-stand in the way of his little game, like those out-and-out
-pirates who will leave no survivor from a captured ship. Well,
-every moment now is precious, so if you feel equal to it we shall
-go down to Scotland Yard at once as a preliminary to starting for
-Eyford."
-
-Some three hours or so afterwards we were all in the train
-together, bound from Reading to the little Berkshire village.
-There were Sherlock Holmes, the hydraulic engineer, Inspector
-Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
-Bradstreet had spread an ordnance map of the county out upon the
-seat and was busy with his compasses drawing a circle with Eyford
-for its centre.
-
-"There you are," said he. "That circle is drawn at a radius of
-ten miles from the village. The place we want must be somewhere
-near that line. You said ten miles, I think, sir."
-
-"It was an hour's good drive."
-
-"And you think that they brought you back all that way when you
-were unconscious?"
-
-"They must have done so. I have a confused memory, too, of having
-been lifted and conveyed somewhere."
-
-"What I cannot understand," said I, "is why they should have
-spared you when they found you lying fainting in the garden.
-Perhaps the villain was softened by the woman's entreaties."
-
-"I hardly think that likely. I never saw a more inexorable face
-in my life."
-
-"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
-have drawn my circle, and I only wish I knew at what point upon
-it the folk that we are in search of are to be found."
-
-"I think I could lay my finger on it," said Holmes quietly.
-
-"Really, now!" cried the inspector, "you have formed your
-opinion! Come, now, we shall see who agrees with you. I say it is
-south, for the country is more deserted there."
-
-"And I say east," said my patient.
-
-"I am for west," remarked the plain-clothes man. "There are
-several quiet little villages up there."
-
-"And I am for north," said I, "because there are no hills there,
-and our friend says that he did not notice the carriage go up
-any."
-
-"Come," cried the inspector, laughing; "it's a very pretty
-diversity of opinion. We have boxed the compass among us. Who do
-you give your casting vote to?"
-
-"You are all wrong."
-
-"But we can't all be."
-
-"Oh, yes, you can. This is my point." He placed his finger in the
-centre of the circle. "This is where we shall find them."
-
-"But the twelve-mile drive?" gasped Hatherley.
-
-"Six out and six back. Nothing simpler. You say yourself that the
-horse was fresh and glossy when you got in. How could it be that
-if it had gone twelve miles over heavy roads?"
-
-"Indeed, it is a likely ruse enough," observed Bradstreet
-thoughtfully. "Of course there can be no doubt as to the nature
-of this gang."
-
-"None at all," said Holmes. "They are coiners on a large scale,
-and have used the machine to form the amalgam which has taken the
-place of silver."
-
-"We have known for some time that a clever gang was at work,"
-said the inspector. "They have been turning out half-crowns by
-the thousand. We even traced them as far as Reading, but could
-get no farther, for they had covered their traces in a way that
-showed that they were very old hands. But now, thanks to this
-lucky chance, I think that we have got them right enough."
-
-But the inspector was mistaken, for those criminals were not
-destined to fall into the hands of justice. As we rolled into
-Eyford Station we saw a gigantic column of smoke which streamed
-up from behind a small clump of trees in the neighbourhood and
-hung like an immense ostrich feather over the landscape.
-
-"A house on fire?" asked Bradstreet as the train steamed off
-again on its way.
-
-"Yes, sir!" said the station-master.
-
-"When did it break out?"
-
-"I hear that it was during the night, sir, but it has got worse,
-and the whole place is in a blaze."
-
-"Whose house is it?"
-
-"Dr. Becher's."
-
-"Tell me," broke in the engineer, "is Dr. Becher a German, very
-thin, with a long, sharp nose?"
-
-The station-master laughed heartily. "No, sir, Dr. Becher is an
-Englishman, and there isn't a man in the parish who has a
-better-lined waistcoat. But he has a gentleman staying with him,
-a patient, as I understand, who is a foreigner, and he looks as
-if a little good Berkshire beef would do him no harm."
-
-The station-master had not finished his speech before we were all
-hastening in the direction of the fire. The road topped a low
-hill, and there was a great widespread whitewashed building in
-front of us, spouting fire at every chink and window, while in
-the garden in front three fire-engines were vainly striving to
-keep the flames under.
-
-"That's it!" cried Hatherley, in intense excitement. "There is
-the gravel-drive, and there are the rose-bushes where I lay. That
-second window is the one that I jumped from."
-
-"Well, at least," said Holmes, "you have had your revenge upon
-them. There can be no question that it was your oil-lamp which,
-when it was crushed in the press, set fire to the wooden walls,
-though no doubt they were too excited in the chase after you to
-observe it at the time. Now keep your eyes open in this crowd for
-your friends of last night, though I very much fear that they are
-a good hundred miles off by now."
-
-And Holmes' fears came to be realised, for from that day to this
-no word has ever been heard either of the beautiful woman, the
-sinister German, or the morose Englishman. Early that morning a
-peasant had met a cart containing several people and some very
-bulky boxes driving rapidly in the direction of Reading, but
-there all traces of the fugitives disappeared, and even Holmes'
-ingenuity failed ever to discover the least clue as to their
-whereabouts.
-
-The firemen had been much perturbed at the strange arrangements
-which they had found within, and still more so by discovering a
-newly severed human thumb upon a window-sill of the second floor.
-About sunset, however, their efforts were at last successful, and
-they subdued the flames, but not before the roof had fallen in,
-and the whole place been reduced to such absolute ruin that, save
-some twisted cylinders and iron piping, not a trace remained of
-the machinery which had cost our unfortunate acquaintance so
-dearly. Large masses of nickel and of tin were discovered stored
-in an out-house, but no coins were to be found, which may have
-explained the presence of those bulky boxes which have been
-already referred to.
-
-How our hydraulic engineer had been conveyed from the garden to
-the spot where he recovered his senses might have remained
-forever a mystery were it not for the soft mould, which told us a
-very plain tale. He had evidently been carried down by two
-persons, one of whom had remarkably small feet and the other
-unusually large ones. On the whole, it was most probable that the
-silent Englishman, being less bold or less murderous than his
-companion, had assisted the woman to bear the unconscious man out
-of the way of danger.
-
-"Well," said our engineer ruefully as we took our seats to return
-once more to London, "it has been a pretty business for me! I
-have lost my thumb and I have lost a fifty-guinea fee, and what
-have I gained?"
-
-"Experience," said Holmes, laughing. "Indirectly it may be of
-value, you know; you have only to put it into words to gain the
-reputation of being excellent company for the remainder of your
-existence."
-
-
-
-X. THE ADVENTURE OF THE NOBLE BACHELOR
-
-The Lord St. Simon marriage, and its curious termination, have
-long ceased to be a subject of interest in those exalted circles
-in which the unfortunate bridegroom moves. Fresh scandals have
-eclipsed it, and their more piquant details have drawn the
-gossips away from this four-year-old drama. As I have reason to
-believe, however, that the full facts have never been revealed to
-the general public, and as my friend Sherlock Holmes had a
-considerable share in clearing the matter up, I feel that no
-memoir of him would be complete without some little sketch of
-this remarkable episode.
-
-It was a few weeks before my own marriage, during the days when I
-was still sharing rooms with Holmes in Baker Street, that he came
-home from an afternoon stroll to find a letter on the table
-waiting for him. I had remained indoors all day, for the weather
-had taken a sudden turn to rain, with high autumnal winds, and
-the Jezail bullet which I had brought back in one of my limbs as
-a relic of my Afghan campaign throbbed with dull persistence.
-With my body in one easy-chair and my legs upon another, I had
-surrounded myself with a cloud of newspapers until at last,
-saturated with the news of the day, I tossed them all aside and
-lay listless, watching the huge crest and monogram upon the
-envelope upon the table and wondering lazily who my friend's
-noble correspondent could be.
-
-"Here is a very fashionable epistle," I remarked as he entered.
-"Your morning letters, if I remember right, were from a
-fish-monger and a tide-waiter."
-
-"Yes, my correspondence has certainly the charm of variety," he
-answered, smiling, "and the humbler are usually the more
-interesting. This looks like one of those unwelcome social
-summonses which call upon a man either to be bored or to lie."
-
-He broke the seal and glanced over the contents.
-
-"Oh, come, it may prove to be something of interest, after all."
-
-"Not social, then?"
-
-"No, distinctly professional."
-
-"And from a noble client?"
-
-"One of the highest in England."
-
-"My dear fellow, I congratulate you."
-
-"I assure you, Watson, without affectation, that the status of my
-client is a matter of less moment to me than the interest of his
-case. It is just possible, however, that that also may not be
-wanting in this new investigation. You have been reading the
-papers diligently of late, have you not?"
-
-"It looks like it," said I ruefully, pointing to a huge bundle in
-the corner. "I have had nothing else to do."
-
-"It is fortunate, for you will perhaps be able to post me up. I
-read nothing except the criminal news and the agony column. The
-latter is always instructive. But if you have followed recent
-events so closely you must have read about Lord St. Simon and his
-wedding?"
-
-"Oh, yes, with the deepest interest."
-
-"That is well. The letter which I hold in my hand is from Lord
-St. Simon. I will read it to you, and in return you must turn
-over these papers and let me have whatever bears upon the matter.
-This is what he says:
-
-"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
-may place implicit reliance upon your judgment and discretion. I
-have determined, therefore, to call upon you and to consult you
-in reference to the very painful event which has occurred in
-connection with my wedding. Mr. Lestrade, of Scotland Yard, is
-acting already in the matter, but he assures me that he sees no
-objection to your co-operation, and that he even thinks that
-it might be of some assistance. I will call at four o'clock in
-the afternoon, and, should you have any other engagement at that
-time, I hope that you will postpone it, as this matter is of
-paramount importance. Yours faithfully, ST. SIMON.'
-
-"It is dated from Grosvenor Mansions, written with a quill pen,
-and the noble lord has had the misfortune to get a smear of ink
-upon the outer side of his right little finger," remarked Holmes
-as he folded up the epistle.
-
-"He says four o'clock. It is three now. He will be here in an
-hour."
-
-"Then I have just time, with your assistance, to get clear upon
-the subject. Turn over those papers and arrange the extracts in
-their order of time, while I take a glance as to who our client
-is." He picked a red-covered volume from a line of books of
-reference beside the mantelpiece. "Here he is," said he, sitting
-down and flattening it out upon his knee. "'Lord Robert Walsingham
-de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
-Azure, three caltrops in chief over a fess sable. Born in 1846.'
-He's forty-one years of age, which is mature for marriage. Was
-Under-Secretary for the colonies in a late administration. The
-Duke, his father, was at one time Secretary for Foreign Affairs.
-They inherit Plantagenet blood by direct descent, and Tudor on
-the distaff side. Ha! Well, there is nothing very instructive in
-all this. I think that I must turn to you Watson, for something
-more solid."
-
-"I have very little difficulty in finding what I want," said I,
-"for the facts are quite recent, and the matter struck me as
-remarkable. I feared to refer them to you, however, as I knew
-that you had an inquiry on hand and that you disliked the
-intrusion of other matters."
-
-"Oh, you mean the little problem of the Grosvenor Square
-furniture van. That is quite cleared up now--though, indeed, it
-was obvious from the first. Pray give me the results of your
-newspaper selections."
-
-"Here is the first notice which I can find. It is in the personal
-column of the Morning Post, and dates, as you see, some weeks
-back: 'A marriage has been arranged,' it says, 'and will, if
-rumour is correct, very shortly take place, between Lord Robert
-St. Simon, second son of the Duke of Balmoral, and Miss Hatty
-Doran, the only daughter of Aloysius Doran. Esq., of San
-Francisco, Cal., U.S.A.' That is all."
-
-"Terse and to the point," remarked Holmes, stretching his long,
-thin legs towards the fire.
-
-"There was a paragraph amplifying this in one of the society
-papers of the same week. Ah, here it is: 'There will soon be a
-call for protection in the marriage market, for the present
-free-trade principle appears to tell heavily against our home
-product. One by one the management of the noble houses of Great
-Britain is passing into the hands of our fair cousins from across
-the Atlantic. An important addition has been made during the last
-week to the list of the prizes which have been borne away by
-these charming invaders. Lord St. Simon, who has shown himself
-for over twenty years proof against the little god's arrows, has
-now definitely announced his approaching marriage with Miss Hatty
-Doran, the fascinating daughter of a California millionaire. Miss
-Doran, whose graceful figure and striking face attracted much
-attention at the Westbury House festivities, is an only child,
-and it is currently reported that her dowry will run to
-considerably over the six figures, with expectancies for the
-future. As it is an open secret that the Duke of Balmoral has
-been compelled to sell his pictures within the last few years,
-and as Lord St. Simon has no property of his own save the small
-estate of Birchmoor, it is obvious that the Californian heiress
-is not the only gainer by an alliance which will enable her to
-make the easy and common transition from a Republican lady to a
-British peeress.'"
-
-"Anything else?" asked Holmes, yawning.
-
-"Oh, yes; plenty. Then there is another note in the Morning Post
-to say that the marriage would be an absolutely quiet one, that it
-would be at St. George's, Hanover Square, that only half a dozen
-intimate friends would be invited, and that the party would
-return to the furnished house at Lancaster Gate which has been
-taken by Mr. Aloysius Doran. Two days later--that is, on
-Wednesday last--there is a curt announcement that the wedding had
-taken place, and that the honeymoon would be passed at Lord
-Backwater's place, near Petersfield. Those are all the notices
-which appeared before the disappearance of the bride."
-
-"Before the what?" asked Holmes with a start.
-
-"The vanishing of the lady."
-
-"When did she vanish, then?"
-
-"At the wedding breakfast."
-
-"Indeed. This is more interesting than it promised to be; quite
-dramatic, in fact."
-
-"Yes; it struck me as being a little out of the common."
-
-"They often vanish before the ceremony, and occasionally during
-the honeymoon; but I cannot call to mind anything quite so prompt
-as this. Pray let me have the details."
-
-"I warn you that they are very incomplete."
-
-"Perhaps we may make them less so."
-
-"Such as they are, they are set forth in a single article of a
-morning paper of yesterday, which I will read to you. It is
-headed, 'Singular Occurrence at a Fashionable Wedding':
-
-"'The family of Lord Robert St. Simon has been thrown into the
-greatest consternation by the strange and painful episodes which
-have taken place in connection with his wedding. The ceremony, as
-shortly announced in the papers of yesterday, occurred on the
-previous morning; but it is only now that it has been possible to
-confirm the strange rumours which have been so persistently
-floating about. In spite of the attempts of the friends to hush
-the matter up, so much public attention has now been drawn to it
-that no good purpose can be served by affecting to disregard what
-is a common subject for conversation.
-
-"'The ceremony, which was performed at St. George's, Hanover
-Square, was a very quiet one, no one being present save the
-father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
-Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
-younger brother and sister of the bridegroom), and Lady Alicia
-Whittington. The whole party proceeded afterwards to the house of
-Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
-prepared. It appears that some little trouble was caused by a
-woman, whose name has not been ascertained, who endeavoured to
-force her way into the house after the bridal party, alleging
-that she had some claim upon Lord St. Simon. It was only after a
-painful and prolonged scene that she was ejected by the butler
-and the footman. The bride, who had fortunately entered the house
-before this unpleasant interruption, had sat down to breakfast
-with the rest, when she complained of a sudden indisposition and
-retired to her room. Her prolonged absence having caused some
-comment, her father followed her, but learned from her maid that
-she had only come up to her chamber for an instant, caught up an
-ulster and bonnet, and hurried down to the passage. One of the
-footmen declared that he had seen a lady leave the house thus
-apparelled, but had refused to credit that it was his mistress,
-believing her to be with the company. On ascertaining that his
-daughter had disappeared, Mr. Aloysius Doran, in conjunction with
-the bridegroom, instantly put themselves in communication with
-the police, and very energetic inquiries are being made, which
-will probably result in a speedy clearing up of this very
-singular business. Up to a late hour last night, however, nothing
-had transpired as to the whereabouts of the missing lady. There
-are rumours of foul play in the matter, and it is said that the
-police have caused the arrest of the woman who had caused the
-original disturbance, in the belief that, from jealousy or some
-other motive, she may have been concerned in the strange
-disappearance of the bride.'"
-
-"And is that all?"
-
-"Only one little item in another of the morning papers, but it is
-a suggestive one."
-
-"And it is--"
-
-"That Miss Flora Millar, the lady who had caused the disturbance,
-has actually been arrested. It appears that she was formerly a
-danseuse at the Allegro, and that she has known the bridegroom
-for some years. There are no further particulars, and the whole
-case is in your hands now--so far as it has been set forth in the
-public press."
-
-"And an exceedingly interesting case it appears to be. I would
-not have missed it for worlds. But there is a ring at the bell,
-Watson, and as the clock makes it a few minutes after four, I
-have no doubt that this will prove to be our noble client. Do not
-dream of going, Watson, for I very much prefer having a witness,
-if only as a check to my own memory."
-
-"Lord Robert St. Simon," announced our page-boy, throwing open
-the door. A gentleman entered, with a pleasant, cultured face,
-high-nosed and pale, with something perhaps of petulance about
-the mouth, and with the steady, well-opened eye of a man whose
-pleasant lot it had ever been to command and to be obeyed. His
-manner was brisk, and yet his general appearance gave an undue
-impression of age, for he had a slight forward stoop and a little
-bend of the knees as he walked. His hair, too, as he swept off
-his very curly-brimmed hat, was grizzled round the edges and thin
-upon the top. As to his dress, it was careful to the verge of
-foppishness, with high collar, black frock-coat, white waistcoat,
-yellow gloves, patent-leather shoes, and light-coloured gaiters.
-He advanced slowly into the room, turning his head from left to
-right, and swinging in his right hand the cord which held his
-golden eyeglasses.
-
-"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
-take the basket-chair. This is my friend and colleague, Dr.
-Watson. Draw up a little to the fire, and we will talk this
-matter over."
-
-"A most painful matter to me, as you can most readily imagine,
-Mr. Holmes. I have been cut to the quick. I understand that you
-have already managed several delicate cases of this sort, sir,
-though I presume that they were hardly from the same class of
-society."
-
-"No, I am descending."
-
-"I beg pardon."
-
-"My last client of the sort was a king."
-
-"Oh, really! I had no idea. And which king?"
-
-"The King of Scandinavia."
-
-"What! Had he lost his wife?"
-
-"You can understand," said Holmes suavely, "that I extend to the
-affairs of my other clients the same secrecy which I promise to
-you in yours."
-
-"Of course! Very right! very right! I'm sure I beg pardon. As to
-my own case, I am ready to give you any information which may
-assist you in forming an opinion."
-
-"Thank you. I have already learned all that is in the public
-prints, nothing more. I presume that I may take it as correct--this
-article, for example, as to the disappearance of the bride."
-
-Lord St. Simon glanced over it. "Yes, it is correct, as far as it
-goes."
-
-"But it needs a great deal of supplementing before anyone could
-offer an opinion. I think that I may arrive at my facts most
-directly by questioning you."
-
-"Pray do so."
-
-"When did you first meet Miss Hatty Doran?"
-
-"In San Francisco, a year ago."
-
-"You were travelling in the States?"
-
-"Yes."
-
-"Did you become engaged then?"
-
-"No."
-
-"But you were on a friendly footing?"
-
-"I was amused by her society, and she could see that I was
-amused."
-
-"Her father is very rich?"
-
-"He is said to be the richest man on the Pacific slope."
-
-"And how did he make his money?"
-
-"In mining. He had nothing a few years ago. Then he struck gold,
-invested it, and came up by leaps and bounds."
-
-"Now, what is your own impression as to the young lady's--your
-wife's character?"
-
-The nobleman swung his glasses a little faster and stared down
-into the fire. "You see, Mr. Holmes," said he, "my wife was
-twenty before her father became a rich man. During that time she
-ran free in a mining camp and wandered through woods or
-mountains, so that her education has come from Nature rather than
-from the schoolmaster. She is what we call in England a tomboy,
-with a strong nature, wild and free, unfettered by any sort of
-traditions. She is impetuous--volcanic, I was about to say. She
-is swift in making up her mind and fearless in carrying out her
-resolutions. On the other hand, I would not have given her the
-name which I have the honour to bear"--he gave a little stately
-cough--"had not I thought her to be at bottom a noble woman. I
-believe that she is capable of heroic self-sacrifice and that
-anything dishonourable would be repugnant to her."
-
-"Have you her photograph?"
-
-"I brought this with me." He opened a locket and showed us the
-full face of a very lovely woman. It was not a photograph but an
-ivory miniature, and the artist had brought out the full effect
-of the lustrous black hair, the large dark eyes, and the
-exquisite mouth. Holmes gazed long and earnestly at it. Then he
-closed the locket and handed it back to Lord St. Simon.
-
-"The young lady came to London, then, and you renewed your
-acquaintance?"
-
-"Yes, her father brought her over for this last London season. I
-met her several times, became engaged to her, and have now
-married her."
-
-"She brought, I understand, a considerable dowry?"
-
-"A fair dowry. Not more than is usual in my family."
-
-"And this, of course, remains to you, since the marriage is a
-fait accompli?"
-
-"I really have made no inquiries on the subject."
-
-"Very naturally not. Did you see Miss Doran on the day before the
-wedding?"
-
-"Yes."
-
-"Was she in good spirits?"
-
-"Never better. She kept talking of what we should do in our
-future lives."
-
-"Indeed! That is very interesting. And on the morning of the
-wedding?"
-
-"She was as bright as possible--at least until after the
-ceremony."
-
-"And did you observe any change in her then?"
-
-"Well, to tell the truth, I saw then the first signs that I had
-ever seen that her temper was just a little sharp. The incident
-however, was too trivial to relate and can have no possible
-bearing upon the case."
-
-"Pray let us have it, for all that."
-
-"Oh, it is childish. She dropped her bouquet as we went towards
-the vestry. She was passing the front pew at the time, and it
-fell over into the pew. There was a moment's delay, but the
-gentleman in the pew handed it up to her again, and it did not
-appear to be the worse for the fall. Yet when I spoke to her of
-the matter, she answered me abruptly; and in the carriage, on our
-way home, she seemed absurdly agitated over this trifling cause."
-
-"Indeed! You say that there was a gentleman in the pew. Some of
-the general public were present, then?"
-
-"Oh, yes. It is impossible to exclude them when the church is
-open."
-
-"This gentleman was not one of your wife's friends?"
-
-"No, no; I call him a gentleman by courtesy, but he was quite a
-common-looking person. I hardly noticed his appearance. But
-really I think that we are wandering rather far from the point."
-
-"Lady St. Simon, then, returned from the wedding in a less
-cheerful frame of mind than she had gone to it. What did she do
-on re-entering her father's house?"
-
-"I saw her in conversation with her maid."
-
-"And who is her maid?"
-
-"Alice is her name. She is an American and came from California
-with her."
-
-"A confidential servant?"
-
-"A little too much so. It seemed to me that her mistress allowed
-her to take great liberties. Still, of course, in America they
-look upon these things in a different way."
-
-"How long did she speak to this Alice?"
-
-"Oh, a few minutes. I had something else to think of."
-
-"You did not overhear what they said?"
-
-"Lady St. Simon said something about 'jumping a claim.' She was
-accustomed to use slang of the kind. I have no idea what she
-meant."
-
-"American slang is very expressive sometimes. And what did your
-wife do when she finished speaking to her maid?"
-
-"She walked into the breakfast-room."
-
-"On your arm?"
-
-"No, alone. She was very independent in little matters like that.
-Then, after we had sat down for ten minutes or so, she rose
-hurriedly, muttered some words of apology, and left the room. She
-never came back."
-
-"But this maid, Alice, as I understand, deposes that she went to
-her room, covered her bride's dress with a long ulster, put on a
-bonnet, and went out."
-
-"Quite so. And she was afterwards seen walking into Hyde Park in
-company with Flora Millar, a woman who is now in custody, and who
-had already made a disturbance at Mr. Doran's house that
-morning."
-
-"Ah, yes. I should like a few particulars as to this young lady,
-and your relations to her."
-
-Lord St. Simon shrugged his shoulders and raised his eyebrows.
-"We have been on a friendly footing for some years--I may say on
-a very friendly footing. She used to be at the Allegro. I have
-not treated her ungenerously, and she had no just cause of
-complaint against me, but you know what women are, Mr. Holmes.
-Flora was a dear little thing, but exceedingly hot-headed and
-devotedly attached to me. She wrote me dreadful letters when she
-heard that I was about to be married, and, to tell the truth, the
-reason why I had the marriage celebrated so quietly was that I
-feared lest there might be a scandal in the church. She came to
-Mr. Doran's door just after we returned, and she endeavoured to
-push her way in, uttering very abusive expressions towards my
-wife, and even threatening her, but I had foreseen the
-possibility of something of the sort, and I had two police
-fellows there in private clothes, who soon pushed her out again.
-She was quiet when she saw that there was no good in making a
-row."
-
-"Did your wife hear all this?"
-
-"No, thank goodness, she did not."
-
-"And she was seen walking with this very woman afterwards?"
-
-"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
-so serious. It is thought that Flora decoyed my wife out and laid
-some terrible trap for her."
-
-"Well, it is a possible supposition."
-
-"You think so, too?"
-
-"I did not say a probable one. But you do not yourself look upon
-this as likely?"
-
-"I do not think Flora would hurt a fly."
-
-"Still, jealousy is a strange transformer of characters. Pray
-what is your own theory as to what took place?"
-
-"Well, really, I came to seek a theory, not to propound one. I
-have given you all the facts. Since you ask me, however, I may
-say that it has occurred to me as possible that the excitement of
-this affair, the consciousness that she had made so immense a
-social stride, had the effect of causing some little nervous
-disturbance in my wife."
-
-"In short, that she had become suddenly deranged?"
-
-"Well, really, when I consider that she has turned her back--I
-will not say upon me, but upon so much that many have aspired to
-without success--I can hardly explain it in any other fashion."
-
-"Well, certainly that is also a conceivable hypothesis," said
-Holmes, smiling. "And now, Lord St. Simon, I think that I have
-nearly all my data. May I ask whether you were seated at the
-breakfast-table so that you could see out of the window?"
-
-"We could see the other side of the road and the Park."
-
-"Quite so. Then I do not think that I need to detain you longer.
-I shall communicate with you."
-
-"Should you be fortunate enough to solve this problem," said our
-client, rising.
-
-"I have solved it."
-
-"Eh? What was that?"
-
-"I say that I have solved it."
-
-"Where, then, is my wife?"
-
-"That is a detail which I shall speedily supply."
-
-Lord St. Simon shook his head. "I am afraid that it will take
-wiser heads than yours or mine," he remarked, and bowing in a
-stately, old-fashioned manner he departed.
-
-"It is very good of Lord St. Simon to honour my head by putting
-it on a level with his own," said Sherlock Holmes, laughing. "I
-think that I shall have a whisky and soda and a cigar after all
-this cross-questioning. I had formed my conclusions as to the
-case before our client came into the room."
-
-"My dear Holmes!"
-
-"I have notes of several similar cases, though none, as I
-remarked before, which were quite as prompt. My whole examination
-served to turn my conjecture into a certainty. Circumstantial
-evidence is occasionally very convincing, as when you find a
-trout in the milk, to quote Thoreau's example."
-
-"But I have heard all that you have heard."
-
-"Without, however, the knowledge of pre-existing cases which
-serves me so well. There was a parallel instance in Aberdeen some
-years back, and something on very much the same lines at Munich
-the year after the Franco-Prussian War. It is one of these
-cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
-You will find an extra tumbler upon the sideboard, and there are
-cigars in the box."
-
-The official detective was attired in a pea-jacket and cravat,
-which gave him a decidedly nautical appearance, and he carried a
-black canvas bag in his hand. With a short greeting he seated
-himself and lit the cigar which had been offered to him.
-
-"What's up, then?" asked Holmes with a twinkle in his eye. "You
-look dissatisfied."
-
-"And I feel dissatisfied. It is this infernal St. Simon marriage
-case. I can make neither head nor tail of the business."
-
-"Really! You surprise me."
-
-"Who ever heard of such a mixed affair? Every clue seems to slip
-through my fingers. I have been at work upon it all day."
-
-"And very wet it seems to have made you," said Holmes laying his
-hand upon the arm of the pea-jacket.
-
-"Yes, I have been dragging the Serpentine."
-
-"In heaven's name, what for?"
-
-"In search of the body of Lady St. Simon."
-
-Sherlock Holmes leaned back in his chair and laughed heartily.
-
-"Have you dragged the basin of Trafalgar Square fountain?" he
-asked.
-
-"Why? What do you mean?"
-
-"Because you have just as good a chance of finding this lady in
-the one as in the other."
-
-Lestrade shot an angry glance at my companion. "I suppose you
-know all about it," he snarled.
-
-"Well, I have only just heard the facts, but my mind is made up."
-
-"Oh, indeed! Then you think that the Serpentine plays no part in
-the matter?"
-
-"I think it very unlikely."
-
-"Then perhaps you will kindly explain how it is that we found
-this in it?" He opened his bag as he spoke, and tumbled onto the
-floor a wedding-dress of watered silk, a pair of white satin
-shoes and a bride's wreath and veil, all discoloured and soaked
-in water. "There," said he, putting a new wedding-ring upon the
-top of the pile. "There is a little nut for you to crack, Master
-Holmes."
-
-"Oh, indeed!" said my friend, blowing blue rings into the air.
-"You dragged them from the Serpentine?"
-
-"No. They were found floating near the margin by a park-keeper.
-They have been identified as her clothes, and it seemed to me
-that if the clothes were there the body would not be far off."
-
-"By the same brilliant reasoning, every man's body is to be found
-in the neighbourhood of his wardrobe. And pray what did you hope
-to arrive at through this?"
-
-"At some evidence implicating Flora Millar in the disappearance."
-
-"I am afraid that you will find it difficult."
-
-"Are you, indeed, now?" cried Lestrade with some bitterness. "I
-am afraid, Holmes, that you are not very practical with your
-deductions and your inferences. You have made two blunders in as
-many minutes. This dress does implicate Miss Flora Millar."
-
-"And how?"
-
-"In the dress is a pocket. In the pocket is a card-case. In the
-card-case is a note. And here is the very note." He slapped it
-down upon the table in front of him. "Listen to this: 'You will
-see me when all is ready. Come at once. F.H.M.' Now my theory all
-along has been that Lady St. Simon was decoyed away by Flora
-Millar, and that she, with confederates, no doubt, was
-responsible for her disappearance. Here, signed with her
-initials, is the very note which was no doubt quietly slipped
-into her hand at the door and which lured her within their
-reach."
-
-"Very good, Lestrade," said Holmes, laughing. "You really are
-very fine indeed. Let me see it." He took up the paper in a
-listless way, but his attention instantly became riveted, and he
-gave a little cry of satisfaction. "This is indeed important,"
-said he.
-
-"Ha! you find it so?"
-
-"Extremely so. I congratulate you warmly."
-
-Lestrade rose in his triumph and bent his head to look. "Why," he
-shrieked, "you're looking at the wrong side!"
-
-"On the contrary, this is the right side."
-
-"The right side? You're mad! Here is the note written in pencil
-over here."
-
-"And over here is what appears to be the fragment of a hotel
-bill, which interests me deeply."
-
-"There's nothing in it. I looked at it before," said Lestrade.
-"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
-6d., glass sherry, 8d.' I see nothing in that."
-
-"Very likely not. It is most important, all the same. As to the
-note, it is important also, or at least the initials are, so I
-congratulate you again."
-
-"I've wasted time enough," said Lestrade, rising. "I believe in
-hard work and not in sitting by the fire spinning fine theories.
-Good-day, Mr. Holmes, and we shall see which gets to the bottom
-of the matter first." He gathered up the garments, thrust them
-into the bag, and made for the door.
-
-"Just one hint to you, Lestrade," drawled Holmes before his rival
-vanished; "I will tell you the true solution of the matter. Lady
-St. Simon is a myth. There is not, and there never has been, any
-such person."
-
-Lestrade looked sadly at my companion. Then he turned to me,
-tapped his forehead three times, shook his head solemnly, and
-hurried away.
-
-He had hardly shut the door behind him when Holmes rose to put on
-his overcoat. "There is something in what the fellow says about
-outdoor work," he remarked, "so I think, Watson, that I must
-leave you to your papers for a little."
-
-It was after five o'clock when Sherlock Holmes left me, but I had
-no time to be lonely, for within an hour there arrived a
-confectioner's man with a very large flat box. This he unpacked
-with the help of a youth whom he had brought with him, and
-presently, to my very great astonishment, a quite epicurean
-little cold supper began to be laid out upon our humble
-lodging-house mahogany. There were a couple of brace of cold
-woodcock, a pheasant, a pâté de foie gras pie with a group of
-ancient and cobwebby bottles. Having laid out all these luxuries,
-my two visitors vanished away, like the genii of the Arabian
-Nights, with no explanation save that the things had been paid
-for and were ordered to this address.
-
-Just before nine o'clock Sherlock Holmes stepped briskly into the
-room. His features were gravely set, but there was a light in his
-eye which made me think that he had not been disappointed in his
-conclusions.
-
-"They have laid the supper, then," he said, rubbing his hands.
-
-"You seem to expect company. They have laid for five."
-
-"Yes, I fancy we may have some company dropping in," said he. "I
-am surprised that Lord St. Simon has not already arrived. Ha! I
-fancy that I hear his step now upon the stairs."
-
-It was indeed our visitor of the afternoon who came bustling in,
-dangling his glasses more vigorously than ever, and with a very
-perturbed expression upon his aristocratic features.
-
-"My messenger reached you, then?" asked Holmes.
-
-"Yes, and I confess that the contents startled me beyond measure.
-Have you good authority for what you say?"
-
-"The best possible."
-
-Lord St. Simon sank into a chair and passed his hand over his
-forehead.
-
-"What will the Duke say," he murmured, "when he hears that one of
-the family has been subjected to such humiliation?"
-
-"It is the purest accident. I cannot allow that there is any
-humiliation."
-
-"Ah, you look on these things from another standpoint."
-
-"I fail to see that anyone is to blame. I can hardly see how the
-lady could have acted otherwise, though her abrupt method of
-doing it was undoubtedly to be regretted. Having no mother, she
-had no one to advise her at such a crisis."
-
-"It was a slight, sir, a public slight," said Lord St. Simon,
-tapping his fingers upon the table.
-
-"You must make allowance for this poor girl, placed in so
-unprecedented a position."
-
-"I will make no allowance. I am very angry indeed, and I have
-been shamefully used."
-
-"I think that I heard a ring," said Holmes. "Yes, there are steps
-on the landing. If I cannot persuade you to take a lenient view
-of the matter, Lord St. Simon, I have brought an advocate here
-who may be more successful." He opened the door and ushered in a
-lady and gentleman. "Lord St. Simon," said he "allow me to
-introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
-think, you have already met."
-
-At the sight of these newcomers our client had sprung from his
-seat and stood very erect, with his eyes cast down and his hand
-thrust into the breast of his frock-coat, a picture of offended
-dignity. The lady had taken a quick step forward and had held out
-her hand to him, but he still refused to raise his eyes. It was
-as well for his resolution, perhaps, for her pleading face was
-one which it was hard to resist.
-
-"You're angry, Robert," said she. "Well, I guess you have every
-cause to be."
-
-"Pray make no apology to me," said Lord St. Simon bitterly.
-
-"Oh, yes, I know that I have treated you real bad and that I
-should have spoken to you before I went; but I was kind of
-rattled, and from the time when I saw Frank here again I just
-didn't know what I was doing or saying. I only wonder I didn't
-fall down and do a faint right there before the altar."
-
-"Perhaps, Mrs. Moulton, you would like my friend and me to leave
-the room while you explain this matter?"
-
-"If I may give an opinion," remarked the strange gentleman,
-"we've had just a little too much secrecy over this business
-already. For my part, I should like all Europe and America to
-hear the rights of it." He was a small, wiry, sunburnt man,
-clean-shaven, with a sharp face and alert manner.
-
-"Then I'll tell our story right away," said the lady. "Frank here
-and I met in '84, in McQuire's camp, near the Rockies, where pa
-was working a claim. We were engaged to each other, Frank and I;
-but then one day father struck a rich pocket and made a pile,
-while poor Frank here had a claim that petered out and came to
-nothing. The richer pa grew the poorer was Frank; so at last pa
-wouldn't hear of our engagement lasting any longer, and he took
-me away to 'Frisco. Frank wouldn't throw up his hand, though; so
-he followed me there, and he saw me without pa knowing anything
-about it. It would only have made him mad to know, so we just
-fixed it all up for ourselves. Frank said that he would go and
-make his pile, too, and never come back to claim me until he had
-as much as pa. So then I promised to wait for him to the end of
-time and pledged myself not to marry anyone else while he lived.
-'Why shouldn't we be married right away, then,' said he, 'and
-then I will feel sure of you; and I won't claim to be your
-husband until I come back?' Well, we talked it over, and he had
-fixed it all up so nicely, with a clergyman all ready in waiting,
-that we just did it right there; and then Frank went off to seek
-his fortune, and I went back to pa.
-
-"The next I heard of Frank was that he was in Montana, and then
-he went prospecting in Arizona, and then I heard of him from New
-Mexico. After that came a long newspaper story about how a
-miners' camp had been attacked by Apache Indians, and there was
-my Frank's name among the killed. I fainted dead away, and I was
-very sick for months after. Pa thought I had a decline and took
-me to half the doctors in 'Frisco. Not a word of news came for a
-year and more, so that I never doubted that Frank was really
-dead. Then Lord St. Simon came to 'Frisco, and we came to London,
-and a marriage was arranged, and pa was very pleased, but I felt
-all the time that no man on this earth would ever take the place
-in my heart that had been given to my poor Frank.
-
-"Still, if I had married Lord St. Simon, of course I'd have done
-my duty by him. We can't command our love, but we can our
-actions. I went to the altar with him with the intention to make
-him just as good a wife as it was in me to be. But you may
-imagine what I felt when, just as I came to the altar rails, I
-glanced back and saw Frank standing and looking at me out of the
-first pew. I thought it was his ghost at first; but when I looked
-again there he was still, with a kind of question in his eyes, as
-if to ask me whether I were glad or sorry to see him. I wonder I
-didn't drop. I know that everything was turning round, and the
-words of the clergyman were just like the buzz of a bee in my
-ear. I didn't know what to do. Should I stop the service and make
-a scene in the church? I glanced at him again, and he seemed to
-know what I was thinking, for he raised his finger to his lips to
-tell me to be still. Then I saw him scribble on a piece of paper,
-and I knew that he was writing me a note. As I passed his pew on
-the way out I dropped my bouquet over to him, and he slipped the
-note into my hand when he returned me the flowers. It was only a
-line asking me to join him when he made the sign to me to do so.
-Of course I never doubted for a moment that my first duty was now
-to him, and I determined to do just whatever he might direct.
-
-"When I got back I told my maid, who had known him in California,
-and had always been his friend. I ordered her to say nothing, but
-to get a few things packed and my ulster ready. I know I ought to
-have spoken to Lord St. Simon, but it was dreadful hard before
-his mother and all those great people. I just made up my mind to
-run away and explain afterwards. I hadn't been at the table ten
-minutes before I saw Frank out of the window at the other side of
-the road. He beckoned to me and then began walking into the Park.
-I slipped out, put on my things, and followed him. Some woman
-came talking something or other about Lord St. Simon to
-me--seemed to me from the little I heard as if he had a little
-secret of his own before marriage also--but I managed to get away
-from her and soon overtook Frank. We got into a cab together, and
-away we drove to some lodgings he had taken in Gordon Square, and
-that was my true wedding after all those years of waiting. Frank
-had been a prisoner among the Apaches, had escaped, came on to
-'Frisco, found that I had given him up for dead and had gone to
-England, followed me there, and had come upon me at last on the
-very morning of my second wedding."
-
-"I saw it in a paper," explained the American. "It gave the name
-and the church but not where the lady lived."
-
-"Then we had a talk as to what we should do, and Frank was all
-for openness, but I was so ashamed of it all that I felt as if I
-should like to vanish away and never see any of them again--just
-sending a line to pa, perhaps, to show him that I was alive. It
-was awful to me to think of all those lords and ladies sitting
-round that breakfast-table and waiting for me to come back. So
-Frank took my wedding-clothes and things and made a bundle of
-them, so that I should not be traced, and dropped them away
-somewhere where no one could find them. It is likely that we
-should have gone on to Paris to-morrow, only that this good
-gentleman, Mr. Holmes, came round to us this evening, though how
-he found us is more than I can think, and he showed us very
-clearly and kindly that I was wrong and that Frank was right, and
-that we should be putting ourselves in the wrong if we were so
-secret. Then he offered to give us a chance of talking to Lord
-St. Simon alone, and so we came right away round to his rooms at
-once. Now, Robert, you have heard it all, and I am very sorry if
-I have given you pain, and I hope that you do not think very
-meanly of me."
-
-Lord St. Simon had by no means relaxed his rigid attitude, but
-had listened with a frowning brow and a compressed lip to this
-long narrative.
-
-"Excuse me," he said, "but it is not my custom to discuss my most
-intimate personal affairs in this public manner."
-
-"Then you won't forgive me? You won't shake hands before I go?"
-
-"Oh, certainly, if it would give you any pleasure." He put out
-his hand and coldly grasped that which she extended to him.
-
-"I had hoped," suggested Holmes, "that you would have joined us
-in a friendly supper."
-
-"I think that there you ask a little too much," responded his
-Lordship. "I may be forced to acquiesce in these recent
-developments, but I can hardly be expected to make merry over
-them. I think that with your permission I will now wish you all a
-very good-night." He included us all in a sweeping bow and
-stalked out of the room.
-
-"Then I trust that you at least will honour me with your
-company," said Sherlock Holmes. "It is always a joy to meet an
-American, Mr. Moulton, for I am one of those who believe that the
-folly of a monarch and the blundering of a minister in far-gone
-years will not prevent our children from being some day citizens
-of the same world-wide country under a flag which shall be a
-quartering of the Union Jack with the Stars and Stripes."
-
-"The case has been an interesting one," remarked Holmes when our
-visitors had left us, "because it serves to show very clearly how
-simple the explanation may be of an affair which at first sight
-seems to be almost inexplicable. Nothing could be more natural
-than the sequence of events as narrated by this lady, and nothing
-stranger than the result when viewed, for instance, by Mr.
-Lestrade of Scotland Yard."
-
-"You were not yourself at fault at all, then?"
-
-"From the first, two facts were very obvious to me, the one that
-the lady had been quite willing to undergo the wedding ceremony,
-the other that she had repented of it within a few minutes of
-returning home. Obviously something had occurred during the
-morning, then, to cause her to change her mind. What could that
-something be? She could not have spoken to anyone when she was
-out, for she had been in the company of the bridegroom. Had she
-seen someone, then? If she had, it must be someone from America
-because she had spent so short a time in this country that she
-could hardly have allowed anyone to acquire so deep an influence
-over her that the mere sight of him would induce her to change
-her plans so completely. You see we have already arrived, by a
-process of exclusion, at the idea that she might have seen an
-American. Then who could this American be, and why should he
-possess so much influence over her? It might be a lover; it might
-be a husband. Her young womanhood had, I knew, been spent in
-rough scenes and under strange conditions. So far I had got
-before I ever heard Lord St. Simon's narrative. When he told us
-of a man in a pew, of the change in the bride's manner, of so
-transparent a device for obtaining a note as the dropping of a
-bouquet, of her resort to her confidential maid, and of her very
-significant allusion to claim-jumping--which in miners' parlance
-means taking possession of that which another person has a prior
-claim to--the whole situation became absolutely clear. She had
-gone off with a man, and the man was either a lover or was a
-previous husband--the chances being in favour of the latter."
-
-"And how in the world did you find them?"
-
-"It might have been difficult, but friend Lestrade held
-information in his hands the value of which he did not himself
-know. The initials were, of course, of the highest importance,
-but more valuable still was it to know that within a week he had
-settled his bill at one of the most select London hotels."
-
-"How did you deduce the select?"
-
-"By the select prices. Eight shillings for a bed and eightpence
-for a glass of sherry pointed to one of the most expensive
-hotels. There are not many in London which charge at that rate.
-In the second one which I visited in Northumberland Avenue, I
-learned by an inspection of the book that Francis H. Moulton, an
-American gentleman, had left only the day before, and on looking
-over the entries against him, I came upon the very items which I
-had seen in the duplicate bill. His letters were to be forwarded
-to 226 Gordon Square; so thither I travelled, and being fortunate
-enough to find the loving couple at home, I ventured to give them
-some paternal advice and to point out to them that it would be
-better in every way that they should make their position a little
-clearer both to the general public and to Lord St. Simon in
-particular. I invited them to meet him here, and, as you see, I
-made him keep the appointment."
-
-"But with no very good result," I remarked. "His conduct was
-certainly not very gracious."
-
-"Ah, Watson," said Holmes, smiling, "perhaps you would not be
-very gracious either, if, after all the trouble of wooing and
-wedding, you found yourself deprived in an instant of wife and of
-fortune. I think that we may judge Lord St. Simon very mercifully
-and thank our stars that we are never likely to find ourselves in
-the same position. Draw your chair up and hand me my violin, for
-the only problem we have still to solve is how to while away
-these bleak autumnal evenings."
-
-
-
-XI. THE ADVENTURE OF THE BERYL CORONET
-
-"Holmes," said I as I stood one morning in our bow-window looking
-down the street, "here is a madman coming along. It seems rather
-sad that his relatives should allow him to come out alone."
-
-My friend rose lazily from his armchair and stood with his hands
-in the pockets of his dressing-gown, looking over my shoulder. It
-was a bright, crisp February morning, and the snow of the day
-before still lay deep upon the ground, shimmering brightly in the
-wintry sun. Down the centre of Baker Street it had been ploughed
-into a brown crumbly band by the traffic, but at either side and
-on the heaped-up edges of the foot-paths it still lay as white as
-when it fell. The grey pavement had been cleaned and scraped, but
-was still dangerously slippery, so that there were fewer
-passengers than usual. Indeed, from the direction of the
-Metropolitan Station no one was coming save the single gentleman
-whose eccentric conduct had drawn my attention.
-
-He was a man of about fifty, tall, portly, and imposing, with a
-massive, strongly marked face and a commanding figure. He was
-dressed in a sombre yet rich style, in black frock-coat, shining
-hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
-his actions were in absurd contrast to the dignity of his dress
-and features, for he was running hard, with occasional little
-springs, such as a weary man gives who is little accustomed to
-set any tax upon his legs. As he ran he jerked his hands up and
-down, waggled his head, and writhed his face into the most
-extraordinary contortions.
-
-"What on earth can be the matter with him?" I asked. "He is
-looking up at the numbers of the houses."
-
-"I believe that he is coming here," said Holmes, rubbing his
-hands.
-
-"Here?"
-
-"Yes; I rather think he is coming to consult me professionally. I
-think that I recognise the symptoms. Ha! did I not tell you?" As
-he spoke, the man, puffing and blowing, rushed at our door and
-pulled at our bell until the whole house resounded with the
-clanging.
-
-A few moments later he was in our room, still puffing, still
-gesticulating, but with so fixed a look of grief and despair in
-his eyes that our smiles were turned in an instant to horror and
-pity. For a while he could not get his words out, but swayed his
-body and plucked at his hair like one who has been driven to the
-extreme limits of his reason. Then, suddenly springing to his
-feet, he beat his head against the wall with such force that we
-both rushed upon him and tore him away to the centre of the room.
-Sherlock Holmes pushed him down into the easy-chair and, sitting
-beside him, patted his hand and chatted with him in the easy,
-soothing tones which he knew so well how to employ.
-
-"You have come to me to tell your story, have you not?" said he.
-"You are fatigued with your haste. Pray wait until you have
-recovered yourself, and then I shall be most happy to look into
-any little problem which you may submit to me."
-
-The man sat for a minute or more with a heaving chest, fighting
-against his emotion. Then he passed his handkerchief over his
-brow, set his lips tight, and turned his face towards us.
-
-"No doubt you think me mad?" said he.
-
-"I see that you have had some great trouble," responded Holmes.
-
-"God knows I have!--a trouble which is enough to unseat my
-reason, so sudden and so terrible is it. Public disgrace I might
-have faced, although I am a man whose character has never yet
-borne a stain. Private affliction also is the lot of every man;
-but the two coming together, and in so frightful a form, have
-been enough to shake my very soul. Besides, it is not I alone.
-The very noblest in the land may suffer unless some way be found
-out of this horrible affair."
-
-"Pray compose yourself, sir," said Holmes, "and let me have a
-clear account of who you are and what it is that has befallen
-you."
-
-"My name," answered our visitor, "is probably familiar to your
-ears. I am Alexander Holder, of the banking firm of Holder &
-Stevenson, of Threadneedle Street."
-
-The name was indeed well known to us as belonging to the senior
-partner in the second largest private banking concern in the City
-of London. What could have happened, then, to bring one of the
-foremost citizens of London to this most pitiable pass? We
-waited, all curiosity, until with another effort he braced
-himself to tell his story.
-
-"I feel that time is of value," said he; "that is why I hastened
-here when the police inspector suggested that I should secure
-your co-operation. I came to Baker Street by the Underground and
-hurried from there on foot, for the cabs go slowly through this
-snow. That is why I was so out of breath, for I am a man who
-takes very little exercise. I feel better now, and I will put the
-facts before you as shortly and yet as clearly as I can.
-
-"It is, of course, well known to you that in a successful banking
-business as much depends upon our being able to find remunerative
-investments for our funds as upon our increasing our connection
-and the number of our depositors. One of our most lucrative means
-of laying out money is in the shape of loans, where the security
-is unimpeachable. We have done a good deal in this direction
-during the last few years, and there are many noble families to
-whom we have advanced large sums upon the security of their
-pictures, libraries, or plate.
-
-"Yesterday morning I was seated in my office at the bank when a
-card was brought in to me by one of the clerks. I started when I
-saw the name, for it was that of none other than--well, perhaps
-even to you I had better say no more than that it was a name
-which is a household word all over the earth--one of the highest,
-noblest, most exalted names in England. I was overwhelmed by the
-honour and attempted, when he entered, to say so, but he plunged
-at once into business with the air of a man who wishes to hurry
-quickly through a disagreeable task.
-
-"'Mr. Holder,' said he, 'I have been informed that you are in the
-habit of advancing money.'
-
-"'The firm does so when the security is good.' I answered.
-
-"'It is absolutely essential to me,' said he, 'that I should have
-50,000 pounds at once. I could, of course, borrow so trifling a
-sum ten times over from my friends, but I much prefer to make it
-a matter of business and to carry out that business myself. In my
-position you can readily understand that it is unwise to place
-one's self under obligations.'
-
-"'For how long, may I ask, do you want this sum?' I asked.
-
-"'Next Monday I have a large sum due to me, and I shall then most
-certainly repay what you advance, with whatever interest you
-think it right to charge. But it is very essential to me that the
-money should be paid at once.'
-
-"'I should be happy to advance it without further parley from my
-own private purse,' said I, 'were it not that the strain would be
-rather more than it could bear. If, on the other hand, I am to do
-it in the name of the firm, then in justice to my partner I must
-insist that, even in your case, every businesslike precaution
-should be taken.'
-
-"'I should much prefer to have it so,' said he, raising up a
-square, black morocco case which he had laid beside his chair.
-'You have doubtless heard of the Beryl Coronet?'
-
-"'One of the most precious public possessions of the empire,'
-said I.
-
-"'Precisely.' He opened the case, and there, imbedded in soft,
-flesh-coloured velvet, lay the magnificent piece of jewellery
-which he had named. 'There are thirty-nine enormous beryls,' said
-he, 'and the price of the gold chasing is incalculable. The
-lowest estimate would put the worth of the coronet at double the
-sum which I have asked. I am prepared to leave it with you as my
-security.'
-
-"I took the precious case into my hands and looked in some
-perplexity from it to my illustrious client.
-
-"'You doubt its value?' he asked.
-
-"'Not at all. I only doubt--'
-
-"'The propriety of my leaving it. You may set your mind at rest
-about that. I should not dream of doing so were it not absolutely
-certain that I should be able in four days to reclaim it. It is a
-pure matter of form. Is the security sufficient?'
-
-"'Ample.'
-
-"'You understand, Mr. Holder, that I am giving you a strong proof
-of the confidence which I have in you, founded upon all that I
-have heard of you. I rely upon you not only to be discreet and to
-refrain from all gossip upon the matter but, above all, to
-preserve this coronet with every possible precaution because I
-need not say that a great public scandal would be caused if any
-harm were to befall it. Any injury to it would be almost as
-serious as its complete loss, for there are no beryls in the
-world to match these, and it would be impossible to replace them.
-I leave it with you, however, with every confidence, and I shall
-call for it in person on Monday morning.'
-
-"Seeing that my client was anxious to leave, I said no more but,
-calling for my cashier, I ordered him to pay over fifty 1000
-pound notes. When I was alone once more, however, with the
-precious case lying upon the table in front of me, I could not
-but think with some misgivings of the immense responsibility
-which it entailed upon me. There could be no doubt that, as it
-was a national possession, a horrible scandal would ensue if any
-misfortune should occur to it. I already regretted having ever
-consented to take charge of it. However, it was too late to alter
-the matter now, so I locked it up in my private safe and turned
-once more to my work.
-
-"When evening came I felt that it would be an imprudence to leave
-so precious a thing in the office behind me. Bankers' safes had
-been forced before now, and why should not mine be? If so, how
-terrible would be the position in which I should find myself! I
-determined, therefore, that for the next few days I would always
-carry the case backward and forward with me, so that it might
-never be really out of my reach. With this intention, I called a
-cab and drove out to my house at Streatham, carrying the jewel
-with me. I did not breathe freely until I had taken it upstairs
-and locked it in the bureau of my dressing-room.
-
-"And now a word as to my household, Mr. Holmes, for I wish you to
-thoroughly understand the situation. My groom and my page sleep
-out of the house, and may be set aside altogether. I have three
-maid-servants who have been with me a number of years and whose
-absolute reliability is quite above suspicion. Another, Lucy
-Parr, the second waiting-maid, has only been in my service a few
-months. She came with an excellent character, however, and has
-always given me satisfaction. She is a very pretty girl and has
-attracted admirers who have occasionally hung about the place.
-That is the only drawback which we have found to her, but we
-believe her to be a thoroughly good girl in every way.
-
-"So much for the servants. My family itself is so small that it
-will not take me long to describe it. I am a widower and have an
-only son, Arthur. He has been a disappointment to me, Mr.
-Holmes--a grievous disappointment. I have no doubt that I am
-myself to blame. People tell me that I have spoiled him. Very
-likely I have. When my dear wife died I felt that he was all I
-had to love. I could not bear to see the smile fade even for a
-moment from his face. I have never denied him a wish. Perhaps it
-would have been better for both of us had I been sterner, but I
-meant it for the best.
-
-"It was naturally my intention that he should succeed me in my
-business, but he was not of a business turn. He was wild,
-wayward, and, to speak the truth, I could not trust him in the
-handling of large sums of money. When he was young he became a
-member of an aristocratic club, and there, having charming
-manners, he was soon the intimate of a number of men with long
-purses and expensive habits. He learned to play heavily at cards
-and to squander money on the turf, until he had again and again
-to come to me and implore me to give him an advance upon his
-allowance, that he might settle his debts of honour. He tried
-more than once to break away from the dangerous company which he
-was keeping, but each time the influence of his friend, Sir
-George Burnwell, was enough to draw him back again.
-
-"And, indeed, I could not wonder that such a man as Sir George
-Burnwell should gain an influence over him, for he has frequently
-brought him to my house, and I have found myself that I could
-hardly resist the fascination of his manner. He is older than
-Arthur, a man of the world to his finger-tips, one who had been
-everywhere, seen everything, a brilliant talker, and a man of
-great personal beauty. Yet when I think of him in cold blood, far
-away from the glamour of his presence, I am convinced from his
-cynical speech and the look which I have caught in his eyes that
-he is one who should be deeply distrusted. So I think, and so,
-too, thinks my little Mary, who has a woman's quick insight into
-character.
-
-"And now there is only she to be described. She is my niece; but
-when my brother died five years ago and left her alone in the
-world I adopted her, and have looked upon her ever since as my
-daughter. She is a sunbeam in my house--sweet, loving, beautiful,
-a wonderful manager and housekeeper, yet as tender and quiet and
-gentle as a woman could be. She is my right hand. I do not know
-what I could do without her. In only one matter has she ever gone
-against my wishes. Twice my boy has asked her to marry him, for
-he loves her devotedly, but each time she has refused him. I
-think that if anyone could have drawn him into the right path it
-would have been she, and that his marriage might have changed his
-whole life; but now, alas! it is too late--forever too late!
-
-"Now, Mr. Holmes, you know the people who live under my roof, and
-I shall continue with my miserable story.
-
-"When we were taking coffee in the drawing-room that night after
-dinner, I told Arthur and Mary my experience, and of the precious
-treasure which we had under our roof, suppressing only the name
-of my client. Lucy Parr, who had brought in the coffee, had, I am
-sure, left the room; but I cannot swear that the door was closed.
-Mary and Arthur were much interested and wished to see the famous
-coronet, but I thought it better not to disturb it.
-
-"'Where have you put it?' asked Arthur.
-
-"'In my own bureau.'
-
-"'Well, I hope to goodness the house won't be burgled during the
-night.' said he.
-
-"'It is locked up,' I answered.
-
-"'Oh, any old key will fit that bureau. When I was a youngster I
-have opened it myself with the key of the box-room cupboard.'
-
-"He often had a wild way of talking, so that I thought little of
-what he said. He followed me to my room, however, that night with
-a very grave face.
-
-"'Look here, dad,' said he with his eyes cast down, 'can you let
-me have 200 pounds?'
-
-"'No, I cannot!' I answered sharply. 'I have been far too
-generous with you in money matters.'
-
-"'You have been very kind,' said he, 'but I must have this money,
-or else I can never show my face inside the club again.'
-
-"'And a very good thing, too!' I cried.
-
-"'Yes, but you would not have me leave it a dishonoured man,'
-said he. 'I could not bear the disgrace. I must raise the money
-in some way, and if you will not let me have it, then I must try
-other means.'
-
-"I was very angry, for this was the third demand during the
-month. 'You shall not have a farthing from me,' I cried, on which
-he bowed and left the room without another word.
-
-"When he was gone I unlocked my bureau, made sure that my
-treasure was safe, and locked it again. Then I started to go
-round the house to see that all was secure--a duty which I
-usually leave to Mary but which I thought it well to perform
-myself that night. As I came down the stairs I saw Mary herself
-at the side window of the hall, which she closed and fastened as
-I approached.
-
-"'Tell me, dad,' said she, looking, I thought, a little
-disturbed, 'did you give Lucy, the maid, leave to go out
-to-night?'
-
-"'Certainly not.'
-
-"'She came in just now by the back door. I have no doubt that she
-has only been to the side gate to see someone, but I think that
-it is hardly safe and should be stopped.'
-
-"'You must speak to her in the morning, or I will if you prefer
-it. Are you sure that everything is fastened?'
-
-"'Quite sure, dad.'
-
-"'Then, good-night.' I kissed her and went up to my bedroom
-again, where I was soon asleep.
-
-"I am endeavouring to tell you everything, Mr. Holmes, which may
-have any bearing upon the case, but I beg that you will question
-me upon any point which I do not make clear."
-
-"On the contrary, your statement is singularly lucid."
-
-"I come to a part of my story now in which I should wish to be
-particularly so. I am not a very heavy sleeper, and the anxiety
-in my mind tended, no doubt, to make me even less so than usual.
-About two in the morning, then, I was awakened by some sound in
-the house. It had ceased ere I was wide awake, but it had left an
-impression behind it as though a window had gently closed
-somewhere. I lay listening with all my ears. Suddenly, to my
-horror, there was a distinct sound of footsteps moving softly in
-the next room. I slipped out of bed, all palpitating with fear,
-and peeped round the corner of my dressing-room door.
-
-"'Arthur!' I screamed, 'you villain! you thief! How dare you
-touch that coronet?'
-
-"The gas was half up, as I had left it, and my unhappy boy,
-dressed only in his shirt and trousers, was standing beside the
-light, holding the coronet in his hands. He appeared to be
-wrenching at it, or bending it with all his strength. At my cry
-he dropped it from his grasp and turned as pale as death. I
-snatched it up and examined it. One of the gold corners, with
-three of the beryls in it, was missing.
-
-"'You blackguard!' I shouted, beside myself with rage. 'You have
-destroyed it! You have dishonoured me forever! Where are the
-jewels which you have stolen?'
-
-"'Stolen!' he cried.
-
-"'Yes, thief!' I roared, shaking him by the shoulder.
-
-"'There are none missing. There cannot be any missing,' said he.
-
-"'There are three missing. And you know where they are. Must I
-call you a liar as well as a thief? Did I not see you trying to
-tear off another piece?'
-
-"'You have called me names enough,' said he, 'I will not stand it
-any longer. I shall not say another word about this business,
-since you have chosen to insult me. I will leave your house in
-the morning and make my own way in the world.'
-
-"'You shall leave it in the hands of the police!' I cried
-half-mad with grief and rage. 'I shall have this matter probed to
-the bottom.'
-
-"'You shall learn nothing from me,' said he with a passion such
-as I should not have thought was in his nature. 'If you choose to
-call the police, let the police find what they can.'
-
-"By this time the whole house was astir, for I had raised my
-voice in my anger. Mary was the first to rush into my room, and,
-at the sight of the coronet and of Arthur's face, she read the
-whole story and, with a scream, fell down senseless on the
-ground. I sent the house-maid for the police and put the
-investigation into their hands at once. When the inspector and a
-constable entered the house, Arthur, who had stood sullenly with
-his arms folded, asked me whether it was my intention to charge
-him with theft. I answered that it had ceased to be a private
-matter, but had become a public one, since the ruined coronet was
-national property. I was determined that the law should have its
-way in everything.
-
-"'At least,' said he, 'you will not have me arrested at once. It
-would be to your advantage as well as mine if I might leave the
-house for five minutes.'
-
-"'That you may get away, or perhaps that you may conceal what you
-have stolen,' said I. And then, realising the dreadful position
-in which I was placed, I implored him to remember that not only
-my honour but that of one who was far greater than I was at
-stake; and that he threatened to raise a scandal which would
-convulse the nation. He might avert it all if he would but tell
-me what he had done with the three missing stones.
-
-"'You may as well face the matter,' said I; 'you have been caught
-in the act, and no confession could make your guilt more heinous.
-If you but make such reparation as is in your power, by telling
-us where the beryls are, all shall be forgiven and forgotten.'
-
-"'Keep your forgiveness for those who ask for it,' he answered,
-turning away from me with a sneer. I saw that he was too hardened
-for any words of mine to influence him. There was but one way for
-it. I called in the inspector and gave him into custody. A search
-was made at once not only of his person but of his room and of
-every portion of the house where he could possibly have concealed
-the gems; but no trace of them could be found, nor would the
-wretched boy open his mouth for all our persuasions and our
-threats. This morning he was removed to a cell, and I, after
-going through all the police formalities, have hurried round to
-you to implore you to use your skill in unravelling the matter.
-The police have openly confessed that they can at present make
-nothing of it. You may go to any expense which you think
-necessary. I have already offered a reward of 1000 pounds. My
-God, what shall I do! I have lost my honour, my gems, and my son
-in one night. Oh, what shall I do!"
-
-He put a hand on either side of his head and rocked himself to
-and fro, droning to himself like a child whose grief has got
-beyond words.
-
-Sherlock Holmes sat silent for some few minutes, with his brows
-knitted and his eyes fixed upon the fire.
-
-"Do you receive much company?" he asked.
-
-"None save my partner with his family and an occasional friend of
-Arthur's. Sir George Burnwell has been several times lately. No
-one else, I think."
-
-"Do you go out much in society?"
-
-"Arthur does. Mary and I stay at home. We neither of us care for
-it."
-
-"That is unusual in a young girl."
-
-"She is of a quiet nature. Besides, she is not so very young. She
-is four-and-twenty."
-
-"This matter, from what you say, seems to have been a shock to
-her also."
-
-"Terrible! She is even more affected than I."
-
-"You have neither of you any doubt as to your son's guilt?"
-
-"How can we have when I saw him with my own eyes with the coronet
-in his hands."
-
-"I hardly consider that a conclusive proof. Was the remainder of
-the coronet at all injured?"
-
-"Yes, it was twisted."
-
-"Do you not think, then, that he might have been trying to
-straighten it?"
-
-"God bless you! You are doing what you can for him and for me.
-But it is too heavy a task. What was he doing there at all? If
-his purpose were innocent, why did he not say so?"
-
-"Precisely. And if it were guilty, why did he not invent a lie?
-His silence appears to me to cut both ways. There are several
-singular points about the case. What did the police think of the
-noise which awoke you from your sleep?"
-
-"They considered that it might be caused by Arthur's closing his
-bedroom door."
-
-"A likely story! As if a man bent on felony would slam his door
-so as to wake a household. What did they say, then, of the
-disappearance of these gems?"
-
-"They are still sounding the planking and probing the furniture
-in the hope of finding them."
-
-"Have they thought of looking outside the house?"
-
-"Yes, they have shown extraordinary energy. The whole garden has
-already been minutely examined."
-
-"Now, my dear sir," said Holmes, "is it not obvious to you now
-that this matter really strikes very much deeper than either you
-or the police were at first inclined to think? It appeared to you
-to be a simple case; to me it seems exceedingly complex. Consider
-what is involved by your theory. You suppose that your son came
-down from his bed, went, at great risk, to your dressing-room,
-opened your bureau, took out your coronet, broke off by main
-force a small portion of it, went off to some other place,
-concealed three gems out of the thirty-nine, with such skill that
-nobody can find them, and then returned with the other thirty-six
-into the room in which he exposed himself to the greatest danger
-of being discovered. I ask you now, is such a theory tenable?"
-
-"But what other is there?" cried the banker with a gesture of
-despair. "If his motives were innocent, why does he not explain
-them?"
-
-"It is our task to find that out," replied Holmes; "so now, if
-you please, Mr. Holder, we will set off for Streatham together,
-and devote an hour to glancing a little more closely into
-details."
-
-My friend insisted upon my accompanying them in their expedition,
-which I was eager enough to do, for my curiosity and sympathy
-were deeply stirred by the story to which we had listened. I
-confess that the guilt of the banker's son appeared to me to be
-as obvious as it did to his unhappy father, but still I had such
-faith in Holmes' judgment that I felt that there must be some
-grounds for hope as long as he was dissatisfied with the accepted
-explanation. He hardly spoke a word the whole way out to the
-southern suburb, but sat with his chin upon his breast and his
-hat drawn over his eyes, sunk in the deepest thought. Our client
-appeared to have taken fresh heart at the little glimpse of hope
-which had been presented to him, and he even broke into a
-desultory chat with me over his business affairs. A short railway
-journey and a shorter walk brought us to Fairbank, the modest
-residence of the great financier.
-
-Fairbank was a good-sized square house of white stone, standing
-back a little from the road. A double carriage-sweep, with a
-snow-clad lawn, stretched down in front to two large iron gates
-which closed the entrance. On the right side was a small wooden
-thicket, which led into a narrow path between two neat hedges
-stretching from the road to the kitchen door, and forming the
-tradesmen's entrance. On the left ran a lane which led to the
-stables, and was not itself within the grounds at all, being a
-public, though little used, thoroughfare. Holmes left us standing
-at the door and walked slowly all round the house, across the
-front, down the tradesmen's path, and so round by the garden
-behind into the stable lane. So long was he that Mr. Holder and I
-went into the dining-room and waited by the fire until he should
-return. We were sitting there in silence when the door opened and
-a young lady came in. She was rather above the middle height,
-slim, with dark hair and eyes, which seemed the darker against
-the absolute pallor of her skin. I do not think that I have ever
-seen such deadly paleness in a woman's face. Her lips, too, were
-bloodless, but her eyes were flushed with crying. As she swept
-silently into the room she impressed me with a greater sense of
-grief than the banker had done in the morning, and it was the
-more striking in her as she was evidently a woman of strong
-character, with immense capacity for self-restraint. Disregarding
-my presence, she went straight to her uncle and passed her hand
-over his head with a sweet womanly caress.
-
-"You have given orders that Arthur should be liberated, have you
-not, dad?" she asked.
-
-"No, no, my girl, the matter must be probed to the bottom."
-
-"But I am so sure that he is innocent. You know what woman's
-instincts are. I know that he has done no harm and that you will
-be sorry for having acted so harshly."
-
-"Why is he silent, then, if he is innocent?"
-
-"Who knows? Perhaps because he was so angry that you should
-suspect him."
-
-"How could I help suspecting him, when I actually saw him with
-the coronet in his hand?"
-
-"Oh, but he had only picked it up to look at it. Oh, do, do take
-my word for it that he is innocent. Let the matter drop and say
-no more. It is so dreadful to think of our dear Arthur in
-prison!"
-
-"I shall never let it drop until the gems are found--never, Mary!
-Your affection for Arthur blinds you as to the awful consequences
-to me. Far from hushing the thing up, I have brought a gentleman
-down from London to inquire more deeply into it."
-
-"This gentleman?" she asked, facing round to me.
-
-"No, his friend. He wished us to leave him alone. He is round in
-the stable lane now."
-
-"The stable lane?" She raised her dark eyebrows. "What can he
-hope to find there? Ah! this, I suppose, is he. I trust, sir,
-that you will succeed in proving, what I feel sure is the truth,
-that my cousin Arthur is innocent of this crime."
-
-"I fully share your opinion, and I trust, with you, that we may
-prove it," returned Holmes, going back to the mat to knock the
-snow from his shoes. "I believe I have the honour of addressing
-Miss Mary Holder. Might I ask you a question or two?"
-
-"Pray do, sir, if it may help to clear this horrible affair up."
-
-"You heard nothing yourself last night?"
-
-"Nothing, until my uncle here began to speak loudly. I heard
-that, and I came down."
-
-"You shut up the windows and doors the night before. Did you
-fasten all the windows?"
-
-"Yes."
-
-"Were they all fastened this morning?"
-
-"Yes."
-
-"You have a maid who has a sweetheart? I think that you remarked
-to your uncle last night that she had been out to see him?"
-
-"Yes, and she was the girl who waited in the drawing-room, and
-who may have heard uncle's remarks about the coronet."
-
-"I see. You infer that she may have gone out to tell her
-sweetheart, and that the two may have planned the robbery."
-
-"But what is the good of all these vague theories," cried the
-banker impatiently, "when I have told you that I saw Arthur with
-the coronet in his hands?"
-
-"Wait a little, Mr. Holder. We must come back to that. About this
-girl, Miss Holder. You saw her return by the kitchen door, I
-presume?"
-
-"Yes; when I went to see if the door was fastened for the night I
-met her slipping in. I saw the man, too, in the gloom."
-
-"Do you know him?"
-
-"Oh, yes! he is the green-grocer who brings our vegetables round.
-His name is Francis Prosper."
-
-"He stood," said Holmes, "to the left of the door--that is to
-say, farther up the path than is necessary to reach the door?"
-
-"Yes, he did."
-
-"And he is a man with a wooden leg?"
-
-Something like fear sprang up in the young lady's expressive
-black eyes. "Why, you are like a magician," said she. "How do you
-know that?" She smiled, but there was no answering smile in
-Holmes' thin, eager face.
-
-"I should be very glad now to go upstairs," said he. "I shall
-probably wish to go over the outside of the house again. Perhaps
-I had better take a look at the lower windows before I go up."
-
-He walked swiftly round from one to the other, pausing only at
-the large one which looked from the hall onto the stable lane.
-This he opened and made a very careful examination of the sill
-with his powerful magnifying lens. "Now we shall go upstairs,"
-said he at last.
-
-The banker's dressing-room was a plainly furnished little
-chamber, with a grey carpet, a large bureau, and a long mirror.
-Holmes went to the bureau first and looked hard at the lock.
-
-"Which key was used to open it?" he asked.
-
-"That which my son himself indicated--that of the cupboard of the
-lumber-room."
-
-"Have you it here?"
-
-"That is it on the dressing-table."
-
-Sherlock Holmes took it up and opened the bureau.
-
-"It is a noiseless lock," said he. "It is no wonder that it did
-not wake you. This case, I presume, contains the coronet. We must
-have a look at it." He opened the case, and taking out the diadem
-he laid it upon the table. It was a magnificent specimen of the
-jeweller's art, and the thirty-six stones were the finest that I
-have ever seen. At one side of the coronet was a cracked edge,
-where a corner holding three gems had been torn away.
-
-"Now, Mr. Holder," said Holmes, "here is the corner which
-corresponds to that which has been so unfortunately lost. Might I
-beg that you will break it off."
-
-The banker recoiled in horror. "I should not dream of trying,"
-said he.
-
-"Then I will." Holmes suddenly bent his strength upon it, but
-without result. "I feel it give a little," said he; "but, though
-I am exceptionally strong in the fingers, it would take me all my
-time to break it. An ordinary man could not do it. Now, what do
-you think would happen if I did break it, Mr. Holder? There would
-be a noise like a pistol shot. Do you tell me that all this
-happened within a few yards of your bed and that you heard
-nothing of it?"
-
-"I do not know what to think. It is all dark to me."
-
-"But perhaps it may grow lighter as we go. What do you think,
-Miss Holder?"
-
-"I confess that I still share my uncle's perplexity."
-
-"Your son had no shoes or slippers on when you saw him?"
-
-"He had nothing on save only his trousers and shirt."
-
-"Thank you. We have certainly been favoured with extraordinary
-luck during this inquiry, and it will be entirely our own fault
-if we do not succeed in clearing the matter up. With your
-permission, Mr. Holder, I shall now continue my investigations
-outside."
-
-He went alone, at his own request, for he explained that any
-unnecessary footmarks might make his task more difficult. For an
-hour or more he was at work, returning at last with his feet
-heavy with snow and his features as inscrutable as ever.
-
-"I think that I have seen now all that there is to see, Mr.
-Holder," said he; "I can serve you best by returning to my
-rooms."
-
-"But the gems, Mr. Holmes. Where are they?"
-
-"I cannot tell."
-
-The banker wrung his hands. "I shall never see them again!" he
-cried. "And my son? You give me hopes?"
-
-"My opinion is in no way altered."
-
-"Then, for God's sake, what was this dark business which was
-acted in my house last night?"
-
-"If you can call upon me at my Baker Street rooms to-morrow
-morning between nine and ten I shall be happy to do what I can to
-make it clearer. I understand that you give me carte blanche to
-act for you, provided only that I get back the gems, and that you
-place no limit on the sum I may draw."
-
-"I would give my fortune to have them back."
-
-"Very good. I shall look into the matter between this and then.
-Good-bye; it is just possible that I may have to come over here
-again before evening."
-
-It was obvious to me that my companion's mind was now made up
-about the case, although what his conclusions were was more than
-I could even dimly imagine. Several times during our homeward
-journey I endeavoured to sound him upon the point, but he always
-glided away to some other topic, until at last I gave it over in
-despair. It was not yet three when we found ourselves in our
-rooms once more. He hurried to his chamber and was down again in
-a few minutes dressed as a common loafer. With his collar turned
-up, his shiny, seedy coat, his red cravat, and his worn boots, he
-was a perfect sample of the class.
-
-"I think that this should do," said he, glancing into the glass
-above the fireplace. "I only wish that you could come with me,
-Watson, but I fear that it won't do. I may be on the trail in
-this matter, or I may be following a will-o'-the-wisp, but I
-shall soon know which it is. I hope that I may be back in a few
-hours." He cut a slice of beef from the joint upon the sideboard,
-sandwiched it between two rounds of bread, and thrusting this
-rude meal into his pocket he started off upon his expedition.
-
-I had just finished my tea when he returned, evidently in
-excellent spirits, swinging an old elastic-sided boot in his
-hand. He chucked it down into a corner and helped himself to a
-cup of tea.
-
-"I only looked in as I passed," said he. "I am going right on."
-
-"Where to?"
-
-"Oh, to the other side of the West End. It may be some time
-before I get back. Don't wait up for me in case I should be
-late."
-
-"How are you getting on?"
-
-"Oh, so so. Nothing to complain of. I have been out to Streatham
-since I saw you last, but I did not call at the house. It is a
-very sweet little problem, and I would not have missed it for a
-good deal. However, I must not sit gossiping here, but must get
-these disreputable clothes off and return to my highly
-respectable self."
-
-I could see by his manner that he had stronger reasons for
-satisfaction than his words alone would imply. His eyes twinkled,
-and there was even a touch of colour upon his sallow cheeks. He
-hastened upstairs, and a few minutes later I heard the slam of
-the hall door, which told me that he was off once more upon his
-congenial hunt.
-
-I waited until midnight, but there was no sign of his return, so
-I retired to my room. It was no uncommon thing for him to be away
-for days and nights on end when he was hot upon a scent, so that
-his lateness caused me no surprise. I do not know at what hour he
-came in, but when I came down to breakfast in the morning there
-he was with a cup of coffee in one hand and the paper in the
-other, as fresh and trim as possible.
-
-"You will excuse my beginning without you, Watson," said he, "but
-you remember that our client has rather an early appointment this
-morning."
-
-"Why, it is after nine now," I answered. "I should not be
-surprised if that were he. I thought I heard a ring."
-
-It was, indeed, our friend the financier. I was shocked by the
-change which had come over him, for his face which was naturally
-of a broad and massive mould, was now pinched and fallen in,
-while his hair seemed to me at least a shade whiter. He entered
-with a weariness and lethargy which was even more painful than
-his violence of the morning before, and he dropped heavily into
-the armchair which I pushed forward for him.
-
-"I do not know what I have done to be so severely tried," said
-he. "Only two days ago I was a happy and prosperous man, without
-a care in the world. Now I am left to a lonely and dishonoured
-age. One sorrow comes close upon the heels of another. My niece,
-Mary, has deserted me."
-
-"Deserted you?"
-
-"Yes. Her bed this morning had not been slept in, her room was
-empty, and a note for me lay upon the hall table. I had said to
-her last night, in sorrow and not in anger, that if she had
-married my boy all might have been well with him. Perhaps it was
-thoughtless of me to say so. It is to that remark that she refers
-in this note:
-
-"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
-and that if I had acted differently this terrible misfortune
-might never have occurred. I cannot, with this thought in my
-mind, ever again be happy under your roof, and I feel that I must
-leave you forever. Do not worry about my future, for that is
-provided for; and, above all, do not search for me, for it will
-be fruitless labour and an ill-service to me. In life or in
-death, I am ever your loving,--MARY.'
-
-"What could she mean by that note, Mr. Holmes? Do you think it
-points to suicide?"
-
-"No, no, nothing of the kind. It is perhaps the best possible
-solution. I trust, Mr. Holder, that you are nearing the end of
-your troubles."
-
-"Ha! You say so! You have heard something, Mr. Holmes; you have
-learned something! Where are the gems?"
-
-"You would not think 1000 pounds apiece an excessive sum for
-them?"
-
-"I would pay ten."
-
-"That would be unnecessary. Three thousand will cover the matter.
-And there is a little reward, I fancy. Have you your check-book?
-Here is a pen. Better make it out for 4000 pounds."
-
-With a dazed face the banker made out the required check. Holmes
-walked over to his desk, took out a little triangular piece of
-gold with three gems in it, and threw it down upon the table.
-
-With a shriek of joy our client clutched it up.
-
-"You have it!" he gasped. "I am saved! I am saved!"
-
-The reaction of joy was as passionate as his grief had been, and
-he hugged his recovered gems to his bosom.
-
-"There is one other thing you owe, Mr. Holder," said Sherlock
-Holmes rather sternly.
-
-"Owe!" He caught up a pen. "Name the sum, and I will pay it."
-
-"No, the debt is not to me. You owe a very humble apology to that
-noble lad, your son, who has carried himself in this matter as I
-should be proud to see my own son do, should I ever chance to
-have one."
-
-"Then it was not Arthur who took them?"
-
-"I told you yesterday, and I repeat to-day, that it was not."
-
-"You are sure of it! Then let us hurry to him at once to let him
-know that the truth is known."
-
-"He knows it already. When I had cleared it all up I had an
-interview with him, and finding that he would not tell me the
-story, I told it to him, on which he had to confess that I was
-right and to add the very few details which were not yet quite
-clear to me. Your news of this morning, however, may open his
-lips."
-
-"For heaven's sake, tell me, then, what is this extraordinary
-mystery!"
-
-"I will do so, and I will show you the steps by which I reached
-it. And let me say to you, first, that which it is hardest for me
-to say and for you to hear: there has been an understanding
-between Sir George Burnwell and your niece Mary. They have now
-fled together."
-
-"My Mary? Impossible!"
-
-"It is unfortunately more than possible; it is certain. Neither
-you nor your son knew the true character of this man when you
-admitted him into your family circle. He is one of the most
-dangerous men in England--a ruined gambler, an absolutely
-desperate villain, a man without heart or conscience. Your niece
-knew nothing of such men. When he breathed his vows to her, as he
-had done to a hundred before her, she flattered herself that she
-alone had touched his heart. The devil knows best what he said,
-but at least she became his tool and was in the habit of seeing
-him nearly every evening."
-
-"I cannot, and I will not, believe it!" cried the banker with an
-ashen face.
-
-"I will tell you, then, what occurred in your house last night.
-Your niece, when you had, as she thought, gone to your room,
-slipped down and talked to her lover through the window which
-leads into the stable lane. His footmarks had pressed right
-through the snow, so long had he stood there. She told him of the
-coronet. His wicked lust for gold kindled at the news, and he
-bent her to his will. I have no doubt that she loved you, but
-there are women in whom the love of a lover extinguishes all
-other loves, and I think that she must have been one. She had
-hardly listened to his instructions when she saw you coming
-downstairs, on which she closed the window rapidly and told you
-about one of the servants' escapade with her wooden-legged lover,
-which was all perfectly true.
-
-"Your boy, Arthur, went to bed after his interview with you but
-he slept badly on account of his uneasiness about his club debts.
-In the middle of the night he heard a soft tread pass his door,
-so he rose and, looking out, was surprised to see his cousin
-walking very stealthily along the passage until she disappeared
-into your dressing-room. Petrified with astonishment, the lad
-slipped on some clothes and waited there in the dark to see what
-would come of this strange affair. Presently she emerged from the
-room again, and in the light of the passage-lamp your son saw
-that she carried the precious coronet in her hands. She passed
-down the stairs, and he, thrilling with horror, ran along and
-slipped behind the curtain near your door, whence he could see
-what passed in the hall beneath. He saw her stealthily open the
-window, hand out the coronet to someone in the gloom, and then
-closing it once more hurry back to her room, passing quite close
-to where he stood hid behind the curtain.
-
-"As long as she was on the scene he could not take any action
-without a horrible exposure of the woman whom he loved. But the
-instant that she was gone he realised how crushing a misfortune
-this would be for you, and how all-important it was to set it
-right. He rushed down, just as he was, in his bare feet, opened
-the window, sprang out into the snow, and ran down the lane,
-where he could see a dark figure in the moonlight. Sir George
-Burnwell tried to get away, but Arthur caught him, and there was
-a struggle between them, your lad tugging at one side of the
-coronet, and his opponent at the other. In the scuffle, your son
-struck Sir George and cut him over the eye. Then something
-suddenly snapped, and your son, finding that he had the coronet
-in his hands, rushed back, closed the window, ascended to your
-room, and had just observed that the coronet had been twisted in
-the struggle and was endeavouring to straighten it when you
-appeared upon the scene."
-
-"Is it possible?" gasped the banker.
-
-"You then roused his anger by calling him names at a moment when
-he felt that he had deserved your warmest thanks. He could not
-explain the true state of affairs without betraying one who
-certainly deserved little enough consideration at his hands. He
-took the more chivalrous view, however, and preserved her
-secret."
-
-"And that was why she shrieked and fainted when she saw the
-coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
-been! And his asking to be allowed to go out for five minutes!
-The dear fellow wanted to see if the missing piece were at the
-scene of the struggle. How cruelly I have misjudged him!"
-
-"When I arrived at the house," continued Holmes, "I at once went
-very carefully round it to observe if there were any traces in
-the snow which might help me. I knew that none had fallen since
-the evening before, and also that there had been a strong frost
-to preserve impressions. I passed along the tradesmen's path, but
-found it all trampled down and indistinguishable. Just beyond it,
-however, at the far side of the kitchen door, a woman had stood
-and talked with a man, whose round impressions on one side showed
-that he had a wooden leg. I could even tell that they had been
-disturbed, for the woman had run back swiftly to the door, as was
-shown by the deep toe and light heel marks, while Wooden-leg had
-waited a little, and then had gone away. I thought at the time
-that this might be the maid and her sweetheart, of whom you had
-already spoken to me, and inquiry showed it was so. I passed
-round the garden without seeing anything more than random tracks,
-which I took to be the police; but when I got into the stable
-lane a very long and complex story was written in the snow in
-front of me.
-
-"There was a double line of tracks of a booted man, and a second
-double line which I saw with delight belonged to a man with naked
-feet. I was at once convinced from what you had told me that the
-latter was your son. The first had walked both ways, but the
-other had run swiftly, and as his tread was marked in places over
-the depression of the boot, it was obvious that he had passed
-after the other. I followed them up and found they led to the
-hall window, where Boots had worn all the snow away while
-waiting. Then I walked to the other end, which was a hundred
-yards or more down the lane. I saw where Boots had faced round,
-where the snow was cut up as though there had been a struggle,
-and, finally, where a few drops of blood had fallen, to show me
-that I was not mistaken. Boots had then run down the lane, and
-another little smudge of blood showed that it was he who had been
-hurt. When he came to the highroad at the other end, I found that
-the pavement had been cleared, so there was an end to that clue.
-
-"On entering the house, however, I examined, as you remember, the
-sill and framework of the hall window with my lens, and I could
-at once see that someone had passed out. I could distinguish the
-outline of an instep where the wet foot had been placed in coming
-in. I was then beginning to be able to form an opinion as to what
-had occurred. A man had waited outside the window; someone had
-brought the gems; the deed had been overseen by your son; he had
-pursued the thief; had struggled with him; they had each tugged
-at the coronet, their united strength causing injuries which
-neither alone could have effected. He had returned with the
-prize, but had left a fragment in the grasp of his opponent. So
-far I was clear. The question now was, who was the man and who
-was it brought him the coronet?
-
-"It is an old maxim of mine that when you have excluded the
-impossible, whatever remains, however improbable, must be the
-truth. Now, I knew that it was not you who had brought it down,
-so there only remained your niece and the maids. But if it were
-the maids, why should your son allow himself to be accused in
-their place? There could be no possible reason. As he loved his
-cousin, however, there was an excellent explanation why he should
-retain her secret--the more so as the secret was a disgraceful
-one. When I remembered that you had seen her at that window, and
-how she had fainted on seeing the coronet again, my conjecture
-became a certainty.
-
-"And who could it be who was her confederate? A lover evidently,
-for who else could outweigh the love and gratitude which she must
-feel to you? I knew that you went out little, and that your
-circle of friends was a very limited one. But among them was Sir
-George Burnwell. I had heard of him before as being a man of evil
-reputation among women. It must have been he who wore those boots
-and retained the missing gems. Even though he knew that Arthur
-had discovered him, he might still flatter himself that he was
-safe, for the lad could not say a word without compromising his
-own family.
-
-"Well, your own good sense will suggest what measures I took
-next. I went in the shape of a loafer to Sir George's house,
-managed to pick up an acquaintance with his valet, learned that
-his master had cut his head the night before, and, finally, at
-the expense of six shillings, made all sure by buying a pair of
-his cast-off shoes. With these I journeyed down to Streatham and
-saw that they exactly fitted the tracks."
-
-"I saw an ill-dressed vagabond in the lane yesterday evening,"
-said Mr. Holder.
-
-"Precisely. It was I. I found that I had my man, so I came home
-and changed my clothes. It was a delicate part which I had to
-play then, for I saw that a prosecution must be avoided to avert
-scandal, and I knew that so astute a villain would see that our
-hands were tied in the matter. I went and saw him. At first, of
-course, he denied everything. But when I gave him every
-particular that had occurred, he tried to bluster and took down a
-life-preserver from the wall. I knew my man, however, and I
-clapped a pistol to his head before he could strike. Then he
-became a little more reasonable. I told him that we would give
-him a price for the stones he held--1000 pounds apiece. That
-brought out the first signs of grief that he had shown. 'Why,
-dash it all!' said he, 'I've let them go at six hundred for the
-three!' I soon managed to get the address of the receiver who had
-them, on promising him that there would be no prosecution. Off I
-set to him, and after much chaffering I got our stones at 1000
-pounds apiece. Then I looked in upon your son, told him that all
-was right, and eventually got to my bed about two o'clock, after
-what I may call a really hard day's work."
-
-"A day which has saved England from a great public scandal," said
-the banker, rising. "Sir, I cannot find words to thank you, but
-you shall not find me ungrateful for what you have done. Your
-skill has indeed exceeded all that I have heard of it. And now I
-must fly to my dear boy to apologise to him for the wrong which I
-have done him. As to what you tell me of poor Mary, it goes to my
-very heart. Not even your skill can inform me where she is now."
-
-"I think that we may safely say," returned Holmes, "that she is
-wherever Sir George Burnwell is. It is equally certain, too, that
-whatever her sins are, they will soon receive a more than
-sufficient punishment."
-
-
-
-XII. THE ADVENTURE OF THE COPPER BEECHES
-
-"To the man who loves art for its own sake," remarked Sherlock
-Holmes, tossing aside the advertisement sheet of the Daily
-Telegraph, "it is frequently in its least important and lowliest
-manifestations that the keenest pleasure is to be derived. It is
-pleasant to me to observe, Watson, that you have so far grasped
-this truth that in these little records of our cases which you
-have been good enough to draw up, and, I am bound to say,
-occasionally to embellish, you have given prominence not so much
-to the many causes célèbres and sensational trials in which I
-have figured but rather to those incidents which may have been
-trivial in themselves, but which have given room for those
-faculties of deduction and of logical synthesis which I have made
-my special province."
-
-"And yet," said I, smiling, "I cannot quite hold myself absolved
-from the charge of sensationalism which has been urged against my
-records."
-
-"You have erred, perhaps," he observed, taking up a glowing
-cinder with the tongs and lighting with it the long cherry-wood
-pipe which was wont to replace his clay when he was in a
-disputatious rather than a meditative mood--"you have erred
-perhaps in attempting to put colour and life into each of your
-statements instead of confining yourself to the task of placing
-upon record that severe reasoning from cause to effect which is
-really the only notable feature about the thing."
-
-"It seems to me that I have done you full justice in the matter,"
-I remarked with some coldness, for I was repelled by the egotism
-which I had more than once observed to be a strong factor in my
-friend's singular character.
-
-"No, it is not selfishness or conceit," said he, answering, as
-was his wont, my thoughts rather than my words. "If I claim full
-justice for my art, it is because it is an impersonal thing--a
-thing beyond myself. Crime is common. Logic is rare. Therefore it
-is upon the logic rather than upon the crime that you should
-dwell. You have degraded what should have been a course of
-lectures into a series of tales."
-
-It was a cold morning of the early spring, and we sat after
-breakfast on either side of a cheery fire in the old room at
-Baker Street. A thick fog rolled down between the lines of
-dun-coloured houses, and the opposing windows loomed like dark,
-shapeless blurs through the heavy yellow wreaths. Our gas was lit
-and shone on the white cloth and glimmer of china and metal, for
-the table had not been cleared yet. Sherlock Holmes had been
-silent all the morning, dipping continuously into the
-advertisement columns of a succession of papers until at last,
-having apparently given up his search, he had emerged in no very
-sweet temper to lecture me upon my literary shortcomings.
-
-"At the same time," he remarked after a pause, during which he
-had sat puffing at his long pipe and gazing down into the fire,
-"you can hardly be open to a charge of sensationalism, for out of
-these cases which you have been so kind as to interest yourself
-in, a fair proportion do not treat of crime, in its legal sense,
-at all. The small matter in which I endeavoured to help the King
-of Bohemia, the singular experience of Miss Mary Sutherland, the
-problem connected with the man with the twisted lip, and the
-incident of the noble bachelor, were all matters which are
-outside the pale of the law. But in avoiding the sensational, I
-fear that you may have bordered on the trivial."
-
-"The end may have been so," I answered, "but the methods I hold
-to have been novel and of interest."
-
-"Pshaw, my dear fellow, what do the public, the great unobservant
-public, who could hardly tell a weaver by his tooth or a
-compositor by his left thumb, care about the finer shades of
-analysis and deduction! But, indeed, if you are trivial, I cannot
-blame you, for the days of the great cases are past. Man, or at
-least criminal man, has lost all enterprise and originality. As
-to my own little practice, it seems to be degenerating into an
-agency for recovering lost lead pencils and giving advice to
-young ladies from boarding-schools. I think that I have touched
-bottom at last, however. This note I had this morning marks my
-zero-point, I fancy. Read it!" He tossed a crumpled letter across
-to me.
-
-It was dated from Montague Place upon the preceding evening, and
-ran thus:
-
-"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
-I should or should not accept a situation which has been offered
-to me as governess. I shall call at half-past ten to-morrow if I
-do not inconvenience you. Yours faithfully,
-                                               "VIOLET HUNTER."
-
-"Do you know the young lady?" I asked.
-
-"Not I."
-
-"It is half-past ten now."
-
-"Yes, and I have no doubt that is her ring."
-
-"It may turn out to be of more interest than you think. You
-remember that the affair of the blue carbuncle, which appeared to
-be a mere whim at first, developed into a serious investigation.
-It may be so in this case, also."
-
-"Well, let us hope so. But our doubts will very soon be solved,
-for here, unless I am much mistaken, is the person in question."
-
-As he spoke the door opened and a young lady entered the room.
-She was plainly but neatly dressed, with a bright, quick face,
-freckled like a plover's egg, and with the brisk manner of a
-woman who has had her own way to make in the world.
-
-"You will excuse my troubling you, I am sure," said she, as my
-companion rose to greet her, "but I have had a very strange
-experience, and as I have no parents or relations of any sort
-from whom I could ask advice, I thought that perhaps you would be
-kind enough to tell me what I should do."
-
-"Pray take a seat, Miss Hunter. I shall be happy to do anything
-that I can to serve you."
-
-I could see that Holmes was favourably impressed by the manner
-and speech of his new client. He looked her over in his searching
-fashion, and then composed himself, with his lids drooping and
-his finger-tips together, to listen to her story.
-
-"I have been a governess for five years," said she, "in the
-family of Colonel Spence Munro, but two months ago the colonel
-received an appointment at Halifax, in Nova Scotia, and took his
-children over to America with him, so that I found myself without
-a situation. I advertised, and I answered advertisements, but
-without success. At last the little money which I had saved began
-to run short, and I was at my wit's end as to what I should do.
-
-"There is a well-known agency for governesses in the West End
-called Westaway's, and there I used to call about once a week in
-order to see whether anything had turned up which might suit me.
-Westaway was the name of the founder of the business, but it is
-really managed by Miss Stoper. She sits in her own little office,
-and the ladies who are seeking employment wait in an anteroom,
-and are then shown in one by one, when she consults her ledgers
-and sees whether she has anything which would suit them.
-
-"Well, when I called last week I was shown into the little office
-as usual, but I found that Miss Stoper was not alone. A
-prodigiously stout man with a very smiling face and a great heavy
-chin which rolled down in fold upon fold over his throat sat at
-her elbow with a pair of glasses on his nose, looking very
-earnestly at the ladies who entered. As I came in he gave quite a
-jump in his chair and turned quickly to Miss Stoper.
-
-"'That will do,' said he; 'I could not ask for anything better.
-Capital! capital!' He seemed quite enthusiastic and rubbed his
-hands together in the most genial fashion. He was such a
-comfortable-looking man that it was quite a pleasure to look at
-him.
-
-"'You are looking for a situation, miss?' he asked.
-
-"'Yes, sir.'
-
-"'As governess?'
-
-"'Yes, sir.'
-
-"'And what salary do you ask?'
-
-"'I had 4 pounds a month in my last place with Colonel Spence
-Munro.'
-
-"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
-fat hands out into the air like a man who is in a boiling
-passion. 'How could anyone offer so pitiful a sum to a lady with
-such attractions and accomplishments?'
-
-"'My accomplishments, sir, may be less than you imagine,' said I.
-'A little French, a little German, music, and drawing--'
-
-"'Tut, tut!' he cried. 'This is all quite beside the question.
-The point is, have you or have you not the bearing and deportment
-of a lady? There it is in a nutshell. If you have not, you are
-not fitted for the rearing of a child who may some day play a
-considerable part in the history of the country. But if you have
-why, then, how could any gentleman ask you to condescend to
-accept anything under the three figures? Your salary with me,
-madam, would commence at 100 pounds a year.'
-
-"You may imagine, Mr. Holmes, that to me, destitute as I was,
-such an offer seemed almost too good to be true. The gentleman,
-however, seeing perhaps the look of incredulity upon my face,
-opened a pocket-book and took out a note.
-
-"'It is also my custom,' said he, smiling in the most pleasant
-fashion until his eyes were just two little shining slits amid
-the white creases of his face, 'to advance to my young ladies
-half their salary beforehand, so that they may meet any little
-expenses of their journey and their wardrobe.'
-
-"It seemed to me that I had never met so fascinating and so
-thoughtful a man. As I was already in debt to my tradesmen, the
-advance was a great convenience, and yet there was something
-unnatural about the whole transaction which made me wish to know
-a little more before I quite committed myself.
-
-"'May I ask where you live, sir?' said I.
-
-"'Hampshire. Charming rural place. The Copper Beeches, five miles
-on the far side of Winchester. It is the most lovely country, my
-dear young lady, and the dearest old country-house.'
-
-"'And my duties, sir? I should be glad to know what they would
-be.'
-
-"'One child--one dear little romper just six years old. Oh, if
-you could see him killing cockroaches with a slipper! Smack!
-smack! smack! Three gone before you could wink!' He leaned back
-in his chair and laughed his eyes into his head again.
-
-"I was a little startled at the nature of the child's amusement,
-but the father's laughter made me think that perhaps he was
-joking.
-
-"'My sole duties, then,' I asked, 'are to take charge of a single
-child?'
-
-"'No, no, not the sole, not the sole, my dear young lady,' he
-cried. 'Your duty would be, as I am sure your good sense would
-suggest, to obey any little commands my wife might give, provided
-always that they were such commands as a lady might with
-propriety obey. You see no difficulty, heh?'
-
-"'I should be happy to make myself useful.'
-
-"'Quite so. In dress now, for example. We are faddy people, you
-know--faddy but kind-hearted. If you were asked to wear any dress
-which we might give you, you would not object to our little whim.
-Heh?'
-
-"'No,' said I, considerably astonished at his words.
-
-"'Or to sit here, or sit there, that would not be offensive to
-you?'
-
-"'Oh, no.'
-
-"'Or to cut your hair quite short before you come to us?'
-
-"I could hardly believe my ears. As you may observe, Mr. Holmes,
-my hair is somewhat luxuriant, and of a rather peculiar tint of
-chestnut. It has been considered artistic. I could not dream of
-sacrificing it in this offhand fashion.
-
-"'I am afraid that that is quite impossible,' said I. He had been
-watching me eagerly out of his small eyes, and I could see a
-shadow pass over his face as I spoke.
-
-"'I am afraid that it is quite essential,' said he. 'It is a
-little fancy of my wife's, and ladies' fancies, you know, madam,
-ladies' fancies must be consulted. And so you won't cut your
-hair?'
-
-"'No, sir, I really could not,' I answered firmly.
-
-"'Ah, very well; then that quite settles the matter. It is a
-pity, because in other respects you would really have done very
-nicely. In that case, Miss Stoper, I had best inspect a few more
-of your young ladies.'
-
-"The manageress had sat all this while busy with her papers
-without a word to either of us, but she glanced at me now with so
-much annoyance upon her face that I could not help suspecting
-that she had lost a handsome commission through my refusal.
-
-"'Do you desire your name to be kept upon the books?' she asked.
-
-"'If you please, Miss Stoper.'
-
-"'Well, really, it seems rather useless, since you refuse the
-most excellent offers in this fashion,' said she sharply. 'You
-can hardly expect us to exert ourselves to find another such
-opening for you. Good-day to you, Miss Hunter.' She struck a gong
-upon the table, and I was shown out by the page.
-
-"Well, Mr. Holmes, when I got back to my lodgings and found
-little enough in the cupboard, and two or three bills upon the
-table, I began to ask myself whether I had not done a very
-foolish thing. After all, if these people had strange fads and
-expected obedience on the most extraordinary matters, they were
-at least ready to pay for their eccentricity. Very few
-governesses in England are getting 100 pounds a year. Besides,
-what use was my hair to me? Many people are improved by wearing
-it short and perhaps I should be among the number. Next day I was
-inclined to think that I had made a mistake, and by the day after
-I was sure of it. I had almost overcome my pride so far as to go
-back to the agency and inquire whether the place was still open
-when I received this letter from the gentleman himself. I have it
-here and I will read it to you:
-
-                       "'The Copper Beeches, near Winchester.
-"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
-address, and I write from here to ask you whether you have
-reconsidered your decision. My wife is very anxious that you
-should come, for she has been much attracted by my description of
-you. We are willing to give 30 pounds a quarter, or 120 pounds a
-year, so as to recompense you for any little inconvenience which
-our fads may cause you. They are not very exacting, after all. My
-wife is fond of a particular shade of electric blue and would
-like you to wear such a dress indoors in the morning. You need
-not, however, go to the expense of purchasing one, as we have one
-belonging to my dear daughter Alice (now in Philadelphia), which
-would, I should think, fit you very well. Then, as to sitting
-here or there, or amusing yourself in any manner indicated, that
-need cause you no inconvenience. As regards your hair, it is no
-doubt a pity, especially as I could not help remarking its beauty
-during our short interview, but I am afraid that I must remain
-firm upon this point, and I only hope that the increased salary
-may recompense you for the loss. Your duties, as far as the child
-is concerned, are very light. Now do try to come, and I shall
-meet you with the dog-cart at Winchester. Let me know your train.
-Yours faithfully, JEPHRO RUCASTLE.'
-
-"That is the letter which I have just received, Mr. Holmes, and
-my mind is made up that I will accept it. I thought, however,
-that before taking the final step I should like to submit the
-whole matter to your consideration."
-
-"Well, Miss Hunter, if your mind is made up, that settles the
-question," said Holmes, smiling.
-
-"But you would not advise me to refuse?"
-
-"I confess that it is not the situation which I should like to
-see a sister of mine apply for."
-
-"What is the meaning of it all, Mr. Holmes?"
-
-"Ah, I have no data. I cannot tell. Perhaps you have yourself
-formed some opinion?"
-
-"Well, there seems to me to be only one possible solution. Mr.
-Rucastle seemed to be a very kind, good-natured man. Is it not
-possible that his wife is a lunatic, that he desires to keep the
-matter quiet for fear she should be taken to an asylum, and that
-he humours her fancies in every way in order to prevent an
-outbreak?"
-
-"That is a possible solution--in fact, as matters stand, it is
-the most probable one. But in any case it does not seem to be a
-nice household for a young lady."
-
-"But the money, Mr. Holmes, the money!"
-
-"Well, yes, of course the pay is good--too good. That is what
-makes me uneasy. Why should they give you 120 pounds a year, when
-they could have their pick for 40 pounds? There must be some
-strong reason behind."
-
-"I thought that if I told you the circumstances you would
-understand afterwards if I wanted your help. I should feel so
-much stronger if I felt that you were at the back of me."
-
-"Oh, you may carry that feeling away with you. I assure you that
-your little problem promises to be the most interesting which has
-come my way for some months. There is something distinctly novel
-about some of the features. If you should find yourself in doubt
-or in danger--"
-
-"Danger! What danger do you foresee?"
-
-Holmes shook his head gravely. "It would cease to be a danger if
-we could define it," said he. "But at any time, day or night, a
-telegram would bring me down to your help."
-
-"That is enough." She rose briskly from her chair with the
-anxiety all swept from her face. "I shall go down to Hampshire
-quite easy in my mind now. I shall write to Mr. Rucastle at once,
-sacrifice my poor hair to-night, and start for Winchester
-to-morrow." With a few grateful words to Holmes she bade us both
-good-night and bustled off upon her way.
-
-"At least," said I as we heard her quick, firm steps descending
-the stairs, "she seems to be a young lady who is very well able
-to take care of herself."
-
-"And she would need to be," said Holmes gravely. "I am much
-mistaken if we do not hear from her before many days are past."
-
-It was not very long before my friend's prediction was fulfilled.
-A fortnight went by, during which I frequently found my thoughts
-turning in her direction and wondering what strange side-alley of
-human experience this lonely woman had strayed into. The unusual
-salary, the curious conditions, the light duties, all pointed to
-something abnormal, though whether a fad or a plot, or whether
-the man were a philanthropist or a villain, it was quite beyond
-my powers to determine. As to Holmes, I observed that he sat
-frequently for half an hour on end, with knitted brows and an
-abstracted air, but he swept the matter away with a wave of his
-hand when I mentioned it. "Data! data! data!" he cried
-impatiently. "I can't make bricks without clay." And yet he would
-always wind up by muttering that no sister of his should ever
-have accepted such a situation.
-
-The telegram which we eventually received came late one night
-just as I was thinking of turning in and Holmes was settling down
-to one of those all-night chemical researches which he frequently
-indulged in, when I would leave him stooping over a retort and a
-test-tube at night and find him in the same position when I came
-down to breakfast in the morning. He opened the yellow envelope,
-and then, glancing at the message, threw it across to me.
-
-"Just look up the trains in Bradshaw," said he, and turned back
-to his chemical studies.
-
-The summons was a brief and urgent one.
-
-"Please be at the Black Swan Hotel at Winchester at midday
-to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
-
-"Will you come with me?" asked Holmes, glancing up.
-
-"I should wish to."
-
-"Just look it up, then."
-
-"There is a train at half-past nine," said I, glancing over my
-Bradshaw. "It is due at Winchester at 11:30."
-
-"That will do very nicely. Then perhaps I had better postpone my
-analysis of the acetones, as we may need to be at our best in the
-morning."
-
-By eleven o'clock the next day we were well upon our way to the
-old English capital. Holmes had been buried in the morning papers
-all the way down, but after we had passed the Hampshire border he
-threw them down and began to admire the scenery. It was an ideal
-spring day, a light blue sky, flecked with little fleecy white
-clouds drifting across from west to east. The sun was shining
-very brightly, and yet there was an exhilarating nip in the air,
-which set an edge to a man's energy. All over the countryside,
-away to the rolling hills around Aldershot, the little red and
-grey roofs of the farm-steadings peeped out from amid the light
-green of the new foliage.
-
-"Are they not fresh and beautiful?" I cried with all the
-enthusiasm of a man fresh from the fogs of Baker Street.
-
-But Holmes shook his head gravely.
-
-"Do you know, Watson," said he, "that it is one of the curses of
-a mind with a turn like mine that I must look at everything with
-reference to my own special subject. You look at these scattered
-houses, and you are impressed by their beauty. I look at them,
-and the only thought which comes to me is a feeling of their
-isolation and of the impunity with which crime may be committed
-there."
-
-"Good heavens!" I cried. "Who would associate crime with these
-dear old homesteads?"
-
-"They always fill me with a certain horror. It is my belief,
-Watson, founded upon my experience, that the lowest and vilest
-alleys in London do not present a more dreadful record of sin
-than does the smiling and beautiful countryside."
-
-"You horrify me!"
-
-"But the reason is very obvious. The pressure of public opinion
-can do in the town what the law cannot accomplish. There is no
-lane so vile that the scream of a tortured child, or the thud of
-a drunkard's blow, does not beget sympathy and indignation among
-the neighbours, and then the whole machinery of justice is ever
-so close that a word of complaint can set it going, and there is
-but a step between the crime and the dock. But look at these
-lonely houses, each in its own fields, filled for the most part
-with poor ignorant folk who know little of the law. Think of the
-deeds of hellish cruelty, the hidden wickedness which may go on,
-year in, year out, in such places, and none the wiser. Had this
-lady who appeals to us for help gone to live in Winchester, I
-should never have had a fear for her. It is the five miles of
-country which makes the danger. Still, it is clear that she is
-not personally threatened."
-
-"No. If she can come to Winchester to meet us she can get away."
-
-"Quite so. She has her freedom."
-
-"What CAN be the matter, then? Can you suggest no explanation?"
-
-"I have devised seven separate explanations, each of which would
-cover the facts as far as we know them. But which of these is
-correct can only be determined by the fresh information which we
-shall no doubt find waiting for us. Well, there is the tower of
-the cathedral, and we shall soon learn all that Miss Hunter has
-to tell."
-
-The Black Swan is an inn of repute in the High Street, at no
-distance from the station, and there we found the young lady
-waiting for us. She had engaged a sitting-room, and our lunch
-awaited us upon the table.
-
-"I am so delighted that you have come," she said earnestly. "It
-is so very kind of you both; but indeed I do not know what I
-should do. Your advice will be altogether invaluable to me."
-
-"Pray tell us what has happened to you."
-
-"I will do so, and I must be quick, for I have promised Mr.
-Rucastle to be back before three. I got his leave to come into
-town this morning, though he little knew for what purpose."
-
-"Let us have everything in its due order." Holmes thrust his long
-thin legs out towards the fire and composed himself to listen.
-
-"In the first place, I may say that I have met, on the whole,
-with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
-only fair to them to say that. But I cannot understand them, and
-I am not easy in my mind about them."
-
-"What can you not understand?"
-
-"Their reasons for their conduct. But you shall have it all just
-as it occurred. When I came down, Mr. Rucastle met me here and
-drove me in his dog-cart to the Copper Beeches. It is, as he
-said, beautifully situated, but it is not beautiful in itself,
-for it is a large square block of a house, whitewashed, but all
-stained and streaked with damp and bad weather. There are grounds
-round it, woods on three sides, and on the fourth a field which
-slopes down to the Southampton highroad, which curves past about
-a hundred yards from the front door. This ground in front belongs
-to the house, but the woods all round are part of Lord
-Southerton's preserves. A clump of copper beeches immediately in
-front of the hall door has given its name to the place.
-
-"I was driven over by my employer, who was as amiable as ever,
-and was introduced by him that evening to his wife and the child.
-There was no truth, Mr. Holmes, in the conjecture which seemed to
-us to be probable in your rooms at Baker Street. Mrs. Rucastle is
-not mad. I found her to be a silent, pale-faced woman, much
-younger than her husband, not more than thirty, I should think,
-while he can hardly be less than forty-five. From their
-conversation I have gathered that they have been married about
-seven years, that he was a widower, and that his only child by
-the first wife was the daughter who has gone to Philadelphia. Mr.
-Rucastle told me in private that the reason why she had left them
-was that she had an unreasoning aversion to her stepmother. As
-the daughter could not have been less than twenty, I can quite
-imagine that her position must have been uncomfortable with her
-father's young wife.
-
-"Mrs. Rucastle seemed to me to be colourless in mind as well as
-in feature. She impressed me neither favourably nor the reverse.
-She was a nonentity. It was easy to see that she was passionately
-devoted both to her husband and to her little son. Her light grey
-eyes wandered continually from one to the other, noting every
-little want and forestalling it if possible. He was kind to her
-also in his bluff, boisterous fashion, and on the whole they
-seemed to be a happy couple. And yet she had some secret sorrow,
-this woman. She would often be lost in deep thought, with the
-saddest look upon her face. More than once I have surprised her
-in tears. I have thought sometimes that it was the disposition of
-her child which weighed upon her mind, for I have never met so
-utterly spoiled and so ill-natured a little creature. He is small
-for his age, with a head which is quite disproportionately large.
-His whole life appears to be spent in an alternation between
-savage fits of passion and gloomy intervals of sulking. Giving
-pain to any creature weaker than himself seems to be his one idea
-of amusement, and he shows quite remarkable talent in planning
-the capture of mice, little birds, and insects. But I would
-rather not talk about the creature, Mr. Holmes, and, indeed, he
-has little to do with my story."
-
-"I am glad of all details," remarked my friend, "whether they
-seem to you to be relevant or not."
-
-"I shall try not to miss anything of importance. The one
-unpleasant thing about the house, which struck me at once, was
-the appearance and conduct of the servants. There are only two, a
-man and his wife. Toller, for that is his name, is a rough,
-uncouth man, with grizzled hair and whiskers, and a perpetual
-smell of drink. Twice since I have been with them he has been
-quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
-His wife is a very tall and strong woman with a sour face, as
-silent as Mrs. Rucastle and much less amiable. They are a most
-unpleasant couple, but fortunately I spend most of my time in the
-nursery and my own room, which are next to each other in one
-corner of the building.
-
-"For two days after my arrival at the Copper Beeches my life was
-very quiet; on the third, Mrs. Rucastle came down just after
-breakfast and whispered something to her husband.
-
-"'Oh, yes,' said he, turning to me, 'we are very much obliged to
-you, Miss Hunter, for falling in with our whims so far as to cut
-your hair. I assure you that it has not detracted in the tiniest
-iota from your appearance. We shall now see how the electric-blue
-dress will become you. You will find it laid out upon the bed in
-your room, and if you would be so good as to put it on we should
-both be extremely obliged.'
-
-"The dress which I found waiting for me was of a peculiar shade
-of blue. It was of excellent material, a sort of beige, but it
-bore unmistakable signs of having been worn before. It could not
-have been a better fit if I had been measured for it. Both Mr.
-and Mrs. Rucastle expressed a delight at the look of it, which
-seemed quite exaggerated in its vehemence. They were waiting for
-me in the drawing-room, which is a very large room, stretching
-along the entire front of the house, with three long windows
-reaching down to the floor. A chair had been placed close to the
-central window, with its back turned towards it. In this I was
-asked to sit, and then Mr. Rucastle, walking up and down on the
-other side of the room, began to tell me a series of the funniest
-stories that I have ever listened to. You cannot imagine how
-comical he was, and I laughed until I was quite weary. Mrs.
-Rucastle, however, who has evidently no sense of humour, never so
-much as smiled, but sat with her hands in her lap, and a sad,
-anxious look upon her face. After an hour or so, Mr. Rucastle
-suddenly remarked that it was time to commence the duties of the
-day, and that I might change my dress and go to little Edward in
-the nursery.
-
-"Two days later this same performance was gone through under
-exactly similar circumstances. Again I changed my dress, again I
-sat in the window, and again I laughed very heartily at the funny
-stories of which my employer had an immense répertoire, and which
-he told inimitably. Then he handed me a yellow-backed novel, and
-moving my chair a little sideways, that my own shadow might not
-fall upon the page, he begged me to read aloud to him. I read for
-about ten minutes, beginning in the heart of a chapter, and then
-suddenly, in the middle of a sentence, he ordered me to cease and
-to change my dress.
-
-"You can easily imagine, Mr. Holmes, how curious I became as to
-what the meaning of this extraordinary performance could possibly
-be. They were always very careful, I observed, to turn my face
-away from the window, so that I became consumed with the desire
-to see what was going on behind my back. At first it seemed to be
-impossible, but I soon devised a means. My hand-mirror had been
-broken, so a happy thought seized me, and I concealed a piece of
-the glass in my handkerchief. On the next occasion, in the midst
-of my laughter, I put my handkerchief up to my eyes, and was able
-with a little management to see all that there was behind me. I
-confess that I was disappointed. There was nothing. At least that
-was my first impression. At the second glance, however, I
-perceived that there was a man standing in the Southampton Road,
-a small bearded man in a grey suit, who seemed to be looking in
-my direction. The road is an important highway, and there are
-usually people there. This man, however, was leaning against the
-railings which bordered our field and was looking earnestly up. I
-lowered my handkerchief and glanced at Mrs. Rucastle to find her
-eyes fixed upon me with a most searching gaze. She said nothing,
-but I am convinced that she had divined that I had a mirror in my
-hand and had seen what was behind me. She rose at once.
-
-"'Jephro,' said she, 'there is an impertinent fellow upon the
-road there who stares up at Miss Hunter.'
-
-"'No friend of yours, Miss Hunter?' he asked.
-
-"'No, I know no one in these parts.'
-
-"'Dear me! How very impertinent! Kindly turn round and motion to
-him to go away.'
-
-"'Surely it would be better to take no notice.'
-
-"'No, no, we should have him loitering here always. Kindly turn
-round and wave him away like that.'
-
-"I did as I was told, and at the same instant Mrs. Rucastle drew
-down the blind. That was a week ago, and from that time I have
-not sat again in the window, nor have I worn the blue dress, nor
-seen the man in the road."
-
-"Pray continue," said Holmes. "Your narrative promises to be a
-most interesting one."
-
-"You will find it rather disconnected, I fear, and there may
-prove to be little relation between the different incidents of
-which I speak. On the very first day that I was at the Copper
-Beeches, Mr. Rucastle took me to a small outhouse which stands
-near the kitchen door. As we approached it I heard the sharp
-rattling of a chain, and the sound as of a large animal moving
-about.
-
-"'Look in here!' said Mr. Rucastle, showing me a slit between two
-planks. 'Is he not a beauty?'
-
-"I looked through and was conscious of two glowing eyes, and of a
-vague figure huddled up in the darkness.
-
-"'Don't be frightened,' said my employer, laughing at the start
-which I had given. 'It's only Carlo, my mastiff. I call him mine,
-but really old Toller, my groom, is the only man who can do
-anything with him. We feed him once a day, and not too much then,
-so that he is always as keen as mustard. Toller lets him loose
-every night, and God help the trespasser whom he lays his fangs
-upon. For goodness' sake don't you ever on any pretext set your
-foot over the threshold at night, for it's as much as your life
-is worth.'
-
-"The warning was no idle one, for two nights later I happened to
-look out of my bedroom window about two o'clock in the morning.
-It was a beautiful moonlight night, and the lawn in front of the
-house was silvered over and almost as bright as day. I was
-standing, rapt in the peaceful beauty of the scene, when I was
-aware that something was moving under the shadow of the copper
-beeches. As it emerged into the moonshine I saw what it was. It
-was a giant dog, as large as a calf, tawny tinted, with hanging
-jowl, black muzzle, and huge projecting bones. It walked slowly
-across the lawn and vanished into the shadow upon the other side.
-That dreadful sentinel sent a chill to my heart which I do not
-think that any burglar could have done.
-
-"And now I have a very strange experience to tell you. I had, as
-you know, cut off my hair in London, and I had placed it in a
-great coil at the bottom of my trunk. One evening, after the
-child was in bed, I began to amuse myself by examining the
-furniture of my room and by rearranging my own little things.
-There was an old chest of drawers in the room, the two upper ones
-empty and open, the lower one locked. I had filled the first two
-with my linen, and as I had still much to pack away I was
-naturally annoyed at not having the use of the third drawer. It
-struck me that it might have been fastened by a mere oversight,
-so I took out my bunch of keys and tried to open it. The very
-first key fitted to perfection, and I drew the drawer open. There
-was only one thing in it, but I am sure that you would never
-guess what it was. It was my coil of hair.
-
-"I took it up and examined it. It was of the same peculiar tint,
-and the same thickness. But then the impossibility of the thing
-obtruded itself upon me. How could my hair have been locked in
-the drawer? With trembling hands I undid my trunk, turned out the
-contents, and drew from the bottom my own hair. I laid the two
-tresses together, and I assure you that they were identical. Was
-it not extraordinary? Puzzle as I would, I could make nothing at
-all of what it meant. I returned the strange hair to the drawer,
-and I said nothing of the matter to the Rucastles as I felt that
-I had put myself in the wrong by opening a drawer which they had
-locked.
-
-"I am naturally observant, as you may have remarked, Mr. Holmes,
-and I soon had a pretty good plan of the whole house in my head.
-There was one wing, however, which appeared not to be inhabited
-at all. A door which faced that which led into the quarters of
-the Tollers opened into this suite, but it was invariably locked.
-One day, however, as I ascended the stair, I met Mr. Rucastle
-coming out through this door, his keys in his hand, and a look on
-his face which made him a very different person to the round,
-jovial man to whom I was accustomed. His cheeks were red, his
-brow was all crinkled with anger, and the veins stood out at his
-temples with passion. He locked the door and hurried past me
-without a word or a look.
-
-"This aroused my curiosity, so when I went out for a walk in the
-grounds with my charge, I strolled round to the side from which I
-could see the windows of this part of the house. There were four
-of them in a row, three of which were simply dirty, while the
-fourth was shuttered up. They were evidently all deserted. As I
-strolled up and down, glancing at them occasionally, Mr. Rucastle
-came out to me, looking as merry and jovial as ever.
-
-"'Ah!' said he, 'you must not think me rude if I passed you
-without a word, my dear young lady. I was preoccupied with
-business matters.'
-
-"I assured him that I was not offended. 'By the way,' said I,
-'you seem to have quite a suite of spare rooms up there, and one
-of them has the shutters up.'
-
-"He looked surprised and, as it seemed to me, a little startled
-at my remark.
-
-"'Photography is one of my hobbies,' said he. 'I have made my
-dark room up there. But, dear me! what an observant young lady we
-have come upon. Who would have believed it? Who would have ever
-believed it?' He spoke in a jesting tone, but there was no jest
-in his eyes as he looked at me. I read suspicion there and
-annoyance, but no jest.
-
-"Well, Mr. Holmes, from the moment that I understood that there
-was something about that suite of rooms which I was not to know,
-I was all on fire to go over them. It was not mere curiosity,
-though I have my share of that. It was more a feeling of duty--a
-feeling that some good might come from my penetrating to this
-place. They talk of woman's instinct; perhaps it was woman's
-instinct which gave me that feeling. At any rate, it was there,
-and I was keenly on the lookout for any chance to pass the
-forbidden door.
-
-"It was only yesterday that the chance came. I may tell you that,
-besides Mr. Rucastle, both Toller and his wife find something to
-do in these deserted rooms, and I once saw him carrying a large
-black linen bag with him through the door. Recently he has been
-drinking hard, and yesterday evening he was very drunk; and when
-I came upstairs there was the key in the door. I have no doubt at
-all that he had left it there. Mr. and Mrs. Rucastle were both
-downstairs, and the child was with them, so that I had an
-admirable opportunity. I turned the key gently in the lock,
-opened the door, and slipped through.
-
-"There was a little passage in front of me, unpapered and
-uncarpeted, which turned at a right angle at the farther end.
-Round this corner were three doors in a line, the first and third
-of which were open. They each led into an empty room, dusty and
-cheerless, with two windows in the one and one in the other, so
-thick with dirt that the evening light glimmered dimly through
-them. The centre door was closed, and across the outside of it
-had been fastened one of the broad bars of an iron bed, padlocked
-at one end to a ring in the wall, and fastened at the other with
-stout cord. The door itself was locked as well, and the key was
-not there. This barricaded door corresponded clearly with the
-shuttered window outside, and yet I could see by the glimmer from
-beneath it that the room was not in darkness. Evidently there was
-a skylight which let in light from above. As I stood in the
-passage gazing at the sinister door and wondering what secret it
-might veil, I suddenly heard the sound of steps within the room
-and saw a shadow pass backward and forward against the little
-slit of dim light which shone out from under the door. A mad,
-unreasoning terror rose up in me at the sight, Mr. Holmes. My
-overstrung nerves failed me suddenly, and I turned and ran--ran
-as though some dreadful hand were behind me clutching at the
-skirt of my dress. I rushed down the passage, through the door,
-and straight into the arms of Mr. Rucastle, who was waiting
-outside.
-
-"'So,' said he, smiling, 'it was you, then. I thought that it
-must be when I saw the door open.'
-
-"'Oh, I am so frightened!' I panted.
-
-"'My dear young lady! my dear young lady!'--you cannot think how
-caressing and soothing his manner was--'and what has frightened
-you, my dear young lady?'
-
-"But his voice was just a little too coaxing. He overdid it. I
-was keenly on my guard against him.
-
-"'I was foolish enough to go into the empty wing,' I answered.
-'But it is so lonely and eerie in this dim light that I was
-frightened and ran out again. Oh, it is so dreadfully still in
-there!'
-
-"'Only that?' said he, looking at me keenly.
-
-"'Why, what did you think?' I asked.
-
-"'Why do you think that I lock this door?'
-
-"'I am sure that I do not know.'
-
-"'It is to keep people out who have no business there. Do you
-see?' He was still smiling in the most amiable manner.
-
-"'I am sure if I had known--'
-
-"'Well, then, you know now. And if you ever put your foot over
-that threshold again'--here in an instant the smile hardened into
-a grin of rage, and he glared down at me with the face of a
-demon--'I'll throw you to the mastiff.'
-
-"I was so terrified that I do not know what I did. I suppose that
-I must have rushed past him into my room. I remember nothing
-until I found myself lying on my bed trembling all over. Then I
-thought of you, Mr. Holmes. I could not live there longer without
-some advice. I was frightened of the house, of the man, of the
-woman, of the servants, even of the child. They were all horrible
-to me. If I could only bring you down all would be well. Of
-course I might have fled from the house, but my curiosity was
-almost as strong as my fears. My mind was soon made up. I would
-send you a wire. I put on my hat and cloak, went down to the
-office, which is about half a mile from the house, and then
-returned, feeling very much easier. A horrible doubt came into my
-mind as I approached the door lest the dog might be loose, but I
-remembered that Toller had drunk himself into a state of
-insensibility that evening, and I knew that he was the only one
-in the household who had any influence with the savage creature,
-or who would venture to set him free. I slipped in in safety and
-lay awake half the night in my joy at the thought of seeing you.
-I had no difficulty in getting leave to come into Winchester this
-morning, but I must be back before three o'clock, for Mr. and
-Mrs. Rucastle are going on a visit, and will be away all the
-evening, so that I must look after the child. Now I have told you
-all my adventures, Mr. Holmes, and I should be very glad if you
-could tell me what it all means, and, above all, what I should
-do."
-
-Holmes and I had listened spellbound to this extraordinary story.
-My friend rose now and paced up and down the room, his hands in
-his pockets, and an expression of the most profound gravity upon
-his face.
-
-"Is Toller still drunk?" he asked.
-
-"Yes. I heard his wife tell Mrs. Rucastle that she could do
-nothing with him."
-
-"That is well. And the Rucastles go out to-night?"
-
-"Yes."
-
-"Is there a cellar with a good strong lock?"
-
-"Yes, the wine-cellar."
-
-"You seem to me to have acted all through this matter like a very
-brave and sensible girl, Miss Hunter. Do you think that you could
-perform one more feat? I should not ask it of you if I did not
-think you a quite exceptional woman."
-
-"I will try. What is it?"
-
-"We shall be at the Copper Beeches by seven o'clock, my friend
-and I. The Rucastles will be gone by that time, and Toller will,
-we hope, be incapable. There only remains Mrs. Toller, who might
-give the alarm. If you could send her into the cellar on some
-errand, and then turn the key upon her, you would facilitate
-matters immensely."
-
-"I will do it."
-
-"Excellent! We shall then look thoroughly into the affair. Of
-course there is only one feasible explanation. You have been
-brought there to personate someone, and the real person is
-imprisoned in this chamber. That is obvious. As to who this
-prisoner is, I have no doubt that it is the daughter, Miss Alice
-Rucastle, if I remember right, who was said to have gone to
-America. You were chosen, doubtless, as resembling her in height,
-figure, and the colour of your hair. Hers had been cut off, very
-possibly in some illness through which she has passed, and so, of
-course, yours had to be sacrificed also. By a curious chance you
-came upon her tresses. The man in the road was undoubtedly some
-friend of hers--possibly her fiancé--and no doubt, as you wore
-the girl's dress and were so like her, he was convinced from your
-laughter, whenever he saw you, and afterwards from your gesture,
-that Miss Rucastle was perfectly happy, and that she no longer
-desired his attentions. The dog is let loose at night to prevent
-him from endeavouring to communicate with her. So much is fairly
-clear. The most serious point in the case is the disposition of
-the child."
-
-"What on earth has that to do with it?" I ejaculated.
-
-"My dear Watson, you as a medical man are continually gaining
-light as to the tendencies of a child by the study of the
-parents. Don't you see that the converse is equally valid. I have
-frequently gained my first real insight into the character of
-parents by studying their children. This child's disposition is
-abnormally cruel, merely for cruelty's sake, and whether he
-derives this from his smiling father, as I should suspect, or
-from his mother, it bodes evil for the poor girl who is in their
-power."
-
-"I am sure that you are right, Mr. Holmes," cried our client. "A
-thousand things come back to me which make me certain that you
-have hit it. Oh, let us lose not an instant in bringing help to
-this poor creature."
-
-"We must be circumspect, for we are dealing with a very cunning
-man. We can do nothing until seven o'clock. At that hour we shall
-be with you, and it will not be long before we solve the
-mystery."
-
-We were as good as our word, for it was just seven when we
-reached the Copper Beeches, having put up our trap at a wayside
-public-house. The group of trees, with their dark leaves shining
-like burnished metal in the light of the setting sun, were
-sufficient to mark the house even had Miss Hunter not been
-standing smiling on the door-step.
-
-"Have you managed it?" asked Holmes.
-
-A loud thudding noise came from somewhere downstairs. "That is
-Mrs. Toller in the cellar," said she. "Her husband lies snoring
-on the kitchen rug. Here are his keys, which are the duplicates
-of Mr. Rucastle's."
-
-"You have done well indeed!" cried Holmes with enthusiasm. "Now
-lead the way, and we shall soon see the end of this black
-business."
-
-We passed up the stair, unlocked the door, followed on down a
-passage, and found ourselves in front of the barricade which Miss
-Hunter had described. Holmes cut the cord and removed the
-transverse bar. Then he tried the various keys in the lock, but
-without success. No sound came from within, and at the silence
-Holmes' face clouded over.
-
-"I trust that we are not too late," said he. "I think, Miss
-Hunter, that we had better go in without you. Now, Watson, put
-your shoulder to it, and we shall see whether we cannot make our
-way in."
-
-It was an old rickety door and gave at once before our united
-strength. Together we rushed into the room. It was empty. There
-was no furniture save a little pallet bed, a small table, and a
-basketful of linen. The skylight above was open, and the prisoner
-gone.
-
-"There has been some villainy here," said Holmes; "this beauty
-has guessed Miss Hunter's intentions and has carried his victim
-off."
-
-"But how?"
-
-"Through the skylight. We shall soon see how he managed it." He
-swung himself up onto the roof. "Ah, yes," he cried, "here's the
-end of a long light ladder against the eaves. That is how he did
-it."
-
-"But it is impossible," said Miss Hunter; "the ladder was not
-there when the Rucastles went away."
-
-"He has come back and done it. I tell you that he is a clever and
-dangerous man. I should not be very much surprised if this were
-he whose step I hear now upon the stair. I think, Watson, that it
-would be as well for you to have your pistol ready."
-
-The words were hardly out of his mouth before a man appeared at
-the door of the room, a very fat and burly man, with a heavy
-stick in his hand. Miss Hunter screamed and shrunk against the
-wall at the sight of him, but Sherlock Holmes sprang forward and
-confronted him.
-
-"You villain!" said he, "where's your daughter?"
-
-The fat man cast his eyes round, and then up at the open
-skylight.
-
-"It is for me to ask you that," he shrieked, "you thieves! Spies
-and thieves! I have caught you, have I? You are in my power. I'll
-serve you!" He turned and clattered down the stairs as hard as he
-could go.
-
-"He's gone for the dog!" cried Miss Hunter.
-
-"I have my revolver," said I.
-
-"Better close the front door," cried Holmes, and we all rushed
-down the stairs together. We had hardly reached the hall when we
-heard the baying of a hound, and then a scream of agony, with a
-horrible worrying sound which it was dreadful to listen to. An
-elderly man with a red face and shaking limbs came staggering out
-at a side door.
-
-"My God!" he cried. "Someone has loosed the dog. It's not been
-fed for two days. Quick, quick, or it'll be too late!"
-
-Holmes and I rushed out and round the angle of the house, with
-Toller hurrying behind us. There was the huge famished brute, its
-black muzzle buried in Rucastle's throat, while he writhed and
-screamed upon the ground. Running up, I blew its brains out, and
-it fell over with its keen white teeth still meeting in the great
-creases of his neck. With much labour we separated them and
-carried him, living but horribly mangled, into the house. We laid
-him upon the drawing-room sofa, and having dispatched the sobered
-Toller to bear the news to his wife, I did what I could to
-relieve his pain. We were all assembled round him when the door
-opened, and a tall, gaunt woman entered the room.
-
-"Mrs. Toller!" cried Miss Hunter.
-
-"Yes, miss. Mr. Rucastle let me out when he came back before he
-went up to you. Ah, miss, it is a pity you didn't let me know
-what you were planning, for I would have told you that your pains
-were wasted."
-
-"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
-Toller knows more about this matter than anyone else."
-
-"Yes, sir, I do, and I am ready enough to tell what I know."
-
-"Then, pray, sit down, and let us hear it for there are several
-points on which I must confess that I am still in the dark."
-
-"I will soon make it clear to you," said she; "and I'd have done
-so before now if I could ha' got out from the cellar. If there's
-police-court business over this, you'll remember that I was the
-one that stood your friend, and that I was Miss Alice's friend
-too.
-
-"She was never happy at home, Miss Alice wasn't, from the time
-that her father married again. She was slighted like and had no
-say in anything, but it never really became bad for her until
-after she met Mr. Fowler at a friend's house. As well as I could
-learn, Miss Alice had rights of her own by will, but she was so
-quiet and patient, she was, that she never said a word about them
-but just left everything in Mr. Rucastle's hands. He knew he was
-safe with her; but when there was a chance of a husband coming
-forward, who would ask for all that the law would give him, then
-her father thought it time to put a stop on it. He wanted her to
-sign a paper, so that whether she married or not, he could use
-her money. When she wouldn't do it, he kept on worrying her until
-she got brain-fever, and for six weeks was at death's door. Then
-she got better at last, all worn to a shadow, and with her
-beautiful hair cut off; but that didn't make no change in her
-young man, and he stuck to her as true as man could be."
-
-"Ah," said Holmes, "I think that what you have been good enough
-to tell us makes the matter fairly clear, and that I can deduce
-all that remains. Mr. Rucastle then, I presume, took to this
-system of imprisonment?"
-
-"Yes, sir."
-
-"And brought Miss Hunter down from London in order to get rid of
-the disagreeable persistence of Mr. Fowler."
-
-"That was it, sir."
-
-"But Mr. Fowler being a persevering man, as a good seaman should
-be, blockaded the house, and having met you succeeded by certain
-arguments, metallic or otherwise, in convincing you that your
-interests were the same as his."
-
-"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
-Mrs. Toller serenely.
-
-"And in this way he managed that your good man should have no
-want of drink, and that a ladder should be ready at the moment
-when your master had gone out."
-
-"You have it, sir, just as it happened."
-
-"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
-you have certainly cleared up everything which puzzled us. And
-here comes the country surgeon and Mrs. Rucastle, so I think,
-Watson, that we had best escort Miss Hunter back to Winchester,
-as it seems to me that our locus standi now is rather a
-questionable one."
-
-And thus was solved the mystery of the sinister house with the
-copper beeches in front of the door. Mr. Rucastle survived, but
-was always a broken man, kept alive solely through the care of
-his devoted wife. They still live with their old servants, who
-probably know so much of Rucastle's past life that he finds it
-difficult to part from them. Mr. Fowler and Miss Rucastle were
-married, by special license, in Southampton the day after their
-flight, and he is now the holder of a government appointment in
-the island of Mauritius. As to Miss Violet Hunter, my friend
-Holmes, rather to my disappointment, manifested no further
-interest in her when once she had ceased to be the centre of one
-of his problems, and she is now the head of a private school at
-Walsall, where I believe that she has met with considerable success.
-
-
-
-
-
-
-
-
-
-End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
-Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
-
-***** This file should be named 1661-8.txt or 1661-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/1/6/6/1661/
-
-Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.net/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including including checks, online payments and credit card
-donations.  To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.net
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/text-example/textapp/data/file2.txt b/hyracks/hyracks-examples/text-example/textapp/data/file2.txt
deleted file mode 100644
index a25d303..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/data/file2.txt
+++ /dev/null
@@ -1,10216 +0,0 @@
-Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-
-Title: Memoirs of Sherlock Holmes
-
-Author: Sir Arthur Conan Doyle
-
-Posting Date: July 31, 2008 [EBook #834]
-Release Date: March, 1997
-[This file last updated on August 16, 2010]
-
-Language: English
-
-
-*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-
-
-
-Produced by Angela M. Cable
-
-
-
-
-
-MEMOIRS OF SHERLOCK HOLMES
-
-by Sir Arthur Conan Doyle
-
-
-
-
-Adventure I. Silver Blaze
-
-
-"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
-down together to our breakfast one morning.
-
-"Go! Where to?"
-
-"To Dartmoor; to King's Pyland."
-
-I was not surprised. Indeed, my only wonder was that he had not already
-been mixed up in this extraordinary case, which was the one topic of
-conversation through the length and breadth of England. For a whole day
-my companion had rambled about the room with his chin upon his chest and
-his brows knitted, charging and recharging his pipe with the strongest
-black tobacco, and absolutely deaf to any of my questions or remarks.
-Fresh editions of every paper had been sent up by our news agent, only
-to be glanced over and tossed down into a corner. Yet, silent as he was,
-I knew perfectly well what it was over which he was brooding. There was
-but one problem before the public which could challenge his powers of
-analysis, and that was the singular disappearance of the favorite for
-the Wessex Cup, and the tragic murder of its trainer. When, therefore,
-he suddenly announced his intention of setting out for the scene of the
-drama it was only what I had both expected and hoped for.
-
-"I should be most happy to go down with you if I should not be in the
-way," said I.
-
-"My dear Watson, you would confer a great favor upon me by coming. And
-I think that your time will not be misspent, for there are points about
-the case which promise to make it an absolutely unique one. We have, I
-think, just time to catch our train at Paddington, and I will go further
-into the matter upon our journey. You would oblige me by bringing with
-you your very excellent field-glass."
-
-And so it happened that an hour or so later I found myself in the
-corner of a first-class carriage flying along en route for Exeter, while
-Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
-travelling-cap, dipped rapidly into the bundle of fresh papers which he
-had procured at Paddington. We had left Reading far behind us before
-he thrust the last one of them under the seat, and offered me his
-cigar-case.
-
-"We are going well," said he, looking out the window and glancing at his
-watch. "Our rate at present is fifty-three and a half miles an hour."
-
-"I have not observed the quarter-mile posts," said I.
-
-"Nor have I. But the telegraph posts upon this line are sixty yards
-apart, and the calculation is a simple one. I presume that you
-have looked into this matter of the murder of John Straker and the
-disappearance of Silver Blaze?"
-
-"I have seen what the Telegraph and the Chronicle have to say."
-
-"It is one of those cases where the art of the reasoner should be
-used rather for the sifting of details than for the acquiring of fresh
-evidence. The tragedy has been so uncommon, so complete and of such
-personal importance to so many people, that we are suffering from a
-plethora of surmise, conjecture, and hypothesis. The difficulty is to
-detach the framework of fact--of absolute undeniable fact--from the
-embellishments of theorists and reporters. Then, having established
-ourselves upon this sound basis, it is our duty to see what inferences
-may be drawn and what are the special points upon which the whole
-mystery turns. On Tuesday evening I received telegrams from both Colonel
-Ross, the owner of the horse, and from Inspector Gregory, who is looking
-after the case, inviting my cooperation."
-
-"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
-didn't you go down yesterday?"
-
-"Because I made a blunder, my dear Watson--which is, I am afraid, a more
-common occurrence than any one would think who only knew me through your
-memoirs. The fact is that I could not believe it possible that the most
-remarkable horse in England could long remain concealed, especially in
-so sparsely inhabited a place as the north of Dartmoor. From hour to
-hour yesterday I expected to hear that he had been found, and that
-his abductor was the murderer of John Straker. When, however, another
-morning had come, and I found that beyond the arrest of young Fitzroy
-Simpson nothing had been done, I felt that it was time for me to take
-action. Yet in some ways I feel that yesterday has not been wasted."
-
-"You have formed a theory, then?"
-
-"At least I have got a grip of the essential facts of the case. I shall
-enumerate them to you, for nothing clears up a case so much as stating
-it to another person, and I can hardly expect your co-operation if I do
-not show you the position from which we start."
-
-I lay back against the cushions, puffing at my cigar, while Holmes,
-leaning forward, with his long, thin forefinger checking off the points
-upon the palm of his left hand, gave me a sketch of the events which had
-led to our journey.
-
-"Silver Blaze," said he, "is from the Somomy stock, and holds as
-brilliant a record as his famous ancestor. He is now in his fifth year,
-and has brought in turn each of the prizes of the turf to Colonel Ross,
-his fortunate owner. Up to the time of the catastrophe he was the first
-favorite for the Wessex Cup, the betting being three to one on him. He
-has always, however, been a prime favorite with the racing public, and
-has never yet disappointed them, so that even at those odds enormous
-sums of money have been laid upon him. It is obvious, therefore, that
-there were many people who had the strongest interest in preventing
-Silver Blaze from being there at the fall of the flag next Tuesday.
-
-"The fact was, of course, appreciated at King's Pyland, where the
-Colonel's training-stable is situated. Every precaution was taken to
-guard the favorite. The trainer, John Straker, is a retired jockey
-who rode in Colonel Ross's colors before he became too heavy for the
-weighing-chair. He has served the Colonel for five years as jockey and
-for seven as trainer, and has always shown himself to be a zealous and
-honest servant. Under him were three lads; for the establishment was a
-small one, containing only four horses in all. One of these lads sat up
-each night in the stable, while the others slept in the loft. All three
-bore excellent characters. John Straker, who is a married man, lived
-in a small villa about two hundred yards from the stables. He has no
-children, keeps one maid-servant, and is comfortably off. The country
-round is very lonely, but about half a mile to the north there is a
-small cluster of villas which have been built by a Tavistock contractor
-for the use of invalids and others who may wish to enjoy the pure
-Dartmoor air. Tavistock itself lies two miles to the west, while
-across the moor, also about two miles distant, is the larger training
-establishment of Mapleton, which belongs to Lord Backwater, and is
-managed by Silas Brown. In every other direction the moor is a complete
-wilderness, inhabited only by a few roaming gypsies. Such was the
-general situation last Monday night when the catastrophe occurred.
-
-"On that evening the horses had been exercised and watered as usual, and
-the stables were locked up at nine o'clock. Two of the lads walked up
-to the trainer's house, where they had supper in the kitchen, while the
-third, Ned Hunter, remained on guard. At a few minutes after nine
-the maid, Edith Baxter, carried down to the stables his supper, which
-consisted of a dish of curried mutton. She took no liquid, as there was
-a water-tap in the stables, and it was the rule that the lad on duty
-should drink nothing else. The maid carried a lantern with her, as it
-was very dark and the path ran across the open moor.
-
-"Edith Baxter was within thirty yards of the stables, when a man
-appeared out of the darkness and called to her to stop. As he stepped
-into the circle of yellow light thrown by the lantern she saw that he
-was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
-with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
-to it. She was most impressed, however, by the extreme pallor of his
-face and by the nervousness of his manner. His age, she thought, would
-be rather over thirty than under it.
-
-"'Can you tell me where I am?' he asked. 'I had almost made up my mind
-to sleep on the moor, when I saw the light of your lantern.'
-
-"'You are close to the King's Pyland training-stables,' said she.
-
-"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
-stable-boy sleeps there alone every night. Perhaps that is his supper
-which you are carrying to him. Now I am sure that you would not be too
-proud to earn the price of a new dress, would you?' He took a piece of
-white paper folded up out of his waistcoat pocket. 'See that the boy
-has this to-night, and you shall have the prettiest frock that money can
-buy.'
-
-"She was frightened by the earnestness of his manner, and ran past him
-to the window through which she was accustomed to hand the meals. It was
-already opened, and Hunter was seated at the small table inside. She had
-begun to tell him of what had happened, when the stranger came up again.
-
-"'Good-evening,' said he, looking through the window. 'I wanted to have
-a word with you.' The girl has sworn that as he spoke she noticed the
-corner of the little paper packet protruding from his closed hand.
-
-"'What business have you here?' asked the lad.
-
-"'It's business that may put something into your pocket,' said the
-other. 'You've two horses in for the Wessex Cup--Silver Blaze and
-Bayard. Let me have the straight tip and you won't be a loser. Is it a
-fact that at the weights Bayard could give the other a hundred yards in
-five furlongs, and that the stable have put their money on him?'
-
-"'So, you're one of those damned touts!' cried the lad. 'I'll show you
-how we serve them in King's Pyland.' He sprang up and rushed across the
-stable to unloose the dog. The girl fled away to the house, but as she
-ran she looked back and saw that the stranger was leaning through the
-window. A minute later, however, when Hunter rushed out with the hound
-he was gone, and though he ran all round the buildings he failed to find
-any trace of him."
-
-"One moment," I asked. "Did the stable-boy, when he ran out with the
-dog, leave the door unlocked behind him?"
-
-"Excellent, Watson, excellent!" murmured my companion. "The importance
-of the point struck me so forcibly that I sent a special wire to
-Dartmoor yesterday to clear the matter up. The boy locked the door
-before he left it. The window, I may add, was not large enough for a man
-to get through.
-
-"Hunter waited until his fellow-grooms had returned, when he sent a
-message to the trainer and told him what had occurred. Straker was
-excited at hearing the account, although he does not seem to have quite
-realized its true significance. It left him, however, vaguely uneasy,
-and Mrs. Straker, waking at one in the morning, found that he was
-dressing. In reply to her inquiries, he said that he could not sleep on
-account of his anxiety about the horses, and that he intended to walk
-down to the stables to see that all was well. She begged him to remain
-at home, as she could hear the rain pattering against the window, but in
-spite of her entreaties he pulled on his large mackintosh and left the
-house.
-
-"Mrs. Straker awoke at seven in the morning, to find that her husband
-had not yet returned. She dressed herself hastily, called the maid, and
-set off for the stables. The door was open; inside, huddled together
-upon a chair, Hunter was sunk in a state of absolute stupor, the
-favorite's stall was empty, and there were no signs of his trainer.
-
-"The two lads who slept in the chaff-cutting loft above the harness-room
-were quickly aroused. They had heard nothing during the night, for they
-are both sound sleepers. Hunter was obviously under the influence of
-some powerful drug, and as no sense could be got out of him, he was left
-to sleep it off while the two lads and the two women ran out in search
-of the absentees. They still had hopes that the trainer had for some
-reason taken out the horse for early exercise, but on ascending the
-knoll near the house, from which all the neighboring moors were visible,
-they not only could see no signs of the missing favorite, but they
-perceived something which warned them that they were in the presence of
-a tragedy.
-
-"About a quarter of a mile from the stables John Straker's overcoat was
-flapping from a furze-bush. Immediately beyond there was a bowl-shaped
-depression in the moor, and at the bottom of this was found the dead
-body of the unfortunate trainer. His head had been shattered by a savage
-blow from some heavy weapon, and he was wounded on the thigh, where
-there was a long, clean cut, inflicted evidently by some very sharp
-instrument. It was clear, however, that Straker had defended himself
-vigorously against his assailants, for in his right hand he held a small
-knife, which was clotted with blood up to the handle, while in his left
-he clasped a red and black silk cravat, which was recognized by the maid
-as having been worn on the preceding evening by the stranger who had
-visited the stables. Hunter, on recovering from his stupor, was also
-quite positive as to the ownership of the cravat. He was equally certain
-that the same stranger had, while standing at the window, drugged his
-curried mutton, and so deprived the stables of their watchman. As to the
-missing horse, there were abundant proofs in the mud which lay at the
-bottom of the fatal hollow that he had been there at the time of the
-struggle. But from that morning he has disappeared, and although a large
-reward has been offered, and all the gypsies of Dartmoor are on the
-alert, no news has come of him. Finally, an analysis has shown that
-the remains of his supper left by the stable-lad contain an appreciable
-quantity of powdered opium, while the people at the house partook of the
-same dish on the same night without any ill effect.
-
-"Those are the main facts of the case, stripped of all surmise, and
-stated as baldly as possible. I shall now recapitulate what the police
-have done in the matter.
-
-"Inspector Gregory, to whom the case has been committed, is an extremely
-competent officer. Were he but gifted with imagination he might rise to
-great heights in his profession. On his arrival he promptly found and
-arrested the man upon whom suspicion naturally rested. There was little
-difficulty in finding him, for he inhabited one of those villas which I
-have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
-of excellent birth and education, who had squandered a fortune upon the
-turf, and who lived now by doing a little quiet and genteel book-making
-in the sporting clubs of London. An examination of his betting-book
-shows that bets to the amount of five thousand pounds had been
-registered by him against the favorite. On being arrested he volunteered
-that statement that he had come down to Dartmoor in the hope of
-getting some information about the King's Pyland horses, and also about
-Desborough, the second favorite, which was in charge of Silas Brown at
-the Mapleton stables. He did not attempt to deny that he had acted as
-described upon the evening before, but declared that he had no sinister
-designs, and had simply wished to obtain first-hand information. When
-confronted with his cravat, he turned very pale, and was utterly unable
-to account for its presence in the hand of the murdered man. His wet
-clothing showed that he had been out in the storm of the night before,
-and his stick, which was a Penang-lawyer weighted with lead, was just
-such a weapon as might, by repeated blows, have inflicted the terrible
-injuries to which the trainer had succumbed. On the other hand, there
-was no wound upon his person, while the state of Straker's knife would
-show that one at least of his assailants must bear his mark upon him.
-There you have it all in a nutshell, Watson, and if you can give me any
-light I shall be infinitely obliged to you."
-
-I had listened with the greatest interest to the statement which Holmes,
-with characteristic clearness, had laid before me. Though most of the
-facts were familiar to me, I had not sufficiently appreciated their
-relative importance, nor their connection to each other.
-
-"Is it not possible," I suggested, "that the incised wound upon Straker
-may have been caused by his own knife in the convulsive struggles which
-follow any brain injury?"
-
-"It is more than possible; it is probable," said Holmes. "In that case
-one of the main points in favor of the accused disappears."
-
-"And yet," said I, "even now I fail to understand what the theory of the
-police can be."
-
-"I am afraid that whatever theory we state has very grave objections to
-it," returned my companion. "The police imagine, I take it, that this
-Fitzroy Simpson, having drugged the lad, and having in some way obtained
-a duplicate key, opened the stable door and took out the horse, with
-the intention, apparently, of kidnapping him altogether. His bridle is
-missing, so that Simpson must have put this on. Then, having left the
-door open behind him, he was leading the horse away over the moor, when
-he was either met or overtaken by the trainer. A row naturally ensued.
-Simpson beat out the trainer's brains with his heavy stick without
-receiving any injury from the small knife which Straker used in
-self-defence, and then the thief either led the horse on to some secret
-hiding-place, or else it may have bolted during the struggle, and be
-now wandering out on the moors. That is the case as it appears to
-the police, and improbable as it is, all other explanations are more
-improbable still. However, I shall very quickly test the matter when I
-am once upon the spot, and until then I cannot really see how we can get
-much further than our present position."
-
-It was evening before we reached the little town of Tavistock, which
-lies, like the boss of a shield, in the middle of the huge circle of
-Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
-fair man with lion-like hair and beard and curiously penetrating light
-blue eyes; the other a small, alert person, very neat and dapper, in a
-frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
-The latter was Colonel Ross, the well-known sportsman; the other,
-Inspector Gregory, a man who was rapidly making his name in the English
-detective service.
-
-"I am delighted that you have come down, Mr. Holmes," said the Colonel.
-"The Inspector here has done all that could possibly be suggested, but I
-wish to leave no stone unturned in trying to avenge poor Straker and in
-recovering my horse."
-
-"Have there been any fresh developments?" asked Holmes.
-
-"I am sorry to say that we have made very little progress," said the
-Inspector. "We have an open carriage outside, and as you would no doubt
-like to see the place before the light fails, we might talk it over as
-we drive."
-
-A minute later we were all seated in a comfortable landau, and were
-rattling through the quaint old Devonshire city. Inspector Gregory was
-full of his case, and poured out a stream of remarks, while Holmes threw
-in an occasional question or interjection. Colonel Ross leaned back with
-his arms folded and his hat tilted over his eyes, while I listened with
-interest to the dialogue of the two detectives. Gregory was formulating
-his theory, which was almost exactly what Holmes had foretold in the
-train.
-
-"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
-I believe myself that he is our man. At the same time I recognize that
-the evidence is purely circumstantial, and that some new development may
-upset it."
-
-"How about Straker's knife?"
-
-"We have quite come to the conclusion that he wounded himself in his
-fall."
-
-"My friend Dr. Watson made that suggestion to me as we came down. If so,
-it would tell against this man Simpson."
-
-"Undoubtedly. He has neither a knife nor any sign of a wound. The
-evidence against him is certainly very strong. He had a great interest
-in the disappearance of the favorite. He lies under suspicion of having
-poisoned the stable-boy, he was undoubtedly out in the storm, he was
-armed with a heavy stick, and his cravat was found in the dead man's
-hand. I really think we have enough to go before a jury."
-
-Holmes shook his head. "A clever counsel would tear it all to rags,"
-said he. "Why should he take the horse out of the stable? If he wished
-to injure it why could he not do it there? Has a duplicate key been
-found in his possession? What chemist sold him the powdered opium? Above
-all, where could he, a stranger to the district, hide a horse, and such
-a horse as this? What is his own explanation as to the paper which he
-wished the maid to give to the stable-boy?"
-
-"He says that it was a ten-pound note. One was found in his purse. But
-your other difficulties are not so formidable as they seem. He is not
-a stranger to the district. He has twice lodged at Tavistock in the
-summer. The opium was probably brought from London. The key, having
-served its purpose, would be hurled away. The horse may be at the bottom
-of one of the pits or old mines upon the moor."
-
-"What does he say about the cravat?"
-
-"He acknowledges that it is his, and declares that he had lost it. But a
-new element has been introduced into the case which may account for his
-leading the horse from the stable."
-
-Holmes pricked up his ears.
-
-"We have found traces which show that a party of gypsies encamped on
-Monday night within a mile of the spot where the murder took place. On
-Tuesday they were gone. Now, presuming that there was some understanding
-between Simpson and these gypsies, might he not have been leading the
-horse to them when he was overtaken, and may they not have him now?"
-
-"It is certainly possible."
-
-"The moor is being scoured for these gypsies. I have also examined every
-stable and out-house in Tavistock, and for a radius of ten miles."
-
-"There is another training-stable quite close, I understand?"
-
-"Yes, and that is a factor which we must certainly not neglect. As
-Desborough, their horse, was second in the betting, they had an interest
-in the disappearance of the favorite. Silas Brown, the trainer, is known
-to have had large bets upon the event, and he was no friend to poor
-Straker. We have, however, examined the stables, and there is nothing to
-connect him with the affair."
-
-"And nothing to connect this man Simpson with the interests of the
-Mapleton stables?"
-
-"Nothing at all."
-
-Holmes leaned back in the carriage, and the conversation ceased. A few
-minutes later our driver pulled up at a neat little red-brick villa with
-overhanging eaves which stood by the road. Some distance off, across a
-paddock, lay a long gray-tiled out-building. In every other direction
-the low curves of the moor, bronze-colored from the fading ferns,
-stretched away to the sky-line, broken only by the steeples of
-Tavistock, and by a cluster of houses away to the westward which marked
-the Mapleton stables. We all sprang out with the exception of Holmes,
-who continued to lean back with his eyes fixed upon the sky in front of
-him, entirely absorbed in his own thoughts. It was only when I touched
-his arm that he roused himself with a violent start and stepped out of
-the carriage.
-
-"Excuse me," said he, turning to Colonel Ross, who had looked at him in
-some surprise. "I was day-dreaming." There was a gleam in his eyes and a
-suppressed excitement in his manner which convinced me, used as I was
-to his ways, that his hand was upon a clue, though I could not imagine
-where he had found it.
-
-"Perhaps you would prefer at once to go on to the scene of the crime,
-Mr. Holmes?" said Gregory.
-
-"I think that I should prefer to stay here a little and go into one or
-two questions of detail. Straker was brought back here, I presume?"
-
-"Yes; he lies upstairs. The inquest is to-morrow."
-
-"He has been in your service some years, Colonel Ross?"
-
-"I have always found him an excellent servant."
-
-"I presume that you made an inventory of what he had in his pockets at
-the time of his death, Inspector?"
-
-"I have the things themselves in the sitting-room, if you would care to
-see them."
-
-"I should be very glad." We all filed into the front room and sat round
-the central table while the Inspector unlocked a square tin box and laid
-a small heap of things before us. There was a box of vestas, two inches
-of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
-half an ounce of long-cut Cavendish, a silver watch with a gold chain,
-five sovereigns in gold, an aluminum pencil-case, a few papers, and an
-ivory-handled knife with a very delicate, inflexible blade marked Weiss
-& Co., London.
-
-"This is a very singular knife," said Holmes, lifting it up and
-examining it minutely. "I presume, as I see blood-stains upon it, that
-it is the one which was found in the dead man's grasp. Watson, this
-knife is surely in your line?"
-
-"It is what we call a cataract knife," said I.
-
-"I thought so. A very delicate blade devised for very delicate work.
-A strange thing for a man to carry with him upon a rough expedition,
-especially as it would not shut in his pocket."
-
-"The tip was guarded by a disk of cork which we found beside his body,"
-said the Inspector. "His wife tells us that the knife had lain upon the
-dressing-table, and that he had picked it up as he left the room. It was
-a poor weapon, but perhaps the best that he could lay his hands on at
-the moment."
-
-"Very possible. How about these papers?"
-
-"Three of them are receipted hay-dealers' accounts. One of them is a
-letter of instructions from Colonel Ross. This other is a milliner's
-account for thirty-seven pounds fifteen made out by Madame Lesurier,
-of Bond Street, to William Derbyshire. Mrs. Straker tells us that
-Derbyshire was a friend of her husband's and that occasionally his
-letters were addressed here."
-
-"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
-glancing down the account. "Twenty-two guineas is rather heavy for a
-single costume. However there appears to be nothing more to learn, and
-we may now go down to the scene of the crime."
-
-As we emerged from the sitting-room a woman, who had been waiting in
-the passage, took a step forward and laid her hand upon the Inspector's
-sleeve. Her face was haggard and thin and eager, stamped with the print
-of a recent horror.
-
-"Have you got them? Have you found them?" she panted.
-
-"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
-and we shall do all that is possible."
-
-"Surely I met you in Plymouth at a garden-party some little time ago,
-Mrs. Straker?" said Holmes.
-
-"No, sir; you are mistaken."
-
-"Dear me! Why, I could have sworn to it. You wore a costume of
-dove-colored silk with ostrich-feather trimming."
-
-"I never had such a dress, sir," answered the lady.
-
-"Ah, that quite settles it," said Holmes. And with an apology he
-followed the Inspector outside. A short walk across the moor took us to
-the hollow in which the body had been found. At the brink of it was the
-furze-bush upon which the coat had been hung.
-
-"There was no wind that night, I understand," said Holmes.
-
-"None; but very heavy rain."
-
-"In that case the overcoat was not blown against the furze-bush, but
-placed there."
-
-"Yes, it was laid across the bush."
-
-"You fill me with interest, I perceive that the ground has been trampled
-up a good deal. No doubt many feet have been here since Monday night."
-
-"A piece of matting has been laid here at the side, and we have all
-stood upon that."
-
-"Excellent."
-
-"In this bag I have one of the boots which Straker wore, one of Fitzroy
-Simpson's shoes, and a cast horseshoe of Silver Blaze."
-
-"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
-descending into the hollow, he pushed the matting into a more central
-position. Then stretching himself upon his face and leaning his chin
-upon his hands, he made a careful study of the trampled mud in front of
-him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
-burned, which was so coated with mud that it looked at first like a
-little chip of wood.
-
-"I cannot think how I came to overlook it," said the Inspector, with an
-expression of annoyance.
-
-"It was invisible, buried in the mud. I only saw it because I was
-looking for it."
-
-"What! You expected to find it?"
-
-"I thought it not unlikely."
-
-He took the boots from the bag, and compared the impressions of each of
-them with marks upon the ground. Then he clambered up to the rim of the
-hollow, and crawled about among the ferns and bushes.
-
-"I am afraid that there are no more tracks," said the Inspector. "I
-have examined the ground very carefully for a hundred yards in each
-direction."
-
-"Indeed!" said Holmes, rising. "I should not have the impertinence to
-do it again after what you say. But I should like to take a little walk
-over the moor before it grows dark, that I may know my ground to-morrow,
-and I think that I shall put this horseshoe into my pocket for luck."
-
-Colonel Ross, who had shown some signs of impatience at my companion's
-quiet and systematic method of work, glanced at his watch. "I wish you
-would come back with me, Inspector," said he. "There are several points
-on which I should like your advice, and especially as to whether we do
-not owe it to the public to remove our horse's name from the entries for
-the Cup."
-
-"Certainly not," cried Holmes, with decision. "I should let the name
-stand."
-
-The Colonel bowed. "I am very glad to have had your opinion, sir," said
-he. "You will find us at poor Straker's house when you have finished
-your walk, and we can drive together into Tavistock."
-
-He turned back with the Inspector, while Holmes and I walked slowly
-across the moor. The sun was beginning to sink behind the stables of
-Mapleton, and the long, sloping plain in front of us was tinged with
-gold, deepening into rich, ruddy browns where the faded ferns and
-brambles caught the evening light. But the glories of the landscape were
-all wasted upon my companion, who was sunk in the deepest thought.
-
-"It's this way, Watson," said he at last. "We may leave the question
-of who killed John Straker for the instant, and confine ourselves to
-finding out what has become of the horse. Now, supposing that he broke
-away during or after the tragedy, where could he have gone to? The horse
-is a very gregarious creature. If left to himself his instincts would
-have been either to return to King's Pyland or go over to Mapleton. Why
-should he run wild upon the moor? He would surely have been seen by now.
-And why should gypsies kidnap him? These people always clear out when
-they hear of trouble, for they do not wish to be pestered by the police.
-They could not hope to sell such a horse. They would run a great risk
-and gain nothing by taking him. Surely that is clear."
-
-"Where is he, then?"
-
-"I have already said that he must have gone to King's Pyland or to
-Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
-us take that as a working hypothesis and see what it leads us to. This
-part of the moor, as the Inspector remarked, is very hard and dry. But
-it falls away towards Mapleton, and you can see from here that there
-is a long hollow over yonder, which must have been very wet on Monday
-night. If our supposition is correct, then the horse must have crossed
-that, and there is the point where we should look for his tracks."
-
-We had been walking briskly during this conversation, and a few more
-minutes brought us to the hollow in question. At Holmes' request I
-walked down the bank to the right, and he to the left, but I had not
-taken fifty paces before I heard him give a shout, and saw him waving
-his hand to me. The track of a horse was plainly outlined in the soft
-earth in front of him, and the shoe which he took from his pocket
-exactly fitted the impression.
-
-"See the value of imagination," said Holmes. "It is the one quality
-which Gregory lacks. We imagined what might have happened, acted upon
-the supposition, and find ourselves justified. Let us proceed."
-
-We crossed the marshy bottom and passed over a quarter of a mile of dry,
-hard turf. Again the ground sloped, and again we came on the tracks.
-Then we lost them for half a mile, but only to pick them up once more
-quite close to Mapleton. It was Holmes who saw them first, and he stood
-pointing with a look of triumph upon his face. A man's track was visible
-beside the horse's.
-
-"The horse was alone before," I cried.
-
-"Quite so. It was alone before. Hullo, what is this?"
-
-The double track turned sharp off and took the direction of King's
-Pyland. Holmes whistled, and we both followed along after it. His eyes
-were on the trail, but I happened to look a little to one side, and
-saw to my surprise the same tracks coming back again in the opposite
-direction.
-
-"One for you, Watson," said Holmes, when I pointed it out. "You have
-saved us a long walk, which would have brought us back on our own
-traces. Let us follow the return track."
-
-We had not to go far. It ended at the paving of asphalt which led up
-to the gates of the Mapleton stables. As we approached, a groom ran out
-from them.
-
-"We don't want any loiterers about here," said he.
-
-"I only wished to ask a question," said Holmes, with his finger and
-thumb in his waistcoat pocket. "Should I be too early to see your
-master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
-morning?"
-
-"Bless you, sir, if any one is about he will be, for he is always
-the first stirring. But here he is, sir, to answer your questions for
-himself. No, sir, no; it is as much as my place is worth to let him see
-me touch your money. Afterwards, if you like."
-
-As Sherlock Holmes replaced the half-crown which he had drawn from his
-pocket, a fierce-looking elderly man strode out from the gate with a
-hunting-crop swinging in his hand.
-
-"What's this, Dawson!" he cried. "No gossiping! Go about your business!
-And you, what the devil do you want here?"
-
-"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
-of voices.
-
-"I've no time to talk to every gadabout. We want no stranger here. Be
-off, or you may find a dog at your heels."
-
-Holmes leaned forward and whispered something in the trainer's ear. He
-started violently and flushed to the temples.
-
-"It's a lie!" he shouted, "an infernal lie!"
-
-"Very good. Shall we argue about it here in public or talk it over in
-your parlor?"
-
-"Oh, come in if you wish to."
-
-Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
-said he. "Now, Mr. Brown, I am quite at your disposal."
-
-It was twenty minutes, and the reds had all faded into grays before
-Holmes and the trainer reappeared. Never have I seen such a change as
-had been brought about in Silas Brown in that short time. His face was
-ashy pale, beads of perspiration shone upon his brow, and his hands
-shook until the hunting-crop wagged like a branch in the wind. His
-bullying, overbearing manner was all gone too, and he cringed along at
-my companion's side like a dog with its master.
-
-"Your instructions will be done. It shall all be done," said he.
-
-"There must be no mistake," said Holmes, looking round at him. The other
-winced as he read the menace in his eyes.
-
-"Oh no, there shall be no mistake. It shall be there. Should I change it
-first or not?"
-
-Holmes thought a little and then burst out laughing. "No, don't," said
-he; "I shall write to you about it. No tricks, now, or--"
-
-"Oh, you can trust me, you can trust me!"
-
-"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
-upon his heel, disregarding the trembling hand which the other held out
-to him, and we set off for King's Pyland.
-
-"A more perfect compound of the bully, coward, and sneak than Master
-Silas Brown I have seldom met with," remarked Holmes as we trudged along
-together.
-
-"He has the horse, then?"
-
-"He tried to bluster out of it, but I described to him so exactly what
-his actions had been upon that morning that he is convinced that I was
-watching him. Of course you observed the peculiarly square toes in the
-impressions, and that his own boots exactly corresponded to them.
-Again, of course no subordinate would have dared to do such a thing.
-I described to him how, when according to his custom he was the first
-down, he perceived a strange horse wandering over the moor. How he went
-out to it, and his astonishment at recognizing, from the white forehead
-which has given the favorite its name, that chance had put in his power
-the only horse which could beat the one upon which he had put his money.
-Then I described how his first impulse had been to lead him back to
-King's Pyland, and how the devil had shown him how he could hide the
-horse until the race was over, and how he had led it back and concealed
-it at Mapleton. When I told him every detail he gave it up and thought
-only of saving his own skin."
-
-"But his stables had been searched?"
-
-"Oh, an old horse-faker like him has many a dodge."
-
-"But are you not afraid to leave the horse in his power now, since he
-has every interest in injuring it?"
-
-"My dear fellow, he will guard it as the apple of his eye. He knows that
-his only hope of mercy is to produce it safe."
-
-"Colonel Ross did not impress me as a man who would be likely to show
-much mercy in any case."
-
-"The matter does not rest with Colonel Ross. I follow my own methods,
-and tell as much or as little as I choose. That is the advantage of
-being unofficial. I don't know whether you observed it, Watson, but the
-Colonel's manner has been just a trifle cavalier to me. I am inclined
-now to have a little amusement at his expense. Say nothing to him about
-the horse."
-
-"Certainly not without your permission."
-
-"And of course this is all quite a minor point compared to the question
-of who killed John Straker."
-
-"And you will devote yourself to that?"
-
-"On the contrary, we both go back to London by the night train."
-
-I was thunderstruck by my friend's words. We had only been a few hours
-in Devonshire, and that he should give up an investigation which he had
-begun so brilliantly was quite incomprehensible to me. Not a word more
-could I draw from him until we were back at the trainer's house. The
-Colonel and the Inspector were awaiting us in the parlor.
-
-"My friend and I return to town by the night-express," said Holmes. "We
-have had a charming little breath of your beautiful Dartmoor air."
-
-The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
-
-"So you despair of arresting the murderer of poor Straker," said he.
-
-Holmes shrugged his shoulders. "There are certainly grave difficulties
-in the way," said he. "I have every hope, however, that your horse
-will start upon Tuesday, and I beg that you will have your jockey in
-readiness. Might I ask for a photograph of Mr. John Straker?"
-
-The Inspector took one from an envelope and handed it to him.
-
-"My dear Gregory, you anticipate all my wants. If I might ask you to
-wait here for an instant, I have a question which I should like to put
-to the maid."
-
-"I must say that I am rather disappointed in our London consultant,"
-said Colonel Ross, bluntly, as my friend left the room. "I do not see
-that we are any further than when he came."
-
-"At least you have his assurance that your horse will run," said I.
-
-"Yes, I have his assurance," said the Colonel, with a shrug of his
-shoulders. "I should prefer to have the horse."
-
-I was about to make some reply in defence of my friend when he entered
-the room again.
-
-"Now, gentlemen," said he, "I am quite ready for Tavistock."
-
-As we stepped into the carriage one of the stable-lads held the door
-open for us. A sudden idea seemed to occur to Holmes, for he leaned
-forward and touched the lad upon the sleeve.
-
-"You have a few sheep in the paddock," he said. "Who attends to them?"
-
-"I do, sir."
-
-"Have you noticed anything amiss with them of late?"
-
-"Well, sir, not of much account; but three of them have gone lame, sir."
-
-I could see that Holmes was extremely pleased, for he chuckled and
-rubbed his hands together.
-
-"A long shot, Watson; a very long shot," said he, pinching my arm.
-"Gregory, let me recommend to your attention this singular epidemic
-among the sheep. Drive on, coachman!"
-
-Colonel Ross still wore an expression which showed the poor opinion
-which he had formed of my companion's ability, but I saw by the
-Inspector's face that his attention had been keenly aroused.
-
-"You consider that to be important?" he asked.
-
-"Exceedingly so."
-
-"Is there any point to which you would wish to draw my attention?"
-
-"To the curious incident of the dog in the night-time."
-
-"The dog did nothing in the night-time."
-
-"That was the curious incident," remarked Sherlock Holmes.
-
-
-Four days later Holmes and I were again in the train, bound for
-Winchester to see the race for the Wessex Cup. Colonel Ross met us by
-appointment outside the station, and we drove in his drag to the course
-beyond the town. His face was grave, and his manner was cold in the
-extreme.
-
-"I have seen nothing of my horse," said he.
-
-"I suppose that you would know him when you saw him?" asked Holmes.
-
-The Colonel was very angry. "I have been on the turf for twenty years,
-and never was asked such a question as that before," said he. "A
-child would know Silver Blaze, with his white forehead and his mottled
-off-foreleg."
-
-"How is the betting?"
-
-"Well, that is the curious part of it. You could have got fifteen to one
-yesterday, but the price has become shorter and shorter, until you can
-hardly get three to one now."
-
-"Hum!" said Holmes. "Somebody knows something, that is clear."
-
-As the drag drew up in the enclosure near the grand stand I glanced at
-the card to see the entries.
-
-Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
-and five year olds. Second, L300. Third, L200. New course (one mile and
-five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
-Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
-Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
-Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
-stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
-
-"We scratched our other one, and put all hopes on your word," said the
-Colonel. "Why, what is that? Silver Blaze favorite?"
-
-"Five to four against Silver Blaze!" roared the ring. "Five to four
-against Silver Blaze! Five to fifteen against Desborough! Five to four
-on the field!"
-
-"There are the numbers up," I cried. "They are all six there."
-
-"All six there? Then my horse is running," cried the Colonel in great
-agitation. "But I don't see him. My colors have not passed."
-
-"Only five have passed. This must be he."
-
-As I spoke a powerful bay horse swept out from the weighing enclosure
-and cantered past us, bearing on its back the well-known black and red
-of the Colonel.
-
-"That's not my horse," cried the owner. "That beast has not a white hair
-upon its body. What is this that you have done, Mr. Holmes?"
-
-"Well, well, let us see how he gets on," said my friend, imperturbably.
-For a few minutes he gazed through my field-glass. "Capital! An
-excellent start!" he cried suddenly. "There they are, coming round the
-curve!"
-
-From our drag we had a superb view as they came up the straight. The six
-horses were so close together that a carpet could have covered them,
-but half way up the yellow of the Mapleton stable showed to the front.
-Before they reached us, however, Desborough's bolt was shot, and the
-Colonel's horse, coming away with a rush, passed the post a good six
-lengths before its rival, the Duke of Balmoral's Iris making a bad
-third.
-
-"It's my race, anyhow," gasped the Colonel, passing his hand over his
-eyes. "I confess that I can make neither head nor tail of it. Don't you
-think that you have kept up your mystery long enough, Mr. Holmes?"
-
-"Certainly, Colonel, you shall know everything. Let us all go round and
-have a look at the horse together. Here he is," he continued, as we made
-our way into the weighing enclosure, where only owners and their friends
-find admittance. "You have only to wash his face and his leg in spirits
-of wine, and you will find that he is the same old Silver Blaze as
-ever."
-
-"You take my breath away!"
-
-"I found him in the hands of a faker, and took the liberty of running
-him just as he was sent over."
-
-"My dear sir, you have done wonders. The horse looks very fit and well.
-It never went better in its life. I owe you a thousand apologies
-for having doubted your ability. You have done me a great service by
-recovering my horse. You would do me a greater still if you could lay
-your hands on the murderer of John Straker."
-
-"I have done so," said Holmes quietly.
-
-The Colonel and I stared at him in amazement. "You have got him! Where
-is he, then?"
-
-"He is here."
-
-"Here! Where?"
-
-"In my company at the present moment."
-
-The Colonel flushed angrily. "I quite recognize that I am under
-obligations to you, Mr. Holmes," said he, "but I must regard what you
-have just said as either a very bad joke or an insult."
-
-Sherlock Holmes laughed. "I assure you that I have not associated
-you with the crime, Colonel," said he. "The real murderer is standing
-immediately behind you." He stepped past and laid his hand upon the
-glossy neck of the thoroughbred.
-
-"The horse!" cried both the Colonel and myself.
-
-"Yes, the horse. And it may lessen his guilt if I say that it was
-done in self-defence, and that John Straker was a man who was entirely
-unworthy of your confidence. But there goes the bell, and as I stand
-to win a little on this next race, I shall defer a lengthy explanation
-until a more fitting time."
-
-
-
-We had the corner of a Pullman car to ourselves that evening as we
-whirled back to London, and I fancy that the journey was a short one
-to Colonel Ross as well as to myself, as we listened to our
-companion's narrative of the events which had occurred at the Dartmoor
-training-stables upon the Monday night, and the means by which he had
-unravelled them.
-
-"I confess," said he, "that any theories which I had formed from
-the newspaper reports were entirely erroneous. And yet there were
-indications there, had they not been overlaid by other details which
-concealed their true import. I went to Devonshire with the conviction
-that Fitzroy Simpson was the true culprit, although, of course, I saw
-that the evidence against him was by no means complete. It was while I
-was in the carriage, just as we reached the trainer's house, that the
-immense significance of the curried mutton occurred to me. You may
-remember that I was distrait, and remained sitting after you had all
-alighted. I was marvelling in my own mind how I could possibly have
-overlooked so obvious a clue."
-
-"I confess," said the Colonel, "that even now I cannot see how it helps
-us."
-
-"It was the first link in my chain of reasoning. Powdered opium is by no
-means tasteless. The flavor is not disagreeable, but it is perceptible.
-Were it mixed with any ordinary dish the eater would undoubtedly detect
-it, and would probably eat no more. A curry was exactly the medium
-which would disguise this taste. By no possible supposition could
-this stranger, Fitzroy Simpson, have caused curry to be served in
-the trainer's family that night, and it is surely too monstrous a
-coincidence to suppose that he happened to come along with powdered
-opium upon the very night when a dish happened to be served which would
-disguise the flavor. That is unthinkable. Therefore Simpson becomes
-eliminated from the case, and our attention centers upon Straker and
-his wife, the only two people who could have chosen curried mutton for
-supper that night. The opium was added after the dish was set aside
-for the stable-boy, for the others had the same for supper with no ill
-effects. Which of them, then, had access to that dish without the maid
-seeing them?
-
-"Before deciding that question I had grasped the significance of the
-silence of the dog, for one true inference invariably suggests others.
-The Simpson incident had shown me that a dog was kept in the stables,
-and yet, though some one had been in and had fetched out a horse, he
-had not barked enough to arouse the two lads in the loft. Obviously the
-midnight visitor was some one whom the dog knew well.
-
-"I was already convinced, or almost convinced, that John Straker went
-down to the stables in the dead of the night and took out Silver Blaze.
-For what purpose? For a dishonest one, obviously, or why should he drug
-his own stable-boy? And yet I was at a loss to know why. There have been
-cases before now where trainers have made sure of great sums of money
-by laying against their own horses, through agents, and then preventing
-them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
-it is some surer and subtler means. What was it here? I hoped that the
-contents of his pockets might help me to form a conclusion.
-
-"And they did so. You cannot have forgotten the singular knife which was
-found in the dead man's hand, a knife which certainly no sane man would
-choose for a weapon. It was, as Dr. Watson told us, a form of knife
-which is used for the most delicate operations known in surgery. And it
-was to be used for a delicate operation that night. You must know, with
-your wide experience of turf matters, Colonel Ross, that it is possible
-to make a slight nick upon the tendons of a horse's ham, and to do it
-subcutaneously, so as to leave absolutely no trace. A horse so treated
-would develop a slight lameness, which would be put down to a strain in
-exercise or a touch of rheumatism, but never to foul play."
-
-"Villain! Scoundrel!" cried the Colonel.
-
-"We have here the explanation of why John Straker wished to take the
-horse out on to the moor. So spirited a creature would have certainly
-roused the soundest of sleepers when it felt the prick of the knife. It
-was absolutely necessary to do it in the open air."
-
-"I have been blind!" cried the Colonel. "Of course that was why he
-needed the candle, and struck the match."
-
-"Undoubtedly. But in examining his belongings I was fortunate enough to
-discover not only the method of the crime, but even its motives. As a
-man of the world, Colonel, you know that men do not carry other people's
-bills about in their pockets. We have most of us quite enough to do to
-settle our own. I at once concluded that Straker was leading a double
-life, and keeping a second establishment. The nature of the bill showed
-that there was a lady in the case, and one who had expensive tastes.
-Liberal as you are with your servants, one can hardly expect that they
-can buy twenty-guinea walking dresses for their ladies. I questioned
-Mrs. Straker as to the dress without her knowing it, and having
-satisfied myself that it had never reached her, I made a note of the
-milliner's address, and felt that by calling there with Straker's
-photograph I could easily dispose of the mythical Derbyshire.
-
-"From that time on all was plain. Straker had led out the horse to a
-hollow where his light would be invisible. Simpson in his flight had
-dropped his cravat, and Straker had picked it up--with some idea,
-perhaps, that he might use it in securing the horse's leg. Once in the
-hollow, he had got behind the horse and had struck a light; but the
-creature frightened at the sudden glare, and with the strange instinct
-of animals feeling that some mischief was intended, had lashed out, and
-the steel shoe had struck Straker full on the forehead. He had already,
-in spite of the rain, taken off his overcoat in order to do his delicate
-task, and so, as he fell, his knife gashed his thigh. Do I make it
-clear?"
-
-"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
-
-"My final shot was, I confess a very long one. It struck me that so
-astute a man as Straker would not undertake this delicate tendon-nicking
-without a little practice. What could he practice on? My eyes fell upon
-the sheep, and I asked a question which, rather to my surprise, showed
-that my surmise was correct.
-
-"When I returned to London I called upon the milliner, who had
-recognized Straker as an excellent customer of the name of Derbyshire,
-who had a very dashing wife, with a strong partiality for expensive
-dresses. I have no doubt that this woman had plunged him over head and
-ears in debt, and so led him into this miserable plot."
-
-"You have explained all but one thing," cried the Colonel. "Where was
-the horse?"
-
-"Ah, it bolted, and was cared for by one of your neighbors. We must have
-an amnesty in that direction, I think. This is Clapham Junction, if I am
-not mistaken, and we shall be in Victoria in less than ten minutes. If
-you care to smoke a cigar in our rooms, Colonel, I shall be happy to
-give you any other details which might interest you."
-
-
-
-
-Adventure II. The Yellow Face
-
-
-[In publishing these short sketches based upon the numerous cases in
-which my companion's singular gifts have made us the listeners to, and
-eventually the actors in, some strange drama, it is only natural that I
-should dwell rather upon his successes than upon his failures. And this
-not so much for the sake of his reputation--for, indeed, it was when
-he was at his wits' end that his energy and his versatility were most
-admirable--but because where he failed it happened too often that no one
-else succeeded, and that the tale was left forever without a conclusion.
-Now and again, however, it chanced that even when he erred, the truth
-was still discovered. I have noted of some half-dozen cases of the
-kind; the Adventure of the Musgrave Ritual and that which I am about to
-recount are the two which present the strongest features of interest.]
-
-Sherlock Holmes was a man who seldom took exercise for exercise's sake.
-Few men were capable of greater muscular effort, and he was undoubtedly
-one of the finest boxers of his weight that I have ever seen; but he
-looked upon aimless bodily exertion as a waste of energy, and he seldom
-bestirred himself save when there was some professional object to be
-served. Then he was absolutely untiring and indefatigable. That he
-should have kept himself in training under such circumstances is
-remarkable, but his diet was usually of the sparest, and his habits
-were simple to the verge of austerity. Save for the occasional use of
-cocaine, he had no vices, and he only turned to the drug as a protest
-against the monotony of existence when cases were scanty and the papers
-uninteresting.
-
-One day in early spring he had so far relaxed as to go for a walk with
-me in the Park, where the first faint shoots of green were breaking out
-upon the elms, and the sticky spear-heads of the chestnuts were just
-beginning to burst into their five-fold leaves. For two hours we rambled
-about together, in silence for the most part, as befits two men who know
-each other intimately. It was nearly five before we were back in Baker
-Street once more.
-
-"Beg pardon, sir," said our page-boy, as he opened the door. "There's
-been a gentleman here asking for you, sir."
-
-Holmes glanced reproachfully at me. "So much for afternoon walks!" said
-he. "Has this gentleman gone, then?"
-
-"Yes, sir."
-
-"Didn't you ask him in?"
-
-"Yes, sir; he came in."
-
-"How long did he wait?"
-
-"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
-and a-stampin' all the time he was here. I was waitin' outside the door,
-sir, and I could hear him. At last he outs into the passage, and he
-cries, 'Is that man never goin' to come?' Those were his very words,
-sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
-in the open air, for I feel half choked,' says he. 'I'll be back before
-long.' And with that he ups and he outs, and all I could say wouldn't
-hold him back."
-
-"Well, well, you did your best," said Holmes, as we walked into our
-room. "It's very annoying, though, Watson. I was badly in need of
-a case, and this looks, from the man's impatience, as if it were of
-importance. Hullo! That's not your pipe on the table. He must have
-left his behind him. A nice old brier with a good long stem of what the
-tobacconists call amber. I wonder how many real amber mouthpieces there
-are in London? Some people think that a fly in it is a sign. Well, he
-must have been disturbed in his mind to leave a pipe behind him which he
-evidently values highly."
-
-"How do you know that he values it highly?" I asked.
-
-"Well, I should put the original cost of the pipe at seven and sixpence.
-Now it has, you see, been twice mended, once in the wooden stem and once
-in the amber. Each of these mends, done, as you observe, with silver
-bands, must have cost more than the pipe did originally. The man must
-value the pipe highly when he prefers to patch it up rather than buy a
-new one with the same money."
-
-"Anything else?" I asked, for Holmes was turning the pipe about in his
-hand, and staring at it in his peculiar pensive way.
-
-He held it up and tapped on it with his long, thin fore-finger, as a
-professor might who was lecturing on a bone.
-
-"Pipes are occasionally of extraordinary interest," said he. "Nothing
-has more individuality, save perhaps watches and bootlaces. The
-indications here, however, are neither very marked nor very important.
-The owner is obviously a muscular man, left-handed, with an excellent
-set of teeth, careless in his habits, and with no need to practise
-economy."
-
-My friend threw out the information in a very offhand way, but I saw
-that he cocked his eye at me to see if I had followed his reasoning.
-
-"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
-said I.
-
-"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
-knocking a little out on his palm. "As he might get an excellent smoke
-for half the price, he has no need to practise economy."
-
-"And the other points?"
-
-"He has been in the habit of lighting his pipe at lamps and gas-jets.
-You can see that it is quite charred all down one side. Of course a
-match could not have done that. Why should a man hold a match to the
-side of his pipe? But you cannot light it at a lamp without getting the
-bowl charred. And it is all on the right side of the pipe. From that I
-gather that he is a left-handed man. You hold your own pipe to the lamp,
-and see how naturally you, being right-handed, hold the left side to the
-flame. You might do it once the other way, but not as a constancy. This
-has always been held so. Then he has bitten through his amber. It takes
-a muscular, energetic fellow, and one with a good set of teeth, to do
-that. But if I am not mistaken I hear him upon the stair, so we shall
-have something more interesting than his pipe to study."
-
-An instant later our door opened, and a tall young man entered the room.
-He was well but quietly dressed in a dark-gray suit, and carried a brown
-wide-awake in his hand. I should have put him at about thirty, though he
-was really some years older.
-
-"I beg your pardon," said he, with some embarrassment; "I suppose I
-should have knocked. Yes, of course I should have knocked. The fact
-is that I am a little upset, and you must put it all down to that." He
-passed his hand over his forehead like a man who is half dazed, and then
-fell rather than sat down upon a chair.
-
-"I can see that you have not slept for a night or two," said Holmes,
-in his easy, genial way. "That tries a man's nerves more than work, and
-more even than pleasure. May I ask how I can help you?"
-
-"I wanted your advice, sir. I don't know what to do and my whole life
-seems to have gone to pieces."
-
-"You wish to employ me as a consulting detective?"
-
-"Not that only. I want your opinion as a judicious man--as a man of the
-world. I want to know what I ought to do next. I hope to God you'll be
-able to tell me."
-
-He spoke in little, sharp, jerky outbursts, and it seemed to me that to
-speak at all was very painful to him, and that his will all through was
-overriding his inclinations.
-
-"It's a very delicate thing," said he. "One does not like to speak of
-one's domestic affairs to strangers. It seems dreadful to discuss the
-conduct of one's wife with two men whom I have never seen before. It's
-horrible to have to do it. But I've got to the end of my tether, and I
-must have advice."
-
-"My dear Mr. Grant Munro--" began Holmes.
-
-Our visitor sprang from his chair. "What!" he cried, "you know my name?"
-
-"If you wish to preserve your incognito," said Holmes, smiling, "I would
-suggest that you cease to write your name upon the lining of your
-hat, or else that you turn the crown towards the person whom you are
-addressing. I was about to say that my friend and I have listened to a
-good many strange secrets in this room, and that we have had the good
-fortune to bring peace to many troubled souls. I trust that we may do as
-much for you. Might I beg you, as time may prove to be of importance, to
-furnish me with the facts of your case without further delay?"
-
-Our visitor again passed his hand over his forehead, as if he found it
-bitterly hard. From every gesture and expression I could see that he was
-a reserved, self-contained man, with a dash of pride in his nature, more
-likely to hide his wounds than to expose them. Then suddenly, with a
-fierce gesture of his closed hand, like one who throws reserve to the
-winds, he began.
-
-"The facts are these, Mr. Holmes," said he. "I am a married man, and
-have been so for three years. During that time my wife and I have loved
-each other as fondly and lived as happily as any two that ever were
-joined. We have not had a difference, not one, in thought or word or
-deed. And now, since last Monday, there has suddenly sprung up a barrier
-between us, and I find that there is something in her life and in her
-thought of which I know as little as if she were the woman who brushes
-by me in the street. We are estranged, and I want to know why.
-
-"Now there is one thing that I want to impress upon you before I go
-any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
-about that. She loves me with her whole heart and soul, and never more
-than now. I know it. I feel it. I don't want to argue about that. A man
-can tell easily enough when a woman loves him. But there's this secret
-between us, and we can never be the same until it is cleared."
-
-"Kindly let me have the facts, Mr. Munro," said Holmes, with some
-impatience.
-
-"I'll tell you what I know about Effie's history. She was a widow when
-I met her first, though quite young--only twenty-five. Her name then was
-Mrs. Hebron. She went out to America when she was young, and lived in
-the town of Atlanta, where she married this Hebron, who was a lawyer
-with a good practice. They had one child, but the yellow fever broke out
-badly in the place, and both husband and child died of it. I have seen
-his death certificate. This sickened her of America, and she came back
-to live with a maiden aunt at Pinner, in Middlesex. I may mention that
-her husband had left her comfortably off, and that she had a capital of
-about four thousand five hundred pounds, which had been so well invested
-by him that it returned an average of seven per cent. She had only been
-six months at Pinner when I met her; we fell in love with each other,
-and we married a few weeks afterwards.
-
-"I am a hop merchant myself, and as I have an income of seven or
-eight hundred, we found ourselves comfortably off, and took a nice
-eighty-pound-a-year villa at Norbury. Our little place was very
-countrified, considering that it is so close to town. We had an inn and
-two houses a little above us, and a single cottage at the other side of
-the field which faces us, and except those there were no houses until
-you got half way to the station. My business took me into town at
-certain seasons, but in summer I had less to do, and then in our country
-home my wife and I were just as happy as could be wished. I tell you
-that there never was a shadow between us until this accursed affair
-began.
-
-"There's one thing I ought to tell you before I go further. When we
-married, my wife made over all her property to me--rather against my
-will, for I saw how awkward it would be if my business affairs went
-wrong. However, she would have it so, and it was done. Well, about six
-weeks ago she came to me.
-
-"'Jack,' said she, 'when you took my money you said that if ever I
-wanted any I was to ask you for it.'
-
-"'Certainly,' said I. 'It's all your own.'
-
-"'Well,' said she, 'I want a hundred pounds.'
-
-"I was a bit staggered at this, for I had imagined it was simply a new
-dress or something of the kind that she was after.
-
-"'What on earth for?' I asked.
-
-"'Oh,' said she, in her playful way, 'you said that you were only my
-banker, and bankers never ask questions, you know.'
-
-"'If you really mean it, of course you shall have the money,' said I.
-
-"'Oh, yes, I really mean it.'
-
-"'And you won't tell me what you want it for?'
-
-"'Some day, perhaps, but not just at present, Jack.'
-
-"So I had to be content with that, though it was the first time that
-there had ever been any secret between us. I gave her a check, and I
-never thought any more of the matter. It may have nothing to do with
-what came afterwards, but I thought it only right to mention it.
-
-"Well, I told you just now that there is a cottage not far from our
-house. There is just a field between us, but to reach it you have to
-go along the road and then turn down a lane. Just beyond it is a nice
-little grove of Scotch firs, and I used to be very fond of strolling
-down there, for trees are always a neighborly kind of things. The
-cottage had been standing empty this eight months, and it was a pity,
-for it was a pretty two-storied place, with an old-fashioned porch and
-honeysuckle about it. I have stood many a time and thought what a neat
-little homestead it would make.
-
-"Well, last Monday evening I was taking a stroll down that way, when
-I met an empty van coming up the lane, and saw a pile of carpets and
-things lying about on the grass-plot beside the porch. It was clear that
-the cottage had at last been let. I walked past it, and wondered what
-sort of folk they were who had come to live so near us. And as I looked
-I suddenly became aware that a face was watching me out of one of the
-upper windows.
-
-"I don't know what there was about that face, Mr. Holmes, but it seemed
-to send a chill right down my back. I was some little way off, so that
-I could not make out the features, but there was something unnatural and
-inhuman about the face. That was the impression that I had, and I moved
-quickly forwards to get a nearer view of the person who was watching
-me. But as I did so the face suddenly disappeared, so suddenly that it
-seemed to have been plucked away into the darkness of the room. I stood
-for five minutes thinking the business over, and trying to analyze my
-impressions. I could not tell if the face were that of a man or a
-woman. It had been too far from me for that. But its color was what had
-impressed me most. It was of a livid chalky white, and with something
-set and rigid about it which was shockingly unnatural. So disturbed
-was I that I determined to see a little more of the new inmates of
-the cottage. I approached and knocked at the door, which was instantly
-opened by a tall, gaunt woman with a harsh, forbidding face.
-
-"'What may you be wantin'?' she asked, in a Northern accent.
-
-"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
-see that you have only just moved in, so I thought that if I could be of
-any help to you in any--'
-
-"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
-in my face. Annoyed at the churlish rebuff, I turned my back and walked
-home. All evening, though I tried to think of other things, my mind
-would still turn to the apparition at the window and the rudeness of the
-woman. I determined to say nothing about the former to my wife, for
-she is a nervous, highly strung woman, and I had no wish that she would
-share the unpleasant impression which had been produced upon myself. I
-remarked to her, however, before I fell asleep, that the cottage was now
-occupied, to which she returned no reply.
-
-"I am usually an extremely sound sleeper. It has been a standing jest
-in the family that nothing could ever wake me during the night. And yet
-somehow on that particular night, whether it may have been the slight
-excitement produced by my little adventure or not I know not, but
-I slept much more lightly than usual. Half in my dreams I was dimly
-conscious that something was going on in the room, and gradually became
-aware that my wife had dressed herself and was slipping on her mantle
-and her bonnet. My lips were parted to murmur out some sleepy words of
-surprise or remonstrance at this untimely preparation, when suddenly my
-half-opened eyes fell upon her face, illuminated by the candle-light,
-and astonishment held me dumb. She wore an expression such as I had
-never seen before--such as I should have thought her incapable of
-assuming. She was deadly pale and breathing fast, glancing furtively
-towards the bed as she fastened her mantle, to see if she had disturbed
-me. Then, thinking that I was still asleep, she slipped noiselessly from
-the room, and an instant later I heard a sharp creaking which could only
-come from the hinges of the front door. I sat up in bed and rapped my
-knuckles against the rail to make certain that I was truly awake. Then
-I took my watch from under the pillow. It was three in the morning. What
-on this earth could my wife be doing out on the country road at three in
-the morning?
-
-"I had sat for about twenty minutes turning the thing over in my mind
-and trying to find some possible explanation. The more I thought, the
-more extraordinary and inexplicable did it appear. I was still puzzling
-over it when I heard the door gently close again, and her footsteps
-coming up the stairs.
-
-"'Where in the world have you been, Effie?' I asked as she entered.
-
-"She gave a violent start and a kind of gasping cry when I spoke, and
-that cry and start troubled me more than all the rest, for there was
-something indescribably guilty about them. My wife had always been
-a woman of a frank, open nature, and it gave me a chill to see her
-slinking into her own room, and crying out and wincing when her own
-husband spoke to her.
-
-"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
-that nothing could awake you.'
-
-"'Where have you been?' I asked, more sternly.
-
-"'I don't wonder that you are surprised,' said she, and I could see that
-her fingers were trembling as she undid the fastenings of her mantle.
-'Why, I never remember having done such a thing in my life before. The
-fact is that I felt as though I were choking, and had a perfect longing
-for a breath of fresh air. I really think that I should have fainted if
-I had not gone out. I stood at the door for a few minutes, and now I am
-quite myself again.'
-
-"All the time that she was telling me this story she never once looked
-in my direction, and her voice was quite unlike her usual tones. It
-was evident to me that she was saying what was false. I said nothing
-in reply, but turned my face to the wall, sick at heart, with my mind
-filled with a thousand venomous doubts and suspicions. What was it that
-my wife was concealing from me? Where had she been during that strange
-expedition? I felt that I should have no peace until I knew, and yet I
-shrank from asking her again after once she had told me what was false.
-All the rest of the night I tossed and tumbled, framing theory after
-theory, each more unlikely than the last.
-
-"I should have gone to the City that day, but I was too disturbed in my
-mind to be able to pay attention to business matters. My wife seemed
-to be as upset as myself, and I could see from the little questioning
-glances which she kept shooting at me that she understood that I
-disbelieved her statement, and that she was at her wits' end what to do.
-We hardly exchanged a word during breakfast, and immediately afterwards
-I went out for a walk, that I might think the matter out in the fresh
-morning air.
-
-"I went as far as the Crystal Palace, spent an hour in the grounds, and
-was back in Norbury by one o'clock. It happened that my way took me past
-the cottage, and I stopped for an instant to look at the windows, and to
-see if I could catch a glimpse of the strange face which had looked
-out at me on the day before. As I stood there, imagine my surprise, Mr.
-Holmes, when the door suddenly opened and my wife walked out.
-
-"I was struck dumb with astonishment at the sight of her; but my
-emotions were nothing to those which showed themselves upon her face
-when our eyes met. She seemed for an instant to wish to shrink back
-inside the house again; and then, seeing how useless all concealment
-must be, she came forward, with a very white face and frightened eyes
-which belied the smile upon her lips.
-
-"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
-assistance to our new neighbors. Why do you look at me like that, Jack?
-You are not angry with me?'
-
-"'So,' said I, 'this is where you went during the night.'
-
-"'What do you mean?' she cried.
-
-"'You came here. I am sure of it. Who are these people, that you should
-visit them at such an hour?'
-
-"'I have not been here before.'
-
-"'How can you tell me what you know is false?' I cried. 'Your very voice
-changes as you speak. When have I ever had a secret from you? I shall
-enter that cottage, and I shall probe the matter to the bottom.'
-
-"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
-Then, as I approached the door, she seized my sleeve and pulled me back
-with convulsive strength.
-
-"'I implore you not to do this, Jack,' she cried. 'I swear that I will
-tell you everything some day, but nothing but misery can come of it if
-you enter that cottage.' Then, as I tried to shake her off, she clung to
-me in a frenzy of entreaty.
-
-"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
-have cause to regret it. You know that I would not have a secret from
-you if it were not for your own sake. Our whole lives are at stake in
-this. If you come home with me, all will be well. If you force your way
-into that cottage, all is over between us.'
-
-"There was such earnestness, such despair, in her manner that her words
-arrested me, and I stood irresolute before the door.
-
-"'I will trust you on one condition, and on one condition only,' said I
-at last. 'It is that this mystery comes to an end from now. You are
-at liberty to preserve your secret, but you must promise me that there
-shall be no more nightly visits, no more doings which are kept from my
-knowledge. I am willing to forget those which are passed if you will
-promise that there shall be no more in the future.'
-
-"'I was sure that you would trust me,' she cried, with a great sigh of
-relief. 'It shall be just as you wish. Come away--oh, come away up to
-the house.'
-
-"Still pulling at my sleeve, she led me away from the cottage. As we
-went I glanced back, and there was that yellow livid face watching us
-out of the upper window. What link could there be between that creature
-and my wife? Or how could the coarse, rough woman whom I had seen the
-day before be connected with her? It was a strange puzzle, and yet I
-knew that my mind could never know ease again until I had solved it.
-
-"For two days after this I stayed at home, and my wife appeared to abide
-loyally by our engagement, for, as far as I know, she never stirred out
-of the house. On the third day, however, I had ample evidence that
-her solemn promise was not enough to hold her back from this secret
-influence which drew her away from her husband and her duty.
-
-"I had gone into town on that day, but I returned by the 2.40 instead of
-the 3.36, which is my usual train. As I entered the house the maid ran
-into the hall with a startled face.
-
-"'Where is your mistress?' I asked.
-
-"'I think that she has gone out for a walk,' she answered.
-
-"My mind was instantly filled with suspicion. I rushed upstairs to make
-sure that she was not in the house. As I did so I happened to glance out
-of one of the upper windows, and saw the maid with whom I had just been
-speaking running across the field in the direction of the cottage. Then
-of course I saw exactly what it all meant. My wife had gone over there,
-and had asked the servant to call her if I should return. Tingling with
-anger, I rushed down and hurried across, determined to end the matter
-once and forever. I saw my wife and the maid hurrying back along the
-lane, but I did not stop to speak with them. In the cottage lay the
-secret which was casting a shadow over my life. I vowed that, come what
-might, it should be a secret no longer. I did not even knock when I
-reached it, but turned the handle and rushed into the passage.
-
-"It was all still and quiet upon the ground floor. In the kitchen a
-kettle was singing on the fire, and a large black cat lay coiled up in
-the basket; but there was no sign of the woman whom I had seen before.
-I ran into the other room, but it was equally deserted. Then I rushed up
-the stairs, only to find two other rooms empty and deserted at the top.
-There was no one at all in the whole house. The furniture and pictures
-were of the most common and vulgar description, save in the one chamber
-at the window of which I had seen the strange face. That was comfortable
-and elegant, and all my suspicions rose into a fierce bitter flame when
-I saw that on the mantelpiece stood a copy of a full-length photograph
-of my wife, which had been taken at my request only three months ago.
-
-"I stayed long enough to make certain that the house was absolutely
-empty. Then I left it, feeling a weight at my heart such as I had never
-had before. My wife came out into the hall as I entered my house; but I
-was too hurt and angry to speak with her, and pushing past her, I made
-my way into my study. She followed me, however, before I could close the
-door.
-
-"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
-all the circumstances I am sure that you would forgive me.'
-
-"'Tell me everything, then,' said I.
-
-"'I cannot, Jack, I cannot,' she cried.
-
-"'Until you tell me who it is that has been living in that cottage, and
-who it is to whom you have given that photograph, there can never be any
-confidence between us,' said I, and breaking away from her, I left the
-house. That was yesterday, Mr. Holmes, and I have not seen her since,
-nor do I know anything more about this strange business. It is the first
-shadow that has come between us, and it has so shaken me that I do not
-know what I should do for the best. Suddenly this morning it occurred to
-me that you were the man to advise me, so I have hurried to you now, and
-I place myself unreservedly in your hands. If there is any point which I
-have not made clear, pray question me about it. But, above all, tell me
-quickly what I am to do, for this misery is more than I can bear."
-
-Holmes and I had listened with the utmost interest to this extraordinary
-statement, which had been delivered in the jerky, broken fashion of a
-man who is under the influence of extreme emotions. My companion sat
-silent for some time, with his chin upon his hand, lost in thought.
-
-"Tell me," said he at last, "could you swear that this was a man's face
-which you saw at the window?"
-
-"Each time that I saw it I was some distance away from it, so that it is
-impossible for me to say."
-
-"You appear, however, to have been disagreeably impressed by it."
-
-"It seemed to be of an unnatural color, and to have a strange rigidity
-about the features. When I approached, it vanished with a jerk."
-
-"How long is it since your wife asked you for a hundred pounds?"
-
-"Nearly two months."
-
-"Have you ever seen a photograph of her first husband?"
-
-"No; there was a great fire at Atlanta very shortly after his death, and
-all her papers were destroyed."
-
-"And yet she had a certificate of death. You say that you saw it."
-
-"Yes; she got a duplicate after the fire."
-
-"Did you ever meet any one who knew her in America?"
-
-"No."
-
-"Did she ever talk of revisiting the place?"
-
-"No."
-
-"Or get letters from it?"
-
-"No."
-
-"Thank you. I should like to think over the matter a little now. If the
-cottage is now permanently deserted we may have some difficulty. If, on
-the other hand, as I fancy is more likely, the inmates were warned of
-your coming, and left before you entered yesterday, then they may be
-back now, and we should clear it all up easily. Let me advise you, then,
-to return to Norbury, and to examine the windows of the cottage again.
-If you have reason to believe that it is inhabited, do not force your
-way in, but send a wire to my friend and me. We shall be with you within
-an hour of receiving it, and we shall then very soon get to the bottom
-of the business."
-
-"And if it is still empty?"
-
-"In that case I shall come out to-morrow and talk it over with you.
-Good-by; and, above all, do not fret until you know that you really have
-a cause for it."
-
-"I am afraid that this is a bad business, Watson," said my companion, as
-he returned after accompanying Mr. Grant Munro to the door. "What do you
-make of it?"
-
-"It had an ugly sound," I answered.
-
-"Yes. There's blackmail in it, or I am much mistaken."
-
-"And who is the blackmailer?"
-
-"Well, it must be the creature who lives in the only comfortable room
-in the place, and has her photograph above his fireplace. Upon my word,
-Watson, there is something very attractive about that livid face at the
-window, and I would not have missed the case for worlds."
-
-"You have a theory?"
-
-"Yes, a provisional one. But I shall be surprised if it does not turn
-out to be correct. This woman's first husband is in that cottage."
-
-"Why do you think so?"
-
-"How else can we explain her frenzied anxiety that her second one should
-not enter it? The facts, as I read them, are something like this:
-This woman was married in America. Her husband developed some hateful
-qualities; or shall we say that he contracted some loathsome disease,
-and became a leper or an imbecile? She flies from him at last, returns
-to England, changes her name, and starts her life, as she thinks,
-afresh. She has been married three years, and believes that her position
-is quite secure, having shown her husband the death certificate of
-some man whose name she has assumed, when suddenly her whereabouts
-is discovered by her first husband; or, we may suppose, by some
-unscrupulous woman who has attached herself to the invalid. They write
-to the wife, and threaten to come and expose her. She asks for a hundred
-pounds, and endeavors to buy them off. They come in spite of it, and
-when the husband mentions casually to the wife that there are new-comers
-in the cottage, she knows in some way that they are her pursuers. She
-waits until her husband is asleep, and then she rushes down to endeavor
-to persuade them to leave her in peace. Having no success, she goes
-again next morning, and her husband meets her, as he has told us, as
-she comes out. She promises him then not to go there again, but two days
-afterwards the hope of getting rid of those dreadful neighbors was too
-strong for her, and she made another attempt, taking down with her the
-photograph which had probably been demanded from her. In the midst of
-this interview the maid rushed in to say that the master had come home,
-on which the wife, knowing that he would come straight down to the
-cottage, hurried the inmates out at the back door, into the grove of
-fir-trees, probably, which was mentioned as standing near. In this way
-he found the place deserted. I shall be very much surprised, however, if
-it is still so when he reconnoitres it this evening. What do you think
-of my theory?"
-
-"It is all surmise."
-
-"But at least it covers all the facts. When new facts come to our
-knowledge which cannot be covered by it, it will be time enough to
-reconsider it. We can do nothing more until we have a message from our
-friend at Norbury."
-
-But we had not a very long time to wait for that. It came just as we had
-finished our tea. "The cottage is still tenanted," it said. "Have seen
-the face again at the window. Will meet the seven o'clock train, and
-will take no steps until you arrive."
-
-
-He was waiting on the platform when we stepped out, and we could see in
-the light of the station lamps that he was very pale, and quivering with
-agitation.
-
-"They are still there, Mr. Holmes," said he, laying his hand hard upon
-my friend's sleeve. "I saw lights in the cottage as I came down. We
-shall settle it now once and for all."
-
-"What is your plan, then?" asked Holmes, as he walked down the dark
-tree-lined road.
-
-"I am going to force my way in and see for myself who is in the house. I
-wish you both to be there as witnesses."
-
-"You are quite determined to do this, in spite of your wife's warning
-that it is better that you should not solve the mystery?"
-
-"Yes, I am determined."
-
-"Well, I think that you are in the right. Any truth is better than
-indefinite doubt. We had better go up at once. Of course, legally, we
-are putting ourselves hopelessly in the wrong; but I think that it is
-worth it."
-
-It was a very dark night, and a thin rain began to fall as we turned
-from the high road into a narrow lane, deeply rutted, with hedges on
-either side. Mr. Grant Munro pushed impatiently forward, however, and we
-stumbled after him as best we could.
-
-"There are the lights of my house," he murmured, pointing to a glimmer
-among the trees. "And here is the cottage which I am going to enter."
-
-We turned a corner in the lane as he spoke, and there was the building
-close beside us. A yellow bar falling across the black foreground showed
-that the door was not quite closed, and one window in the upper story
-was brightly illuminated. As we looked, we saw a dark blur moving across
-the blind.
-
-"There is that creature!" cried Grant Munro. "You can see for yourselves
-that some one is there. Now follow me, and we shall soon know all."
-
-We approached the door; but suddenly a woman appeared out of the shadow
-and stood in the golden track of the lamp-light. I could not see her
-face in the darkness, but her arms were thrown out in an attitude of
-entreaty.
-
-"For God's sake, don't Jack!" she cried. "I had a presentiment that you
-would come this evening. Think better of it, dear! Trust me again, and
-you will never have cause to regret it."
-
-"I have trusted you too long, Effie," he cried, sternly. "Leave go of
-me! I must pass you. My friends and I are going to settle this matter
-once and forever!" He pushed her to one side, and we followed closely
-after him. As he threw the door open an old woman ran out in front of
-him and tried to bar his passage, but he thrust her back, and an instant
-afterwards we were all upon the stairs. Grant Munro rushed into the
-lighted room at the top, and we entered at his heels.
-
-It was a cosey, well-furnished apartment, with two candles burning upon
-the table and two upon the mantelpiece. In the corner, stooping over a
-desk, there sat what appeared to be a little girl. Her face was turned
-away as we entered, but we could see that she was dressed in a red
-frock, and that she had long white gloves on. As she whisked round
-to us, I gave a cry of surprise and horror. The face which she turned
-towards us was of the strangest livid tint, and the features were
-absolutely devoid of any expression. An instant later the mystery was
-explained. Holmes, with a laugh, passed his hand behind the child's
-ear, a mask peeled off from her countenance, and there was a little coal
-black negress, with all her white teeth flashing in amusement at our
-amazed faces. I burst out laughing, out of sympathy with her merriment;
-but Grant Munro stood staring, with his hand clutching his throat.
-
-"My God!" he cried. "What can be the meaning of this?"
-
-"I will tell you the meaning of it," cried the lady, sweeping into
-the room with a proud, set face. "You have forced me, against my own
-judgment, to tell you, and now we must both make the best of it. My
-husband died at Atlanta. My child survived."
-
-"Your child?"
-
-She drew a large silver locket from her bosom. "You have never seen this
-open."
-
-"I understood that it did not open."
-
-She touched a spring, and the front hinged back. There was a portrait
-within of a man strikingly handsome and intelligent-looking, but bearing
-unmistakable signs upon his features of his African descent.
-
-"That is John Hebron, of Atlanta," said the lady, "and a nobler man
-never walked the earth. I cut myself off from my race in order to wed
-him, but never once while he lived did I for an instant regret it. It
-was our misfortune that our only child took after his people rather than
-mine. It is often so in such matches, and little Lucy is darker far than
-ever her father was. But dark or fair, she is my own dear little girlie,
-and her mother's pet." The little creature ran across at the words and
-nestled up against the lady's dress. "When I left her in America," she
-continued, "it was only because her health was weak, and the change
-might have done her harm. She was given to the care of a faithful Scotch
-woman who had once been our servant. Never for an instant did I dream
-of disowning her as my child. But when chance threw you in my way, Jack,
-and I learned to love you, I feared to tell you about my child. God
-forgive me, I feared that I should lose you, and I had not the courage
-to tell you. I had to choose between you, and in my weakness I turned
-away from my own little girl. For three years I have kept her existence
-a secret from you, but I heard from the nurse, and I knew that all was
-well with her. At last, however, there came an overwhelming desire to
-see the child once more. I struggled against it, but in vain. Though I
-knew the danger, I determined to have the child over, if it were but
-for a few weeks. I sent a hundred pounds to the nurse, and I gave her
-instructions about this cottage, so that she might come as a neighbor,
-without my appearing to be in any way connected with her. I pushed my
-precautions so far as to order her to keep the child in the house during
-the daytime, and to cover up her little face and hands so that even
-those who might see her at the window should not gossip about there
-being a black child in the neighborhood. If I had been less cautious
-I might have been more wise, but I was half crazy with fear that you
-should learn the truth.
-
-"It was you who told me first that the cottage was occupied. I should
-have waited for the morning, but I could not sleep for excitement, and
-so at last I slipped out, knowing how difficult it is to awake you. But
-you saw me go, and that was the beginning of my troubles. Next day you
-had my secret at your mercy, but you nobly refrained from pursuing your
-advantage. Three days later, however, the nurse and child only just
-escaped from the back door as you rushed in at the front one. And now
-to-night you at last know all, and I ask you what is to become of us, my
-child and me?" She clasped her hands and waited for an answer.
-
-It was a long ten minutes before Grant Munro broke the silence, and
-when his answer came it was one of which I love to think. He lifted
-the little child, kissed her, and then, still carrying her, he held his
-other hand out to his wife and turned towards the door.
-
-"We can talk it over more comfortably at home," said he. "I am not a
-very good man, Effie, but I think that I am a better one than you have
-given me credit for being."
-
-Holmes and I followed them down the lane, and my friend plucked at my
-sleeve as we came out.
-
-"I think," said he, "that we shall be of more use in London than in
-Norbury."
-
-Not another word did he say of the case until late that night, when he
-was turning away, with his lighted candle, for his bedroom.
-
-"Watson," said he, "if it should ever strike you that I am getting a
-little over-confident in my powers, or giving less pains to a case
-than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
-infinitely obliged to you."
-
-
-
-
-Adventure III. The Stock-Broker's Clerk
-
-
-Shortly after my marriage I had bought a connection in the Paddington
-district. Old Mr. Farquhar, from whom I purchased it, had at one time an
-excellent general practice; but his age, and an affliction of the nature
-of St. Vitus's dance from which he suffered, had very much thinned it.
-The public not unnaturally goes on the principle that he who would heal
-others must himself be whole, and looks askance at the curative powers
-of the man whose own case is beyond the reach of his drugs. Thus as my
-predecessor weakened his practice declined, until when I purchased
-it from him it had sunk from twelve hundred to little more than three
-hundred a year. I had confidence, however, in my own youth and energy,
-and was convinced that in a very few years the concern would be as
-flourishing as ever.
-
-For three months after taking over the practice I was kept very closely
-at work, and saw little of my friend Sherlock Holmes, for I was too busy
-to visit Baker Street, and he seldom went anywhere himself save upon
-professional business. I was surprised, therefore, when, one morning in
-June, as I sat reading the British Medical Journal after breakfast, I
-heard a ring at the bell, followed by the high, somewhat strident tones
-of my old companion's voice.
-
-"Ah, my dear Watson," said he, striding into the room, "I am very
-delighted to see you! I trust that Mrs. Watson has entirely recovered
-from all the little excitements connected with our adventure of the Sign
-of Four."
-
-"Thank you, we are both very well," said I, shaking him warmly by the
-hand.
-
-"And I hope, also," he continued, sitting down in the rocking-chair,
-"that the cares of medical practice have not entirely obliterated the
-interest which you used to take in our little deductive problems."
-
-"On the contrary," I answered, "it was only last night that I was
-looking over my old notes, and classifying some of our past results."
-
-"I trust that you don't consider your collection closed."
-
-"Not at all. I should wish nothing better than to have some more of such
-experiences."
-
-"To-day, for example?"
-
-"Yes, to-day, if you like."
-
-"And as far off as Birmingham?"
-
-"Certainly, if you wish it."
-
-"And the practice?"
-
-"I do my neighbor's when he goes. He is always ready to work off the
-debt."
-
-"Ha! Nothing could be better," said Holmes, leaning back in his chair
-and looking keenly at me from under his half closed lids. "I perceive
-that you have been unwell lately. Summer colds are always a little
-trying."
-
-"I was confined to the house by a severe chill for three days last week.
-I thought, however, that I had cast off every trace of it."
-
-"So you have. You look remarkably robust."
-
-"How, then, did you know of it?"
-
-"My dear fellow, you know my methods."
-
-"You deduced it, then?"
-
-"Certainly."
-
-"And from what?"
-
-"From your slippers."
-
-I glanced down at the new patent leathers which I was wearing. "How on
-earth--" I began, but Holmes answered my question before it was asked.
-
-"Your slippers are new," he said. "You could not have had them more than
-a few weeks. The soles which you are at this moment presenting to me are
-slightly scorched. For a moment I thought they might have got wet and
-been burned in the drying. But near the instep there is a small circular
-wafer of paper with the shopman's hieroglyphics upon it. Damp would of
-course have removed this. You had, then, been sitting with your feet
-outstretched to the fire, which a man would hardly do even in so wet a
-June as this if he were in his full health."
-
-Like all Holmes's reasoning the thing seemed simplicity itself when it
-was once explained. He read the thought upon my features, and his smile
-had a tinge of bitterness.
-
-"I am afraid that I rather give myself away when I explain," said he.
-"Results without causes are much more impressive. You are ready to come
-to Birmingham, then?"
-
-"Certainly. What is the case?"
-
-"You shall hear it all in the train. My client is outside in a
-four-wheeler. Can you come at once?"
-
-"In an instant." I scribbled a note to my neighbor, rushed upstairs to
-explain the matter to my wife, and joined Holmes upon the door-step.
-
-"Your neighbor is a doctor," said he, nodding at the brass plate.
-
-"Yes; he bought a practice as I did."
-
-"An old-established one?"
-
-"Just the same as mine. Both have been ever since the houses were
-built."
-
-"Ah! Then you got hold of the best of the two."
-
-"I think I did. But how do you know?"
-
-"By the steps, my boy. Yours are worn three inches deeper than his. But
-this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
-introduce you to him. Whip your horse up, cabby, for we have only just
-time to catch our train."
-
-The man whom I found myself facing was a well built, fresh-complexioned
-young fellow, with a frank, honest face and a slight, crisp, yellow
-mustache. He wore a very shiny top hat and a neat suit of sober black,
-which made him look what he was--a smart young City man, of the class
-who have been labeled cockneys, but who give us our crack volunteer
-regiments, and who turn out more fine athletes and sportsmen than any
-body of men in these islands. His round, ruddy face was naturally full
-of cheeriness, but the corners of his mouth seemed to me to be pulled
-down in a half-comical distress. It was not, however, until we were
-all in a first-class carriage and well started upon our journey to
-Birmingham that I was able to learn what the trouble was which had
-driven him to Sherlock Holmes.
-
-"We have a clear run here of seventy minutes," Holmes remarked. "I
-want you, Mr. Hall Pycroft, to tell my friend your very interesting
-experience exactly as you have told it to me, or with more detail if
-possible. It will be of use to me to hear the succession of events
-again. It is a case, Watson, which may prove to have something in it, or
-may prove to have nothing, but which, at least, presents those unusual
-and outré features which are as dear to you as they are to me. Now, Mr.
-Pycroft, I shall not interrupt you again."
-
-Our young companion looked at me with a twinkle in his eye.
-
-"The worst of the story is," said he, "that I show myself up as such a
-confounded fool. Of course it may work out all right, and I don't see
-that I could have done otherwise; but if I have lost my crib and get
-nothing in exchange I shall feel what a soft Johnnie I have been. I'm
-not very good at telling a story, Dr. Watson, but it is like this with
-me:
-
-"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
-but they were let in early in the spring through the Venezuelan loan,
-as no doubt you remember, and came a nasty cropper. I had been with them
-five years, and old Coxon gave me a ripping good testimonial when
-the smash came, but of course we clerks were all turned adrift, the
-twenty-seven of us. I tried here and tried there, but there were lots of
-other chaps on the same lay as myself, and it was a perfect frost for a
-long time. I had been taking three pounds a week at Coxon's, and I had
-saved about seventy of them, but I soon worked my way through that and
-out at the other end. I was fairly at the end of my tether at last,
-and could hardly find the stamps to answer the advertisements or the
-envelopes to stick them to. I had worn out my boots paddling up office
-stairs, and I seemed just as far from getting a billet as ever.
-
-"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
-firm in Lombard Street. I dare say E. C. Is not much in your line, but
-I can tell you that this is about the richest house in London.
-The advertisement was to be answered by letter only. I sent in my
-testimonial and application, but without the least hope of getting it.
-Back came an answer by return, saying that if I would appear next Monday
-I might take over my new duties at once, provided that my appearance was
-satisfactory. No one knows how these things are worked. Some people say
-that the manager just plunges his hand into the heap and takes the first
-that comes. Anyhow it was my innings that time, and I don't ever wish to
-feel better pleased. The screw was a pound a week rise, and the duties
-just about the same as at Coxon's.
-
-"And now I come to the queer part of the business. I was in diggings out
-Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
-that very evening after I had been promised the appointment, when up
-came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
-printed upon it. I had never heard the name before and could not imagine
-what he wanted with me; but, of course, I asked her to show him up. In
-he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
-with a touch of the Sheeny about his nose. He had a brisk kind of way
-with him and spoke sharply, like a man who knew the value of time."
-
-"'Mr. Hall Pycroft, I believe?'" said he.
-
-"'Yes, sir,' I answered, pushing a chair towards him.
-
-"'Lately engaged at Coxon & Woodhouse's?'
-
-"'Yes, sir.'
-
-"'And now on the staff of Mawson's.'
-
-"'Quite so.'
-
-"'Well,' said he, 'the fact is that I have heard some really
-extraordinary stories about your financial ability. You remember Parker,
-who used to be Coxon's manager? He can never say enough about it.'
-
-"Of course I was pleased to hear this. I had always been pretty sharp in
-the office, but I had never dreamed that I was talked about in the City
-in this fashion.
-
-"'You have a good memory?' said he.
-
-"'Pretty fair,' I answered, modestly.
-
-"'Have you kept in touch with the market while you have been out of
-work?' he asked.
-
-"'Yes. I read the stock exchange list every morning.'
-
-"'Now that shows real application!' he cried. 'That is the way to
-prosper! You won't mind my testing you, will you? Let me see. How are
-Ayrshires?'
-
-"'A hundred and six and a quarter to a hundred and five and
-seven-eighths.'
-
-"'And New Zealand consolidated?'
-
-"'A hundred and four.
-
-"'And British Broken Hills?'
-
-"'Seven to seven-and-six.'
-
-"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
-that I had heard. My boy, my boy, you are very much too good to be a
-clerk at Mawson's!'
-
-"This outburst rather astonished me, as you can think. 'Well,' said I,
-'other people don't think quite so much of me as you seem to do, Mr.
-Pinner. I had a hard enough fight to get this berth, and I am very glad
-to have it.'
-
-"'Pooh, man; you should soar above it. You are not in your true sphere.
-Now, I'll tell you how it stands with me. What I have to offer is little
-enough when measured by your ability, but when compared with Mawson's,
-it's light to dark. Let me see. When do you go to Mawson's?'
-
-"'On Monday.'
-
-"'Ha, ha! I think I would risk a little sporting flutter that you don't
-go there at all.'
-
-"'Not go to Mawson's?'
-
-"'No, sir. By that day you will be the business manager of the
-Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
-branches in the towns and villages of France, not counting one in
-Brussels and one in San Remo.'
-
-"This took my breath away. 'I never heard of it,' said I.
-
-"'Very likely not. It has been kept very quiet, for the capital was all
-privately subscribed, and it's too good a thing to let the public
-into. My brother, Harry Pinner, is promoter, and joins the board after
-allotment as managing director. He knew I was in the swim down here, and
-asked me to pick up a good man cheap. A young, pushing man with plenty
-of snap about him. Parker spoke of you, and that brought me here
-to-night. We can only offer you a beggarly five hundred to start with.'
-
-"'Five hundred a year!' I shouted.
-
-"'Only that at the beginning; but you are to have an overriding
-commission of one per cent on all business done by your agents, and you
-may take my word for it that this will come to more than your salary.'
-
-"'But I know nothing about hardware.'
-
-"'Tut, my boy; you know about figures.'
-
-"My head buzzed, and I could hardly sit still in my chair. But suddenly
-a little chill of doubt came upon me.
-
-"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
-but Mawson is safe. Now, really, I know so little about your company
-that--'
-
-"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
-are the very man for us. You are not to be talked over, and quite right,
-too. Now, here's a note for a hundred pounds, and if you think that we
-can do business you may just slip it into your pocket as an advance upon
-your salary.'
-
-"'That is very handsome,' said I. 'When should I take over my new
-duties?'
-
-"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
-pocket here which you will take to my brother. You will find him at
-126b Corporation Street, where the temporary offices of the company
-are situated. Of course he must confirm your engagement, but between
-ourselves it will be all right.'
-
-"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
-I.
-
-"'Not at all, my boy. You have only got your deserts. There are one or
-two small things--mere formalities--which I must arrange with you.
-You have a bit of paper beside you there. Kindly write upon it "I am
-perfectly willing to act as business manager to the Franco-Midland
-Hardware Company, Limited, at a minimum salary of L500."'
-
-"I did as he asked, and he put the paper in his pocket.
-
-"'There is one other detail,' said he. 'What do you intend to do about
-Mawson's?'
-
-"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
-said I.
-
-"'Precisely what I don't want you to do. I had a row over you with
-Mawson's manager. I had gone up to ask him about you, and he was very
-offensive; accused me of coaxing you away from the service of the firm,
-and that sort of thing. At last I fairly lost my temper. "If you want
-good men you should pay them a good price," said I.'
-
-"'He would rather have our small price than your big one,' said he.
-
-"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
-so much as hear from him again.'
-
-"'Done!' said he. 'We picked him out of the gutter, and he won't leave
-us so easily.' Those were his very words."
-
-"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
-my life. Why should I consider him in any way? I shall certainly not
-write if you would rather I didn't.'
-
-"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
-delighted to have got so good a man for my brother. Here's your advance
-of a hundred pounds, and here is the letter. Make a note of the address,
-126b Corporation Street, and remember that one o'clock to-morrow is
-your appointment. Good-night; and may you have all the fortune that you
-deserve!'
-
-"That's just about all that passed between us, as near as I can
-remember. You can imagine, Dr. Watson, how pleased I was at such an
-extraordinary bit of good fortune. I sat up half the night hugging
-myself over it, and next day I was off to Birmingham in a train that
-would take me in plenty time for my appointment. I took my things to
-a hotel in New Street, and then I made my way to the address which had
-been given me.
-
-"It was a quarter of an hour before my time, but I thought that would
-make no difference. 126b was a passage between two large shops, which
-led to a winding stone stair, from which there were many flats, let as
-offices to companies or professional men. The names of the occupants
-were painted at the bottom on the wall, but there was no such name as
-the Franco-Midland Hardware Company, Limited. I stood for a few minutes
-with my heart in my boots, wondering whether the whole thing was an
-elaborate hoax or not, when up came a man and addressed me. He was very
-like the chap I had seen the night before, the same figure and voice,
-but he was clean shaven and his hair was lighter.
-
-"'Are you Mr. Hall Pycroft?' he asked.
-
-"'Yes,' said I.
-
-"'Oh! I was expecting you, but you are a trifle before your time. I had
-a note from my brother this morning in which he sang your praises very
-loudly.'
-
-"'I was just looking for the offices when you came.
-
-"'We have not got our name up yet, for we only secured these temporary
-premises last week. Come up with me, and we will talk the matter over.'
-
-"I followed him to the top of a very lofty stair, and there, right under
-the slates, were a couple of empty, dusty little rooms, uncarpeted and
-uncurtained, into which he led me. I had thought of a great office with
-shining tables and rows of clerks, such as I was used to, and I dare say
-I stared rather straight at the two deal chairs and one little table,
-which, with a ledger and a waste paper basket, made up the whole
-furniture.
-
-"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
-the length of my face. 'Rome was not built in a day, and we have lots of
-money at our backs, though we don't cut much dash yet in offices. Pray
-sit down, and let me have your letter.'
-
-"I gave it to him, and he read it over very carefully.
-
-"'You seem to have made a vast impression upon my brother Arthur,' said
-he; 'and I know that he is a pretty shrewd judge. He swears by London,
-you know; and I by Birmingham; but this time I shall follow his advice.
-Pray consider yourself definitely engaged."
-
-"'What are my duties?' I asked.
-
-"'You will eventually manage the great depot in Paris, which will pour
-a flood of English crockery into the shops of a hundred and thirty-four
-agents in France. The purchase will be completed in a week, and
-meanwhile you will remain in Birmingham and make yourself useful.'
-
-"'How?'
-
-"For answer, he took a big red book out of a drawer.
-
-"'This is a directory of Paris,' said he, 'with the trades after the
-names of the people. I want you to take it home with you, and to mark
-off all the hardware sellers, with their addresses. It would be of the
-greatest use to me to have them.'
-
-"'Surely there are classified lists?' I suggested.
-
-"'Not reliable ones. Their system is different from ours. Stick at it,
-and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
-If you continue to show zeal and intelligence you will find the company
-a good master.'
-
-"I went back to the hotel with the big book under my arm, and with very
-conflicting feelings in my breast. On the one hand, I was definitely
-engaged and had a hundred pounds in my pocket; on the other, the look
-of the offices, the absence of name on the wall, and other of the points
-which would strike a business man had left a bad impression as to the
-position of my employers. However, come what might, I had my money, so I
-settled down to my task. All Sunday I was kept hard at work, and yet by
-Monday I had only got as far as H. I went round to my employer, found
-him in the same dismantled kind of room, and was told to keep at
-it until Wednesday, and then come again. On Wednesday it was still
-unfinished, so I hammered away until Friday--that is, yesterday. Then I
-brought it round to Mr. Harry Pinner.
-
-"'Thank you very much,' said he; 'I fear that I underrated the
-difficulty of the task. This list will be of very material assistance to
-me.'
-
-"'It took some time,' said I.
-
-"'And now,' said he, 'I want you to make a list of the furniture shops,
-for they all sell crockery.'
-
-"'Very good.'
-
-"'And you can come up to-morrow evening, at seven, and let me know how
-you are getting on. Don't overwork yourself. A couple of hours at Day's
-Music Hall in the evening would do you no harm after your labors.' He
-laughed as he spoke, and I saw with a thrill that his second tooth upon
-the left-hand side had been very badly stuffed with gold."
-
-
-Sherlock Holmes rubbed his hands with delight, and I stared with
-astonishment at our client.
-
-"You may well look surprised, Dr. Watson; but it is this way," said he:
-"When I was speaking to the other chap in London, at the time that he
-laughed at my not going to Mawson's, I happened to notice that his tooth
-was stuffed in this very identical fashion. The glint of the gold in
-each case caught my eye, you see. When I put that with the voice and
-figure being the same, and only those things altered which might be
-changed by a razor or a wig, I could not doubt that it was the same man.
-Of course you expect two brothers to be alike, but not that they should
-have the same tooth stuffed in the same way. He bowed me out, and I
-found myself in the street, hardly knowing whether I was on my head or
-my heels. Back I went to my hotel, put my head in a basin of cold water,
-and tried to think it out. Why had he sent me from London to Birmingham?
-Why had he got there before me? And why had he written a letter from
-himself to himself? It was altogether too much for me, and I could make
-no sense of it. And then suddenly it struck me that what was dark to me
-might be very light to Mr. Sherlock Holmes. I had just time to get up to
-town by the night train to see him this morning, and to bring you both
-back with me to Birmingham."
-
-There was a pause after the stock-broker's clerk had concluded his
-surprising experience. Then Sherlock Holmes cocked his eye at me,
-leaning back on the cushions with a pleased and yet critical face, like
-a connoisseur who has just taken his first sip of a comet vintage.
-
-"Rather fine, Watson, is it not?" said he. "There are points in it which
-please me. I think that you will agree with me that an interview with
-Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
-Hardware Company, Limited, would be a rather interesting experience for
-both of us."
-
-"But how can we do it?" I asked.
-
-"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
-of mine who are in want of a billet, and what could be more natural than
-that I should bring you both round to the managing director?"
-
-"Quite so, of course," said Holmes. "I should like to have a look at
-the gentleman, and see if I can make anything of his little game.
-What qualities have you, my friend, which would make your services
-so valuable? or is it possible that--" He began biting his nails and
-staring blankly out of the window, and we hardly drew another word from
-him until we were in New Street.
-
-At seven o'clock that evening we were walking, the three of us, down
-Corporation Street to the company's offices.
-
-"It is no use our being at all before our time," said our client. "He
-only comes there to see me, apparently, for the place is deserted up to
-the very hour he names."
-
-"That is suggestive," remarked Holmes.
-
-"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
-us there."
-
-He pointed to a smallish, dark, well-dressed man who was bustling along
-the other side of the road. As we watched him he looked across at a boy
-who was bawling out the latest edition of the evening paper, and running
-over among the cabs and busses, he bought one from him. Then, clutching
-it in his hand, he vanished through a door-way.
-
-"There he goes!" cried Hall Pycroft. "These are the company's offices
-into which he has gone. Come with me, and I'll fix it up as easily as
-possible."
-
-Following his lead, we ascended five stories, until we found ourselves
-outside a half-opened door, at which our client tapped. A voice within
-bade us enter, and we entered a bare, unfurnished room such as Hall
-Pycroft had described. At the single table sat the man whom we had seen
-in the street, with his evening paper spread out in front of him, and as
-he looked up at us it seemed to me that I had never looked upon a face
-which bore such marks of grief, and of something beyond grief--of a
-horror such as comes to few men in a lifetime. His brow glistened with
-perspiration, his cheeks were of the dull, dead white of a fish's belly,
-and his eyes were wild and staring. He looked at his clerk as though he
-failed to recognize him, and I could see by the astonishment depicted
-upon our conductor's face that this was by no means the usual appearance
-of his employer.
-
-"You look ill, Mr. Pinner!" he exclaimed.
-
-"Yes, I am not very well," answered the other, making obvious efforts
-to pull himself together, and licking his dry lips before he spoke. "Who
-are these gentlemen whom you have brought with you?"
-
-"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
-town," said our clerk, glibly. "They are friends of mine and gentlemen
-of experience, but they have been out of a place for some little time,
-and they hoped that perhaps you might find an opening for them in the
-company's employment."
-
-"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
-"Yes, I have no doubt that we shall be able to do something for you.
-What is your particular line, Mr. Harris?"
-
-"I am an accountant," said Holmes.
-
-"Ah yes, we shall want something of the sort. And you, Mr. Price?"
-
-"A clerk," said I.
-
-"I have every hope that the company may accommodate you. I will let you
-know about it as soon as we come to any conclusion. And now I beg that
-you will go. For God's sake leave me to myself!"
-
-These last words were shot out of him, as though the constraint which
-he was evidently setting upon himself had suddenly and utterly burst
-asunder. Holmes and I glanced at each other, and Hall Pycroft took a
-step towards the table.
-
-"You forget, Mr. Pinner, that I am here by appointment to receive some
-directions from you," said he.
-
-"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
-"You may wait here a moment; and there is no reason why your friends
-should not wait with you. I will be entirely at your service in three
-minutes, if I might trespass upon your patience so far." He rose with a
-very courteous air, and, bowing to us, he passed out through a door at
-the farther end of the room, which he closed behind him.
-
-"What now?" whispered Holmes. "Is he giving us the slip?"
-
-"Impossible," answered Pycroft.
-
-"Why so?"
-
-"That door leads into an inner room."
-
-"There is no exit?"
-
-"None."
-
-"Is it furnished?"
-
-"It was empty yesterday."
-
-"Then what on earth can he be doing? There is something which I don't
-understand in this manner. If ever a man was three parts mad with
-terror, that man's name is Pinner. What can have put the shivers on
-him?"
-
-"He suspects that we are detectives," I suggested.
-
-"That's it," cried Pycroft.
-
-Holmes shook his head. "He did not turn pale. He was pale when we
-entered the room," said he. "It is just possible that--"
-
-His words were interrupted by a sharp rat-tat from the direction of the
-inner door.
-
-"What the deuce is he knocking at his own door for?" cried the clerk.
-
-Again and much louder came the rat-tat-tat. We all gazed expectantly at
-the closed door. Glancing at Holmes, I saw his face turn rigid, and he
-leaned forward in intense excitement. Then suddenly came a low guggling,
-gargling sound, and a brisk drumming upon woodwork. Holmes sprang
-frantically across the room and pushed at the door. It was fastened on
-the inner side. Following his example, we threw ourselves upon it with
-all our weight. One hinge snapped, then the other, and down came the
-door with a crash. Rushing over it, we found ourselves in the inner
-room. It was empty.
-
-But it was only for a moment that we were at fault. At one corner, the
-corner nearest the room which we had left, there was a second door.
-Holmes sprang to it and pulled it open. A coat and waistcoat were lying
-on the floor, and from a hook behind the door, with his own braces
-round his neck, was hanging the managing director of the Franco-Midland
-Hardware Company. His knees were drawn up, his head hung at a dreadful
-angle to his body, and the clatter of his heels against the door made
-the noise which had broken in upon our conversation. In an instant I
-had caught him round the waist, and held him up while Holmes and Pycroft
-untied the elastic bands which had disappeared between the livid creases
-of skin. Then we carried him into the other room, where he lay with
-a clay-colored face, puffing his purple lips in and out with every
-breath--a dreadful wreck of all that he had been but five minutes
-before.
-
-"What do you think of him, Watson?" asked Holmes.
-
-I stooped over him and examined him. His pulse was feeble and
-intermittent, but his breathing grew longer, and there was a little
-shivering of his eyelids, which showed a thin white slit of ball
-beneath.
-
-"It has been touch and go with him," said I, "but he'll live now. Just
-open that window, and hand me the water carafe." I undid his collar,
-poured the cold water over his face, and raised and sank his arms until
-he drew a long, natural breath. "It's only a question of time now," said
-I, as I turned away from him.
-
-Holmes stood by the table, with his hands deep in his trouser's pockets
-and his chin upon his breast.
-
-"I suppose we ought to call the police in now," said he. "And yet I
-confess that I'd like to give them a complete case when they come."
-
-"It's a blessed mystery to me," cried Pycroft, scratching his head.
-"Whatever they wanted to bring me all the way up here for, and then--"
-
-"Pooh! All that is clear enough," said Holmes impatiently. "It is this
-last sudden move."
-
-"You understand the rest, then?"
-
-"I think that it is fairly obvious. What do you say, Watson?"
-
-I shrugged my shoulders. "I must confess that I am out of my depths,"
-said I.
-
-"Oh surely if you consider the events at first they can only point to
-one conclusion."
-
-"What do you make of them?"
-
-"Well, the whole thing hinges upon two points. The first is the making
-of Pycroft write a declaration by which he entered the service of this
-preposterous company. Do you not see how very suggestive that is?"
-
-"I am afraid I miss the point."
-
-"Well, why did they want him to do it? Not as a business matter, for
-these arrangements are usually verbal, and there was no earthly business
-reason why this should be an exception. Don't you see, my young friend,
-that they were very anxious to obtain a specimen of your handwriting,
-and had no other way of doing it?"
-
-"And why?"
-
-"Quite so. Why? When we answer that we have made some progress with our
-little problem. Why? There can be only one adequate reason. Some one
-wanted to learn to imitate your writing, and had to procure a specimen
-of it first. And now if we pass on to the second point we find that each
-throws light upon the other. That point is the request made by Pinner
-that you should not resign your place, but should leave the manager of
-this important business in the full expectation that a Mr. Hall Pycroft,
-whom he had never seen, was about to enter the office upon the Monday
-morning."
-
-"My God!" cried our client, "what a blind beetle I have been!"
-
-"Now you see the point about the handwriting. Suppose that some one
-turned up in your place who wrote a completely different hand from that
-in which you had applied for the vacancy, of course the game would have
-been up. But in the interval the rogue had learned to imitate you,
-and his position was therefore secure, as I presume that nobody in the
-office had ever set eyes upon you."
-
-"Not a soul," groaned Hall Pycroft.
-
-"Very good. Of course it was of the utmost importance to prevent you
-from thinking better of it, and also to keep you from coming into
-contact with any one who might tell you that your double was at work
-in Mawson's office. Therefore they gave you a handsome advance on your
-salary, and ran you off to the Midlands, where they gave you enough work
-to do to prevent your going to London, where you might have burst their
-little game up. That is all plain enough."
-
-"But why should this man pretend to be his own brother?"
-
-"Well, that is pretty clear also. There are evidently only two of them
-in it. The other is impersonating you at the office. This one acted
-as your engager, and then found that he could not find you an employer
-without admitting a third person into his plot. That he was most
-unwilling to do. He changed his appearance as far as he could, and
-trusted that the likeness, which you could not fail to observe, would be
-put down to a family resemblance. But for the happy chance of the gold
-stuffing, your suspicions would probably never have been aroused."
-
-Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
-"while I have been fooled in this way, what has this other Hall Pycroft
-been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
-do."
-
-"We must wire to Mawson's."
-
-"They shut at twelve on Saturdays."
-
-"Never mind. There may be some door-keeper or attendant--"
-
-"Ah yes, they keep a permanent guard there on account of the value of
-the securities that they hold. I remember hearing it talked of in the
-City."
-
-"Very good; we shall wire to him, and see if all is well, and if a clerk
-of your name is working there. That is clear enough; but what is not so
-clear is why at sight of us one of the rogues should instantly walk out
-of the room and hang himself."
-
-"The paper!" croaked a voice behind us. The man was sitting up, blanched
-and ghastly, with returning reason in his eyes, and hands which rubbed
-nervously at the broad red band which still encircled his throat.
-
-"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
-"Idiot that I was! I thought so much of our visit that the paper never
-entered my head for an instant. To be sure, the secret must be there."
-He flattened it out upon the table, and a cry of triumph burst from his
-lips. "Look at this, Watson," he cried. "It is a London paper, an early
-edition of the Evening Standard. Here is what we want. Look at the
-headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
-attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
-equally anxious to hear it, so kindly read it aloud to us."
-
-It appeared from its position in the paper to have been the one event of
-importance in town, and the account of it ran in this way:
-
-"A desperate attempt at robbery, culminating in the death of one man and
-the capture of the criminal, occurred this afternoon in the City. For
-some time back Mawson & Williams, the famous financial house, have been
-the guardians of securities which amount in the aggregate to a sum of
-considerably over a million sterling. So conscious was the manager of
-the responsibility which devolved upon him in consequence of the great
-interests at stake that safes of the very latest construction have
-been employed, and an armed watchman has been left day and night in the
-building. It appears that last week a new clerk named Hall Pycroft was
-engaged by the firm. This person appears to have been none other that
-Beddington, the famous forger and cracksman, who, with his brother, had
-only recently emerged from a five years' spell of penal servitude. By
-some means, which are not yet clear, he succeeded in winning, under a
-false name, this official position in the office, which he utilized in
-order to obtain moulding of various locks, and a thorough knowledge of
-the position of the strong room and the safes.
-
-"It is customary at Mawson's for the clerks to leave at midday on
-Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
-therefore to see a gentleman with a carpet bag come down the steps at
-twenty minutes past one. His suspicions being aroused, the sergeant
-followed the man, and with the aid of Constable Pollock succeeded, after
-a most desperate resistance, in arresting him. It was at once clear
-that a daring and gigantic robbery had been committed. Nearly a hundred
-thousand pounds' worth of American railway bonds, with a large amount
-of scrip in mines and other companies, was discovered in the bag. On
-examining the premises the body of the unfortunate watchman was found
-doubled up and thrust into the largest of the safes, where it would not
-have been discovered until Monday morning had it not been for the prompt
-action of Sergeant Tuson. The man's skull had been shattered by a
-blow from a poker delivered from behind. There could be no doubt
-that Beddington had obtained entrance by pretending that he had left
-something behind him, and having murdered the watchman, rapidly rifled
-the large safe, and then made off with his booty. His brother, who
-usually works with him, has not appeared in this job as far as can
-at present be ascertained, although the police are making energetic
-inquiries as to his whereabouts."
-
-"Well, we may save the police some little trouble in that direction,"
-said Holmes, glancing at the haggard figure huddled up by the window.
-"Human nature is a strange mixture, Watson. You see that even a villain
-and murderer can inspire such affection that his brother turns to
-suicide when he learns that his neck is forfeited. However, we have
-no choice as to our action. The doctor and I will remain on guard, Mr.
-Pycroft, if you will have the kindness to step out for the police."
-
-
-
-
-Adventure IV. The "_Gloria Scott_"
-
-
-"I have some papers here," said my friend Sherlock Holmes, as we sat
-one winter's night on either side of the fire, "which I really think,
-Watson, that it would be worth your while to glance over. These are the
-documents in the extraordinary case of the Gloria Scott, and this is the
-message which struck Justice of the Peace Trevor dead with horror when
-he read it."
-
-He had picked from a drawer a little tarnished cylinder, and, undoing
-the tape, he handed me a short note scrawled upon a half-sheet of
-slate-gray paper.
-
-"The supply of game for London is going steadily up," it ran.
-"Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life."
-
-As I glanced up from reading this enigmatical message, I saw Holmes
-chuckling at the expression upon my face.
-
-"You look a little bewildered," said he.
-
-"I cannot see how such a message as this could inspire horror. It seems
-to me to be rather grotesque than otherwise."
-
-"Very likely. Yet the fact remains that the reader, who was a fine,
-robust old man, was knocked clean down by it as if it had been the butt
-end of a pistol."
-
-"You arouse my curiosity," said I. "But why did you say just now that
-there were very particular reasons why I should study this case?"
-
-"Because it was the first in which I was ever engaged."
-
-I had often endeavored to elicit from my companion what had first turned
-his mind in the direction of criminal research, but had never caught him
-before in a communicative humor. Now he sat forward in this arm-chair
-and spread out the documents upon his knees. Then he lit his pipe and
-sat for some time smoking and turning them over.
-
-"You never heard me talk of Victor Trevor?" he asked. "He was the only
-friend I made during the two years I was at college. I was never a very
-sociable fellow, Watson, always rather fond of moping in my rooms and
-working out my own little methods of thought, so that I never mixed
-much with the men of my year. Bar fencing and boxing I had few athletic
-tastes, and then my line of study was quite distinct from that of the
-other fellows, so that we had no points of contact at all. Trevor was
-the only man I knew, and that only through the accident of his bull
-terrier freezing on to my ankle one morning as I went down to chapel.
-
-"It was a prosaic way of forming a friendship, but it was effective.
-I was laid by the heels for ten days, but Trevor used to come in to
-inquire after me. At first it was only a minute's chat, but soon his
-visits lengthened, and before the end of the term we were close friends.
-He was a hearty, full-blooded fellow, full of spirits and energy,
-the very opposite to me in most respects, but we had some subjects
-in common, and it was a bond of union when I found that he was as
-friendless as I. Finally, he invited me down to his father's place at
-Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
-the long vacation.
-
-"Old Trevor was evidently a man of some wealth and consideration, a
-J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
-the north of Langmere, in the country of the Broads. The house was
-an old-fashioned, wide-spread, oak-beamed brick building, with a fine
-lime-lined avenue leading up to it. There was excellent wild-duck
-shooting in the fens, remarkably good fishing, a small but select
-library, taken over, as I understood, from a former occupant, and a
-tolerable cook, so that he would be a fastidious man who could not put
-in a pleasant month there.
-
-"Trevor senior was a widower, and my friend his only son.
-
-"There had been a daughter, I heard, but she had died of diphtheria
-while on a visit to Birmingham. The father interested me extremely.
-He was a man of little culture, but with a considerable amount of rude
-strength, both physically and mentally. He knew hardly any books, but
-he had traveled far, had seen much of the world. And had remembered
-all that he had learned. In person he was a thick-set, burly man with
-a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
-which were keen to the verge of fierceness. Yet he had a reputation for
-kindness and charity on the country-side, and was noted for the leniency
-of his sentences from the bench.
-
-"One evening, shortly after my arrival, we were sitting over a glass of
-port after dinner, when young Trevor began to talk about those habits
-of observation and inference which I had already formed into a system,
-although I had not yet appreciated the part which they were to play in
-my life. The old man evidently thought that his son was exaggerating in
-his description of one or two trivial feats which I had performed.
-
-"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
-excellent subject, if you can deduce anything from me.'
-
-"'I fear there is not very much,' I answered; 'I might suggest that
-you have gone about in fear of some personal attack within the last
-twelvemonth.'
-
-"The laugh faded from his lips, and he stared at me in great surprise.
-
-"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
-son, 'when we broke up that poaching gang they swore to knife us, and
-Sir Edward Holly has actually been attacked. I've always been on my
-guard since then, though I have no idea how you know it.'
-
-"'You have a very handsome stick,' I answered. 'By the inscription I
-observed that you had not had it more than a year. But you have taken
-some pains to bore the head of it and pour melted lead into the hole so
-as to make it a formidable weapon. I argued that you would not take such
-precautions unless you had some danger to fear.'
-
-"'Anything else?' he asked, smiling.
-
-"'You have boxed a good deal in your youth.'
-
-"'Right again. How did you know it? Is my nose knocked a little out of
-the straight?'
-
-"'No,' said I. 'It is your ears. They have the peculiar flattening and
-thickening which marks the boxing man.'
-
-"'Anything else?'
-
-"'You have done a good deal of digging by your callosities.'
-
-"'Made all my money at the gold fields.'
-
-"'You have been in New Zealand.'
-
-"'Right again.'
-
-"'You have visited Japan.'
-
-"'Quite true.'
-
-"'And you have been most intimately associated with some one whose
-initials were J. A., and whom you afterwards were eager to entirely
-forget.'
-
-"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
-strange wild stare, and then pitched forward, with his face among the
-nutshells which strewed the cloth, in a dead faint.
-
-"You can imagine, Watson, how shocked both his son and I were. His
-attack did not last long, however, for when we undid his collar, and
-sprinkled the water from one of the finger-glasses over his face, he
-gave a gasp or two and sat up.
-
-"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
-Strong as I look, there is a weak place in my heart, and it does not
-take much to knock me over. I don't know how you manage this, Mr.
-Holmes, but it seems to me that all the detectives of fact and of fancy
-would be children in your hands. That's your line of life, sir, and you
-may take the word of a man who has seen something of the world.'
-
-"And that recommendation, with the exaggerated estimate of my ability
-with which he prefaced it, was, if you will believe me, Watson, the very
-first thing which ever made me feel that a profession might be made
-out of what had up to that time been the merest hobby. At the moment,
-however, I was too much concerned at the sudden illness of my host to
-think of anything else.
-
-"'I hope that I have said nothing to pain you?' said I.
-
-"'Well, you certainly touched upon rather a tender point. Might I ask
-how you know, and how much you know?' He spoke now in a half-jesting
-fashion, but a look of terror still lurked at the back of his eyes.
-
-"'It is simplicity itself,' said I. 'When you bared your arm to draw
-that fish into the boat I saw that J. A. Had been tattooed in the bend
-of the elbow. The letters were still legible, but it was perfectly clear
-from their blurred appearance, and from the staining of the skin round
-them, that efforts had been made to obliterate them. It was obvious,
-then, that those initials had once been very familiar to you, and that
-you had afterwards wished to forget them.'
-
-"What an eye you have!" he cried, with a sigh of relief. 'It is just as
-you say. But we won't talk of it. Of all ghosts the ghosts of our old
-lovers are the worst. Come into the billiard-room and have a quiet
-cigar.'
-
-
-"From that day, amid all his cordiality, there was always a touch of
-suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
-'You've given the governor such a turn,' said he, 'that he'll never be
-sure again of what you know and what you don't know.' He did not mean
-to show it, I am sure, but it was so strongly in his mind that it peeped
-out at every action. At last I became so convinced that I was causing
-him uneasiness that I drew my visit to a close. On the very day,
-however, before I left, and incident occurred which proved in the sequel
-to be of importance.
-
-"We were sitting out upon the lawn on garden chairs, the three of us,
-basking in the sun and admiring the view across the Broads, when a maid
-came out to say that there was a man at the door who wanted to see Mr.
-Trevor.
-
-"'What is his name?' asked my host.
-
-"'He would not give any.'
-
-"'What does he want, then?'
-
-"'He says that you know him, and that he only wants a moment's
-conversation.'
-
-"'Show him round here.' An instant afterwards there appeared a little
-wizened fellow with a cringing manner and a shambling style of
-walking. He wore an open jacket, with a splotch of tar on the sleeve,
-a red-and-black check shirt, dungaree trousers, and heavy boots badly
-worn. His face was thin and brown and crafty, with a perpetual smile
-upon it, which showed an irregular line of yellow teeth, and his
-crinkled hands were half closed in a way that is distinctive of sailors.
-As he came slouching across the lawn I heard Mr. Trevor make a sort of
-hiccoughing noise in his throat, and jumping out of his chair, he ran
-into the house. He was back in a moment, and I smelt a strong reek of
-brandy as he passed me.
-
-"'Well, my man,' said he. 'What can I do for you?'
-
-"The sailor stood looking at him with puckered eyes, and with the same
-loose-lipped smile upon his face.
-
-"'You don't know me?' he asked.
-
-"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
-surprise.
-
-"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
-since I saw you last. Here you are in your house, and me still picking
-my salt meat out of the harness cask.'
-
-"'Tut, you will find that I have not forgotten old times,' cried Mr.
-Trevor, and, walking towards the sailor, he said something in a low
-voice. 'Go into the kitchen,' he continued out loud, 'and you will get
-food and drink. I have no doubt that I shall find you a situation.'
-
-"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
-off a two-yearer in an eight-knot tramp, short-handed at that, and I
-wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
-
-"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
-
-"'Bless you, sir, I know where all my old friends are,' said the
-fellow with a sinister smile, and he slouched off after the maid to the
-kitchen. Mr. Trevor mumbled something to us about having been shipmate
-with the man when he was going back to the diggings, and then, leaving
-us on the lawn, he went indoors. An hour later, when we entered the
-house, we found him stretched dead drunk upon the dining-room sofa. The
-whole incident left a most ugly impression upon my mind, and I was
-not sorry next day to leave Donnithorpe behind me, for I felt that my
-presence must be a source of embarrassment to my friend.
-
-"All this occurred during the first month of the long vacation. I went
-up to my London rooms, where I spent seven weeks working out a few
-experiments in organic chemistry. One day, however, when the autumn was
-far advanced and the vacation drawing to a close, I received a telegram
-from my friend imploring me to return to Donnithorpe, and saying that
-he was in great need of my advice and assistance. Of course I dropped
-everything and set out for the North once more.
-
-"He met me with the dog-cart at the station, and I saw at a glance that
-the last two months had been very trying ones for him. He had grown thin
-and careworn, and had lost the loud, cheery manner for which he had been
-remarkable.
-
-"'The governor is dying,' were the first words he said.
-
-"'Impossible!' I cried. 'What is the matter?'
-
-"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
-shall find him alive.'
-
-"I was, as you may think, Watson, horrified at this unexpected news.
-
-"'What has caused it?' I asked.
-
-"'Ah, that is the point. Jump in and we can talk it over while we drive.
-You remember that fellow who came upon the evening before you left us?'
-
-"'Perfectly.'
-
-"'Do you know who it was that we let into the house that day?'
-
-"'I have no idea.'
-
-"'It was the devil, Holmes,' he cried.
-
-"I stared at him in astonishment.
-
-"'Yes, it was the devil himself. We have not had a peaceful hour
-since--not one. The governor has never held up his head from that
-evening, and now the life has been crushed out of him and his heart
-broken, all through this accursed Hudson.'
-
-"'What power had he, then?'
-
-"'Ah, that is what I would give so much to know. The kindly, charitable,
-good old governor--how could he have fallen into the clutches of such a
-ruffian! But I am so glad that you have come, Holmes. I trust very much
-to your judgment and discretion, and I know that you will advise me for
-the best.'
-
-"We were dashing along the smooth white country road, with the long
-stretch of the Broads in front of us glimmering in the red light of the
-setting sun. From a grove upon our left I could already see the high
-chimneys and the flag-staff which marked the squire's dwelling.
-
-"'My father made the fellow gardener,' said my companion, 'and then, as
-that did not satisfy him, he was promoted to be butler. The house seemed
-to be at his mercy, and he wandered about and did what he chose in it.
-The maids complained of his drunken habits and his vile language. The
-dad raised their wages all round to recompense them for the annoyance.
-The fellow would take the boat and my father's best gun and treat
-himself to little shooting trips. And all this with such a sneering,
-leering, insolent face that I would have knocked him down twenty times
-over if he had been a man of my own age. I tell you, Holmes, I have
-had to keep a tight hold upon myself all this time; and now I am asking
-myself whether, if I had let myself go a little more, I might not have
-been a wiser man.
-
-"'Well, matters went from bad to worse with us, and this animal Hudson
-became more and more intrusive, until at last, on making some insolent
-reply to my father in my presence one day, I took him by the shoulders
-and turned him out of the room. He slunk away with a livid face and two
-venomous eyes which uttered more threats than his tongue could do. I
-don't know what passed between the poor dad and him after that, but the
-dad came to me next day and asked me whether I would mind apologizing to
-Hudson. I refused, as you can imagine, and asked my father how he
-could allow such a wretch to take such liberties with himself and his
-household.
-
-"'"Ah, my boy," said he, "it is all very well to talk, but you don't
-know how I am placed. But you shall know, Victor. I'll see that you
-shall know, come what may. You wouldn't believe harm of your poor old
-father, would you, lad?" He was very much moved, and shut himself up
-in the study all day, where I could see through the window that he was
-writing busily.
-
-"'That evening there came what seemed to me to be a grand release,
-for Hudson told us that he was going to leave us. He walked into the
-dining-room as we sat after dinner, and announced his intention in the
-thick voice of a half-drunken man.
-
-"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
-in Hampshire. He'll be as glad to see me as you were, I dare say."
-
-"'"You're not going away in an unkind spirit, Hudson, I hope," said my
-father, with a tameness which made my blood boil.
-
-"'"I've not had my 'pology," said he sulkily, glancing in my direction.
-
-"'"Victor, you will acknowledge that you have used this worthy fellow
-rather roughly," said the dad, turning to me.
-
-"'"On the contrary, I think that we have both shown extraordinary
-patience towards him," I answered.
-
-"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
-that!"
-
-"'He slouched out of the room, and half an hour afterwards left the
-house, leaving my father in a state of pitiable nervousness. Night after
-night I heard him pacing his room, and it was just as he was recovering
-his confidence that the blow did at last fall.'
-
-"'And how?' I asked eagerly.
-
-"'In a most extraordinary fashion. A letter arrived for my father
-yesterday evening, bearing the Fordingbridge post-mark. My father read
-it, clapped both his hands to his head, and began running round the room
-in little circles like a man who has been driven out of his senses. When
-I at last drew him down on to the sofa, his mouth and eyelids were all
-puckered on one side, and I saw that he had a stroke. Dr. Fordham came
-over at once. We put him to bed; but the paralysis has spread, he has
-shown no sign of returning consciousness, and I think that we shall
-hardly find him alive.'
-
-"'You horrify me, Trevor!' I cried. 'What then could have been in this
-letter to cause so dreadful a result?'
-
-"'Nothing. There lies the inexplicable part of it. The message was
-absurd and trivial. Ah, my God, it is as I feared!'
-
-"As he spoke we came round the curve of the avenue, and saw in the
-fading light that every blind in the house had been drawn down. As
-we dashed up to the door, my friend's face convulsed with grief, a
-gentleman in black emerged from it.
-
-"'When did it happen, doctor?' asked Trevor.
-
-"'Almost immediately after you left.'
-
-"'Did he recover consciousness?'
-
-"'For an instant before the end.'
-
-"'Any message for me.'
-
-"'Only that the papers were in the back drawer of the Japanese cabinet.'
-
-"My friend ascended with the doctor to the chamber of death, while I
-remained in the study, turning the whole matter over and over in my
-head, and feeling as sombre as ever I had done in my life. What was the
-past of this Trevor, pugilist, traveler, and gold-digger, and how had he
-placed himself in the power of this acid-faced seaman? Why, too, should
-he faint at an allusion to the half-effaced initials upon his arm, and
-die of fright when he had a letter from Fordingham? Then I remembered
-that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
-seaman had gone to visit and presumably to blackmail, had also been
-mentioned as living in Hampshire. The letter, then, might either come
-from Hudson, the seaman, saying that he had betrayed the guilty secret
-which appeared to exist, or it might come from Beddoes, warning an old
-confederate that such a betrayal was imminent. So far it seemed clear
-enough. But then how could this letter be trivial and grotesque, as
-describe by the son? He must have misread it. If so, it must have been
-one of those ingenious secret codes which mean one thing while they seem
-to mean another. I must see this letter. If there were a hidden meaning
-in it, I was confident that I could pluck it forth. For an hour I sat
-pondering over it in the gloom, until at last a weeping maid brought in
-a lamp, and close at her heels came my friend Trevor, pale but composed,
-with these very papers which lie upon my knee held in his grasp. He sat
-down opposite to me, drew the lamp to the edge of the table, and handed
-me a short note scribbled, as you see, upon a single sheet of gray
-paper. 'The supply of game for London is going steadily up,' it ran.
-'Head-keeper Hudson, we believe, has been now told to receive all orders
-for fly-paper and for preservation of your hen-pheasant's life.'
-
-"I dare say my face looked as bewildered as yours did just now when
-first I read this message. Then I reread it very carefully. It was
-evidently as I had thought, and some secret meaning must lie buried
-in this strange combination of words. Or could it be that there was
-a prearranged significance to such phrases as 'fly-paper' and
-'hen-pheasant'? Such a meaning would be arbitrary and could not be
-deduced in any way. And yet I was loath to believe that this was the
-case, and the presence of the word Hudson seemed to show that the
-subject of the message was as I had guessed, and that it was from
-Beddoes rather than the sailor. I tried it backwards, but the
-combination 'life pheasant's hen' was not encouraging. Then I tried
-alternate words, but neither 'the of for' nor 'supply game London'
-promised to throw any light upon it.
-
-"And then in an instant the key of the riddle was in my hands, and I saw
-that every third word, beginning with the first, would give a message
-which might well drive old Trevor to despair.
-
-"It was short and terse, the warning, as I now read it to my companion:
-
-"'The game is up. Hudson has told all. Fly for your life.'
-
-"Victor Trevor sank his face into his shaking hands. 'It must be that,
-I suppose,' said he. "This is worse than death, for it means disgrace
-as well. But what is the meaning of these "head-keepers" and
-"hen-pheasants"?'
-
-"'It means nothing to the message, but it might mean a good deal to us
-if we had no other means of discovering the sender. You see that he has
-begun by writing "The...game...is," and so on. Afterwards he had, to
-fulfill the prearranged cipher, to fill in any two words in each space.
-He would naturally use the first words which came to his mind, and
-if there were so many which referred to sport among them, you may
-be tolerably sure that he is either an ardent shot or interested in
-breeding. Do you know anything of this Beddoes?'
-
-"'Why, now that you mention it,' said he, 'I remember that my poor
-father used to have an invitation from him to shoot over his preserves
-every autumn.'
-
-"'Then it is undoubtedly from him that the note comes,' said I. 'It only
-remains for us to find out what this secret was which the sailor Hudson
-seems to have held over the heads of these two wealthy and respected
-men.'
-
-"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
-friend. 'But from you I shall have no secrets. Here is the statement
-which was drawn up by my father when he knew that the danger from Hudson
-had become imminent. I found it in the Japanese cabinet, as he told the
-doctor. Take it and read it to me, for I have neither the strength nor
-the courage to do it myself.'
-
-"These are the very papers, Watson, which he handed to me, and I will
-read them to you, as I read them in the old study that night to him.
-They are endorsed outside, as you see, 'Some particulars of the voyage
-of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
-October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
-25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
-this way:
-
-"'My dear, dear son, now that approaching disgrace begins to darken the
-closing years of my life, I can write with all truth and honesty that it
-is not the terror of the law, it is not the loss of my position in the
-county, nor is it my fall in the eyes of all who have known me, which
-cuts me to the heart; but it is the thought that you should come to
-blush for me--you who love me and who have seldom, I hope, had reason to
-do other than respect me. But if the blow falls which is forever hanging
-over me, then I should wish you to read this, that you may know straight
-from me how far I have been to blame. On the other hand, if all should
-go well (which may kind God Almighty grant!), then if by any chance this
-paper should be still undestroyed and should fall into your hands, I
-conjure you, by all you hold sacred, by the memory of your dear mother,
-and by the love which had been between us, to hurl it into the fire and
-to never give one thought to it again.
-
-"'If then your eye goes on to read this line, I know that I shall
-already have been exposed and dragged from my home, or as is more
-likely, for you know that my heart is weak, by lying with my tongue
-sealed forever in death. In either case the time for suppression is
-past, and every word which I tell you is the naked truth, and this I
-swear as I hope for mercy.
-
-"'My name, dear lad, is not Trevor. I was James Armitage in my younger
-days, and you can understand now the shock that it was to me a few weeks
-ago when your college friend addressed me in words which seemed to imply
-that he had surprised my secret. As Armitage it was that I entered a
-London banking-house, and as Armitage I was convicted of breaking my
-country's laws, and was sentenced to transportation. Do not think very
-harshly of me, laddie. It was a debt of honor, so called, which I had
-to pay, and I used money which was not my own to do it, in the certainty
-that I could replace it before there could be any possibility of its
-being missed. But the most dreadful ill-luck pursued me. The money which
-I had reckoned upon never came to hand, and a premature examination of
-accounts exposed my deficit. The case might have been dealt leniently
-with, but the laws were more harshly administered thirty years ago than
-now, and on my twenty-third birthday I found myself chained as a felon
-with thirty-seven other convicts in 'tween-decks of the bark _Gloria
-Scott_, bound for Australia.
-
-"'It was the year '55 when the Crimean war was at its height, and the
-old convict ships had been largely used as transports in the Black
-Sea. The government was compelled, therefore, to use smaller and less
-suitable vessels for sending out their prisoners. The Gloria Scott
-had been in the Chinese tea-trade, but she was an old-fashioned,
-heavy-bowed, broad-beamed craft, and the new clippers had cut her
-out. She was a five-hundred-ton boat; and besides her thirty-eight
-jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
-captain, three mates, a doctor, a chaplain, and four warders. Nearly a
-hundred souls were in her, all told, when we set sail from Falmouth.
-
-"'The partitions between the cells of the convicts, instead of being of
-thick oak, as is usual in convict-ships, were quite thin and frail.
-The man next to me, upon the aft side, was one whom I had particularly
-noticed when we were led down the quay. He was a young man with a
-clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
-He carried his head very jauntily in the air, had a swaggering style
-of walking, and was, above all else, remarkable for his extraordinary
-height. I don't think any of our heads would have come up to his
-shoulder, and I am sure that he could not have measured less than six
-and a half feet. It was strange among so many sad and weary faces to see
-one which was full of energy and resolution. The sight of it was to me
-like a fire in a snow-storm. I was glad, then, to find that he was my
-neighbor, and gladder still when, in the dead of the night, I heard a
-whisper close to my ear, and found that he had managed to cut an opening
-in the board which separated us.
-
-"'"Hullo, chummy!" said he, "what's your name, and what are you here
-for?"
-
-"'I answered him, and asked in turn who I was talking with.
-
-"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
-name before you've done with me."
-
-"'I remembered hearing of his case, for it was one which had made an
-immense sensation throughout the country some time before my own arrest.
-He was a man of good family and of great ability, but of incurably
-vicious habits, who had by an ingenious system of fraud obtained huge
-sums of money from the leading London merchants.
-
-"'"Ha, ha! You remember my case!" said he proudly.
-
-"'"Very well, indeed."
-
-"'"Then maybe you remember something queer about it?"
-
-"'"What was that, then?"
-
-"'"I'd had nearly a quarter of a million, hadn't I?"
-
-"'"So it was said."
-
-"'"But none was recovered, eh?"
-
-"'"No."
-
-"'"Well, where d'ye suppose the balance is?" he asked.
-
-"'"I have no idea," said I.
-
-"'"Right between my finger and thumb," he cried. "By God! I've got more
-pounds to my name than you've hairs on your head. And if you've money,
-my son, and know how to handle it and spread it, you can do anything.
-Now, you don't think it likely that a man who could do anything is going
-to wear his breeches out sitting in the stinking hold of a rat-gutted,
-beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
-a man will look after himself and will look after his chums. You may lay
-to that! You hold on to him, and you may kiss the book that he'll haul
-you through."
-
-"'That was his style of talk, and at first I thought it meant nothing;
-but after a while, when he had tested me and sworn me in with all
-possible solemnity, he let me understand that there really was a plot
-to gain command of the vessel. A dozen of the prisoners had hatched it
-before they came aboard, Prendergast was the leader, and his money was
-the motive power.
-
-"'"I'd a partner," said he, "a rare good man, as true as a stock to a
-barrel. He's got the dibbs, he has, and where do you think he is at this
-moment? Why, he's the chaplain of this ship--the chaplain, no less! He
-came aboard with a black coat, and his papers right, and money enough in
-his box to buy the thing right up from keel to main-truck. The crew
-are his, body and soul. He could buy 'em at so much a gross with a cash
-discount, and he did it before ever they signed on. He's got two of the
-warders and Mereer, the second mate, and he'd get the captain himself,
-if he thought him worth it."
-
-"'"What are we to do, then?" I asked.
-
-"'"What do you think?" said he. "We'll make the coats of some of these
-soldiers redder than ever the tailor did."
-
-"'"But they are armed," said I.
-
-"'"And so shall we be, my boy. There's a brace of pistols for every
-mother's son of us, and if we can't carry this ship, with the crew at
-our back, it's time we were all sent to a young misses' boarding-school.
-You speak to your mate upon the left to-night, and see if he is to be
-trusted."
-
-"'I did so, and found my other neighbor to be a young fellow in much
-the same position as myself, whose crime had been forgery. His name was
-Evans, but he afterwards changed it, like myself, and he is now a rich
-and prosperous man in the south of England. He was ready enough to join
-the conspiracy, as the only means of saving ourselves, and before we had
-crossed the Bay there were only two of the prisoners who were not in the
-secret. One of these was of weak mind, and we did not dare to trust him,
-and the other was suffering from jaundice, and could not be of any use
-to us.
-
-"'From the beginning there was really nothing to prevent us from taking
-possession of the ship. The crew were a set of ruffians, specially
-picked for the job. The sham chaplain came into our cells to exhort us,
-carrying a black bag, supposed to be full of tracts, and so often did
-he come that by the third day we had each stowed away at the foot of our
-beds a file, a brace of pistols, a pound of powder, and twenty slugs.
-Two of the warders were agents of Prendergast, and the second mate was
-his right-hand man. The captain, the two mates, two warders Lieutenant
-Martin, his eighteen soldiers, and the doctor were all that we had
-against us. Yet, safe as it was, we determined to neglect no precaution,
-and to make our attack suddenly by night. It came, however, more quickly
-than we expected, and in this way.
-
-"'One evening, about the third week after our start, the doctor had come
-down to see one of the prisoners who was ill, and putting his hand down
-on the bottom of his bunk he felt the outline of the pistols. If he had
-been silent he might have blown the whole thing, but he was a nervous
-little chap, so he gave a cry of surprise and turned so pale that the
-man knew what was up in an instant and seized him. He was gagged before
-he could give the alarm, and tied down upon the bed. He had unlocked
-the door that led to the deck, and we were through it in a rush. The two
-sentries were shot down, and so was a corporal who came running to see
-what was the matter. There were two more soldiers at the door of the
-state-room, and their muskets seemed not to be loaded, for they never
-fired upon us, and they were shot while trying to fix their bayonets.
-Then we rushed on into the captain's cabin, but as we pushed open the
-door there was an explosion from within, and there he lay with his
-brains smeared over the chart of the Atlantic which was pinned upon the
-table, while the chaplain stood with a smoking pistol in his hand at
-his elbow. The two mates had both been seized by the crew, and the whole
-business seemed to be settled.
-
-"'The state-room was next the cabin, and we flocked in there and flopped
-down on the settees, all speaking together, for we were just mad with
-the feeling that we were free once more. There were lockers all round,
-and Wilson, the sham chaplain, knocked one of them in, and pulled out a
-dozen of brown sherry. We cracked off the necks of the bottles, poured
-the stuff out into tumblers, and were just tossing them off, when in an
-instant without warning there came the roar of muskets in our ears, and
-the saloon was so full of smoke that we could not see across the table.
-When it cleared again the place was a shambles. Wilson and eight others
-were wriggling on the top of each other on the floor, and the blood and
-the brown sherry on that table turn me sick now when I think of it. We
-were so cowed by the sight that I think we should have given the job up
-if it had not been for Prendergast. He bellowed like a bull and rushed
-for the door with all that were left alive at his heels. Out we ran,
-and there on the poop were the lieutenant and ten of his men. The swing
-skylights above the saloon table had been a bit open, and they had fired
-on us through the slit. We got on them before they could load, and they
-stood to it like men; but we had the upper hand of them, and in five
-minutes it was all over. My God! Was there ever a slaughter-house
-like that ship! Prendergast was like a raging devil, and he picked the
-soldiers up as if they had been children and threw them overboard alive
-or dead. There was one sergeant that was horribly wounded and yet kept
-on swimming for a surprising time, until some one in mercy blew out his
-brains. When the fighting was over there was no one left of our enemies
-except just the warders the mates, and the doctor.
-
-"'It was over them that the great quarrel arose. There were many of us
-who were glad enough to win back our freedom, and yet who had no wish
-to have murder on our souls. It was one thing to knock the soldiers over
-with their muskets in their hands, and it was another to stand by while
-men were being killed in cold blood. Eight of us, five convicts and
-three sailors, said that we would not see it done. But there was no
-moving Prendergast and those who were with him. Our only chance of
-safety lay in making a clean job of it, said he, and he would not leave
-a tongue with power to wag in a witness-box. It nearly came to our
-sharing the fate of the prisoners, but at last he said that if we wished
-we might take a boat and go. We jumped at the offer, for we were already
-sick of these bloodthirsty doings, and we saw that there would be worse
-before it was done. We were given a suit of sailor togs each, a barrel
-of water, two casks, one of junk and one of biscuits, and a compass.
-Prendergast threw us over a chart, told us that we were shipwrecked
-mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
-west, and then cut the painter and let us go.
-
-"'And now I come to the most surprising part of my story, my dear son.
-The seamen had hauled the fore-yard aback during the rising, but now as
-we left them they brought it square again, and as there was a light wind
-from the north and east the bark began to draw slowly away from us. Our
-boat lay, rising and falling, upon the long, smooth rollers, and Evans
-and I, who were the most educated of the party, were sitting in the
-sheets working out our position and planning what coast we should make
-for. It was a nice question, for the Cape de Verdes were about five
-hundred miles to the north of us, and the African coast about seven
-hundred to the east. On the whole, as the wind was coming round to the
-north, we thought that Sierra Leone might be best, and turned our head
-in that direction, the bark being at that time nearly hull down on our
-starboard quarter. Suddenly as we looked at her we saw a dense black
-cloud of smoke shoot up from her, which hung like a monstrous tree upon
-the sky line. A few seconds later a roar like thunder burst upon our
-ears, and as the smoke thinned away there was no sign left of the
-_Gloria Scott_. In an instant we swept the boat's head round again and
-pulled with all our strength for the place where the haze still trailing
-over the water marked the scene of this catastrophe.
-
-"'It was a long hour before we reached it, and at first we feared that
-we had come too late to save any one. A splintered boat and a number of
-crates and fragments of spars rising and falling on the waves showed us
-where the vessel had foundered; but there was no sign of life, and we
-had turned away in despair when we heard a cry for help, and saw at some
-distance a piece of wreckage with a man lying stretched across it. When
-we pulled him aboard the boat he proved to be a young seaman of the
-name of Hudson, who was so burned and exhausted that he could give us no
-account of what had happened until the following morning.
-
-"'It seemed that after we had left, Prendergast and his gang had
-proceeded to put to death the five remaining prisoners. The two warders
-had been shot and thrown overboard, and so also had the third mate.
-Prendergast then descended into the 'tween-decks and with his own hands
-cut the throat of the unfortunate surgeon. There only remained the first
-mate, who was a bold and active man. When he saw the convict approaching
-him with the bloody knife in his hand he kicked off his bonds, which he
-had somehow contrived to loosen, and rushing down the deck he plunged
-into the after-hold. A dozen convicts, who descended with their pistols
-in search of him, found him with a match-box in his hand seated beside
-an open powder-barrel, which was one of a hundred carried on board, and
-swearing that he would blow all hands up if he were in any way molested.
-An instant later the explosion occurred, though Hudson thought it was
-caused by the misdirected bullet of one of the convicts rather than the
-mate's match. Be the cause what it may, it was the end of the _Gloria
-Scott_ and of the rabble who held command of her.
-
-"'Such, in a few words, my dear boy, is the history of this terrible
-business in which I was involved. Next day we were picked up by the brig
-_Hotspur_, bound for Australia, whose captain found no difficulty in
-believing that we were the survivors of a passenger ship which had
-foundered. The transport ship Gloria Scott was set down by the Admiralty
-as being lost at sea, and no word has ever leaked out as to her true
-fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
-Evans and I changed our names and made our way to the diggings,
-where, among the crowds who were gathered from all nations, we had no
-difficulty in losing our former identities. The rest I need not relate.
-We prospered, we traveled, we came back as rich colonials to England,
-and we bought country estates. For more than twenty years we have
-led peaceful and useful lives, and we hoped that our past was forever
-buried. Imagine, then, my feelings when in the seaman who came to us I
-recognized instantly the man who had been picked off the wreck. He had
-tracked us down somehow, and had set himself to live upon our fears. You
-will understand now how it was that I strove to keep the peace with him,
-and you will in some measure sympathize with me in the fears which fill
-me, now that he has gone from me to his other victim with threats upon
-his tongue.'
-
-"Underneath is written in a hand so shaky as to be hardly legible,
-'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
-on our souls!'
-
-"That was the narrative which I read that night to young Trevor, and I
-think, Watson, that under the circumstances it was a dramatic one.
-The good fellow was heart-broken at it, and went out to the Terai tea
-planting, where I hear that he is doing well. As to the sailor and
-Beddoes, neither of them was ever heard of again after that day on which
-the letter of warning was written. They both disappeared utterly and
-completely. No complaint had been lodged with the police, so that
-Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
-about, and it was believed by the police that he had done away with
-Beddoes and had fled. For myself I believe that the truth was exactly
-the opposite. I think that it is most probable that Beddoes, pushed to
-desperation and believing himself to have been already betrayed, had
-revenged himself upon Hudson, and had fled from the country with as much
-money as he could lay his hands on. Those are the facts of the case,
-Doctor, and if they are of any use to your collection, I am sure that
-they are very heartily at your service."
-
-
-
-
-Adventure V. The Musgrave Ritual
-
-
-An anomaly which often struck me in the character of my friend Sherlock
-Holmes was that, although in his methods of thought he was the neatest
-and most methodical of mankind, and although also he affected a certain
-quiet primness of dress, he was none the less in his personal habits one
-of the most untidy men that ever drove a fellow-lodger to distraction.
-Not that I am in the least conventional in that respect myself. The
-rough-and-tumble work in Afghanistan, coming on the top of a natural
-Bohemianism of disposition, has made me rather more lax than befits a
-medical man. But with me there is a limit, and when I find a man who
-keeps his cigars in the coal-scuttle, his tobacco in the toe end of
-a Persian slipper, and his unanswered correspondence transfixed by a
-jack-knife into the very centre of his wooden mantelpiece, then I begin
-to give myself virtuous airs. I have always held, too, that pistol
-practice should be distinctly an open-air pastime; and when Holmes, in
-one of his queer humors, would sit in an arm-chair with his hair-trigger
-and a hundred Boxer cartridges, and proceed to adorn the opposite
-wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
-neither the atmosphere nor the appearance of our room was improved by
-it.
-
-Our chambers were always full of chemicals and of criminal relics which
-had a way of wandering into unlikely positions, and of turning up in
-the butter-dish or in even less desirable places. But his papers were
-my great crux. He had a horror of destroying documents, especially those
-which were connected with his past cases, and yet it was only once in
-every year or two that he would muster energy to docket and arrange
-them; for, as I have mentioned somewhere in these incoherent memoirs,
-the outbursts of passionate energy when he performed the remarkable
-feats with which his name is associated were followed by reactions of
-lethargy during which he would lie about with his violin and his books,
-hardly moving save from the sofa to the table. Thus month after month
-his papers accumulated, until every corner of the room was stacked with
-bundles of manuscript which were on no account to be burned, and which
-could not be put away save by their owner. One winter's night, as we
-sat together by the fire, I ventured to suggest to him that, as he had
-finished pasting extracts into his common-place book, he might employ
-the next two hours in making our room a little more habitable. He could
-not deny the justice of my request, so with a rather rueful face he went
-off to his bedroom, from which he returned presently pulling a large tin
-box behind him. This he placed in the middle of the floor and, squatting
-down upon a stool in front of it, he threw back the lid. I could see
-that it was already a third full of bundles of paper tied up with red
-tape into separate packages.
-
-"There are cases enough here, Watson," said he, looking at me with
-mischievous eyes. "I think that if you knew all that I had in this box
-you would ask me to pull some out instead of putting others in."
-
-"These are the records of your early work, then?" I asked. "I have often
-wished that I had notes of those cases."
-
-"Yes, my boy, these were all done prematurely before my biographer
-had come to glorify me." He lifted bundle after bundle in a tender,
-caressing sort of way. "They are not all successes, Watson," said he.
-"But there are some pretty little problems among them. Here's the record
-of the Tarleton murders, and the case of Vamberry, the wine merchant,
-and the adventure of the old Russian woman, and the singular affair
-of the aluminium crutch, as well as a full account of Ricoletti of the
-club-foot, and his abominable wife. And here--ah, now, this really is
-something a little recherché."
-
-He dived his arm down to the bottom of the chest, and brought up a small
-wooden box with a sliding lid, such as children's toys are kept in. From
-within he produced a crumpled piece of paper, and old-fashioned brass
-key, a peg of wood with a ball of string attached to it, and three rusty
-old disks of metal.
-
-"Well, my boy, what do you make of this lot?" he asked, smiling at my
-expression.
-
-"It is a curious collection."
-
-"Very curious, and the story that hangs round it will strike you as
-being more curious still."
-
-"These relics have a history then?"
-
-"So much so that they are history."
-
-"What do you mean by that?"
-
-Sherlock Holmes picked them up one by one, and laid them along the edge
-of the table. Then he reseated himself in his chair and looked them over
-with a gleam of satisfaction in his eyes.
-
-"These," said he, "are all that I have left to remind me of the
-adventure of the Musgrave Ritual."
-
-I had heard him mention the case more than once, though I had never been
-able to gather the details. "I should be so glad," said I, "if you would
-give me an account of it."
-
-"And leave the litter as it is?" he cried, mischievously. "Your tidiness
-won't bear much strain after all, Watson. But I should be glad that you
-should add this case to your annals, for there are points in it which
-make it quite unique in the criminal records of this or, I believe,
-of any other country. A collection of my trifling achievements would
-certainly be incomplete which contained no account of this very singular
-business.
-
-"You may remember how the affair of the _Gloria Scott_, and my
-conversation with the unhappy man whose fate I told you of, first turned
-my attention in the direction of the profession which has become my
-life's work. You see me now when my name has become known far and
-wide, and when I am generally recognized both by the public and by the
-official force as being a final court of appeal in doubtful cases.
-Even when you knew me first, at the time of the affair which you have
-commemorated in 'A Study in Scarlet,' I had already established a
-considerable, though not a very lucrative, connection. You can hardly
-realize, then, how difficult I found it at first, and how long I had to
-wait before I succeeded in making any headway.
-
-"When I first came up to London I had rooms in Montague Street, just
-round the corner from the British Museum, and there I waited, filling in
-my too abundant leisure time by studying all those branches of science
-which might make me more efficient. Now and again cases came in my way,
-principally through the introduction of old fellow-students, for during
-my last years at the University there was a good deal of talk there
-about myself and my methods. The third of these cases was that of the
-Musgrave Ritual, and it is to the interest which was aroused by that
-singular chain of events, and the large issues which proved to be at
-stake, that I trace my first stride towards the position which I now
-hold.
-
-"Reginald Musgrave had been in the same college as myself, and I had
-some slight acquaintance with him. He was not generally popular among
-the undergraduates, though it always seemed to me that what was set down
-as pride was really an attempt to cover extreme natural diffidence.
-In appearance he was a man of exceedingly aristocratic type, thin,
-high-nosed, and large-eyed, with languid and yet courtly manners. He was
-indeed a scion of one of the very oldest families in the kingdom,
-though his branch was a cadet one which had separated from the northern
-Musgraves some time in the sixteenth century, and had established itself
-in western Sussex, where the Manor House of Hurlstone is perhaps the
-oldest inhabited building in the county. Something of his birth place
-seemed to cling to the man, and I never looked at his pale, keen face
-or the poise of his head without associating him with gray archways and
-mullioned windows and all the venerable wreckage of a feudal keep. Once
-or twice we drifted into talk, and I can remember that more than once he
-expressed a keen interest in my methods of observation and inference.
-
-"For four years I had seen nothing of him until one morning he walked
-into my room in Montague Street. He had changed little, was dressed like
-a young man of fashion--he was always a bit of a dandy--and preserved
-the same quiet, suave manner which had formerly distinguished him.
-
-"'How has all gone with you Musgrave?' I asked, after we had cordially
-shaken hands.
-
-"'You probably heard of my poor father's death,' said he; 'he was
-carried off about two years ago. Since then I have of course had the
-Hurlstone estates to manage, and as I am member for my district as well,
-my life has been a busy one. But I understand, Holmes, that you are
-turning to practical ends those powers with which you used to amaze us?'
-
-"'Yes,' said I, 'I have taken to living by my wits.'
-
-"'I am delighted to hear it, for your advice at present would be
-exceedingly valuable to me. We have had some very strange doings at
-Hurlstone, and the police have been able to throw no light upon the
-matter. It is really the most extraordinary and inexplicable business.'
-
-"You can imagine with what eagerness I listened to him, Watson, for
-the very chance for which I had been panting during all those months
-of inaction seemed to have come within my reach. In my inmost heart I
-believed that I could succeed where others failed, and now I had the
-opportunity to test myself.
-
-"'Pray, let me have the details,' I cried.
-
-"Reginald Musgrave sat down opposite to me, and lit the cigarette which
-I had pushed towards him.
-
-"'You must know,' said he, 'that though I am a bachelor, I have to keep
-up a considerable staff of servants at Hurlstone, for it is a rambling
-old place, and takes a good deal of looking after. I preserve, too, and
-in the pheasant months I usually have a house-party, so that it would
-not do to be short-handed. Altogether there are eight maids, the cook,
-the butler, two footmen, and a boy. The garden and the stables of course
-have a separate staff.
-
-"'Of these servants the one who had been longest in our service was
-Brunton the butler. He was a young school-master out of place when he
-was first taken up by my father, but he was a man of great energy and
-character, and he soon became quite invaluable in the household. He was
-a well-grown, handsome man, with a splendid forehead, and though he has
-been with us for twenty years he cannot be more than forty now. With
-his personal advantages and his extraordinary gifts--for he can speak
-several languages and play nearly every musical instrument--it is
-wonderful that he should have been satisfied so long in such a position,
-but I suppose that he was comfortable, and lacked energy to make any
-change. The butler of Hurlstone is always a thing that is remembered by
-all who visit us.
-
-"'But this paragon has one fault. He is a bit of a Don Juan, and you can
-imagine that for a man like him it is not a very difficult part to play
-in a quiet country district. When he was married it was all right, but
-since he has been a widower we have had no end of trouble with him. A
-few months ago we were in hopes that he was about to settle down again
-for he became engaged to Rachel Howells, our second house-maid; but he
-has thrown her over since then and taken up with Janet Tregellis, the
-daughter of the head game-keeper. Rachel--who is a very good girl, but
-of an excitable Welsh temperament--had a sharp touch of brain-fever,
-and goes about the house now--or did until yesterday--like a black-eyed
-shadow of her former self. That was our first drama at Hurlstone; but a
-second one came to drive it from our minds, and it was prefaced by the
-disgrace and dismissal of butler Brunton.
-
-"'This was how it came about. I have said that the man was intelligent,
-and this very intelligence has caused his ruin, for it seems to have
-led to an insatiable curiosity about things which did not in the least
-concern him. I had no idea of the lengths to which this would carry him,
-until the merest accident opened my eyes to it.
-
-"'I have said that the house is a rambling one. One day last week--on
-Thursday night, to be more exact--I found that I could not sleep,
-having foolishly taken a cup of strong café noir after my dinner. After
-struggling against it until two in the morning, I felt that it was quite
-hopeless, so I rose and lit the candle with the intention of continuing
-a novel which I was reading. The book, however, had been left in the
-billiard-room, so I pulled on my dressing-gown and started off to get
-it.
-
-"'In order to reach the billiard-room I had to descend a flight of
-stairs and then to cross the head of a passage which led to the library
-and the gun-room. You can imagine my surprise when, as I looked down
-this corridor, I saw a glimmer of light coming from the open door of the
-library. I had myself extinguished the lamp and closed the door before
-coming to bed. Naturally my first thought was of burglars. The corridors
-at Hurlstone have their walls largely decorated with trophies of old
-weapons. From one of these I picked a battle-axe, and then, leaving my
-candle behind me, I crept on tiptoe down the passage and peeped in at
-the open door.
-
-"'Brunton, the butler, was in the library. He was sitting, fully
-dressed, in an easy-chair, with a slip of paper which looked like a
-map upon his knee, and his forehead sunk forward upon his hand in deep
-thought. I stood dumb with astonishment, watching him from the darkness.
-A small taper on the edge of the table shed a feeble light which
-sufficed to show me that he was fully dressed. Suddenly, as I looked,
-he rose from his chair, and walking over to a bureau at the side, he
-unlocked it and drew out one of the drawers. From this he took a paper,
-and returning to his seat he flattened it out beside the taper on the
-edge of the table, and began to study it with minute attention. My
-indignation at this calm examination of our family documents overcame
-me so far that I took a step forward, and Brunton, looking up, saw me
-standing in the doorway. He sprang to his feet, his face turned livid
-with fear, and he thrust into his breast the chart-like paper which he
-had been originally studying.
-
-"'"So!" said I. "This is how you repay the trust which we have reposed
-in you. You will leave my service to-morrow."
-
-"'He bowed with the look of a man who is utterly crushed, and slunk past
-me without a word. The taper was still on the table, and by its light
-I glanced to see what the paper was which Brunton had taken from the
-bureau. To my surprise it was nothing of any importance at all,
-but simply a copy of the questions and answers in the singular old
-observance called the Musgrave Ritual. It is a sort of ceremony peculiar
-to our family, which each Musgrave for centuries past has gone through
-on his coming of age--a thing of private interest, and perhaps of some
-little importance to the archaeologist, like our own blazonings and
-charges, but of no practical use whatever.'
-
-"'We had better come back to the paper afterwards,' said I.
-
-"'If you think it really necessary,' he answered, with some hesitation.
-'To continue my statement, however: I relocked the bureau, using the key
-which Brunton had left, and I had turned to go when I was surprised to
-find that the butler had returned, and was standing before me.
-
-"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
-emotion, "I can't bear disgrace, sir. I've always been proud above my
-station in life, and disgrace would kill me. My blood will be on your
-head, sir--it will, indeed--if you drive me to despair. If you cannot
-keep me after what has passed, then for God's sake let me give you
-notice and leave in a month, as if of my own free will. I could stand
-that, Mr. Musgrave, but not to be cast out before all the folk that I
-know so well."
-
-"'"You don't deserve much consideration, Brunton," I answered. "Your
-conduct has been most infamous. However, as you have been a long time in
-the family, I have no wish to bring public disgrace upon you. A month,
-however is too long. Take yourself away in a week, and give what reason
-you like for going."
-
-"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
-at least a fortnight!"
-
-"'"A week," I repeated, "and you may consider yourself to have been very
-leniently dealt with."
-
-"'He crept away, his face sunk upon his breast, like a broken man, while
-I put out the light and returned to my room.
-
-
-"'"For two days after this Brunton was most assiduous in his attention
-to his duties. I made no allusion to what had passed, and waited with
-some curiosity to see how he would cover his disgrace. On the third
-morning, however he did not appear, as was his custom, after breakfast
-to receive my instructions for the day. As I left the dining-room I
-happened to meet Rachel Howells, the maid. I have told you that she had
-only recently recovered from an illness, and was looking so wretchedly
-pale and wan that I remonstrated with her for being at work.
-
-"'"You should be in bed," I said. "Come back to your duties when you are
-stronger."
-
-"'She looked at me with so strange an expression that I began to suspect
-that her brain was affected.
-
-"'"I am strong enough, Mr. Musgrave," said she.
-
-"'"We will see what the doctor says," I answered. "You must stop work
-now, and when you go downstairs just say that I wish to see Brunton."
-
-"'"The butler is gone," said she.
-
-"'"Gone! Gone where?"
-
-"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
-is gone, he is gone!" She fell back against the wall with shriek after
-shriek of laughter, while I, horrified at this sudden hysterical attack,
-rushed to the bell to summon help. The girl was taken to her room, still
-screaming and sobbing, while I made inquiries about Brunton. There was
-no doubt about it that he had disappeared. His bed had not been slept
-in, he had been seen by no one since he had retired to his room the
-night before, and yet it was difficult to see how he could have left
-the house, as both windows and doors were found to be fastened in the
-morning. His clothes, his watch, and even his money were in his room,
-but the black suit which he usually wore was missing. His slippers,
-too, were gone, but his boots were left behind. Where then could butler
-Brunton have gone in the night, and what could have become of him now?
-
-"'Of course we searched the house from cellar to garret, but there was
-no trace of him. It is, as I have said, a labyrinth of an old house,
-especially the original wing, which is now practically uninhabited; but
-we ransacked every room and cellar without discovering the least sign
-of the missing man. It was incredible to me that he could have gone away
-leaving all his property behind him, and yet where could he be? I called
-in the local police, but without success. Rain had fallen on the night
-before and we examined the lawn and the paths all round the house, but
-in vain. Matters were in this state, when a new development quite drew
-our attention away from the original mystery.
-
-"'For two days Rachel Howells had been so ill, sometimes delirious,
-sometimes hysterical, that a nurse had been employed to sit up with her
-at night. On the third night after Brunton's disappearance, the nurse,
-finding her patient sleeping nicely, had dropped into a nap in the
-arm-chair, when she woke in the early morning to find the bed empty, the
-window open, and no signs of the invalid. I was instantly aroused, and,
-with the two footmen, started off at once in search of the missing girl.
-It was not difficult to tell the direction which she had taken, for,
-starting from under her window, we could follow her footmarks easily
-across the lawn to the edge of the mere, where they vanished close to
-the gravel path which leads out of the grounds. The lake there is eight
-feet deep, and you can imagine our feelings when we saw that the trail
-of the poor demented girl came to an end at the edge of it.
-
-"'Of course, we had the drags at once, and set to work to recover the
-remains, but no trace of the body could we find. On the other hand, we
-brought to the surface an object of a most unexpected kind. It was a
-linen bag which contained within it a mass of old rusted and discolored
-metal and several dull-colored pieces of pebble or glass. This strange
-find was all that we could get from the mere, and, although we made
-every possible search and inquiry yesterday, we know nothing of the fate
-either of Rachel Howells or of Richard Brunton. The county police are at
-their wits' end, and I have come up to you as a last resource.'
-
-"You can imagine, Watson, with what eagerness I listened to this
-extraordinary sequence of events, and endeavored to piece them together,
-and to devise some common thread upon which they might all hang. The
-butler was gone. The maid was gone. The maid had loved the butler, but
-had afterwards had cause to hate him. She was of Welsh blood, fiery
-and passionate. She had been terribly excited immediately after his
-disappearance. She had flung into the lake a bag containing some
-curious contents. These were all factors which had to be taken into
-consideration, and yet none of them got quite to the heart of the
-matter. What was the starting-point of this chain of events? There lay
-the end of this tangled line.
-
-"'I must see that paper, Musgrave,' said I, 'which this butler of your
-thought it worth his while to consult, even at the risk of the loss of
-his place.'
-
-"'It is rather an absurd business, this ritual of ours,' he answered.
-'But it has at least the saving grace of antiquity to excuse it. I have
-a copy of the questions and answers here if you care to run your eye
-over them.'
-
-"He handed me the very paper which I have here, Watson, and this is the
-strange catechism to which each Musgrave had to submit when he came to
-man's estate. I will read you the questions and answers as they stand.
-
-"'Whose was it?'
-
-"'His who is gone.'
-
-"'Who shall have it?'
-
-"'He who will come.'
-
-"'Where was the sun?'
-
-"'Over the oak.'
-
-"'Where was the shadow?'
-
-"'Under the elm.'
-
-"How was it stepped?'
-
-"'North by ten and by ten, east by five and by five, south by two and by
-two, west by one and by one, and so under.'
-
-"'What shall we give for it?'
-
-"'All that is ours.'
-
-"'Why should we give it?'
-
-"'For the sake of the trust.'
-
-"'The original has no date, but is in the spelling of the middle of the
-seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
-can be of little help to you in solving this mystery.'
-
-"'At least,' said I, 'it gives us another mystery, and one which is even
-more interesting than the first. It may be that the solution of the one
-may prove to be the solution of the other. You will excuse me, Musgrave,
-if I say that your butler appears to me to have been a very clever man,
-and to have had a clearer insight than ten generations of his masters.'
-
-"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
-no practical importance.'
-
-"'But to me it seems immensely practical, and I fancy that Brunton took
-the same view. He had probably seen it before that night on which you
-caught him.'
-
-"'It is very possible. We took no pains to hide it.'
-
-"'He simply wished, I should imagine, to refresh his memory upon that
-last occasion. He had, as I understand, some sort of map or chart which
-he was comparing with the manuscript, and which he thrust into his
-pocket when you appeared.'
-
-"'That is true. But what could he have to do with this old family custom
-of ours, and what does this rigmarole mean?'
-
-"'I don't think that we should have much difficulty in determining
-that,' said I; 'with your permission we will take the first train down
-to Sussex, and go a little more deeply into the matter upon the spot.'
-
-
-"The same afternoon saw us both at Hurlstone. Possibly you have seen
-pictures and read descriptions of the famous old building, so I will
-confine my account of it to saying that it is built in the shape of
-an L, the long arm being the more modern portion, and the shorter the
-ancient nucleus, from which the other had developed. Over the low,
-heavily-lintelled door, in the centre of this old part, is chiseled the
-date, 1607, but experts are agreed that the beams and stone-work are
-really much older than this. The enormously thick walls and tiny windows
-of this part had in the last century driven the family into building the
-new wing, and the old one was used now as a store-house and a cellar,
-when it was used at all. A splendid park with fine old timber surrounds
-the house, and the lake, to which my client had referred, lay close to
-the avenue, about two hundred yards from the building.
-
-"I was already firmly convinced, Watson, that there were not three
-separate mysteries here, but one only, and that if I could read the
-Musgrave Ritual aright I should hold in my hand the clue which would
-lead me to the truth concerning both the butler Brunton and the maid
-Howells. To that then I turned all my energies. Why should this servant
-be so anxious to master this old formula? Evidently because he saw
-something in it which had escaped all those generations of country
-squires, and from which he expected some personal advantage. What was it
-then, and how had it affected his fate?
-
-"It was perfectly obvious to me, on reading the ritual, that the
-measurements must refer to some spot to which the rest of the document
-alluded, and that if we could find that spot, we should be in a fair way
-towards finding what the secret was which the old Musgraves had thought
-it necessary to embalm in so curious a fashion. There were two guides
-given us to start with, an oak and an elm. As to the oak there could be
-no question at all. Right in front of the house, upon the left-hand
-side of the drive, there stood a patriarch among oaks, one of the most
-magnificent trees that I have ever seen.
-
-"'That was there when your ritual was drawn up,' said I, as we drove
-past it.
-
-"'It was there at the Norman Conquest in all probability,' he answered.
-'It has a girth of twenty-three feet.'
-
-"'Have you any old elms?' I asked.
-
-"'There used to be a very old one over yonder but it was struck by
-lightning ten years ago, and we cut down the stump.'
-
-"'You can see where it used to be?'
-
-"'Oh, yes.'
-
-"'There are no other elms?'
-
-"'No old ones, but plenty of beeches.'
-
-"'I should like to see where it grew.'
-
-"We had driven up in a dog-cart, and my client led me away at once,
-without our entering the house, to the scar on the lawn where the
-elm had stood. It was nearly midway between the oak and the house. My
-investigation seemed to be progressing.
-
-"'I suppose it is impossible to find out how high the elm was?' I asked.
-
-"'I can give you it at once. It was sixty-four feet.'
-
-"'How do you come to know it?' I asked, in surprise.
-
-"'When my old tutor used to give me an exercise in trigonometry, it
-always took the shape of measuring heights. When I was a lad I worked
-out every tree and building in the estate.'
-
-"This was an unexpected piece of luck. My data were coming more quickly
-than I could have reasonably hoped.
-
-"'Tell me,' I asked, 'did your butler ever ask you such a question?'
-
-"Reginald Musgrave looked at me in astonishment. 'Now that you call it
-to my mind,' he answered, 'Brunton did ask me about the height of the
-tree some months ago, in connection with some little argument with the
-groom.'
-
-"This was excellent news, Watson, for it showed me that I was on the
-right road. I looked up at the sun. It was low in the heavens, and I
-calculated that in less than an hour it would lie just above the topmost
-branches of the old oak. One condition mentioned in the Ritual would
-then be fulfilled. And the shadow of the elm must mean the farther end
-of the shadow, otherwise the trunk would have been chosen as the guide.
-I had, then, to find where the far end of the shadow would fall when the
-sun was just clear of the oak."
-
-"That must have been difficult, Holmes, when the elm was no longer
-there."
-
-"Well, at least I knew that if Brunton could do it, I could also.
-Besides, there was no real difficulty. I went with Musgrave to his study
-and whittled myself this peg, to which I tied this long string with a
-knot at each yard. Then I took two lengths of a fishing-rod, which came
-to just six feet, and I went back with my client to where the elm had
-been. The sun was just grazing the top of the oak. I fastened the rod
-on end, marked out the direction of the shadow, and measured it. It was
-nine feet in length.
-
-"Of course the calculation now was a simple one. If a rod of six feet
-threw a shadow of nine, a tree of sixty-four feet would throw one of
-ninety-six, and the line of the one would of course be the line of the
-other. I measured out the distance, which brought me almost to the
-wall of the house, and I thrust a peg into the spot. You can imagine
-my exultation, Watson, when within two inches of my peg I saw a conical
-depression in the ground. I knew that it was the mark made by Brunton in
-his measurements, and that I was still upon his trail.
-
-"From this starting-point I proceeded to step, having first taken the
-cardinal points by my pocket-compass. Ten steps with each foot took me
-along parallel with the wall of the house, and again I marked my spot
-with a peg. Then I carefully paced off five to the east and two to the
-south. It brought me to the very threshold of the old door. Two steps
-to the west meant now that I was to go two paces down the stone-flagged
-passage, and this was the place indicated by the Ritual.
-
-"Never have I felt such a cold chill of disappointment, Watson. For a
-moment is seemed to me that there must be some radical mistake in my
-calculations. The setting sun shone full upon the passage floor, and I
-could see that the old, foot-worn gray stones with which it was paved
-were firmly cemented together, and had certainly not been moved for many
-a long year. Brunton had not been at work here. I tapped upon the floor,
-but it sounded the same all over, and there was no sign of any crack
-or crevice. But, fortunately, Musgrave, who had begun to appreciate the
-meaning of my proceedings, and who was now as excited as myself, took
-out his manuscript to check my calculation.
-
-"'And under,' he cried. 'You have omitted the "and under."'
-
-"I had thought that it meant that we were to dig, but now, of course,
-I saw at once that I was wrong. 'There is a cellar under this then?' I
-cried.
-
-"'Yes, and as old as the house. Down here, through this door.'
-
-"We went down a winding stone stair, and my companion, striking a match,
-lit a large lantern which stood on a barrel in the corner. In an instant
-it was obvious that we had at last come upon the true place, and that we
-had not been the only people to visit the spot recently.
-
-"It had been used for the storage of wood, but the billets, which had
-evidently been littered over the floor, were now piled at the sides, so
-as to leave a clear space in the middle. In this space lay a large and
-heavy flagstone with a rusted iron ring in the centre to which a thick
-shepherd's-check muffler was attached.
-
-"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
-on him, and could swear to it. What has the villain been doing here?'
-
-"At my suggestion a couple of the county police were summoned to be
-present, and I then endeavored to raise the stone by pulling on the
-cravat. I could only move it slightly, and it was with the aid of one
-of the constables that I succeeded at last in carrying it to one side.
-A black hole yawned beneath into which we all peered, while Musgrave,
-kneeling at the side, pushed down the lantern.
-
-"A small chamber about seven feet deep and four feet square lay open to
-us. At one side of this was a squat, brass-bound wooden box, the lid of
-which was hinged upwards, with this curious old-fashioned key projecting
-from the lock. It was furred outside by a thick layer of dust, and damp
-and worms had eaten through the wood, so that a crop of livid fungi
-was growing on the inside of it. Several discs of metal, old coins
-apparently, such as I hold here, were scattered over the bottom of the
-box, but it contained nothing else.
-
-"At the moment, however, we had no thought for the old chest, for our
-eyes were riveted upon that which crouched beside it. It was the figure
-of a man, clad in a suit of black, who squatted down upon his hams with
-his forehead sunk upon the edge of the box and his two arms thrown out
-on each side of it. The attitude had drawn all the stagnant blood to
-the face, and no man could have recognized that distorted liver-colored
-countenance; but his height, his dress, and his hair were all sufficient
-to show my client, when we had drawn the body up, that it was indeed his
-missing butler. He had been dead some days, but there was no wound or
-bruise upon his person to show how he had met his dreadful end. When
-his body had been carried from the cellar we found ourselves still
-confronted with a problem which was almost as formidable as that with
-which we had started.
-
-"I confess that so far, Watson, I had been disappointed in my
-investigation. I had reckoned upon solving the matter when once I had
-found the place referred to in the Ritual; but now I was there, and was
-apparently as far as ever from knowing what it was which the family had
-concealed with such elaborate precautions. It is true that I had thrown
-a light upon the fate of Brunton, but now I had to ascertain how that
-fate had come upon him, and what part had been played in the matter by
-the woman who had disappeared. I sat down upon a keg in the corner and
-thought the whole matter carefully over.
-
-"You know my methods in such cases, Watson. I put myself in the man's
-place and, having first gauged his intelligence, I try to imagine how I
-should myself have proceeded under the same circumstances. In this
-case the matter was simplified by Brunton's intelligence being quite
-first-rate, so that it was unnecessary to make any allowance for the
-personal equation, as the astronomers have dubbed it. He knew that
-something valuable was concealed. He had spotted the place. He found
-that the stone which covered it was just too heavy for a man to move
-unaided. What would he do next? He could not get help from outside, even
-if he had some one whom he could trust, without the unbarring of doors
-and considerable risk of detection. It was better, if he could, to have
-his helpmate inside the house. But whom could he ask? This girl had been
-devoted to him. A man always finds it hard to realize that he may have
-finally lost a woman's love, however badly he may have treated her. He
-would try by a few attentions to make his peace with the girl Howells,
-and then would engage her as his accomplice. Together they would come at
-night to the cellar, and their united force would suffice to raise the
-stone. So far I could follow their actions as if I had actually seen
-them.
-
-"But for two of them, and one a woman, it must have been heavy work the
-raising of that stone. A burly Sussex policeman and I had found it no
-light job. What would they do to assist them? Probably what I should
-have done myself. I rose and examined carefully the different billets
-of wood which were scattered round the floor. Almost at once I came
-upon what I expected. One piece, about three feet in length, had a very
-marked indentation at one end, while several were flattened at the sides
-as if they had been compressed by some considerable weight. Evidently,
-as they had dragged the stone up they had thrust the chunks of wood into
-the chink, until at last, when the opening was large enough to crawl
-through, they would hold it open by a billet placed lengthwise, which
-might very well become indented at the lower end, since the whole weight
-of the stone would press it down on to the edge of this other slab. So
-far I was still on safe ground.
-
-"And now how was I to proceed to reconstruct this midnight drama?
-Clearly, only one could fit into the hole, and that one was Brunton. The
-girl must have waited above. Brunton then unlocked the box, handed up
-the contents presumably--since they were not to be found--and then--and
-then what happened?
-
-"What smouldering fire of vengeance had suddenly sprung into flame in
-this passionate Celtic woman's soul when she saw the man who had wronged
-her--wronged her, perhaps, far more than we suspected--in her power?
-Was it a chance that the wood had slipped, and that the stone had shut
-Brunton into what had become his sepulchre? Had she only been guilty of
-silence as to his fate? Or had some sudden blow from her hand dashed the
-support away and sent the slab crashing down into its place? Be that
-as it might, I seemed to see that woman's figure still clutching at her
-treasure trove and flying wildly up the winding stair, with her ears
-ringing perhaps with the muffled screams from behind her and with the
-drumming of frenzied hands against the slab of stone which was choking
-her faithless lover's life out.
-
-"Here was the secret of her blanched face, her shaken nerves, her peals
-of hysterical laughter on the next morning. But what had been in the
-box? What had she done with that? Of course, it must have been the old
-metal and pebbles which my client had dragged from the mere. She had
-thrown them in there at the first opportunity to remove the last trace
-of her crime.
-
-"For twenty minutes I had sat motionless, thinking the matter out.
-Musgrave still stood with a very pale face, swinging his lantern and
-peering down into the hole.
-
-"'These are coins of Charles the First,' said he, holding out the few
-which had been in the box; 'you see we were right in fixing our date for
-the Ritual.'
-
-"'We may find something else of Charles the First,' I cried, as the
-probable meaning of the first two questions of the Ritual broke suddenly
-upon me. 'Let me see the contents of the bag which you fished from the
-mere.'
-
-
-"We ascended to his study, and he laid the debris before me. I could
-understand his regarding it as of small importance when I looked at it,
-for the metal was almost black and the stones lustreless and dull. I
-rubbed one of them on my sleeve, however, and it glowed afterwards like
-a spark in the dark hollow of my hand. The metal work was in the form
-of a double ring, but it had been bent and twisted out of its original
-shape.
-
-"'You must bear in mind,' said I, 'that the royal party made head in
-England even after the death of the king, and that when they at last
-fled they probably left many of their most precious possessions buried
-behind them, with the intention of returning for them in more peaceful
-times.'
-
-"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
-right-hand man of Charles the Second in his wanderings,' said my friend.
-
-"'Ah, indeed!' I answered. 'Well now, I think that really should give us
-the last link that we wanted. I must congratulate you on coming into
-the possession, though in rather a tragic manner of a relic which is of
-great intrinsic value, but of even greater importance as an historical
-curiosity.'
-
-"'What is it, then?' he gasped in astonishment.
-
-"'It is nothing less than the ancient crown of the kings of England.'
-
-"'The crown!'
-
-"'Precisely. Consider what the Ritual says: How does it run? "Whose was
-it?" "His who is gone." That was after the execution of Charles. Then,
-"Who shall have it?" "He who will come." That was Charles the Second,
-whose advent was already foreseen. There can, I think, be no doubt that
-this battered and shapeless diadem once encircled the brows of the royal
-Stuarts.'
-
-"'And how came it in the pond?'
-
-"'Ah, that is a question that will take some time to answer.' And with
-that I sketched out to him the whole long chain of surmise and of proof
-which I had constructed. The twilight had closed in and the moon was
-shining brightly in the sky before my narrative was finished.
-
-"'And how was it then that Charles did not get his crown when he
-returned?' asked Musgrave, pushing back the relic into its linen bag.
-
-"'Ah, there you lay your finger upon the one point which we shall
-probably never be able to clear up. It is likely that the Musgrave who
-held the secret died in the interval, and by some oversight left this
-guide to his descendant without explaining the meaning of it. From that
-day to this it has been handed down from father to son, until at last
-it came within reach of a man who tore its secret out of it and lost his
-life in the venture.'
-
-
-"And that's the story of the Musgrave Ritual, Watson. They have the
-crown down at Hurlstone--though they had some legal bother and a
-considerable sum to pay before they were allowed to retain it. I am sure
-that if you mentioned my name they would be happy to show it to you. Of
-the woman nothing was ever heard, and the probability is that she got
-away out of England and carried herself and the memory of her crime to
-some land beyond the seas."
-
-
-
-
-Adventure VI. The Reigate Puzzle
-
-
-It was some time before the health of my friend Mr. Sherlock Holmes
-recovered from the strain caused by his immense exertions in the spring
-of '87. The whole question of the Netherland-Sumatra Company and of the
-colossal schemes of Baron Maupertuis are too recent in the minds of the
-public, and are too intimately concerned with politics and finance to be
-fitting subjects for this series of sketches. They led, however, in an
-indirect fashion to a singular and complex problem which gave my friend
-an opportunity of demonstrating the value of a fresh weapon among the
-many with which he waged his life-long battle against crime.
-
-On referring to my notes I see that it was upon the 14th of April that
-I received a telegram from Lyons which informed me that Holmes was
-lying ill in the Hotel Dulong. Within twenty-four hours I was in his
-sick-room, and was relieved to find that there was nothing formidable in
-his symptoms. Even his iron constitution, however, had broken down
-under the strain of an investigation which had extended over two months,
-during which period he had never worked less than fifteen hours a day,
-and had more than once, as he assured me, kept to his task for five days
-at a stretch. Even the triumphant issue of his labors could not save him
-from reaction after so terrible an exertion, and at a time when Europe
-was ringing with his name and when his room was literally ankle-deep
-with congratulatory telegrams I found him a prey to the blackest
-depression. Even the knowledge that he had succeeded where the police of
-three countries had failed, and that he had outmanoeuvred at every point
-the most accomplished swindler in Europe, was insufficient to rouse him
-from his nervous prostration.
-
-Three days later we were back in Baker Street together; but it was
-evident that my friend would be much the better for a change, and the
-thought of a week of spring time in the country was full of attractions
-to me also. My old friend, Colonel Hayter, who had come under my
-professional care in Afghanistan, had now taken a house near Reigate in
-Surrey, and had frequently asked me to come down to him upon a visit. On
-the last occasion he had remarked that if my friend would only come
-with me he would be glad to extend his hospitality to him also. A little
-diplomacy was needed, but when Holmes understood that the establishment
-was a bachelor one, and that he would be allowed the fullest freedom,
-he fell in with my plans and a week after our return from Lyons we were
-under the Colonel's roof. Hayter was a fine old soldier who had seen
-much of the world, and he soon found, as I had expected, that Holmes and
-he had much in common.
-
-On the evening of our arrival we were sitting in the Colonel's gun-room
-after dinner, Holmes stretched upon the sofa, while Hayter and I looked
-over his little armory of Eastern weapons.
-
-"By the way," said he suddenly, "I think I'll take one of these pistols
-upstairs with me in case we have an alarm."
-
-"An alarm!" said I.
-
-"Yes, we've had a scare in this part lately. Old Acton, who is one of
-our county magnates, had his house broken into last Monday. No great
-damage done, but the fellows are still at large."
-
-"No clue?" asked Holmes, cocking his eye at the Colonel.
-
-"None as yet. But the affair is a petty one, one of our little country
-crimes, which must seem too small for your attention, Mr. Holmes, after
-this great international affair."
-
-Holmes waved away the compliment, though his smile showed that it had
-pleased him.
-
-"Was there any feature of interest?"
-
-"I fancy not. The thieves ransacked the library and got very little for
-their pains. The whole place was turned upside down, drawers burst open,
-and presses ransacked, with the result that an odd volume of Pope's
-'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
-barometer, and a ball of twine are all that have vanished."
-
-"What an extraordinary assortment!" I exclaimed.
-
-"Oh, the fellows evidently grabbed hold of everything they could get."
-
-Holmes grunted from the sofa.
-
-"The county police ought to make something of that," said he; "why, it
-is surely obvious that--"
-
-But I held up a warning finger.
-
-"You are here for a rest, my dear fellow. For Heaven's sake don't get
-started on a new problem when your nerves are all in shreds."
-
-Holmes shrugged his shoulders with a glance of comic resignation towards
-the Colonel, and the talk drifted away into less dangerous channels.
-
-It was destined, however, that all my professional caution should be
-wasted, for next morning the problem obtruded itself upon us in such a
-way that it was impossible to ignore it, and our country visit took a
-turn which neither of us could have anticipated. We were at breakfast
-when the Colonel's butler rushed in with all his propriety shaken out of
-him.
-
-"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
-
-"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
-
-"Murder!"
-
-The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
-or his son?"
-
-"Neither, sir. It was William the coachman. Shot through the heart, sir,
-and never spoke again."
-
-"Who shot him, then?"
-
-"The burglar, sir. He was off like a shot and got clean away. He'd just
-broke in at the pantry window when William came on him and met his end
-in saving his master's property."
-
-"What time?"
-
-"It was last night, sir, somewhere about twelve."
-
-"Ah, then, we'll step over afterwards," said the Colonel, coolly
-settling down to his breakfast again. "It's a baddish business," he
-added when the butler had gone; "he's our leading man about here, is old
-Cunningham, and a very decent fellow too. He'll be cut up over this, for
-the man has been in his service for years and was a good servant. It's
-evidently the same villains who broke into Acton's."
-
-"And stole that very singular collection," said Holmes, thoughtfully.
-
-"Precisely."
-
-"Hum! It may prove the simplest matter in the world, but all the same
-at first glance this is just a little curious, is it not? A gang of
-burglars acting in the country might be expected to vary the scene of
-their operations, and not to crack two cribs in the same district within
-a few days. When you spoke last night of taking precautions I remember
-that it passed through my mind that this was probably the last parish
-in England to which the thief or thieves would be likely to turn their
-attention--which shows that I have still much to learn."
-
-"I fancy it's some local practitioner," said the Colonel. "In that case,
-of course, Acton's and Cunningham's are just the places he would go for,
-since they are far the largest about here."
-
-"And richest?"
-
-"Well, they ought to be, but they've had a lawsuit for some years which
-has sucked the blood out of both of them, I fancy. Old Acton has some
-claim on half Cunningham's estate, and the lawyers have been at it with
-both hands."
-
-"If it's a local villain there should not be much difficulty in running
-him down," said Holmes with a yawn. "All right, Watson, I don't intend
-to meddle."
-
-"Inspector Forrester, sir," said the butler, throwing open the door.
-
-The official, a smart, keen-faced young fellow, stepped into the room.
-"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
-that Mr. Holmes of Baker Street is here."
-
-The Colonel waved his hand towards my friend, and the Inspector bowed.
-
-"We thought that perhaps you would care to step across, Mr. Holmes."
-
-"The fates are against you, Watson," said he, laughing. "We were
-chatting about the matter when you came in, Inspector. Perhaps you
-can let us have a few details." As he leaned back in his chair in the
-familiar attitude I knew that the case was hopeless.
-
-"We had no clue in the Acton affair. But here we have plenty to go on,
-and there's no doubt it is the same party in each case. The man was
-seen."
-
-"Ah!"
-
-"Yes, sir. But he was off like a deer after the shot that killed poor
-William Kirwan was fired. Mr. Cunningham saw him from the bedroom
-window, and Mr. Alec Cunningham saw him from the back passage. It was
-quarter to twelve when the alarm broke out. Mr. Cunningham had just got
-into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
-both heard William the coachman calling for help, and Mr. Alec ran down
-to see what was the matter. The back door was open, and as he came to
-the foot of the stairs he saw two men wrestling together outside. One of
-them fired a shot, the other dropped, and the murderer rushed across the
-garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
-saw the fellow as he gained the road, but lost sight of him at once. Mr.
-Alec stopped to see if he could help the dying man, and so the villain
-got clean away. Beyond the fact that he was a middle-sized man and
-dressed in some dark stuff, we have no personal clue; but we are making
-energetic inquiries, and if he is a stranger we shall soon find him
-out."
-
-"What was this William doing there? Did he say anything before he died?"
-
-"Not a word. He lives at the lodge with his mother, and as he was a
-very faithful fellow we imagine that he walked up to the house with
-the intention of seeing that all was right there. Of course this Acton
-business has put every one on their guard. The robber must have just
-burst open the door--the lock has been forced--when William came upon
-him."
-
-"Did William say anything to his mother before going out?"
-
-"She is very old and deaf, and we can get no information from her. The
-shock has made her half-witted, but I understand that she was never
-very bright. There is one very important circumstance, however. Look at
-this!"
-
-He took a small piece of torn paper from a note-book and spread it out
-upon his knee.
-
-"This was found between the finger and thumb of the dead man. It appears
-to be a fragment torn from a larger sheet. You will observe that the
-hour mentioned upon it is the very time at which the poor fellow met his
-fate. You see that his murderer might have torn the rest of the sheet
-from him or he might have taken this fragment from the murderer. It
-reads almost as though it were an appointment."
-
-Holmes took up the scrap of paper, a fac-simile of which is here
-reproduced.
-
-     d at quarter to twelve learn what maybe
-
-"Presuming that it is an appointment," continued the Inspector, "it is
-of course a conceivable theory that this William Kirwan--though he had
-the reputation of being an honest man, may have been in league with the
-thief. He may have met him there, may even have helped him to break in
-the door, and then they may have fallen out between themselves."
-
-"This writing is of extraordinary interest," said Holmes, who had been
-examining it with intense concentration. "These are much deeper waters
-than I had thought." He sank his head upon his hands, while the Inspector
-smiled at the effect which his case had had upon the famous London
-specialist.
-
-"Your last remark," said Holmes, presently, "as to the possibility of
-there being an understanding between the burglar and the servant, and
-this being a note of appointment from one to the other, is an ingenious
-and not entirely impossible supposition. But this writing opens up--" He
-sank his head into his hands again and remained for some minutes in the
-deepest thought. When he raised his face again, I was surprised to see
-that his cheek was tinged with color, and his eyes as bright as before
-his illness. He sprang to his feet with all his old energy.
-
-"I'll tell you what," said he, "I should like to have a quiet little
-glance into the details of this case. There is something in it which
-fascinates me extremely. If you will permit me, Colonel, I will leave my
-friend Watson and you, and I will step round with the Inspector to test
-the truth of one or two little fancies of mine. I will be with you again
-in half an hour."
-
-An hour and half had elapsed before the Inspector returned alone.
-
-"Mr. Holmes is walking up and down in the field outside," said he. "He
-wants us all four to go up to the house together."
-
-"To Mr. Cunningham's?"
-
-"Yes, sir."
-
-"What for?"
-
-The Inspector shrugged his shoulders. "I don't quite know, sir. Between
-ourselves, I think Mr. Holmes had not quite got over his illness yet.
-He's been behaving very queerly, and he is very much excited."
-
-"I don't think you need alarm yourself," said I. "I have usually found
-that there was method in his madness."
-
-"Some folks might say there was madness in his method," muttered the
-Inspector. "But he's all on fire to start, Colonel, so we had best go
-out if you are ready."
-
-We found Holmes pacing up and down in the field, his chin sunk upon his
-breast, and his hands thrust into his trousers pockets.
-
-"The matter grows in interest," said he. "Watson, your country-trip has
-been a distinct success. I have had a charming morning."
-
-"You have been up to the scene of the crime, I understand," said the
-Colonel.
-
-"Yes; the Inspector and I have made quite a little reconnaissance
-together."
-
-"Any success?"
-
-"Well, we have seen some very interesting things. I'll tell you what we
-did as we walk. First of all, we saw the body of this unfortunate man.
-He certainly died from a revolver wound as reported."
-
-"Had you doubted it, then?"
-
-"Oh, it is as well to test everything. Our inspection was not wasted. We
-then had an interview with Mr. Cunningham and his son, who were able
-to point out the exact spot where the murderer had broken through the
-garden-hedge in his flight. That was of great interest."
-
-"Naturally."
-
-"Then we had a look at this poor fellow's mother. We could get no
-information from her, however, as she is very old and feeble."
-
-"And what is the result of your investigations?"
-
-"The conviction that the crime is a very peculiar one. Perhaps our visit
-now may do something to make it less obscure. I think that we are both
-agreed, Inspector that the fragment of paper in the dead man's hand,
-bearing, as it does, the very hour of his death written upon it, is of
-extreme importance."
-
-"It should give a clue, Mr. Holmes."
-
-"It does give a clue. Whoever wrote that note was the man who brought
-William Kirwan out of his bed at that hour. But where is the rest of
-that sheet of paper?"
-
-"I examined the ground carefully in the hope of finding it," said the
-Inspector.
-
-"It was torn out of the dead man's hand. Why was some one so anxious to
-get possession of it? Because it incriminated him. And what would he do
-with it? Thrust it into his pocket, most likely, never noticing that a
-corner of it had been left in the grip of the corpse. If we could get
-the rest of that sheet it is obvious that we should have gone a long way
-towards solving the mystery."
-
-"Yes, but how can we get at the criminal's pocket before we catch the
-criminal?"
-
-"Well, well, it was worth thinking over. Then there is another obvious
-point. The note was sent to William. The man who wrote it could not have
-taken it; otherwise, of course, he might have delivered his own message
-by word of mouth. Who brought the note, then? Or did it come through the
-post?"
-
-"I have made inquiries," said the Inspector. "William received a letter
-by the afternoon post yesterday. The envelope was destroyed by him."
-
-"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
-seen the postman. It is a pleasure to work with you. Well, here is the
-lodge, and if you will come up, Colonel, I will show you the scene of
-the crime."
-
-We passed the pretty cottage where the murdered man had lived, and
-walked up an oak-lined avenue to the fine old Queen Anne house, which
-bears the date of Malplaquet upon the lintel of the door. Holmes and
-the Inspector led us round it until we came to the side gate, which is
-separated by a stretch of garden from the hedge which lines the road. A
-constable was standing at the kitchen door.
-
-"Throw the door open, officer," said Holmes. "Now, it was on those
-stairs that young Mr. Cunningham stood and saw the two men struggling
-just where we are. Old Mr. Cunningham was at that window--the second on
-the left--and he saw the fellow get away just to the left of that bush.
-Then Mr. Alec ran out and knelt beside the wounded man. The ground is
-very hard, you see, and there are no marks to guide us." As he spoke two
-men came down the garden path, from round the angle of the house. The
-one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
-other a dashing young fellow, whose bright, smiling expression and showy
-dress were in strange contract with the business which had brought us
-there.
-
-"Still at it, then?" said he to Holmes. "I thought you Londoners were
-never at fault. You don't seem to be so very quick, after all."
-
-"Ah, you must give us a little time," said Holmes good-humoredly.
-
-"You'll want it," said young Alec Cunningham. "Why, I don't see that we
-have any clue at all."
-
-"There's only one," answered the Inspector. "We thought that if we could
-only find--Good heavens, Mr. Holmes! What is the matter?"
-
-My poor friend's face had suddenly assumed the most dreadful expression.
-His eyes rolled upwards, his features writhed in agony, and with a
-suppressed groan he dropped on his face upon the ground. Horrified
-at the suddenness and severity of the attack, we carried him into the
-kitchen, where he lay back in a large chair, and breathed heavily for
-some minutes. Finally, with a shamefaced apology for his weakness, he
-rose once more.
-
-"Watson would tell you that I have only just recovered from a severe
-illness," he explained. "I am liable to these sudden nervous attacks."
-
-"Shall I send you home in my trap?" asked old Cunningham.
-
-"Well, since I am here, there is one point on which I should like to
-feel sure. We can very easily verify it."
-
-"What was it?"
-
-"Well, it seems to me that it is just possible that the arrival of
-this poor fellow William was not before, but after, the entrance of
-the burglary into the house. You appear to take it for granted that,
-although the door was forced, the robber never got in."
-
-"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
-son Alec had not yet gone to bed, and he would certainly have heard any
-one moving about."
-
-"Where was he sitting?"
-
-"I was smoking in my dressing-room."
-
-"Which window is that?"
-
-"The last on the left next my father's."
-
-"Both of your lamps were lit, of course?"
-
-"Undoubtedly."
-
-"There are some very singular points here," said Holmes, smiling. "Is
-it not extraordinary that a burglary--and a burglar who had had some
-previous experience--should deliberately break into a house at a time
-when he could see from the lights that two of the family were still
-afoot?"
-
-"He must have been a cool hand."
-
-"Well, of course, if the case were not an odd one we should not have
-been driven to ask you for an explanation," said young Mr. Alec. "But as
-to your ideas that the man had robbed the house before William tackled
-him, I think it a most absurd notion. Wouldn't we have found the place
-disarranged, and missed the things which he had taken?"
-
-"It depends on what the things were," said Holmes. "You must remember
-that we are dealing with a burglar who is a very peculiar fellow, and
-who appears to work on lines of his own. Look, for example, at the
-queer lot of things which he took from Acton's--what was it?--a ball of
-string, a letter-weight, and I don't know what other odds and ends."
-
-"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
-"Anything which you or the Inspector may suggest will most certainly be
-done."
-
-"In the first place," said Holmes, "I should like you to offer a
-reward--coming from yourself, for the officials may take a little time
-before they would agree upon the sum, and these things cannot be done
-too promptly. I have jotted down the form here, if you would not mind
-signing it. Fifty pounds was quite enough, I thought."
-
-"I would willingly give five hundred," said the J.P., taking the slip
-of paper and the pencil which Holmes handed to him. "This is not quite
-correct, however," he added, glancing over the document.
-
-"I wrote it rather hurriedly."
-
-"You see you begin, 'Whereas, at about a quarter to one on Tuesday
-morning an attempt was made,' and so on. It was at a quarter to twelve,
-as a matter of fact."
-
-I was pained at the mistake, for I knew how keenly Holmes would feel any
-slip of the kind. It was his specialty to be accurate as to fact, but
-his recent illness had shaken him, and this one little incident was
-enough to show me that he was still far from being himself. He was
-obviously embarrassed for an instant, while the Inspector raised his
-eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
-corrected the mistake, however, and handed the paper back to Holmes.
-
-"Get it printed as soon as possible," he said; "I think your idea is an
-excellent one."
-
-Holmes put the slip of paper carefully away into his pocket-book.
-
-"And now," said he, "it really would be a good thing that we should all
-go over the house together and make certain that this rather erratic
-burglar did not, after all, carry anything away with him."
-
-Before entering, Holmes made an examination of the door which had been
-forced. It was evident that a chisel or strong knife had been thrust
-in, and the lock forced back with it. We could see the marks in the wood
-where it had been pushed in.
-
-"You don't use bars, then?" he asked.
-
-"We have never found it necessary."
-
-"You don't keep a dog?"
-
-"Yes, but he is chained on the other side of the house."
-
-"When do the servants go to bed?"
-
-"About ten."
-
-"I understand that William was usually in bed also at that hour."
-
-"Yes."
-
-"It is singular that on this particular night he should have been up.
-Now, I should be very glad if you would have the kindness to show us
-over the house, Mr. Cunningham."
-
-A stone-flagged passage, with the kitchens branching away from it, led
-by a wooden staircase directly to the first floor of the house. It came
-out upon the landing opposite to a second more ornamental stair which
-came up from the front hall. Out of this landing opened the drawing-room
-and several bedrooms, including those of Mr. Cunningham and his son.
-Holmes walked slowly, taking keen note of the architecture of the house.
-I could tell from his expression that he was on a hot scent, and yet
-I could not in the least imagine in what direction his inferences were
-leading him.
-
-"My good sir," said Mr. Cunningham with some impatience, "this is surely
-very unnecessary. That is my room at the end of the stairs, and my
-son's is the one beyond it. I leave it to your judgment whether it was
-possible for the thief to have come up here without disturbing us."
-
-"You must try round and get on a fresh scent, I fancy," said the son
-with a rather malicious smile.
-
-"Still, I must ask you to humor me a little further. I should like, for
-example, to see how far the windows of the bedrooms command the front.
-This, I understand is your son's room"--he pushed open the door--"and
-that, I presume, is the dressing-room in which he sat smoking when the
-alarm was given. Where does the window of that look out to?" He stepped
-across the bedroom, pushed open the door, and glanced round the other
-chamber.
-
-"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
-
-"Thank you, I think I have seen all that I wished."
-
-"Then if it is really necessary we can go into my room."
-
-"If it is not too much trouble."
-
-The J. P. shrugged his shoulders, and led the way into his own chamber,
-which was a plainly furnished and commonplace room. As we moved across
-it in the direction of the window, Holmes fell back until he and I were
-the last of the group. Near the foot of the bed stood a dish of oranges
-and a carafe of water. As we passed it Holmes, to my unutterable
-astonishment, leaned over in front of me and deliberately knocked the
-whole thing over. The glass smashed into a thousand pieces and the fruit
-rolled about into every corner of the room.
-
-"You've done it now, Watson," said he, coolly. "A pretty mess you've
-made of the carpet."
-
-I stooped in some confusion and began to pick up the fruit,
-understanding for some reason my companion desired me to take the blame
-upon myself. The others did the same, and set the table on its legs
-again.
-
-"Hullo!" cried the Inspector, "where's he got to?"
-
-Holmes had disappeared.
-
-"Wait here an instant," said young Alec Cunningham. "The fellow is off
-his head, in my opinion. Come with me, father, and see where he has got
-to!"
-
-They rushed out of the room, leaving the Inspector, the Colonel, and me
-staring at each other.
-
-"'Pon my word, I am inclined to agree with Master Alec," said the
-official. "It may be the effect of this illness, but it seems to me
-that--"
-
-His words were cut short by a sudden scream of "Help! Help! Murder!"
-With a thrill I recognized the voice of that of my friend. I rushed
-madly from the room on to the landing. The cries, which had sunk down
-into a hoarse, inarticulate shouting, came from the room which we had
-first visited. I dashed in, and on into the dressing-room beyond. The
-two Cunninghams were bending over the prostrate figure of Sherlock
-Holmes, the younger clutching his throat with both hands, while the
-elder seemed to be twisting one of his wrists. In an instant the three
-of us had torn them away from him, and Holmes staggered to his feet,
-very pale and evidently greatly exhausted.
-
-"Arrest these men, Inspector," he gasped.
-
-"On what charge?"
-
-"That of murdering their coachman, William Kirwan."
-
-The Inspector stared about him in bewilderment. "Oh, come now, Mr.
-Holmes," said he at last, "I'm sure you don't really mean to--"
-
-"Tut, man, look at their faces!" cried Holmes, curtly.
-
-Never certainly have I seen a plainer confession of guilt upon human
-countenances. The older man seemed numbed and dazed with a heavy, sullen
-expression upon his strongly-marked face. The son, on the other hand,
-had dropped all that jaunty, dashing style which had characterized him,
-and the ferocity of a dangerous wild beast gleamed in his dark eyes
-and distorted his handsome features. The Inspector said nothing, but,
-stepping to the door, he blew his whistle. Two of his constables came at
-the call.
-
-"I have no alternative, Mr. Cunningham," said he. "I trust that this may
-all prove to be an absurd mistake, but you can see that--Ah, would you?
-Drop it!" He struck out with his hand, and a revolver which the younger
-man was in the act of cocking clattered down upon the floor.
-
-"Keep that," said Holmes, quietly putting his foot upon it; "you will
-find it useful at the trial. But this is what we really wanted." He held
-up a little crumpled piece of paper.
-
-"The remainder of the sheet!" cried the Inspector.
-
-"Precisely."
-
-"And where was it?"
-
-"Where I was sure it must be. I'll make the whole matter clear to you
-presently. I think, Colonel, that you and Watson might return now, and
-I will be with you again in an hour at the furthest. The Inspector and I
-must have a word with the prisoners, but you will certainly see me back
-at luncheon time."
-
-
-Sherlock Holmes was as good as his word, for about one o'clock he
-rejoined us in the Colonel's smoking-room. He was accompanied by a
-little elderly gentleman, who was introduced to me as the Mr. Acton
-whose house had been the scene of the original burglary.
-
-"I wished Mr. Acton to be present while I demonstrated this small matter
-to you," said Holmes, "for it is natural that he should take a keen
-interest in the details. I am afraid, my dear Colonel, that you must
-regret the hour that you took in such a stormy petrel as I am."
-
-"On the contrary," answered the Colonel, warmly, "I consider it the
-greatest privilege to have been permitted to study your methods of
-working. I confess that they quite surpass my expectations, and that I
-am utterly unable to account for your result. I have not yet seen the
-vestige of a clue."
-
-"I am afraid that my explanation may disillusion you but it has always
-been my habit to hide none of my methods, either from my friend Watson
-or from any one who might take an intelligent interest in them. But,
-first, as I am rather shaken by the knocking about which I had in
-the dressing-room, I think that I shall help myself to a dash of your
-brandy, Colonel. My strength had been rather tried of late."
-
-"I trust that you had no more of those nervous attacks."
-
-Sherlock Holmes laughed heartily. "We will come to that in its turn,"
-said he. "I will lay an account of the case before you in its due order,
-showing you the various points which guided me in my decision. Pray
-interrupt me if there is any inference which is not perfectly clear to
-you.
-
-"It is of the highest importance in the art of detection to be able
-to recognize, out of a number of facts, which are incidental and which
-vital. Otherwise your energy and attention must be dissipated instead of
-being concentrated. Now, in this case there was not the slightest doubt
-in my mind from the first that the key of the whole matter must be
-looked for in the scrap of paper in the dead man's hand.
-
-"Before going into this, I would draw your attention to the fact that,
-if Alec Cunningham's narrative was correct, and if the assailant, after
-shooting William Kirwan, had instantly fled, then it obviously could not
-be he who tore the paper from the dead man's hand. But if it was not he,
-it must have been Alec Cunningham himself, for by the time that the old
-man had descended several servants were upon the scene. The point is a
-simple one, but the Inspector had overlooked it because he had started
-with the supposition that these county magnates had had nothing to do
-with the matter. Now, I make a point of never having any prejudices,
-and of following docilely wherever fact may lead me, and so, in the
-very first stage of the investigation, I found myself looking a little
-askance at the part which had been played by Mr. Alec Cunningham.
-
-"And now I made a very careful examination of the corner of paper which
-the Inspector had submitted to us. It was at once clear to me that it
-formed part of a very remarkable document. Here it is. Do you not now
-observe something very suggestive about it?"
-
-"It has a very irregular look," said the Colonel.
-
-"My dear sir," cried Holmes, "there cannot be the least doubt in the
-world that it has been written by two persons doing alternate words.
-When I draw your attention to the strong t's of 'at' and 'to', and ask
-you to compare them with the weak ones of 'quarter' and 'twelve,' you
-will instantly recognize the fact. A very brief analysis of these
-four words would enable you to say with the utmost confidence that the
-'learn' and the 'maybe' are written in the stronger hand, and the 'what'
-in the weaker."
-
-"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
-two men write a letter in such a fashion?"
-
-"Obviously the business was a bad one, and one of the men who distrusted
-the other was determined that, whatever was done, each should have an
-equal hand in it. Now, of the two men, it is clear that the one who
-wrote the 'at' and 'to' was the ringleader."
-
-"How do you get at that?"
-
-"We might deduce it from the mere character of the one hand as compared
-with the other. But we have more assured reasons than that for supposing
-it. If you examine this scrap with attention you will come to the
-conclusion that the man with the stronger hand wrote all his words
-first, leaving blanks for the other to fill up. These blanks were not
-always sufficient, and you can see that the second man had a squeeze
-to fit his 'quarter' in between the 'at' and the 'to,' showing that the
-latter were already written. The man who wrote all his words first is
-undoubtedly the man who planned the affair."
-
-"Excellent!" cried Mr. Acton.
-
-"But very superficial," said Holmes. "We come now, however, to a point
-which is of importance. You may not be aware that the deduction of a
-man's age from his writing is one which has brought to considerable
-accuracy by experts. In normal cases one can place a man in his true
-decade with tolerable confidence. I say normal cases, because ill-health
-and physical weakness reproduce the signs of old age, even when the
-invalid is a youth. In this case, looking at the bold, strong hand of
-the one, and the rather broken-backed appearance of the other, which
-still retains its legibility although the t's have begun to lose their
-crossing, we can say that the one was a young man and the other was
-advanced in years without being positively decrepit."
-
-"Excellent!" cried Mr. Acton again.
-
-"There is a further point, however, which is subtler and of greater
-interest. There is something in common between these hands. They belong
-to men who are blood-relatives. It may be most obvious to you in the
-Greek e's, but to me there are many small points which indicate the same
-thing. I have no doubt at all that a family mannerism can be traced in
-these two specimens of writing. I am only, of course, giving you
-the leading results now of my examination of the paper. There were
-twenty-three other deductions which would be of more interest to experts
-than to you. They all tend to deepen the impression upon my mind that
-the Cunninghams, father and son, had written this letter.
-
-"Having got so far, my next step was, of course, to examine into the
-details of the crime, and to see how far they would help us. I went up
-to the house with the Inspector, and saw all that was to be seen. The
-wound upon the dead man was, as I was able to determine with absolute
-confidence, fired from a revolver at the distance of something over
-four yards. There was no powder-blackening on the clothes. Evidently,
-therefore, Alec Cunningham had lied when he said that the two men were
-struggling when the shot was fired. Again, both father and son agreed
-as to the place where the man escaped into the road. At that point,
-however, as it happens, there is a broadish ditch, moist at the bottom.
-As there were no indications of bootmarks about this ditch, I was
-absolutely sure not only that the Cunninghams had again lied, but that
-there had never been any unknown man upon the scene at all.
-
-"And now I have to consider the motive of this singular crime. To get
-at this, I endeavored first of all to solve the reason of the original
-burglary at Mr. Acton's. I understood, from something which the Colonel
-told us, that a lawsuit had been going on between you, Mr. Acton, and
-the Cunninghams. Of course, it instantly occurred to me that they had
-broken into your library with the intention of getting at some document
-which might be of importance in the case."
-
-"Precisely so," said Mr. Acton. "There can be no possible doubt as to
-their intentions. I have the clearest claim upon half of their present
-estate, and if they could have found a single paper--which, fortunately,
-was in the strong-box of my solicitors--they would undoubtedly have
-crippled our case."
-
-"There you are," said Holmes, smiling. "It was a dangerous, reckless
-attempt, in which I seem to trace the influence of young Alec. Having
-found nothing they tried to divert suspicion by making it appear to be
-an ordinary burglary, to which end they carried off whatever they could
-lay their hands upon. That is all clear enough, but there was much that
-was still obscure. What I wanted above all was to get the missing part
-of that note. I was certain that Alec had torn it out of the dead man's
-hand, and almost certain that he must have thrust it into the pocket of
-his dressing-gown. Where else could he have put it? The only question
-was whether it was still there. It was worth an effort to find out, and
-for that object we all went up to the house.
-
-"The Cunninghams joined us, as you doubtless remember, outside the
-kitchen door. It was, of course, of the very first importance that they
-should not be reminded of the existence of this paper, otherwise they
-would naturally destroy it without delay. The Inspector was about to
-tell them the importance which we attached to it when, by the luckiest
-chance in the world, I tumbled down in a sort of fit and so changed the
-conversation.
-
-"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
-sympathy was wasted and your fit an imposture?"
-
-"Speaking professionally, it was admirably done," cried I, looking in
-amazement at this man who was forever confounding me with some new phase
-of his astuteness.
-
-"It is an art which is often useful," said he. "When I recovered I
-managed, by a device which had perhaps some little merit of ingenuity,
-to get old Cunningham to write the word 'twelve,' so that I might
-compare it with the 'twelve' upon the paper."
-
-"Oh, what an ass I have been!" I exclaimed.
-
-"I could see that you were commiserating me over my weakness," said
-Holmes, laughing. "I was sorry to cause you the sympathetic pain which
-I know that you felt. We then went upstairs together, and having entered
-the room and seen the dressing-gown hanging up behind the door, I
-contrived, by upsetting a table, to engage their attention for the
-moment, and slipped back to examine the pockets. I had hardly got the
-paper, however--which was, as I had expected, in one of them--when the
-two Cunninghams were on me, and would, I verily believe, have murdered
-me then and there but for your prompt and friendly aid. As it is, I feel
-that young man's grip on my throat now, and the father has twisted my
-wrist round in the effort to get the paper out of my hand. They saw that
-I must know all about it, you see, and the sudden change from absolute
-security to complete despair made them perfectly desperate.
-
-"I had a little talk with old Cunningham afterwards as to the motive of
-the crime. He was tractable enough, though his son was a perfect demon,
-ready to blow out his own or anybody else's brains if he could have got
-to his revolver. When Cunningham saw that the case against him was so
-strong he lost all heart and made a clean breast of everything. It seems
-that William had secretly followed his two masters on the night when
-they made their raid upon Mr. Acton's, and having thus got them into
-his power, proceeded, under threats of exposure, to levy blackmail upon
-them. Mr. Alec, however, was a dangerous man to play games of that
-sort with. It was a stroke of positive genius on his part to see in the
-burglary scare which was convulsing the country side an opportunity of
-plausibly getting rid of the man whom he feared. William was decoyed up
-and shot, and had they only got the whole of the note and paid a little
-more attention to detail in the accessories, it is very possible that
-suspicion might never have been aroused."
-
-"And the note?" I asked.
-
-Sherlock Holmes placed the subjoined paper before us.
-
-     If you will only come around to the east gate you it will
-     very much surprise you and be of the greatest service to you
-     and also to Annie Morrison. But say nothing to anyone upon
-     the matter.
-
-"It is very much the sort of thing that I expected," said he. "Of
-course, we do not yet know what the relations may have been between Alec
-Cunningham, William Kirwan, and Annie Morrison. The results shows that
-the trap was skillfully baited. I am sure that you cannot fail to be
-delighted with the traces of heredity shown in the p's and in the tails
-of the g's. The absence of the i-dots in the old man's writing is also
-most characteristic. Watson, I think our quiet rest in the country has
-been a distinct success, and I shall certainly return much invigorated
-to Baker Street to-morrow."
-
-
-
-
-Adventure VII. The Crooked Man
-
-
-One summer night, a few months after my marriage, I was seated by my own
-hearth smoking a last pipe and nodding over a novel, for my day's work
-had been an exhausting one. My wife had already gone upstairs, and the
-sound of the locking of the hall door some time before told me that the
-servants had also retired. I had risen from my seat and was knocking out
-the ashes of my pipe when I suddenly heard the clang of the bell.
-
-I looked at the clock. It was a quarter to twelve. This could not be
-a visitor at so late an hour. A patient, evidently, and possibly an
-all-night sitting. With a wry face I went out into the hall and opened
-the door. To my astonishment it was Sherlock Holmes who stood upon my
-step.
-
-"Ah, Watson," said he, "I hoped that I might not be too late to catch
-you."
-
-"My dear fellow, pray come in."
-
-"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
-still smoke the Arcadia mixture of your bachelor days then! There's no
-mistaking that fluffy ash upon your coat. It's easy to tell that you
-have been accustomed to wear a uniform, Watson. You'll never pass as
-a pure-bred civilian as long as you keep that habit of carrying your
-handkerchief in your sleeve. Could you put me up to-night?"
-
-"With pleasure."
-
-"You told me that you had bachelor quarters for one, and I see that you
-have no gentleman visitor at present. Your hat-stand proclaims as much."
-
-"I shall be delighted if you will stay."
-
-"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
-the British workman in the house. He's a token of evil. Not the drains,
-I hope?"
-
-"No, the gas."
-
-"Ah! He has left two nail-marks from his boot upon your linoleum
-just where the light strikes it. No, thank you, I had some supper at
-Waterloo, but I'll smoke a pipe with you with pleasure."
-
-I handed him my pouch, and he seated himself opposite to me and smoked
-for some time in silence. I was well aware that nothing but business
-of importance would have brought him to me at such an hour, so I waited
-patiently until he should come round to it.
-
-"I see that you are professionally rather busy just now," said he,
-glancing very keenly across at me.
-
-"Yes, I've had a busy day," I answered. "It may seem very foolish in
-your eyes," I added, "but really I don't know how you deduced it."
-
-Holmes chuckled to himself.
-
-"I have the advantage of knowing your habits, my dear Watson," said he.
-"When your round is a short one you walk, and when it is a long one you
-use a hansom. As I perceive that your boots, although used, are by
-no means dirty, I cannot doubt that you are at present busy enough to
-justify the hansom."
-
-"Excellent!" I cried.
-
-"Elementary," said he. "It is one of those instances where the reasoner
-can produce an effect which seems remarkable to his neighbor, because
-the latter has missed the one little point which is the basis of the
-deduction. The same may be said, my dear fellow, for the effect of
-some of these little sketches of yours, which is entirely meretricious,
-depending as it does upon your retaining in your own hands some factors
-in the problem which are never imparted to the reader. Now, at present
-I am in the position of these same readers, for I hold in this hand
-several threads of one of the strangest cases which ever perplexed a
-man's brain, and yet I lack the one or two which are needful to complete
-my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
-and a slight flush sprang into his thin cheeks. For an instant only.
-When I glanced again his face had resumed that red-Indian composure
-which had made so many regard him as a machine rather than a man.
-
-"The problem presents features of interest," said he. "I may even say
-exceptional features of interest. I have already looked into the matter,
-and have come, as I think, within sight of my solution. If you could
-accompany me in that last step you might be of considerable service to
-me."
-
-"I should be delighted."
-
-"Could you go as far as Aldershot to-morrow?"
-
-"I have no doubt Jackson would take my practice."
-
-"Very good. I want to start by the 11.10 from Waterloo."
-
-"That would give me time."
-
-"Then, if you are not too sleepy, I will give you a sketch of what has
-happened, and of what remains to be done."
-
-"I was sleepy before you came. I am quite wakeful now."
-
-"I will compress the story as far as may be done without omitting
-anything vital to the case. It is conceivable that you may even have
-read some account of the matter. It is the supposed murder of Colonel
-Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
-
-"I have heard nothing of it."
-
-"It has not excited much attention yet, except locally. The facts are
-only two days old. Briefly they are these:
-
-"The Royal Munsters is, as you know, one of the most famous Irish
-regiments in the British army. It did wonders both in the Crimea and the
-Mutiny, and has since that time distinguished itself upon every possible
-occasion. It was commanded up to Monday night by James Barclay,
-a gallant veteran, who started as a full private, was raised to
-commissioned rank for his bravery at the time of the Mutiny, and so
-lived to command the regiment in which he had once carried a musket.
-
-"Colonel Barclay had married at the time when he was a sergeant, and
-his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
-former color-sergeant in the same corps. There was, therefore, as can
-be imagined, some little social friction when the young couple (for
-they were still young) found themselves in their new surroundings. They
-appear, however, to have quickly adapted themselves, and Mrs. Barclay
-has always, I understand, been as popular with the ladies of the
-regiment as her husband was with his brother officers. I may add that
-she was a woman of great beauty, and that even now, when she has been
-married for upwards of thirty years, she is still of a striking and
-queenly appearance.
-
-"Colonel Barclay's family life appears to have been a uniformly happy
-one. Major Murphy, to whom I owe most of my facts, assures me that he
-has never heard of any misunderstanding between the pair. On the whole,
-he thinks that Barclay's devotion to his wife was greater than his
-wife's to Barclay. He was acutely uneasy if he were absent from her for
-a day. She, on the other hand, though devoted and faithful, was less
-obtrusively affectionate. But they were regarded in the regiment as
-the very model of a middle-aged couple. There was absolutely nothing in
-their mutual relations to prepare people for the tragedy which was to
-follow.
-
-"Colonel Barclay himself seems to have had some singular traits in his
-character. He was a dashing, jovial old soldier in his usual mood,
-but there were occasions on which he seemed to show himself capable
-of considerable violence and vindictiveness. This side of his nature,
-however, appears never to have been turned towards his wife. Another
-fact, which had struck Major Murphy and three out of five of the other
-officers with whom I conversed, was the singular sort of depression
-which came upon him at times. As the major expressed it, the smile had
-often been struck from his mouth, as if by some invisible hand, when he
-has been joining the gayeties and chaff of the mess-table. For days on
-end, when the mood was on him, he has been sunk in the deepest gloom.
-This and a certain tinge of superstition were the only unusual traits
-in his character which his brother officers had observed. The latter
-peculiarity took the form of a dislike to being left alone, especially
-after dark. This puerile feature in a nature which was conspicuously
-manly had often given rise to comment and conjecture.
-
-"The first battalion of the Royal Munsters (which is the old 117th) has
-been stationed at Aldershot for some years. The married officers live
-out of barracks, and the Colonel has during all this time occupied a
-villa called Lachine, about half a mile from the north camp. The house
-stands in its own grounds, but the west side of it is not more than
-thirty yards from the high-road. A coachman and two maids form the
-staff of servants. These with their master and mistress were the sole
-occupants of Lachine, for the Barclays had no children, nor was it usual
-for them to have resident visitors.
-
-"Now for the events at Lachine between nine and ten on the evening of
-last Monday."
-
-"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
-and had interested herself very much in the establishment of the Guild
-of St. George, which was formed in connection with the Watt Street
-Chapel for the purpose of supplying the poor with cast-off clothing.
-A meeting of the Guild had been held that evening at eight, and Mrs.
-Barclay had hurried over her dinner in order to be present at it. When
-leaving the house she was heard by the coachman to make some commonplace
-remark to her husband, and to assure him that she would be back before
-very long. She then called for Miss Morrison, a young lady who lives
-in the next villa, and the two went off together to their meeting. It
-lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
-home, having left Miss Morrison at her door as she passed.
-
-"There is a room which is used as a morning-room at Lachine. This faces
-the road and opens by a large glass folding-door on to the lawn. The
-lawn is thirty yards across, and is only divided from the highway by
-a low wall with an iron rail above it. It was into this room that Mrs.
-Barclay went upon her return. The blinds were not down, for the room was
-seldom used in the evening, but Mrs. Barclay herself lit the lamp and
-then rang the bell, asking Jane Stewart, the house-maid, to bring her
-a cup of tea, which was quite contrary to her usual habits. The Colonel
-had been sitting in the dining-room, but hearing that his wife had
-returned he joined her in the morning-room. The coachman saw him cross
-the hall and enter it. He was never seen again alive.
-
-"The tea which had been ordered was brought up at the end of ten
-minutes; but the maid, as she approached the door, was surprised to
-hear the voices of her master and mistress in furious altercation. She
-knocked without receiving any answer, and even turned the handle, but
-only to find that the door was locked upon the inside. Naturally enough
-she ran down to tell the cook, and the two women with the coachman came
-up into the hall and listened to the dispute which was still raging.
-They all agreed that only two voices were to be heard, those of Barclay
-and of his wife. Barclay's remarks were subdued and abrupt, so that none
-of them were audible to the listeners. The lady's, on the other hand,
-were most bitter, and when she raised her voice could be plainly heard.
-'You coward!' she repeated over and over again. 'What can be done now?
-What can be done now? Give me back my life. I will never so much as
-breathe the same air with you again! You coward! You coward!' Those were
-scraps of her conversation, ending in a sudden dreadful cry in the man's
-voice, with a crash, and a piercing scream from the woman. Convinced
-that some tragedy had occurred, the coachman rushed to the door and
-strove to force it, while scream after scream issued from within. He was
-unable, however, to make his way in, and the maids were too distracted
-with fear to be of any assistance to him. A sudden thought struck him,
-however, and he ran through the hall door and round to the lawn upon
-which the long French windows open. One side of the window was open,
-which I understand was quite usual in the summer-time, and he passed
-without difficulty into the room. His mistress had ceased to scream and
-was stretched insensible upon a couch, while with his feet tilted over
-the side of an arm-chair, and his head upon the ground near the corner
-of the fender, was lying the unfortunate soldier stone dead in a pool of
-his own blood.
-
-"Naturally, the coachman's first thought, on finding that he could do
-nothing for his master, was to open the door. But here an unexpected and
-singular difficulty presented itself. The key was not in the inner side
-of the door, nor could he find it anywhere in the room. He went out
-again, therefore, through the window, and having obtained the help of
-a policeman and of a medical man, he returned. The lady, against whom
-naturally the strongest suspicion rested, was removed to her room, still
-in a state of insensibility. The Colonel's body was then placed upon the
-sofa, and a careful examination made of the scene of the tragedy.
-
-"The injury from which the unfortunate veteran was suffering was found
-to be a jagged cut some two inches long at the back part of his head,
-which had evidently been caused by a violent blow from a blunt weapon.
-Nor was it difficult to guess what that weapon may have been. Upon the
-floor, close to the body, was lying a singular club of hard carved wood
-with a bone handle. The Colonel possessed a varied collection of weapons
-brought from the different countries in which he had fought, and it
-is conjectured by the police that his club was among his trophies. The
-servants deny having seen it before, but among the numerous curiosities
-in the house it is possible that it may have been overlooked. Nothing
-else of importance was discovered in the room by the police, save the
-inexplicable fact that neither upon Mrs. Barclay's person nor upon that
-of the victim nor in any part of the room was the missing key to
-be found. The door had eventually to be opened by a locksmith from
-Aldershot.
-
-"That was the state of things, Watson, when upon the Tuesday morning I,
-at the request of Major Murphy, went down to Aldershot to supplement
-the efforts of the police. I think that you will acknowledge that the
-problem was already one of interest, but my observations soon made me
-realize that it was in truth much more extraordinary than would at first
-sight appear.
-
-"Before examining the room I cross-questioned the servants, but only
-succeeded in eliciting the facts which I have already stated. One other
-detail of interest was remembered by Jane Stewart, the housemaid. You
-will remember that on hearing the sound of the quarrel she descended and
-returned with the other servants. On that first occasion, when she was
-alone, she says that the voices of her master and mistress were sunk
-so low that she could hear hardly anything, and judged by their tones
-rather than their words that they had fallen out. On my pressing her,
-however, she remembered that she heard the word David uttered twice by
-the lady. The point is of the utmost importance as guiding us towards
-the reason of the sudden quarrel. The Colonel's name, you remember, was
-James.
-
-"There was one thing in the case which had made the deepest impression
-both upon the servants and the police. This was the contortion of the
-Colonel's face. It had set, according to their account, into the most
-dreadful expression of fear and horror which a human countenance is
-capable of assuming. More than one person fainted at the mere sight
-of him, so terrible was the effect. It was quite certain that he had
-foreseen his fate, and that it had caused him the utmost horror. This,
-of course, fitted in well enough with the police theory, if the Colonel
-could have seen his wife making a murderous attack upon him. Nor was
-the fact of the wound being on the back of his head a fatal objection to
-this, as he might have turned to avoid the blow. No information could
-be got from the lady herself, who was temporarily insane from an acute
-attack of brain-fever.
-
-"From the police I learned that Miss Morrison, who you remember went out
-that evening with Mrs. Barclay, denied having any knowledge of what it
-was which had caused the ill-humor in which her companion had returned.
-
-"Having gathered these facts, Watson, I smoked several pipes over them,
-trying to separate those which were crucial from others which were
-merely incidental. There could be no question that the most distinctive
-and suggestive point in the case was the singular disappearance of the
-door-key. A most careful search had failed to discover it in the room.
-Therefore it must have been taken from it. But neither the Colonel
-nor the Colonel's wife could have taken it. That was perfectly clear.
-Therefore a third person must have entered the room. And that third
-person could only have come in through the window. It seemed to me that
-a careful examination of the room and the lawn might possibly reveal
-some traces of this mysterious individual. You know my methods, Watson.
-There was not one of them which I did not apply to the inquiry. And it
-ended by my discovering traces, but very different ones from those which
-I had expected. There had been a man in the room, and he had crossed
-the lawn coming from the road. I was able to obtain five very clear
-impressions of his foot-marks: one in the roadway itself, at the point
-where he had climbed the low wall, two on the lawn, and two very faint
-ones upon the stained boards near the window where he had entered.
-He had apparently rushed across the lawn, for his toe-marks were much
-deeper than his heels. But it was not the man who surprised me. It was
-his companion."
-
-"His companion!"
-
-Holmes pulled a large sheet of tissue-paper out of his pocket and
-carefully unfolded it upon his knee.
-
-"What do you make of that?" he asked.
-
-The paper was covered with he tracings of the foot-marks of some small
-animal. It had five well-marked foot-pads, an indication of long nails,
-and the whole print might be nearly as large as a dessert-spoon.
-
-"It's a dog," said I.
-
-"Did you ever hear of a dog running up a curtain? I found distinct
-traces that this creature had done so."
-
-"A monkey, then?"
-
-"But it is not the print of a monkey."
-
-"What can it be, then?"
-
-"Neither dog nor cat nor monkey nor any creature that we are familiar
-with. I have tried to reconstruct it from the measurements. Here are
-four prints where the beast has been standing motionless. You see that
-it is no less than fifteen inches from fore-foot to hind. Add to that
-the length of neck and head, and you get a creature not much less than
-two feet long--probably more if there is any tail. But now observe this
-other measurement. The animal has been moving, and we have the length
-of its stride. In each case it is only about three inches. You have an
-indication, you see, of a long body with very short legs attached to it.
-It has not been considerate enough to leave any of its hair behind it.
-But its general shape must be what I have indicated, and it can run up a
-curtain, and it is carnivorous."
-
-"How do you deduce that?"
-
-"Because it ran up the curtain. A canary's cage was hanging in the
-window, and its aim seems to have been to get at the bird."
-
-"Then what was the beast?"
-
-"Ah, if I could give it a name it might go a long way towards solving
-the case. On the whole, it was probably some creature of the weasel and
-stoat tribe--and yet it is larger than any of these that I have seen."
-
-"But what had it to do with the crime?"
-
-"That, also, is still obscure. But we have learned a good deal, you
-perceive. We know that a man stood in the road looking at the quarrel
-between the Barclays--the blinds were up and the room lighted. We know,
-also, that he ran across the lawn, entered the room, accompanied by a
-strange animal, and that he either struck the Colonel or, as is equally
-possible, that the Colonel fell down from sheer fright at the sight of
-him, and cut his head on the corner of the fender. Finally, we have the
-curious fact that the intruder carried away the key with him when he
-left."
-
-"Your discoveries seem to have left the business more obscure that it
-was before," said I.
-
-"Quite so. They undoubtedly showed that the affair was much deeper than
-was at first conjectured. I thought the matter over, and I came to
-the conclusion that I must approach the case from another aspect. But
-really, Watson, I am keeping you up, and I might just as well tell you
-all this on our way to Aldershot to-morrow."
-
-"Thank you, you have gone rather too far to stop."
-
-"It is quite certain that when Mrs. Barclay left the house at half-past
-seven she was on good terms with her husband. She was never, as I think
-I have said, ostentatiously affectionate, but she was heard by the
-coachman chatting with the Colonel in a friendly fashion. Now, it was
-equally certain that, immediately on her return, she had gone to the
-room in which she was least likely to see her husband, had flown to tea
-as an agitated woman will, and finally, on his coming in to her, had
-broken into violent recriminations. Therefore something had occurred
-between seven-thirty and nine o'clock which had completely altered her
-feelings towards him. But Miss Morrison had been with her during the
-whole of that hour and a half. It was absolutely certain, therefore, in
-spite of her denial, that she must know something of the matter.
-
-"My first conjecture was, that possibly there had been some passages
-between this young lady and the old soldier, which the former had now
-confessed to the wife. That would account for the angry return, and
-also for the girl's denial that anything had occurred. Nor would it be
-entirely incompatible with most of the words overhead. But there was the
-reference to David, and there was the known affection of the Colonel for
-his wife, to weigh against it, to say nothing of the tragic intrusion
-of this other man, which might, of course, be entirely disconnected with
-what had gone before. It was not easy to pick one's steps, but, on the
-whole, I was inclined to dismiss the idea that there had been anything
-between the Colonel and Miss Morrison, but more than ever convinced that
-the young lady held the clue as to what it was which had turned Mrs.
-Barclay to hatred of her husband. I took the obvious course, therefore,
-of calling upon Miss M., of explaining to her that I was perfectly
-certain that she held the facts in her possession, and of assuring her
-that her friend, Mrs. Barclay, might find herself in the dock upon a
-capital charge unless the matter were cleared up.
-
-"Miss Morrison is a little ethereal slip of a girl, with timid eyes
-and blond hair, but I found her by no means wanting in shrewdness and
-common-sense. She sat thinking for some time after I had spoken, and
-then, turning to me with a brisk air of resolution, she broke into a
-remarkable statement which I will condense for your benefit.
-
-"'I promised my friend that I would say nothing of the matter, and a
-promise is a promise,' said she; 'but if I can really help her when
-so serious a charge is laid against her, and when her own mouth, poor
-darling, is closed by illness, then I think I am absolved from my
-promise. I will tell you exactly what happened upon Monday evening.
-
-"'We were returning from the Watt Street Mission about a quarter to nine
-o'clock. On our way we had to pass through Hudson Street, which is
-a very quiet thoroughfare. There is only one lamp in it, upon the
-left-hand side, and as we approached this lamp I saw a man coming
-towards us with his back very bent, and something like a box slung over
-one of his shoulders. He appeared to be deformed, for he carried his
-head low and walked with his knees bent. We were passing him when he
-raised his face to look at us in the circle of light thrown by the lamp,
-and as he did so he stopped and screamed out in a dreadful voice, "My
-God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
-fallen down had the dreadful-looking creature not caught hold of her. I
-was going to call for the police, but she, to my surprise, spoke quite
-civilly to the fellow.
-
-"'"I thought you had been dead this thirty years, Henry," said she, in a
-shaking voice.
-
-"'"So I have," said he, and it was awful to hear the tones that he said
-it in. He had a very dark, fearsome face, and a gleam in his eyes that
-comes back to me in my dreams. His hair and whiskers were shot with
-gray, and his face was all crinkled and puckered like a withered apple.
-
-"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
-a word with this man. There is nothing to be afraid of." She tried to
-speak boldly, but she was still deadly pale and could hardly get her
-words out for the trembling of her lips.
-
-"'I did as she asked me, and they talked together for a few minutes.
-Then she came down the street with her eyes blazing, and I saw the
-crippled wretch standing by the lamp-post and shaking his clenched fists
-in the air as if he were mad with rage. She never said a word until we
-were at the door here, when she took me by the hand and begged me to
-tell no one what had happened.
-
-"'"It's an old acquaintance of mine who has come down in the world,"
-said she. When I promised her I would say nothing she kissed me, and I
-have never seen her since. I have told you now the whole truth, and if
-I withheld it from the police it is because I did not realize then the
-danger in which my dear friend stood. I know that it can only be to her
-advantage that everything should be known.'
-
-"There was her statement, Watson, and to me, as you can imagine, it was
-like a light on a dark night. Everything which had been disconnected
-before began at once to assume its true place, and I had a shadowy
-presentiment of the whole sequence of events. My next step obviously was
-to find the man who had produced such a remarkable impression upon Mrs.
-Barclay. If he were still in Aldershot it should not be a very difficult
-matter. There are not such a very great number of civilians, and a
-deformed man was sure to have attracted attention. I spent a day in the
-search, and by evening--this very evening, Watson--I had run him down.
-The man's name is Henry Wood, and he lives in lodgings in this same
-street in which the ladies met him. He has only been five days in the
-place. In the character of a registration-agent I had a most interesting
-gossip with his landlady. The man is by trade a conjurer and performer,
-going round the canteens after nightfall, and giving a little
-entertainment at each. He carries some creature about with him in that
-box; about which the landlady seemed to be in considerable trepidation,
-for she had never seen an animal like it. He uses it in some of his
-tricks according to her account. So much the woman was able to tell me,
-and also that it was a wonder the man lived, seeing how twisted he was,
-and that he spoke in a strange tongue sometimes, and that for the last
-two nights she had heard him groaning and weeping in his bedroom. He
-was all right, as far as money went, but in his deposit he had given her
-what looked like a bad florin. She showed it to me, Watson, and it was
-an Indian rupee.
-
-"So now, my dear fellow, you see exactly how we stand and why it is I
-want you. It is perfectly plain that after the ladies parted from this
-man he followed them at a distance, that he saw the quarrel between
-husband and wife through the window, that he rushed in, and that
-the creature which he carried in his box got loose. That is all very
-certain. But he is the only person in this world who can tell us exactly
-what happened in that room."
-
-"And you intend to ask him?"
-
-"Most certainly--but in the presence of a witness."
-
-"And I am the witness?"
-
-"If you will be so good. If he can clear the matter up, well and good.
-If he refuses, we have no alternative but to apply for a warrant."
-
-"But how do you know he'll be there when we return?"
-
-"You may be sure that I took some precautions. I have one of my Baker
-Street boys mounting guard over him who would stick to him like a burr,
-go where he might. We shall find him in Hudson Street to-morrow, Watson,
-and meanwhile I should be the criminal myself if I kept you out of bed
-any longer."
-
-It was midday when we found ourselves at the scene of the tragedy, and,
-under my companion's guidance, we made our way at once to Hudson Street.
-In spite of his capacity for concealing his emotions, I could easily see
-that Holmes was in a state of suppressed excitement, while I was myself
-tingling with that half-sporting, half-intellectual pleasure which
-I invariably experienced when I associated myself with him in his
-investigations.
-
-"This is the street," said he, as we turned into a short thoroughfare
-lined with plain two-storied brick houses. "Ah, here is Simpson to
-report."
-
-"He's in all right, Mr. Holmes," cried a small street Arab, running up
-to us.
-
-"Good, Simpson!" said Holmes, patting him on the head. "Come along,
-Watson. This is the house." He sent in his card with a message that he
-had come on important business, and a moment later we were face to face
-with the man whom we had come to see. In spite of the warm weather he
-was crouching over a fire, and the little room was like an oven. The
-man sat all twisted and huddled in his chair in a way which gave an
-indescribably impression of deformity; but the face which he turned
-towards us, though worn and swarthy, must at some time have been
-remarkable for its beauty. He looked suspiciously at us now out of
-yellow-shot, bilious eyes, and, without speaking or rising, he waved
-towards two chairs.
-
-"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
-come over this little matter of Colonel Barclay's death."
-
-"What should I know about that?"
-
-"That's what I want to ascertain. You know, I suppose, that unless the
-matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
-in all probability be tried for murder."
-
-The man gave a violent start.
-
-"I don't know who you are," he cried, "nor how you come to know what you
-do know, but will you swear that this is true that you tell me?"
-
-"Why, they are only waiting for her to come to her senses to arrest
-her."
-
-"My God! Are you in the police yourself?"
-
-"No."
-
-"What business is it of yours, then?"
-
-"It's every man's business to see justice done."
-
-"You can take my word that she is innocent."
-
-"Then you are guilty."
-
-"No, I am not."
-
-"Who killed Colonel James Barclay, then?"
-
-"It was a just providence that killed him. But, mind you this, that if
-I had knocked his brains out, as it was in my heart to do, he would have
-had no more than his due from my hands. If his own guilty conscience had
-not struck him down it is likely enough that I might have had his blood
-upon my soul. You want me to tell the story. Well, I don't know why I
-shouldn't, for there's no cause for me to be ashamed of it.
-
-"It was in this way, sir. You see me now with my back like a camel and
-my ribs all awry, but there was a time when Corporal Henry Wood was the
-smartest man in the 117th foot. We were in India then, in cantonments,
-at a place we'll call Bhurtee. Barclay, who died the other day, was
-sergeant in the same company as myself, and the belle of the regiment,
-ay, and the finest girl that ever had the breath of life between her
-lips, was Nancy Devoy, the daughter of the color-sergeant. There were
-two men that loved her, and one that she loved, and you'll smile when
-you look at this poor thing huddled before the fire, and hear me say
-that it was for my good looks that she loved me.
-
-"Well, though I had her heart, her father was set upon her marrying
-Barclay. I was a harum-scarum, reckless lad, and he had had an
-education, and was already marked for the sword-belt. But the girl held
-true to me, and it seemed that I would have had her when the Mutiny
-broke out, and all hell was loose in the country.
-
-"We were shut up in Bhurtee, the regiment of us with half a battery of
-artillery, a company of Sikhs, and a lot of civilians and women-folk.
-There were ten thousand rebels round us, and they were as keen as a set
-of terriers round a rat-cage. About the second week of it our water gave
-out, and it was a question whether we could communicate with General
-Neill's column, which was moving up country. It was our only chance, for
-we could not hope to fight our way out with all the women and children,
-so I volunteered to go out and to warn General Neill of our danger. My
-offer was accepted, and I talked it over with Sergeant Barclay, who was
-supposed to know the ground better than any other man, and who drew up
-a route by which I might get through the rebel lines. At ten o'clock the
-same night I started off upon my journey. There were a thousand lives to
-save, but it was of only one that I was thinking when I dropped over the
-wall that night.
-
-"My way ran down a dried-up watercourse, which we hoped would screen
-me from the enemy's sentries; but as I crept round the corner of it
-I walked right into six of them, who were crouching down in the dark
-waiting for me. In an instant I was stunned with a blow and bound hand
-and foot. But the real blow was to my heart and not to my head, for as
-I came to and listened to as much as I could understand of their talk,
-I heard enough to tell me that my comrade, the very man who had arranged
-the way that I was to take, had betrayed me by means of a native servant
-into the hands of the enemy.
-
-"Well, there's no need for me to dwell on that part of it. You know now
-what James Barclay was capable of. Bhurtee was relieved by Neill next
-day, but the rebels took me away with them in their retreat, and it was
-many a long year before ever I saw a white face again. I was tortured
-and tried to get away, and was captured and tortured again. You can see
-for yourselves the state in which I was left. Some of them that fled
-into Nepaul took me with them, and then afterwards I was up past
-Darjeeling. The hill-folk up there murdered the rebels who had me, and
-I became their slave for a time until I escaped; but instead of going
-south I had to go north, until I found myself among the Afghans. There
-I wandered about for many a year, and at last came back to the Punjab,
-where I lived mostly among the natives and picked up a living by the
-conjuring tricks that I had learned. What use was it for me, a wretched
-cripple, to go back to England or to make myself known to my old
-comrades? Even my wish for revenge would not make me do that. I had
-rather that Nancy and my old pals should think of Harry Wood as having
-died with a straight back, than see him living and crawling with a stick
-like a chimpanzee. They never doubted that I was dead, and I meant that
-they never should. I heard that Barclay had married Nancy, and that he
-was rising rapidly in the regiment, but even that did not make me speak.
-
-"But when one gets old one has a longing for home. For years I've been
-dreaming of the bright green fields and the hedges of England. At last I
-determined to see them before I died. I saved enough to bring me across,
-and then I came here where the soldiers are, for I know their ways and
-how to amuse them and so earn enough to keep me."
-
-"Your narrative is most interesting," said Sherlock Holmes. "I have
-already heard of your meeting with Mrs. Barclay, and your mutual
-recognition. You then, as I understand, followed her home and saw
-through the window an altercation between her husband and her, in which
-she doubtless cast his conduct to you in his teeth. Your own feelings
-overcame you, and you ran across the lawn and broke in upon them."
-
-"I did, sir, and at the sight of me he looked as I have never seen a man
-look before, and over he went with his head on the fender. But he was
-dead before he fell. I read death on his face as plain as I can read
-that text over the fire. The bare sight of me was like a bullet through
-his guilty heart."
-
-"And then?"
-
-"Then Nancy fainted, and I caught up the key of the door from her hand,
-intending to unlock it and get help. But as I was doing it it seemed to
-me better to leave it alone and get away, for the thing might look black
-against me, and any way my secret would be out if I were taken. In my
-haste I thrust the key into my pocket, and dropped my stick while I was
-chasing Teddy, who had run up the curtain. When I got him into his box,
-from which he had slipped, I was off as fast as I could run."
-
-"Who's Teddy?" asked Holmes.
-
-The man leaned over and pulled up the front of a kind of hutch in
-the corner. In an instant out there slipped a beautiful reddish-brown
-creature, thin and lithe, with the legs of a stoat, a long, thin nose,
-and a pair of the finest red eyes that ever I saw in an animal's head.
-
-"It's a mongoose," I cried.
-
-"Well, some call them that, and some call them ichneumon," said the
-man. "Snake-catcher is what I call them, and Teddy is amazing quick on
-cobras. I have one here without the fangs, and Teddy catches it every
-night to please the folk in the canteen.
-
-"Any other point, sir?"
-
-"Well, we may have to apply to you again if Mrs. Barclay should prove to
-be in serious trouble."
-
-"In that case, of course, I'd come forward."
-
-"But if not, there is no object in raking up this scandal against a
-dead man, foully as he has acted. You have at least the satisfaction
-of knowing that for thirty years of his life his conscience bitterly
-reproached him for this wicked deed. Ah, there goes Major Murphy on the
-other side of the street. Good-by, Wood. I want to learn if anything has
-happened since yesterday."
-
-We were in time to overtake the major before he reached the corner.
-
-"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
-come to nothing?"
-
-"What then?"
-
-"The inquest is just over. The medical evidence showed conclusively
-that death was due to apoplexy. You see it was quite a simple case after
-all."
-
-"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
-don't think we shall be wanted in Aldershot any more."
-
-"There's one thing," said I, as we walked down to the station. "If the
-husband's name was James, and the other was Henry, what was this talk
-about David?"
-
-"That one word, my dear Watson, should have told me the whole story had
-I been the ideal reasoner which you are so fond of depicting. It was
-evidently a term of reproach."
-
-"Of reproach?"
-
-"Yes; David strayed a little occasionally, you know, and on one occasion
-in the same direction as Sergeant James Barclay. You remember the small
-affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
-I fear, but you will find the story in the first or second of Samuel."
-
-
-
-
-Adventure VIII. The Resident Patient
-
-
-Glancing over the somewhat incoherent series of Memoirs with which I
-have endeavored to illustrate a few of the mental peculiarities of my
-friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
-have experienced in picking out examples which shall in every way answer
-my purpose. For in those cases in which Holmes has performed some tour
-de force of analytical reasoning, and has demonstrated the value of his
-peculiar methods of investigation, the facts themselves have often been
-so slight or so commonplace that I could not feel justified in laying
-them before the public. On the other hand, it has frequently happened
-that he has been concerned in some research where the facts have been of
-the most remarkable and dramatic character, but where the share which he
-has himself taken in determining their causes has been less pronounced
-than I, as his biographer, could wish. The small matter which I have
-chronicled under the heading of "A Study in Scarlet," and that other
-later one connected with the loss of the Gloria Scott, may serve as
-examples of this Scylla and Charybdis which are forever threatening the
-historian. It may be that in the business of which I am now about to
-write the part which my friend played is not sufficiently accentuated;
-and yet the whole train of circumstances is so remarkable that I cannot
-bring myself to omit it entirely from this series.
-
-It had been a close, rainy day in October. Our blinds were half-drawn,
-and Holmes lay curled upon the sofa, reading and re-reading a letter
-which he had received by the morning post. For myself, my term of
-service in India had trained me to stand heat better than cold, and
-a thermometer of 90 was no hardship. But the paper was uninteresting.
-Parliament had risen. Everybody was out of town, and I yearned for the
-glades of the New Forest or the shingle of Southsea. A depleted bank
-account had caused me to postpone my holiday, and as to my companion,
-neither the country nor the sea presented the slightest attraction to
-him. He loved to lie in the very centre of five millions of people, with
-his filaments stretching out and running through them, responsive to
-every little rumor or suspicion of unsolved crime. Appreciation of
-Nature found no place among his many gifts, and his only change was
-when he turned his mind from the evil-doer of the town to track down his
-brother of the country.
-
-Finding that Holmes was too absorbed for conversation, I had tossed
-aside the barren paper, and leaning back in my chair, I fell into a
-brown study. Suddenly my companion's voice broke in upon my thoughts.
-
-"You are right, Watson," said he. "It does seem a very preposterous way
-of settling a dispute."
-
-"Most preposterous!" I exclaimed, and then, suddenly realizing how
-he had echoed the inmost thought of my soul, I sat up in my chair and
-stared at him in blank amazement.
-
-"What is this, Holmes?" I cried. "This is beyond anything which I could
-have imagined."
-
-He laughed heartily at my perplexity.
-
-"You remember," said he, "that some little time ago, when I read you the
-passage in one of Poe's sketches, in which a close reasoner follows the
-unspoken thought of his companion, you were inclined to treat the
-matter as a mere tour de force of the author. On my remarking that I
-was constantly in the habit of doing the same thing you expressed
-incredulity."
-
-"Oh, no!"
-
-"Perhaps not with your tongue, my dear Watson, but certainly with your
-eyebrows. So when I saw you throw down your paper and enter upon a train
-of thought, I was very happy to have the opportunity of reading it
-off, and eventually of breaking into it, as a proof that I had been in
-rapport with you."
-
-But I was still far from satisfied. "In the example which you read to
-me," said I, "the reasoner drew his conclusions from the actions of the
-man whom he observed. If I remember right, he stumbled over a heap
-of stones, looked up at the stars, and so on. But I have been seated
-quietly in my chair, and what clues can I have given you?"
-
-"You do yourself an injustice. The features are given to man as the
-means by which he shall express his emotions, and yours are faithful
-servants."
-
-"Do you mean to say that you read my train of thoughts from my
-features?"
-
-"Your features, and especially your eyes. Perhaps you cannot yourself
-recall how your reverie commenced?"
-
-"No, I cannot."
-
-"Then I will tell you. After throwing down your paper, which was the
-action which drew my attention to you, you sat for half a minute with
-a vacant expression. Then your eyes fixed themselves upon your
-newly-framed picture of General Gordon, and I saw by the alteration in
-your face that a train of thought had been started. But it did not lead
-very far. Your eyes turned across to the unframed portrait of Henry Ward
-Beecher which stands upon the top of your books. You then glanced up at
-the wall, and of course your meaning was obvious. You were thinking
-that if the portrait were framed it would just cover that bare space and
-correspond with Gordon's picture over there."
-
-"You have followed me wonderfully!" I exclaimed.
-
-"So far I could hardly have gone astray. But now your thoughts went
-back to Beecher, and you looked hard across as if you were studying
-the character in his features. Then your eyes ceased to pucker, but
-you continued to look across, and your face was thoughtful. You were
-recalling the incidents of Beecher's career. I was well aware that you
-could not do this without thinking of the mission which he undertook
-on behalf of the North at the time of the Civil War, for I remember
-you expressing your passionate indignation at the way in which he was
-received by the more turbulent of our people. You felt so strongly about
-it that I knew you could not think of Beecher without thinking of that
-also. When a moment later I saw your eyes wander away from the picture,
-I suspected that your mind had now turned to the Civil War, and when
-I observed that your lips set, your eyes sparkled, and your hands
-clinched, I was positive that you were indeed thinking of the gallantry
-which was shown by both sides in that desperate struggle. But then,
-again, your face grew sadder; you shook your head. You were dwelling
-upon the sadness and horror and useless waste of life. Your hand stole
-towards your own old wound, and a smile quivered on your lips,
-which showed me that the ridiculous side of this method of settling
-international questions had forced itself upon your mind. At this point
-I agreed with you that it was preposterous, and was glad to find that
-all my deductions had been correct."
-
-"Absolutely!" said I. "And now that you have explained it, I confess
-that I am as amazed as before."
-
-"It was very superficial, my dear Watson, I assure you. I should not
-have intruded it upon your attention had you not shown some incredulity
-the other day. But the evening has brought a breeze with it. What do you
-say to a ramble through London?"
-
-I was weary of our little sitting-room and gladly acquiesced. For
-three hours we strolled about together, watching the ever-changing
-kaleidoscope of life as it ebbs and flows through Fleet Street and the
-Strand. His characteristic talk, with its keen observance of detail
-and subtle power of inference held me amused and enthralled. It was ten
-o'clock before we reached Baker Street again. A brougham was waiting at
-our door.
-
-"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
-been long in practice, but has had a good deal to do. Come to consult
-us, I fancy! Lucky we came back!"
-
-I was sufficiently conversant with Holmes's methods to be able to follow
-his reasoning, and to see that the nature and state of the various
-medical instruments in the wicker basket which hung in the lamplight
-inside the brougham had given him the data for his swift deduction.
-The light in our window above showed that this late visit was indeed
-intended for us. With some curiosity as to what could have sent a
-brother medico to us at such an hour, I followed Holmes into our
-sanctum.
-
-A pale, taper-faced man with sandy whiskers rose up from a chair by the
-fire as we entered. His age may not have been more than three or four
-and thirty, but his haggard expression and unhealthy hue told of a life
-which has sapped his strength and robbed him of his youth. His manner
-was nervous and shy, like that of a sensitive gentleman, and the thin
-white hand which he laid on the mantelpiece as he rose was that of an
-artist rather than of a surgeon. His dress was quiet and sombre--a black
-frock-coat, dark trousers, and a touch of color about his necktie.
-
-"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
-you have only been waiting a very few minutes."
-
-"You spoke to my coachman, then?"
-
-"No, it was the candle on the side-table that told me. Pray resume your
-seat and let me know how I can serve you."
-
-"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
-403 Brook Street."
-
-"Are you not the author of a monograph upon obscure nervous lesions?" I
-asked.
-
-His pale cheeks flushed with pleasure at hearing that his work was known
-to me.
-
-"I so seldom hear of the work that I thought it was quite dead," said
-he. "My publishers gave me a most discouraging account of its sale. You
-are yourself, I presume, a medical man?"
-
-"A retired army surgeon."
-
-"My own hobby has always been nervous disease. I should wish to make it
-an absolute specialty, but, of course, a man must take what he can get
-at first. This, however, is beside the question, Mr. Sherlock Holmes,
-and I quite appreciate how valuable your time is. The fact is that a
-very singular train of events has occurred recently at my house in Brook
-Street, and to-night they came to such a head that I felt it was quite
-impossible for me to wait another hour before asking for your advice and
-assistance."
-
-Sherlock Holmes sat down and lit his pipe. "You are very welcome
-to both," said he. "Pray let me have a detailed account of what the
-circumstances are which have disturbed you."
-
-"One or two of them are so trivial," said Dr. Trevelyan, "that really
-I am almost ashamed to mention them. But the matter is so inexplicable,
-and the recent turn which it has taken is so elaborate, that I shall
-lay it all before you, and you shall judge what is essential and what is
-not.
-
-"I am compelled, to begin with, to say something of my own college
-career. I am a London University man, you know, and I am sure that your
-will not think that I am unduly singing my own praises if I say that my
-student career was considered by my professors to be a very promising
-one. After I had graduated I continued to devote myself to research,
-occupying a minor position in King's College Hospital, and I was
-fortunate enough to excite considerable interest by my research into the
-pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
-medal by the monograph on nervous lesions to which your friend has
-just alluded. I should not go too far if I were to say that there was a
-general impression at that time that a distinguished career lay before
-me.
-
-"But the one great stumbling-block lay in my want of capital. As you
-will readily understand, a specialist who aims high is compelled to
-start in one of a dozen streets in the Cavendish Square quarter, all
-of which entail enormous rents and furnishing expenses. Besides this
-preliminary outlay, he must be prepared to keep himself for some years,
-and to hire a presentable carriage and horse. To do this was quite
-beyond my power, and I could only hope that by economy I might in ten
-years' time save enough to enable me to put up my plate. Suddenly,
-however, an unexpected incident opened up quite a new prospect to me.
-
-"This was a visit from a gentleman of the name of Blessington, who was a
-complete stranger to me. He came up to my room one morning, and plunged
-into business in an instant.
-
-"'You are the same Percy Trevelyan who has had so distinguished a career
-and won a great prize lately?' said he.
-
-"I bowed.
-
-"'Answer me frankly,' he continued, 'for you will find it to your
-interest to do so. You have all the cleverness which makes a successful
-man. Have you the tact?'
-
-"I could not help smiling at the abruptness of the question.
-
-"'I trust that I have my share,' I said.
-
-"'Any bad habits? Not drawn towards drink, eh?'
-
-"'Really, sir!' I cried.
-
-"'Quite right! That's all right! But I was bound to ask. With all these
-qualities, why are you not in practice?'
-
-"I shrugged my shoulders.
-
-"'Come, come!' said he, in his bustling way. 'It's the old story. More
-in your brains than in your pocket, eh? What would you say if I were to
-start you in Brook Street?'
-
-"I stared at him in astonishment.
-
-"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
-frank with you, and if it suits you it will suit me very well. I have a
-few thousands to invest, d'ye see, and I think I'll sink them in you.'
-
-"'But why?' I gasped.
-
-"'Well, it's just like any other speculation, and safer than most.'
-
-"'What am I to do, then?'
-
-"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
-the whole place. All you have to do is just to wear out your chair in
-the consulting-room. I'll let you have pocket-money and everything. Then
-you hand over to me three quarters of what you earn, and you keep the
-other quarter for yourself.'
-
-"This was the strange proposal, Mr. Holmes, with which the man
-Blessington approached me. I won't weary you with the account of how
-we bargained and negotiated. It ended in my moving into the house next
-Lady-day, and starting in practice on very much the same conditions as
-he had suggested. He came himself to live with me in the character of a
-resident patient. His heart was weak, it appears, and he needed constant
-medical supervision. He turned the two best rooms of the first floor
-into a sitting-room and bedroom for himself. He was a man of singular
-habits, shunning company and very seldom going out. His life was
-irregular, but in one respect he was regularity itself. Every evening,
-at the same hour, he walked into the consulting-room, examined the
-books, put down five and three-pence for every guinea that I had earned,
-and carried the rest off to the strong-box in his own room.
-
-"I may say with confidence that he never had occasion to regret his
-speculation. From the first it was a success. A few good cases and the
-reputation which I had won in the hospital brought me rapidly to the
-front, and during the last few years I have made him a rich man.
-
-"So much, Mr. Holmes, for my past history and my relations with Mr.
-Blessington. It only remains for me now to tell you what has occurred to
-bring me here to-night.
-
-"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
-a state of considerable agitation. He spoke of some burglary which, he
-said, had been committed in the West End, and he appeared, I remember,
-to be quite unnecessarily excited about it, declaring that a day should
-not pass before we should add stronger bolts to our windows and doors.
-For a week he continued to be in a peculiar state of restlessness,
-peering continually out of the windows, and ceasing to take the short
-walk which had usually been the prelude to his dinner. From his manner
-it struck me that he was in mortal dread of something or somebody, but
-when I questioned him upon the point he became so offensive that I was
-compelled to drop the subject. Gradually, as time passed, his fears
-appeared to die away, and he had renewed his former habits, when a fresh
-event reduced him to the pitiable state of prostration in which he now
-lies.
-
-"What happened was this. Two days ago I received the letter which I now
-read to you. Neither address nor date is attached to it.
-
-"'A Russian nobleman who is now resident in England,' it runs, 'would
-be glad to avail himself of the professional assistance of Dr. Percy
-Trevelyan. He has been for some years a victim to cataleptic attacks, on
-which, as is well known, Dr. Trevelyan is an authority. He proposes to
-call at about quarter past six to-morrow evening, if Dr. Trevelyan will
-make it convenient to be at home.'
-
-"This letter interested me deeply, because the chief difficulty in the
-study of catalepsy is the rareness of the disease. You may believe,
-then, that I was in my consulting-room when, at the appointed hour, the
-page showed in the patient.
-
-"He was an elderly man, thin, demure, and commonplace--by no means the
-conception one forms of a Russian nobleman. I was much more struck by
-the appearance of his companion. This was a tall young man, surprisingly
-handsome, with a dark, fierce face, and the limbs and chest of a
-Hercules. He had his hand under the other's arm as they entered, and
-helped him to a chair with a tenderness which one would hardly have
-expected from his appearance.
-
-"'You will excuse my coming in, doctor,' said he to me, speaking English
-with a slight lisp. 'This is my father, and his health is a matter of
-the most overwhelming importance to me.'
-
-"I was touched by this filial anxiety. 'You would, perhaps, care to
-remain during the consultation?' said I.
-
-"'Not for the world,' he cried with a gesture of horror. 'It is more
-painful to me than I can express. If I were to see my father in one of
-these dreadful seizures I am convinced that I should never survive
-it. My own nervous system is an exceptionally sensitive one. With your
-permission, I will remain in the waiting-room while you go into my
-father's case.'
-
-"To this, of course, I assented, and the young man withdrew. The patient
-and I then plunged into a discussion of his case, of which I took
-exhaustive notes. He was not remarkable for intelligence, and his
-answers were frequently obscure, which I attributed to his limited
-acquaintance with our language. Suddenly, however, as I sat writing,
-he ceased to give any answer at all to my inquiries, and on my turning
-towards him I was shocked to see that he was sitting bolt upright in his
-chair, staring at me with a perfectly blank and rigid face. He was again
-in the grip of his mysterious malady.
-
-"My first feeling, as I have just said, was one of pity and horror.
-My second, I fear, was rather one of professional satisfaction. I made
-notes of my patient's pulse and temperature, tested the rigidity of his
-muscles, and examined his reflexes. There was nothing markedly abnormal
-in any of these conditions, which harmonized with my former experiences.
-I had obtained good results in such cases by the inhalation of nitrite
-of amyl, and the present seemed an admirable opportunity of testing
-its virtues. The bottle was downstairs in my laboratory, so leaving my
-patient seated in his chair, I ran down to get it. There was some little
-delay in finding it--five minutes, let us say--and then I returned.
-Imagine my amazement to find the room empty and the patient gone.
-
-"Of course, my first act was to run into the waiting-room. The son had
-gone also. The hall door had been closed, but not shut. My page who
-admits patients is a new boy and by no means quick. He waits downstairs,
-and runs up to show patients out when I ring the consulting-room bell.
-He had heard nothing, and the affair remained a complete mystery. Mr.
-Blessington came in from his walk shortly afterwards, but I did not say
-anything to him upon the subject, for, to tell the truth, I have got in
-the way of late of holding as little communication with him as possible.
-
-"Well, I never thought that I should see anything more of the Russian
-and his son, so you can imagine my amazement when, at the very same hour
-this evening, they both came marching into my consulting-room, just as
-they had done before.
-
-"'I feel that I owe you a great many apologies for my abrupt departure
-yesterday, doctor,' said my patient.
-
-"'I confess that I was very much surprised at it,' said I.
-
-"'Well, the fact is,' he remarked, 'that when I recover from these
-attacks my mind is always very clouded as to all that has gone before. I
-woke up in a strange room, as it seemed to me, and made my way out into
-the street in a sort of dazed way when you were absent.'
-
-"'And I,' said the son, 'seeing my father pass the door of the
-waiting-room, naturally thought that the consultation had come to an
-end. It was not until we had reached home that I began to realize the
-true state of affairs.'
-
-"'Well,' said I, laughing, 'there is no harm done except that you
-puzzled me terribly; so if you, sir, would kindly step into the
-waiting-room I shall be happy to continue our consultation which was
-brought to so abrupt an ending.'
-
-"'For half an hour or so I discussed that old gentleman's symptoms with
-him, and then, having prescribed for him, I saw him go off upon the arm
-of his son.
-
-"I have told you that Mr. Blessington generally chose this hour of the
-day for his exercise. He came in shortly afterwards and passed upstairs.
-An instant later I heard him running down, and he burst into my
-consulting-room like a man who is mad with panic.
-
-"'Who has been in my room?' he cried.
-
-"'No one,' said I.
-
-"'It's a lie! He yelled. 'Come up and look!'
-
-"I passed over the grossness of his language, as he seemed half out of
-his mind with fear. When I went upstairs with him he pointed to several
-footprints upon the light carpet.
-
-"'D'you mean to say those are mine?' he cried.
-
-"They were certainly very much larger than any which he could have made,
-and were evidently quite fresh. It rained hard this afternoon, as you
-know, and my patients were the only people who called. It must have been
-the case, then, that the man in the waiting-room had, for some unknown
-reason, while I was busy with the other, ascended to the room of my
-resident patient. Nothing had been touched or taken, but there were the
-footprints to prove that the intrusion was an undoubted fact.
-
-"Mr. Blessington seemed more excited over the matter than I should have
-thought possible, though of course it was enough to disturb anybody's
-peace of mind. He actually sat crying in an arm-chair, and I could
-hardly get him to speak coherently. It was his suggestion that I should
-come round to you, and of course I at once saw the propriety of it,
-for certainly the incident is a very singular one, though he appears to
-completely overrate its importance. If you would only come back with me
-in my brougham, you would at least be able to soothe him, though I
-can hardly hope that you will be able to explain this remarkable
-occurrence."
-
-Sherlock Holmes had listened to this long narrative with an intentness
-which showed me that his interest was keenly aroused. His face was as
-impassive as ever, but his lids had drooped more heavily over his eyes,
-and his smoke had curled up more thickly from his pipe to emphasize each
-curious episode in the doctor's tale. As our visitor concluded, Holmes
-sprang up without a word, handed me my hat, picked his own from the
-table, and followed Dr. Trevelyan to the door. Within a quarter of an
-hour we had been dropped at the door of the physician's residence
-in Brook Street, one of those sombre, flat-faced houses which one
-associates with a West-End practice. A small page admitted us, and we
-began at once to ascend the broad, well-carpeted stair.
-
-But a singular interruption brought us to a standstill. The light at
-the top was suddenly whisked out, and from the darkness came a reedy,
-quivering voice.
-
-"I have a pistol," it cried. "I give you my word that I'll fire if you
-come any nearer."
-
-"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
-
-"Oh, then it is you, doctor," said the voice, with a great heave of
-relief. "But those other gentlemen, are they what they pretend to be?"
-
-We were conscious of a long scrutiny out of the darkness.
-
-"Yes, yes, it's all right," said the voice at last. "You can come up,
-and I am sorry if my precautions have annoyed you."
-
-He relit the stair gas as he spoke, and we saw before us a
-singular-looking man, whose appearance, as well as his voice, testified
-to his jangled nerves. He was very fat, but had apparently at some time
-been much fatter, so that the skin hung about his face in loose pouches,
-like the cheeks of a blood-hound. He was of a sickly color, and his
-thin, sandy hair seemed to bristle up with the intensity of his emotion.
-In his hand he held a pistol, but he thrust it into his pocket as we
-advanced.
-
-"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
-to you for coming round. No one ever needed your advice more than I do.
-I suppose that Dr. Trevelyan has told you of this most unwarrantable
-intrusion into my rooms."
-
-"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
-do they wish to molest you?"
-
-"Well, well," said the resident patient, in a nervous fashion, "of
-course it is hard to say that. You can hardly expect me to answer that,
-Mr. Holmes."
-
-"Do you mean that you don't know?"
-
-"Come in here, if you please. Just have the kindness to step in here."
-
-He led the way into his bedroom, which was large and comfortably
-furnished.
-
-"You see that," said he, pointing to a big black box at the end of his
-bed. "I have never been a very rich man, Mr. Holmes--never made but
-one investment in my life, as Dr. Trevelyan would tell you. But I don't
-believe in bankers. I would never trust a banker, Mr. Holmes. Between
-ourselves, what little I have is in that box, so you can understand what
-it means to me when unknown people force themselves into my rooms."
-
-Holmes looked at Blessington in his questioning way and shook his head.
-
-"I cannot possibly advise you if you try to deceive me," said he.
-
-"But I have told you everything."
-
-Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
-Trevelyan," said he.
-
-"And no advice for me?" cried Blessington, in a breaking voice.
-
-"My advice to you, sir, is to speak the truth."
-
-A minute later we were in the street and walking for home. We had
-crossed Oxford Street and were half way down Harley Street before I
-could get a word from my companion.
-
-"Sorry to bring you out on such a fool's errand, Watson," he said at
-last. "It is an interesting case, too, at the bottom of it."
-
-"I can make little of it," I confessed.
-
-"Well, it is quite evident that there are two men--more, perhaps, but
-at least two--who are determined for some reason to get at this fellow
-Blessington. I have no doubt in my mind that both on the first and on
-the second occasion that young man penetrated to Blessington's room,
-while his confederate, by an ingenious device, kept the doctor from
-interfering."
-
-"And the catalepsy?"
-
-"A fraudulent imitation, Watson, though I should hardly dare to hint as
-much to our specialist. It is a very easy complaint to imitate. I have
-done it myself."
-
-"And then?"
-
-"By the purest chance Blessington was out on each occasion. Their reason
-for choosing so unusual an hour for a consultation was obviously to
-insure that there should be no other patient in the waiting-room. It
-just happened, however, that this hour coincided with Blessington's
-constitutional, which seems to show that they were not very well
-acquainted with his daily routine. Of course, if they had been merely
-after plunder they would at least have made some attempt to search for
-it. Besides, I can read in a man's eye when it is his own skin that he
-is frightened for. It is inconceivable that this fellow could have made
-two such vindictive enemies as these appear to be without knowing of it.
-I hold it, therefore, to be certain that he does know who these men are,
-and that for reasons of his own he suppresses it. It is just possible
-that to-morrow may find him in a more communicative mood."
-
-"Is there not one alternative," I suggested, "grotesquely improbably,
-no doubt, but still just conceivable? Might the whole story of the
-cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
-has, for his own purposes, been in Blessington's rooms?"
-
-I saw in the gaslight that Holmes wore an amused smile at this brilliant
-departure of mine.
-
-"My dear fellow," said he, "it was one of the first solutions which
-occurred to me, but I was soon able to corroborate the doctor's tale.
-This young man has left prints upon the stair-carpet which made it quite
-superfluous for me to ask to see those which he had made in the room.
-When I tell you that his shoes were square-toed instead of being pointed
-like Blessington's, and were quite an inch and a third longer than the
-doctor's, you will acknowledge that there can be no doubt as to his
-individuality. But we may sleep on it now, for I shall be surprised if
-we do not hear something further from Brook Street in the morning."
-
-
-Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
-fashion. At half-past seven next morning, in the first glimmer of
-daylight, I found him standing by my bedside in his dressing-gown.
-
-"There's a brougham waiting for us, Watson," said he.
-
-"What's the matter, then?"
-
-"The Brook Street business."
-
-"Any fresh news?"
-
-"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
-sheet from a note-book, with 'For God's sake come at once--P. T.,'
-scrawled upon it in pencil. Our friend, the doctor, was hard put to
-it when he wrote this. Come along, my dear fellow, for it's an urgent
-call."
-
-In a quarter of an hour or so we were back at the physician's house. He
-came running out to meet us with a face of horror.
-
-"Oh, such a business!" he cried, with his hands to his temples.
-
-"What then?"
-
-"Blessington has committed suicide!"
-
-Holmes whistled.
-
-"Yes, he hanged himself during the night."
-
-We had entered, and the doctor had preceded us into what was evidently
-his waiting-room.
-
-"I really hardly know what I am doing," he cried. "The police are
-already upstairs. It has shaken me most dreadfully."
-
-"When did you find it out?"
-
-"He has a cup of tea taken in to him early every morning. When the maid
-entered, about seven, there the unfortunate fellow was hanging in the
-middle of the room. He had tied his cord to the hook on which the heavy
-lamp used to hang, and he had jumped off from the top of the very box
-that he showed us yesterday."
-
-Holmes stood for a moment in deep thought.
-
-"With your permission," said he at last, "I should like to go upstairs
-and look into the matter."
-
-We both ascended, followed by the doctor.
-
-It was a dreadful sight which met us as we entered the bedroom door. I
-have spoken of the impression of flabbiness which this man Blessington
-conveyed. As he dangled from the hook it was exaggerated and intensified
-until he was scarce human in his appearance. The neck was drawn out
-like a plucked chicken's, making the rest of him seem the more obese and
-unnatural by the contrast. He was clad only in his long night-dress, and
-his swollen ankles and ungainly feet protruded starkly from beneath it.
-Beside him stood a smart-looking police-inspector, who was taking notes
-in a pocket-book.
-
-"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
-delighted to see you."
-
-"Good-morning, Lanner," answered Holmes; "you won't think me an
-intruder, I am sure. Have you heard of the events which led up to this
-affair?"
-
-"Yes, I heard something of them."
-
-"Have you formed any opinion?"
-
-"As far as I can see, the man has been driven out of his senses by
-fright. The bed has been well slept in, you see. There's his impression
-deep enough. It's about five in the morning, you know, that suicides are
-most common. That would be about his time for hanging himself. It seems
-to have been a very deliberate affair."
-
-"I should say that he has been dead about three hours, judging by the
-rigidity of the muscles," said I.
-
-"Noticed anything peculiar about the room?" asked Holmes.
-
-"Found a screw-driver and some screws on the wash-hand stand. Seems to
-have smoked heavily during the night, too. Here are four cigar-ends that
-I picked out of the fireplace."
-
-"Hum!" said Holmes, "have you got his cigar-holder?"
-
-"No, I have seen none."
-
-"His cigar-case, then?"
-
-"Yes, it was in his coat-pocket."
-
-Holmes opened it and smelled the single cigar which it contained.
-
-"Oh, this is an Havana, and these others are cigars of the peculiar sort
-which are imported by the Dutch from their East Indian colonies. They
-are usually wrapped in straw, you know, and are thinner for their length
-than any other brand." He picked up the four ends and examined them with
-his pocket-lens.
-
-"Two of these have been smoked from a holder and two without," said he.
-"Two have been cut by a not very sharp knife, and two have had the ends
-bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
-It is a very deeply planned and cold-blooded murder."
-
-"Impossible!" cried the inspector.
-
-"And why?"
-
-"Why should any one murder a man in so clumsy a fashion as by hanging
-him?"
-
-"That is what we have to find out."
-
-"How could they get in?"
-
-"Through the front door."
-
-"It was barred in the morning."
-
-"Then it was barred after them."
-
-"How do you know?"
-
-"I saw their traces. Excuse me a moment, and I may be able to give you
-some further information about it."
-
-He went over to the door, and turning the lock he examined it in his
-methodical way. Then he took out the key, which was on the inside, and
-inspected that also. The bed, the carpet, the chairs the mantelpiece,
-the dead body, and the rope were each in turn examined, until at last he
-professed himself satisfied, and with my aid and that of the inspector
-cut down the wretched object and laid it reverently under a sheet.
-
-"How about this rope?" he asked.
-
-"It is cut off this," said Dr. Trevelyan, drawing a large coil from
-under the bed. "He was morbidly nervous of fire, and always kept this
-beside him, so that he might escape by the window in case the stairs
-were burning."
-
-"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
-the actual facts are very plain, and I shall be surprised if by the
-afternoon I cannot give you the reasons for them as well. I will take
-this photograph of Blessington, which I see upon the mantelpiece, as it
-may help me in my inquiries."
-
-"But you have told us nothing!" cried the doctor.
-
-"Oh, there can be no doubt as to the sequence of events," said Holmes.
-"There were three of them in it: the young man, the old man, and a
-third, to whose identity I have no clue. The first two, I need hardly
-remark, are the same who masqueraded as the Russian count and his son,
-so we can give a very full description of them. They were admitted by
-a confederate inside the house. If I might offer you a word of advice,
-Inspector, it would be to arrest the page, who, as I understand, has
-only recently come into your service, Doctor."
-
-"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
-cook have just been searching for him."
-
-Holmes shrugged his shoulders.
-
-"He has played a not unimportant part in this drama," said he. "The
-three men having ascended the stairs, which they did on tiptoe, the
-elder man first, the younger man second, and the unknown man in the
-rear--"
-
-"My dear Holmes!" I ejaculated.
-
-"Oh, there could be no question as to the superimposing of the
-footmarks. I had the advantage of learning which was which last night.
-They ascended, then, to Mr. Blessington's room, the door of which they
-found to be locked. With the help of a wire, however, they forced round
-the key. Even without the lens you will perceive, by the scratches on
-this ward, where the pressure was applied.
-
-"On entering the room their first proceeding must have been to gag Mr.
-Blessington. He may have been asleep, or he may have been so paralyzed
-with terror as to have been unable to cry out. These walls are thick,
-and it is conceivable that his shriek, if he had time to utter one, was
-unheard.
-
-"Having secured him, it is evident to me that a consultation of some
-sort was held. Probably it was something in the nature of a judicial
-proceeding. It must have lasted for some time, for it was then that
-these cigars were smoked. The older man sat in that wicker chair; it
-was he who used the cigar-holder. The younger man sat over yonder; he
-knocked his ash off against the chest of drawers. The third fellow paced
-up and down. Blessington, I think, sat upright in the bed, but of that I
-cannot be absolutely certain.
-
-"Well, it ended by their taking Blessington and hanging him. The matter
-was so prearranged that it is my belief that they brought with them
-some sort of block or pulley which might serve as a gallows. That
-screw-driver and those screws were, as I conceive, for fixing it up.
-Seeing the hook, however they naturally saved themselves the trouble.
-Having finished their work they made off, and the door was barred behind
-them by their confederate."
-
-We had all listened with the deepest interest to this sketch of the
-night's doings, which Holmes had deduced from signs so subtle and minute
-that, even when he had pointed them out to us, we could scarcely follow
-him in his reasoning. The inspector hurried away on the instant to make
-inquiries about the page, while Holmes and I returned to Baker Street
-for breakfast.
-
-"I'll be back by three," said he, when we had finished our meal. "Both
-the inspector and the doctor will meet me here at that hour, and I hope
-by that time to have cleared up any little obscurity which the case may
-still present."
-
-
-Our visitors arrived at the appointed time, but it was a quarter to
-four before my friend put in an appearance. From his expression as he
-entered, however, I could see that all had gone well with him.
-
-"Any news, Inspector?"
-
-"We have got the boy, sir."
-
-"Excellent, and I have got the men."
-
-"You have got them!" we cried, all three.
-
-"Well, at least I have got their identity. This so-called Blessington
-is, as I expected, well known at headquarters, and so are his
-assailants. Their names are Biddle, Hayward, and Moffat."
-
-"The Worthingdon bank gang," cried the inspector.
-
-"Precisely," said Holmes.
-
-"Then Blessington must have been Sutton."
-
-"Exactly," said Holmes.
-
-"Why, that makes it as clear as crystal," said the inspector.
-
-But Trevelyan and I looked at each other in bewilderment.
-
-"You must surely remember the great Worthingdon bank business," said
-Holmes. "Five men were in it--these four and a fifth called Cartwright.
-Tobin, the care-taker, was murdered, and the thieves got away with seven
-thousand pounds. This was in 1875. They were all five arrested, but the
-evidence against them was by no means conclusive. This Blessington or
-Sutton, who was the worst of the gang, turned informer. On his evidence
-Cartwright was hanged and the other three got fifteen years apiece. When
-they got out the other day, which was some years before their full term,
-they set themselves, as you perceive, to hunt down the traitor and to
-avenge the death of their comrade upon him. Twice they tried to get at
-him and failed; a third time, you see, it came off. Is there anything
-further which I can explain, Dr. Trevelyan?"
-
-"I think you have made it all remarkable clear," said the doctor. "No
-doubt the day on which he was perturbed was the day when he had seen of
-their release in the newspapers."
-
-"Quite so. His talk about a burglary was the merest blind."
-
-"But why could he not tell you this?"
-
-"Well, my dear sir, knowing the vindictive character of his old
-associates, he was trying to hide his own identity from everybody as
-long as he could. His secret was a shameful one, and he could not bring
-himself to divulge it. However, wretch as he was, he was still living
-under the shield of British law, and I have no doubt, Inspector, that
-you will see that, though that shield may fail to guard, the sword of
-justice is still there to avenge."
-
-
-Such were the singular circumstances in connection with the Resident
-Patient and the Brook Street Doctor. From that night nothing has
-been seen of the three murderers by the police, and it is surmised
-at Scotland Yard that they were among the passengers of the ill-fated
-steamer Norah Creina, which was lost some years ago with all hands
-upon the Portuguese coast, some leagues to the north of Oporto. The
-proceedings against the page broke down for want of evidence, and the
-Brook Street Mystery, as it was called, has never until now been fully
-dealt with in any public print.
-
-
-
-
-Adventure IX. The Greek Interpreter
-
-
-During my long and intimate acquaintance with Mr. Sherlock Holmes I had
-never heard him refer to his relations, and hardly ever to his own early
-life. This reticence upon his part had increased the somewhat inhuman
-effect which he produced upon me, until sometimes I found myself
-regarding him as an isolated phenomenon, a brain without a heart, as
-deficient in human sympathy as he was pre-eminent in intelligence. His
-aversion to women and his disinclination to form new friendships were
-both typical of his unemotional character, but not more so than his
-complete suppression of every reference to his own people. I had come to
-believe that he was an orphan with no relatives living, but one day, to
-my very great surprise, he began to talk to me about his brother.
-
-It was after tea on a summer evening, and the conversation, which had
-roamed in a desultory, spasmodic fashion from golf clubs to the causes
-of the change in the obliquity of the ecliptic, came round at last
-to the question of atavism and hereditary aptitudes. The point under
-discussion was, how far any singular gift in an individual was due to
-his ancestry and how far to his own early training.
-
-"In your own case," said I, "from all that you have told me, it seems
-obvious that your faculty of observation and your peculiar facility for
-deduction are due to your own systematic training."
-
-"To some extent," he answered, thoughtfully. "My ancestors were country
-squires, who appear to have led much the same life as is natural to
-their class. But, none the less, my turn that way is in my veins, and
-may have come with my grandmother, who was the sister of Vernet, the
-French artist. Art in the blood is liable to take the strangest forms."
-
-"But how do you know that it is hereditary?"
-
-"Because my brother Mycroft possesses it in a larger degree than I do."
-
-This was news to me indeed. If there were another man with such singular
-powers in England, how was it that neither police nor public had heard
-of him? I put the question, with a hint that it was my companion's
-modesty which made him acknowledge his brother as his superior. Holmes
-laughed at my suggestion.
-
-"My dear Watson," said he, "I cannot agree with those who rank modesty
-among the virtues. To the logician all things should be seen exactly as
-they are, and to underestimate one's self is as much a departure from
-truth as to exaggerate one's own powers. When I say, therefore, that
-Mycroft has better powers of observation than I, you may take it that I
-am speaking the exact and literal truth."
-
-"Is he your junior?"
-
-"Seven years my senior."
-
-"How comes it that he is unknown?"
-
-"Oh, he is very well known in his own circle."
-
-"Where, then?"
-
-"Well, in the Diogenes Club, for example."
-
-I had never heard of the institution, and my face must have proclaimed
-as much, for Sherlock Holmes pulled out his watch.
-
-"The Diogenes Club is the queerest club in London, and Mycroft one of
-the queerest men. He's always there from quarter to five to twenty to
-eight. It's six now, so if you care for a stroll this beautiful evening
-I shall be very happy to introduce you to two curiosities."
-
-Five minutes later we were in the street, walking towards Regent's
-Circus.
-
-"You wonder," said my companion, "why it is that Mycroft does not use
-his powers for detective work. He is incapable of it."
-
-"But I thought you said--"
-
-"I said that he was my superior in observation and deduction. If the
-art of the detective began and ended in reasoning from an arm-chair, my
-brother would be the greatest criminal agent that ever lived. But he has
-no ambition and no energy. He will not even go out of his way to verify
-his own solutions, and would rather be considered wrong than take the
-trouble to prove himself right. Again and again I have taken a problem
-to him, and have received an explanation which has afterwards proved to
-be the correct one. And yet he was absolutely incapable of working out
-the practical points which must be gone into before a case could be laid
-before a judge or jury."
-
-"It is not his profession, then?"
-
-"By no means. What is to me a means of livelihood is to him the merest
-hobby of a dilettante. He has an extraordinary faculty for figures, and
-audits the books in some of the government departments. Mycroft lodges
-in Pall Mall, and he walks round the corner into Whitehall every morning
-and back every evening. From year's end to year's end he takes no other
-exercise, and is seen nowhere else, except only in the Diogenes Club,
-which is just opposite his rooms."
-
-"I cannot recall the name."
-
-"Very likely not. There are many men in London, you know, who, some from
-shyness, some from misanthropy, have no wish for the company of their
-fellows. Yet they are not averse to comfortable chairs and the latest
-periodicals. It is for the convenience of these that the Diogenes Club
-was started, and it now contains the most unsociable and unclubable men
-in town. No member is permitted to take the least notice of any
-other one. Save in the Stranger's Room, no talking is, under any
-circumstances, allowed, and three offences, if brought to the notice of
-the committee, render the talker liable to expulsion. My brother was one
-of the founders, and I have myself found it a very soothing atmosphere."
-
-We had reached Pall Mall as we talked, and were walking down it from the
-St. James's end. Sherlock Holmes stopped at a door some little distance
-from the Carlton, and, cautioning me not to speak, he led the way into
-the hall. Through the glass paneling I caught a glimpse of a large and
-luxurious room, in which a considerable number of men were sitting about
-and reading papers, each in his own little nook. Holmes showed me into a
-small chamber which looked out into Pall Mall, and then, leaving me for
-a minute, he came back with a companion whom I knew could only be his
-brother.
-
-Mycroft Holmes was a much larger and stouter man than Sherlock. His body
-was absolutely corpulent, but his face, though massive, had preserved
-something of the sharpness of expression which was so remarkable in that
-of his brother. His eyes, which were of a peculiarly light, watery gray,
-seemed to always retain that far-away, introspective look which I had
-only observed in Sherlock's when he was exerting his full powers.
-
-"I am glad to meet you, sir," said he, putting out a broad, fat hand
-like the flipper of a seal. "I hear of Sherlock everywhere since you
-became his chronicler. By the way, Sherlock, I expected to see you round
-last week, to consult me over that Manor House case. I thought you might
-be a little out of your depth."
-
-"No, I solved it," said my friend, smiling.
-
-"It was Adams, of course."
-
-"Yes, it was Adams."
-
-"I was sure of it from the first." The two sat down together in the
-bow-window of the club. "To any one who wishes to study mankind this is
-the spot," said Mycroft. "Look at the magnificent types! Look at these
-two men who are coming towards us, for example."
-
-"The billiard-marker and the other?"
-
-"Precisely. What do you make of the other?"
-
-The two men had stopped opposite the window. Some chalk marks over the
-waistcoat pocket were the only signs of billiards which I could see
-in one of them. The other was a very small, dark fellow, with his hat
-pushed back and several packages under his arm.
-
-"An old soldier, I perceive," said Sherlock.
-
-"And very recently discharged," remarked the brother.
-
-"Served in India, I see."
-
-"And a non-commissioned officer."
-
-"Royal Artillery, I fancy," said Sherlock.
-
-"And a widower."
-
-"But with a child."
-
-"Children, my dear boy, children."
-
-"Come," said I, laughing, "this is a little too much."
-
-"Surely," answered Holmes, "it is not hard to say that a man with that
-bearing, expression of authority, and sunbaked skin, is a soldier, is
-more than a private, and is not long from India."
-
-"That he has not left the service long is shown by his still wearing his
-ammunition boots, as they are called," observed Mycroft.
-
-"He had not the cavalry stride, yet he wore his hat on one side, as
-is shown by the lighter skin of that side of his brow. His weight is
-against his being a sapper. He is in the artillery."
-
-"Then, of course, his complete mourning shows that he has lost some one
-very dear. The fact that he is doing his own shopping looks as though
-it were his wife. He has been buying things for children, you perceive.
-There is a rattle, which shows that one of them is very young. The wife
-probably died in childbed. The fact that he has a picture-book under his
-arm shows that there is another child to be thought of."
-
-I began to understand what my friend meant when he said that his brother
-possessed even keener faculties that he did himself. He glanced across
-at me and smiled. Mycroft took snuff from a tortoise-shell box, and
-brushed away the wandering grains from his coat front with a large, red
-silk handkerchief.
-
-"By the way, Sherlock," said he, "I have had something quite after your
-own heart--a most singular problem--submitted to my judgment. I really
-had not the energy to follow it up save in a very incomplete fashion,
-but it gave me a basis for some pleasing speculation. If you would care
-to hear the facts--"
-
-"My dear Mycroft, I should be delighted."
-
-The brother scribbled a note upon a leaf of his pocket-book, and,
-ringing the bell, he handed it to the waiter.
-
-"I have asked Mr. Melas to step across," said he. "He lodges on the
-floor above me, and I have some slight acquaintance with him, which led
-him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
-as I understand, and he is a remarkable linguist. He earns his living
-partly as interpreter in the law courts and partly by acting as guide to
-any wealthy Orientals who may visit the Northumberland Avenue hotels. I
-think I will leave him to tell his very remarkable experience in his own
-fashion."
-
-A few minutes later we were joined by a short, stout man whose olive
-face and coal-black hair proclaimed his Southern origin, though his
-speech was that of an educated Englishman. He shook hands eagerly
-with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
-understood that the specialist was anxious to hear his story.
-
-"I do not believe that the police credit me--on my word, I do not," said
-he in a wailing voice. "Just because they have never heard of it before,
-they think that such a thing cannot be. But I know that I shall never
-be easy in my mind until I know what has become of my poor man with the
-sticking-plaster upon his face."
-
-"I am all attention," said Sherlock Holmes.
-
-"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
-night--only two days ago, you understand--that all this happened. I am
-an interpreter, as perhaps my neighbor there has told you. I interpret
-all languages--or nearly all--but as I am a Greek by birth and with a
-Grecian name, it is with that particular tongue that I am principally
-associated. For many years I have been the chief Greek interpreter in
-London, and my name is very well known in the hotels.
-
-"It happens not unfrequently that I am sent for at strange hours by
-foreigners who get into difficulties, or by travelers who arrive late
-and wish my services. I was not surprised, therefore, on Monday night
-when a Mr. Latimer, a very fashionably dressed young man, came up to my
-rooms and asked me to accompany him in a cab which was waiting at the
-door. A Greek friend had come to see him upon business, he said, and
-as he could speak nothing but his own tongue, the services of an
-interpreter were indispensable. He gave me to understand that his house
-was some little distance off, in Kensington, and he seemed to be in a
-great hurry, bustling me rapidly into the cab when we had descended to
-the street.
-
-"I say into the cab, but I soon became doubtful as to whether it was not
-a carriage in which I found myself. It was certainly more roomy than
-the ordinary four-wheeled disgrace to London, and the fittings, though
-frayed, were of rich quality. Mr. Latimer seated himself opposite to me
-and we started off through Charing Cross and up the Shaftesbury Avenue.
-We had come out upon Oxford Street and I had ventured some remark as to
-this being a roundabout way to Kensington, when my words were arrested
-by the extraordinary conduct of my companion.
-
-"He began by drawing a most formidable-looking bludgeon loaded with lead
-from his pocket, and switching it backward and forward several times,
-as if to test its weight and strength. Then he placed it without a word
-upon the seat beside him. Having done this, he drew up the windows on
-each side, and I found to my astonishment that they were covered with
-paper so as to prevent my seeing through them.
-
-"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
-that I have no intention that you should see what the place is to which
-we are driving. It might possibly be inconvenient to me if you could
-find your way there again.'
-
-"As you can imagine, I was utterly taken aback by such an address. My
-companion was a powerful, broad-shouldered young fellow, and, apart from
-the weapon, I should not have had the slightest chance in a struggle
-with him.
-
-"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
-must be aware that what you are doing is quite illegal.'
-
-"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
-up to you. I must warn you, however, Mr. Melas, that if at any time
-to-night you attempt to raise an alarm or do anything which is against
-my interests, you will find it a very serious thing. I beg you to
-remember that no one knows where you are, and that, whether you are in
-this carriage or in my house, you are equally in my power.'
-
-"His words were quiet, but he had a rasping way of saying them which
-was very menacing. I sat in silence wondering what on earth could be
-his reason for kidnapping me in this extraordinary fashion. Whatever it
-might be, it was perfectly clear that there was no possible use in my
-resisting, and that I could only wait to see what might befall.
-
-"For nearly two hours we drove without my having the least clue as to
-where we were going. Sometimes the rattle of the stones told of a paved
-causeway, and at others our smooth, silent course suggested asphalt;
-but, save by this variation in sound, there was nothing at all which
-could in the remotest way help me to form a guess as to where we were.
-The paper over each window was impenetrable to light, and a blue curtain
-was drawn across the glass work in front. It was a quarter-past seven
-when we left Pall Mall, and my watch showed me that it was ten minutes
-to nine when we at last came to a standstill. My companion let down
-the window, and I caught a glimpse of a low, arched doorway with a lamp
-burning above it. As I was hurried from the carriage it swung open, and
-I found myself inside the house, with a vague impression of a lawn
-and trees on each side of me as I entered. Whether these were private
-grounds, however, or bona-fide country was more than I could possibly
-venture to say.
-
-"There was a colored gas-lamp inside which was turned so low that I
-could see little save that the hall was of some size and hung with
-pictures. In the dim light I could make out that the person who had
-opened the door was a small, mean-looking, middle-aged man with rounded
-shoulders. As he turned towards us the glint of the light showed me that
-he was wearing glasses.
-
-"'Is this Mr. Melas, Harold?' said he.
-
-"'Yes.'
-
-"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
-get on without you. If you deal fair with us you'll not regret it,
-but if you try any tricks, God help you!' He spoke in a nervous, jerky
-fashion, and with little giggling laughs in between, but somehow he
-impressed me with fear more than the other.
-
-"'What do you want with me?' I asked.
-
-"'Only to ask a few questions of a Greek gentleman who is visiting us,
-and to let us have the answers. But say no more than you are told to
-say, or--' here came the nervous giggle again--'you had better never
-have been born.'
-
-"As he spoke he opened a door and showed the way into a room which
-appeared to be very richly furnished, but again the only light was
-afforded by a single lamp half-turned down. The chamber was certainly
-large, and the way in which my feet sank into the carpet as I stepped
-across it told me of its richness. I caught glimpses of velvet chairs, a
-high white marble mantel-piece, and what seemed to be a suit of Japanese
-armor at one side of it. There was a chair just under the lamp, and the
-elderly man motioned that I should sit in it. The younger had left
-us, but he suddenly returned through another door, leading with him
-a gentleman clad in some sort of loose dressing-gown who moved slowly
-towards us. As he came into the circle of dim light which enables me to
-see him more clearly I was thrilled with horror at his appearance. He
-was deadly pale and terribly emaciated, with the protruding, brilliant
-eyes of a man whose spirit was greater than his strength. But what
-shocked me more than any signs of physical weakness was that his face
-was grotesquely criss-crossed with sticking-plaster, and that one large
-pad of it was fastened over his mouth.
-
-"'Have you the slate, Harold?' cried the older man, as this strange
-being fell rather than sat down into a chair. 'Are his hands loose? Now,
-then, give him the pencil. You are to ask the questions, Mr. Melas, and
-he will write the answers. Ask him first of all whether he is prepared
-to sign the papers?'
-
-"The man's eyes flashed fire.
-
-"'Never!' he wrote in Greek upon the slate.
-
-"'On no condition?' I asked, at the bidding of our tyrant.
-
-"'Only if I see her married in my presence by a Greek priest whom I
-know.'
-
-"The man giggled in his venomous way.
-
-"'You know what awaits you, then?'
-
-"'I care nothing for myself.'
-
-"These are samples of the questions and answers which made up our
-strange half-spoken, half-written conversation. Again and again I had to
-ask him whether he would give in and sign the documents. Again and again
-I had the same indignant reply. But soon a happy thought came to me. I
-took to adding on little sentences of my own to each question, innocent
-ones at first, to test whether either of our companions knew anything
-of the matter, and then, as I found that they showed no signs I played a
-more dangerous game. Our conversation ran something like this:
-
-"'You can do no good by this obstinacy. Who are you?'
-
-"'I care not. I am a stranger in London.'
-
-"'Your fate will be upon your own head. How long have you been here?'
-
-"'Let it be so. Three weeks.'
-
-"'The property can never be yours. What ails you?'
-
-"'It shall not go to villains. They are starving me.'
-
-"'You shall go free if you sign. What house is this?'
-
-"'I will never sign. I do not know.'
-
-"'You are not doing her any service. What is your name?'
-
-"'Let me hear her say so. Kratides.'
-
-"'You shall see her if you sign. Where are you from?'
-
-"'Then I shall never see her. Athens.'
-
-"Another five minutes, Mr. Holmes, and I should have wormed out the
-whole story under their very noses. My very next question might have
-cleared the matter up, but at that instant the door opened and a woman
-stepped into the room. I could not see her clearly enough to know more
-than that she was tall and graceful, with black hair, and clad in some
-sort of loose white gown.
-
-"'Harold,' said she, speaking English with a broken accent. 'I could not
-stay away longer. It is so lonely up there with only--Oh, my God, it is
-Paul!'
-
-"These last words were in Greek, and at the same instant the man with
-a convulsive effort tore the plaster from his lips, and screaming out
-'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
-an instant, however, for the younger man seized the woman and pushed
-her out of the room, while the elder easily overpowered his emaciated
-victim, and dragged him away through the other door. For a moment I was
-left alone in the room, and I sprang to my feet with some vague idea
-that I might in some way get a clue to what this house was in which I
-found myself. Fortunately, however, I took no steps, for looking up I
-saw that the older man was standing in the door-way with his eyes fixed
-upon me.
-
-"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
-you into our confidence over some very private business. We should not
-have troubled you, only that our friend who speaks Greek and who began
-these negotiations has been forced to return to the East. It was
-quite necessary for us to find some one to take his place, and we were
-fortunate in hearing of your powers.'
-
-"I bowed.
-
-"'There are five sovereigns here,' said he, walking up to me, 'which
-will, I hope, be a sufficient fee. But remember,' he added, tapping me
-lightly on the chest and giggling, 'if you speak to a human soul about
-this--one human soul, mind--well, may God have mercy upon your soul!"
-
-"I cannot tell you the loathing and horror with which this
-insignificant-looking man inspired me. I could see him better now as the
-lamp-light shone upon him. His features were peaky and sallow, and his
-little pointed beard was thready and ill-nourished. He pushed his face
-forward as he spoke and his lips and eyelids were continually twitching
-like a man with St. Vitus's dance. I could not help thinking that his
-strange, catchy little laugh was also a symptom of some nervous malady.
-The terror of his face lay in his eyes, however, steel gray, and
-glistening coldly with a malignant, inexorable cruelty in their depths.
-
-"'We shall know if you speak of this,' said he. 'We have our own means
-of information. Now you will find the carriage waiting, and my friend
-will see you on your way.'
-
-"I was hurried through the hall and into the vehicle, again obtaining
-that momentary glimpse of trees and a garden. Mr. Latimer followed
-closely at my heels, and took his place opposite to me without a word.
-In silence we again drove for an interminable distance with the windows
-raised, until at last, just after midnight, the carriage pulled up.
-
-"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
-to leave you so far from your house, but there is no alternative. Any
-attempt upon your part to follow the carriage can only end in injury to
-yourself.'
-
-"He opened the door as he spoke, and I had hardly time to spring out
-when the coachman lashed the horse and the carriage rattled away. I
-looked around me in astonishment. I was on some sort of a heathy common
-mottled over with dark clumps of furze-bushes. Far away stretched a
-line of houses, with a light here and there in the upper windows. On the
-other side I saw the red signal-lamps of a railway.
-
-"The carriage which had brought me was already out of sight. I stood
-gazing round and wondering where on earth I might be, when I saw some
-one coming towards me in the darkness. As he came up to me I made out
-that he was a railway porter.
-
-"'Can you tell me what place this is?' I asked.
-
-"'Wandsworth Common,' said he.
-
-"'Can I get a train into town?'
-
-"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
-just be in time for the last to Victoria.'
-
-"So that was the end of my adventure, Mr. Holmes. I do not know where I
-was, nor whom I spoke with, nor anything save what I have told you. But
-I know that there is foul play going on, and I want to help that unhappy
-man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
-and subsequently to the police."
-
-We all sat in silence for some little time after listening to this
-extraordinary narrative. Then Sherlock looked across at his brother.
-
-"Any steps?" he asked.
-
-Mycroft picked up the Daily News, which was lying on the side-table.
-
-"'Anybody supplying any information to the whereabouts of a Greek
-gentleman named Paul Kratides, from Athens, who is unable to speak
-English, will be rewarded. A similar reward paid to any one giving
-information about a Greek lady whose first name is Sophy. X 2473.' That
-was in all the dailies. No answer."
-
-"How about the Greek Legation?"
-
-"I have inquired. They know nothing."
-
-"A wire to the head of the Athens police, then?"
-
-"Sherlock has all the energy of the family," said Mycroft, turning to
-me. "Well, you take the case up by all means, and let me know if you do
-any good."
-
-"Certainly," answered my friend, rising from his chair. "I'll let you
-know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
-be on my guard, if I were you, for of course they must know through
-these advertisements that you have betrayed them."
-
-As we walked home together, Holmes stopped at a telegraph office and
-sent off several wires.
-
-"You see, Watson," he remarked, "our evening has been by no means
-wasted. Some of my most interesting cases have come to me in this way
-through Mycroft. The problem which we have just listened to, although
-it can admit of but one explanation, has still some distinguishing
-features."
-
-"You have hopes of solving it?"
-
-"Well, knowing as much as we do, it will be singular indeed if we fail
-to discover the rest. You must yourself have formed some theory which
-will explain the facts to which we have listened."
-
-"In a vague way, yes."
-
-"What was your idea, then?"
-
-"It seemed to me to be obvious that this Greek girl had been carried off
-by the young Englishman named Harold Latimer."
-
-"Carried off from where?"
-
-"Athens, perhaps."
-
-Sherlock Holmes shook his head. "This young man could not talk a word of
-Greek. The lady could talk English fairly well. Inference--that she had
-been in England some little time, but he had not been in Greece."
-
-"Well, then, we will presume that she had come on a visit to England,
-and that this Harold had persuaded her to fly with him."
-
-"That is more probable."
-
-"Then the brother--for that, I fancy, must be the relationship--comes
-over from Greece to interfere. He imprudently puts himself into the
-power of the young man and his older associate. They seize him and use
-violence towards him in order to make him sign some papers to make over
-the girl's fortune--of which he may be trustee--to them. This he refuses
-to do. In order to negotiate with him they have to get an interpreter,
-and they pitch upon this Mr. Melas, having used some other one before.
-The girl is not told of the arrival of her brother, and finds it out by
-the merest accident."
-
-"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
-from the truth. You see that we hold all the cards, and we have only to
-fear some sudden act of violence on their part. If they give us time we
-must have them."
-
-"But how can we find where this house lies?"
-
-"Well, if our conjecture is correct and the girl's name is or was Sophy
-Kratides, we should have no difficulty in tracing her. That must be our
-main hope, for the brother is, of course, a complete stranger. It is
-clear that some time has elapsed since this Harold established these
-relations with the girl--some weeks, at any rate--since the brother in
-Greece has had time to hear of it and come across. If they have been
-living in the same place during this time, it is probable that we shall
-have some answer to Mycroft's advertisement."
-
-We had reached our house in Baker Street while we had been talking.
-Holmes ascended the stair first, and as he opened the door of our room
-he gave a start of surprise. Looking over his shoulder, I was equally
-astonished. His brother Mycroft was sitting smoking in the arm-chair.
-
-"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
-surprised faces. "You don't expect such energy from me, do you,
-Sherlock? But somehow this case attracts me."
-
-"How did you get here?"
-
-"I passed you in a hansom."
-
-"There has been some new development?"
-
-"I had an answer to my advertisement."
-
-"Ah!"
-
-"Yes, it came within a few minutes of your leaving."
-
-"And to what effect?"
-
-Mycroft Holmes took out a sheet of paper.
-
-"Here it is," said he, "written with a J pen on royal cream paper by a
-middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
-your advertisement of to-day's date, I beg to inform you that I know the
-young lady in question very well. If you should care to call upon me I
-could give you some particulars as to her painful history. She is living
-at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
-
-"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
-that we might drive to him now, Sherlock, and learn these particulars?"
-
-"My dear Mycroft, the brother's life is more valuable than the sister's
-story. I think we should call at Scotland Yard for Inspector Gregson,
-and go straight out to Beckenham. We know that a man is being done to
-death, and every hour may be vital."
-
-"Better pick up Mr. Melas on our way," I suggested. "We may need an
-interpreter."
-
-"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
-we shall be off at once." He opened the table-drawer as he spoke, and I
-noticed that he slipped his revolver into his pocket. "Yes," said he, in
-answer to my glance; "I should say from what we have heard, that we are
-dealing with a particularly dangerous gang."
-
-It was almost dark before we found ourselves in Pall Mall, at the rooms
-of Mr. Melas. A gentleman had just called for him, and he was gone.
-
-"Can you tell me where?" asked Mycroft Holmes.
-
-"I don't know, sir," answered the woman who had opened the door; "I only
-know that he drove away with the gentleman in a carriage."
-
-"Did the gentleman give a name?"
-
-"No, sir."
-
-"He wasn't a tall, handsome, dark young man?"
-
-"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
-but very pleasant in his ways, for he was laughing all the time that he
-was talking."
-
-"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
-he observed, as we drove to Scotland Yard. "These men have got hold of
-Melas again. He is a man of no physical courage, as they are well
-aware from their experience the other night. This villain was able to
-terrorize him the instant that he got into his presence. No doubt
-they want his professional services, but, having used him, they may be
-inclined to punish him for what they will regard as his treachery."
-
-Our hope was that, by taking train, we might get to Beckenham as soon
-or sooner than the carriage. On reaching Scotland Yard, however, it was
-more than an hour before we could get Inspector Gregson and comply with
-the legal formalities which would enable us to enter the house. It was a
-quarter to ten before we reached London Bridge, and half past before the
-four of us alighted on the Beckenham platform. A drive of half a mile
-brought us to The Myrtles--a large, dark house standing back from the
-road in its own grounds. Here we dismissed our cab, and made our way up
-the drive together.
-
-"The windows are all dark," remarked the inspector. "The house seems
-deserted."
-
-"Our birds are flown and the nest empty," said Holmes.
-
-"Why do you say so?"
-
-"A carriage heavily loaded with luggage has passed out during the last
-hour."
-
-The inspector laughed. "I saw the wheel-tracks in the light of the
-gate-lamp, but where does the luggage come in?"
-
-"You may have observed the same wheel-tracks going the other way. But
-the outward-bound ones were very much deeper--so much so that we can
-say for a certainty that there was a very considerable weight on the
-carriage."
-
-"You get a trifle beyond me there," said the inspector, shrugging his
-shoulder. "It will not be an easy door to force, but we will try if we
-cannot make some one hear us."
-
-He hammered loudly at the knocker and pulled at the bell, but without
-any success. Holmes had slipped away, but he came back in a few minutes.
-
-"I have a window open," said he.
-
-"It is a mercy that you are on the side of the force, and not against
-it, Mr. Holmes," remarked the inspector, as he noted the clever way in
-which my friend had forced back the catch. "Well, I think that under the
-circumstances we may enter without an invitation."
-
-One after the other we made our way into a large apartment, which was
-evidently that in which Mr. Melas had found himself. The inspector
-had lit his lantern, and by its light we could see the two doors, the
-curtain, the lamp, and the suit of Japanese mail as he had described
-them. On the table lay two glasses, and empty brandy-bottle, and the
-remains of a meal.
-
-"What is that?" asked Holmes, suddenly.
-
-We all stood still and listened. A low moaning sound was coming from
-somewhere over our heads. Holmes rushed to the door and out into the
-hall. The dismal noise came from upstairs. He dashed up, the inspector
-and I at his heels, while his brother Mycroft followed as quickly as his
-great bulk would permit.
-
-Three doors faced up upon the second floor, and it was from the central
-of these that the sinister sounds were issuing, sinking sometimes into a
-dull mumble and rising again into a shrill whine. It was locked, but the
-key had been left on the outside. Holmes flung open the door and rushed
-in, but he was out again in an instant, with his hand to his throat.
-
-"It's charcoal," he cried. "Give it time. It will clear."
-
-Peering in, we could see that the only light in the room came from a
-dull blue flame which flickered from a small brass tripod in the centre.
-It threw a livid, unnatural circle upon the floor, while in the shadows
-beyond we saw the vague loom of two figures which crouched against the
-wall. From the open door there reeked a horrible poisonous exhalation
-which set us gasping and coughing. Holmes rushed to the top of the
-stairs to draw in the fresh air, and then, dashing into the room, he
-threw up the window and hurled the brazen tripod out into the garden.
-
-"We can enter in a minute," he gasped, darting out again. "Where is a
-candle? I doubt if we could strike a match in that atmosphere. Hold the
-light at the door and we shall get them out, Mycroft, now!"
-
-With a rush we got to the poisoned men and dragged them out into the
-well-lit hall. Both of them were blue-lipped and insensible, with
-swollen, congested faces and protruding eyes. Indeed, so distorted were
-their features that, save for his black beard and stout figure, we might
-have failed to recognize in one of them the Greek interpreter who had
-parted from us only a few hours before at the Diogenes Club. His hands
-and feet were securely strapped together, and he bore over one eye
-the marks of a violent blow. The other, who was secured in a similar
-fashion, was a tall man in the last stage of emaciation, with several
-strips of sticking-plaster arranged in a grotesque pattern over his
-face. He had ceased to moan as we laid him down, and a glance showed
-me that for him at least our aid had come too late. Mr. Melas, however,
-still lived, and in less than an hour, with the aid of ammonia and
-brandy I had the satisfaction of seeing him open his eyes, and of
-knowing that my hand had drawn him back from that dark valley in which
-all paths meet.
-
-It was a simple story which he had to tell, and one which did but
-confirm our own deductions. His visitor, on entering his rooms, had
-drawn a life-preserver from his sleeve, and had so impressed him with
-the fear of instant and inevitable death that he had kidnapped him for
-the second time. Indeed, it was almost mesmeric, the effect which this
-giggling ruffian had produced upon the unfortunate linguist, for he
-could not speak of him save with trembling hands and a blanched cheek.
-He had been taken swiftly to Beckenham, and had acted as interpreter in
-a second interview, even more dramatic than the first, in which the two
-Englishmen had menaced their prisoner with instant death if he did not
-comply with their demands. Finally, finding him proof against every
-threat, they had hurled him back into his prison, and after
-reproaching Melas with his treachery, which appeared from the newspaper
-advertisement, they had stunned him with a blow from a stick, and he
-remembered nothing more until he found us bending over him.
-
-And this was the singular case of the Grecian Interpreter, the
-explanation of which is still involved in some mystery. We were able
-to find out, by communicating with the gentleman who had answered the
-advertisement, that the unfortunate young lady came of a wealthy Grecian
-family, and that she had been on a visit to some friends in England.
-While there she had met a young man named Harold Latimer, who had
-acquired an ascendancy over he and had eventually persuaded her to fly
-with him. Her friends, shocked at the event, had contented themselves
-with informing her brother at Athens, and had then washed their hands
-of the matter. The brother, on his arrival in England, had imprudently
-placed himself in the power of Latimer and of his associate, whose name
-was Wilson Kemp--a man of the foulest antecedents. These two, finding
-that through his ignorance of the language he was helpless in their
-hands, had kept him a prisoner, and had endeavored by cruelty and
-starvation to make him sign away his own and his sister's property. They
-had kept him in the house without the girl's knowledge, and the plaster
-over the face had been for the purpose of making recognition difficult
-in case she should ever catch a glimpse of him. Her feminine perception,
-however, had instantly seen through the disguise when, on the occasion
-of the interpreter's visit, she had seen him for the first time. The
-poor girl, however, was herself a prisoner, for there was no one about
-the house except the man who acted as coachman, and his wife, both of
-whom were tools of the conspirators. Finding that their secret was out,
-and that their prisoner was not to be coerced, the two villains with the
-girl had fled away at a few hours' notice from the furnished house which
-they had hired, having first, as they thought, taken vengeance both upon
-the man who had defied and the one who had betrayed them.
-
-Months afterwards a curious newspaper cutting reached us from
-Buda-Pesth. It told how two Englishmen who had been traveling with a
-woman had met with a tragic end. They had each been stabbed, it seems,
-and the Hungarian police were of opinion that they had quarreled and had
-inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
-of a different way of thinking, and holds to this day that, if one could
-find the Grecian girl, one might learn how the wrongs of herself and her
-brother came to be avenged.
-
-
-
-
-Adventure X. The Naval Treaty
-
-
-The July which immediately succeeded my marriage was made memorable
-by three cases of interest, in which I had the privilege of being
-associated with Sherlock Holmes and of studying his methods. I find them
-recorded in my notes under the headings of "The Adventure of the Second
-Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
-Tired Captain." The first of these, however, deals with interest of such
-importance and implicates so many of the first families in the kingdom
-that for many years it will be impossible to make it public. No case,
-however, in which Holmes was engaged has ever illustrated the value
-of his analytical methods so clearly or has impressed those who were
-associated with him so deeply. I still retain an almost verbatim report
-of the interview in which he demonstrated the true facts of the case
-to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
-well-known specialist of Dantzig, both of whom had wasted their energies
-upon what proved to be side-issues. The new century will have come,
-however, before the story can be safely told. Meanwhile I pass on to
-the second on my list, which promised also at one time to be of national
-importance, and was marked by several incidents which give it a quite
-unique character.
-
-During my school-days I had been intimately associated with a lad named
-Percy Phelps, who was of much the same age as myself, though he was two
-classes ahead of me. He was a very brilliant boy, and carried away every
-prize which the school had to offer, finished his exploits by winning
-a scholarship which sent him on to continue his triumphant career at
-Cambridge. He was, I remember, extremely well connected, and even when
-we were all little boys together we knew that his mother's brother
-was Lord Holdhurst, the great conservative politician. This gaudy
-relationship did him little good at school. On the contrary, it seemed
-rather a piquant thing to us to chevy him about the playground and hit
-him over the shins with a wicket. But it was another thing when he
-came out into the world. I heard vaguely that his abilities and the
-influences which he commanded had won him a good position at the Foreign
-Office, and then he passed completely out of my mind until the following
-letter recalled his existence:
-
-
-Briarbrae, Woking. My dear Watson,--I have no doubt that you can
-remember "Tadpole" Phelps, who was in the fifth form when you were in
-the third. It is possible even that you may have heard that through my
-uncle's influence I obtained a good appointment at the Foreign Office,
-and that I was in a situation of trust and honor until a horrible
-misfortune came suddenly to blast my career.
-
-There is no use writing of the details of that dreadful event. In the
-event of your acceding to my request it is probably that I shall have
-to narrate them to you. I have only just recovered from nine weeks of
-brain-fever, and am still exceedingly weak. Do you think that you could
-bring your friend Mr. Holmes down to see me? I should like to have his
-opinion of the case, though the authorities assure me that nothing more
-can be done. Do try to bring him down, and as soon as possible. Every
-minute seems an hour while I live in this state of horrible suspense.
-Assure him that if I have not asked his advice sooner it was not because
-I did not appreciate his talents, but because I have been off my head
-ever since the blow fell. Now I am clear again, though I dare not think
-of it too much for fear of a relapse. I am still so weak that I have to
-write, as you see, by dictating. Do try to bring him.
-
-Your old school-fellow,
-
-Percy Phelps.
-
-
-There was something that touched me as I read this letter, something
-pitiable in the reiterated appeals to bring Holmes. So moved was I
-that even had it been a difficult matter I should have tried it, but
-of course I knew well that Holmes loved his art, so that he was ever
-as ready to bring his aid as his client could be to receive it. My wife
-agreed with me that not a moment should be lost in laying the matter
-before him, and so within an hour of breakfast-time I found myself back
-once more in the old rooms in Baker Street.
-
-Holmes was seated at his side-table clad in his dressing-gown, and
-working hard over a chemical investigation. A large curved retort
-was boiling furiously in the bluish flame of a Bunsen burner, and the
-distilled drops were condensing into a two-litre measure. My friend
-hardly glanced up as I entered, and I, seeing that his investigation
-must be of importance, seated myself in an arm-chair and waited. He
-dipped into this bottle or that, drawing out a few drops of each with
-his glass pipette, and finally brought a test-tube containing a solution
-over to the table. In his right hand he held a slip of litmus-paper.
-
-"You come at a crisis, Watson," said he. "If this paper remains blue,
-all is well. If it turns red, it means a man's life." He dipped it into
-the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
-I thought as much!" he cried. "I will be at your service in an instant,
-Watson. You will find tobacco in the Persian slipper." He turned to his
-desk and scribbled off several telegrams, which were handed over to the
-page-boy. Then he threw himself down into the chair opposite, and drew
-up his knees until his fingers clasped round his long, thin shins.
-
-"A very commonplace little murder," said he. "You've got something
-better, I fancy. You are the stormy petrel of crime, Watson. What is
-it?"
-
-I handed him the letter, which he read with the most concentrated
-attention.
-
-"It does not tell us very much, does it?" he remarked, as he handed it
-back to me.
-
-"Hardly anything."
-
-"And yet the writing is of interest."
-
-"But the writing is not his own."
-
-"Precisely. It is a woman's."
-
-"A man's surely," I cried.
-
-"No, a woman's, and a woman of rare character. You see, at the
-commencement of an investigation it is something to know that your
-client is in close contact with some one who, for good or evil, has an
-exceptional nature. My interest is already awakened in the case. If you
-are ready we will start at once for Woking, and see this diplomatist who
-is in such evil case, and the lady to whom he dictates his letters."
-
-We were fortunate enough to catch an early train at Waterloo, and in
-a little under an hour we found ourselves among the fir-woods and
-the heather of Woking. Briarbrae proved to be a large detached house
-standing in extensive grounds within a few minutes' walk of the station.
-On sending in our cards we were shown into an elegantly appointed
-drawing-room, where we were joined in a few minutes by a rather stout
-man who received us with much hospitality. His age may have been nearer
-forty than thirty, but his cheeks were so ruddy and his eyes so merry
-that he still conveyed the impression of a plump and mischievous boy.
-
-"I am so glad that you have come," said he, shaking our hands with
-effusion. "Percy has been inquiring for you all morning. Ah, poor old
-chap, he clings to any straw! His father and his mother asked me to see
-you, for the mere mention of the subject is very painful to them."
-
-"We have had no details yet," observed Holmes. "I perceive that you are
-not yourself a member of the family."
-
-Our acquaintance looked surprised, and then, glancing down, he began to
-laugh.
-
-"Of course you saw the J H monogram on my locket," said he. "For a
-moment I thought you had done something clever. Joseph Harrison is my
-name, and as Percy is to marry my sister Annie I shall at least be a
-relation by marriage. You will find my sister in his room, for she has
-nursed him hand-and-foot this two months back. Perhaps we'd better go in
-at once, for I know how impatient he is."
-
-The chamber in which we were shown was on the same floor as the
-drawing-room. It was furnished partly as a sitting and partly as a
-bedroom, with flowers arranged daintily in every nook and corner. A
-young man, very pale and worn, was lying upon a sofa near the open
-window, through which came the rich scent of the garden and the balmy
-summer air. A woman was sitting beside him, who rose as we entered.
-
-"Shall I leave, Percy?" she asked.
-
-He clutched her hand to detain her. "How are you, Watson?" said he,
-cordially. "I should never have known you under that moustache, and I
-dare say you would not be prepared to swear to me. This I presume is
-your celebrated friend, Mr. Sherlock Holmes?"
-
-I introduced him in a few words, and we both sat down. The stout young
-man had left us, but his sister still remained with her hand in that of
-the invalid. She was a striking-looking woman, a little short and
-thick for symmetry, but with a beautiful olive complexion, large, dark,
-Italian eyes, and a wealth of deep black hair. Her rich tints made the
-white face of her companion the more worn and haggard by the contrast.
-
-"I won't waste your time," said he, raising himself upon the sofa.
-"I'll plunge into the matter without further preamble. I was a happy
-and successful man, Mr. Holmes, and on the eve of being married, when a
-sudden and dreadful misfortune wrecked all my prospects in life.
-
-"I was, as Watson may have told you, in the Foreign Office, and
-through the influences of my uncle, Lord Holdhurst, I rose rapidly to
-a responsible position. When my uncle became foreign minister in this
-administration he gave me several missions of trust, and as I always
-brought them to a successful conclusion, he came at last to have the
-utmost confidence in my ability and tact.
-
-"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
-me into his private room, and, after complimenting me on the good work
-which I had done, he informed me that he had a new commission of trust
-for me to execute.
-
-"'This,' said he, taking a gray roll of paper from his bureau, 'is the
-original of that secret treaty between England and Italy of which, I
-regret to say, some rumors have already got into the public press. It is
-of enormous importance that nothing further should leak out. The French
-or the Russian embassy would pay an immense sum to learn the contents
-of these papers. They should not leave my bureau were it not that it
-is absolutely necessary to have them copied. You have a desk in your
-office?"
-
-"'Yes, sir.'
-
-"'Then take the treaty and lock it up there. I shall give directions
-that you may remain behind when the others go, so that you may copy
-it at your leisure without fear of being overlooked. When you have
-finished, relock both the original and the draft in the desk, and hand
-them over to me personally to-morrow morning.'
-
-"I took the papers and--"
-
-"Excuse me an instant," said Holmes. "Were you alone during this
-conversation?"
-
-"Absolutely."
-
-"In a large room?"
-
-"Thirty feet each way."
-
-"In the centre?"
-
-"Yes, about it."
-
-"And speaking low?"
-
-"My uncle's voice is always remarkably low. I hardly spoke at all."
-
-"Thank you," said Holmes, shutting his eyes; "pray go on."
-
-"I did exactly what he indicated, and waited until the other clerks had
-departed. One of them in my room, Charles Gorot, had some arrears
-of work to make up, so I left him there and went out to dine. When I
-returned he was gone. I was anxious to hurry my work, for I knew that
-Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
-would travel down to Woking by the eleven-o'clock train, and I wanted if
-possible to catch it.
-
-"When I came to examine the treaty I saw at once that it was of such
-importance that my uncle had been guilty of no exaggeration in what
-he had said. Without going into details, I may say that it defined the
-position of Great Britain towards the Triple Alliance, and fore-shadowed
-the policy which this country would pursue in the event of the
-French fleet gaining a complete ascendancy over that of Italy in the
-Mediterranean. The questions treated in it were purely naval. At the end
-were the signatures of the high dignitaries who had signed it. I glanced
-my eyes over it, and then settled down to my task of copying.
-
-"It was a long document, written in the French language, and containing
-twenty-six separate articles. I copied as quickly as I could, but at
-nine o'clock I had only done nine articles, and it seemed hopeless for
-me to attempt to catch my train. I was feeling drowsy and stupid, partly
-from my dinner and also from the effects of a long day's work. A cup of
-coffee would clear my brain. A commissionnaire remains all night in a
-little lodge at the foot of the stairs, and is in the habit of making
-coffee at his spirit-lamp for any of the officials who may be working
-over time. I rang the bell, therefore, to summon him.
-
-"To my surprise, it was a woman who answered the summons, a large,
-coarse-faced, elderly woman, in an apron. She explained that she was the
-commissionnaire's wife, who did the charing, and I gave her the order
-for the coffee.
-
-"I wrote two more articles and then, feeling more drowsy than ever, I
-rose and walked up and down the room to stretch my legs. My coffee had
-not yet come, and I wondered what was the cause of the delay could be.
-Opening the door, I started down the corridor to find out. There was a
-straight passage, dimly lighted, which led from the room in which I
-had been working, and was the only exit from it. It ended in a curving
-staircase, with the commissionnaire's lodge in the passage at the
-bottom. Half way down this staircase is a small landing, with another
-passage running into it at right angles. This second one leads by means
-of a second small stair to a side door, used by servants, and also as
-a short cut by clerks when coming from Charles Street. Here is a rough
-chart of the place."
-
-"Thank you. I think that I quite follow you," said Sherlock Holmes.
-
-"It is of the utmost importance that you should notice this point.
-I went down the stairs and into the hall, where I found the
-commissionnaire fast asleep in his box, with the kettle boiling
-furiously upon the spirit-lamp. I took off the kettle and blew out the
-lamp, for the water was spurting over the floor. Then I put out my hand
-and was about to shake the man, who was still sleeping soundly, when a
-bell over his head rang loudly, and he woke with a start.
-
-"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
-
-"'I came down to see if my coffee was ready.'
-
-"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
-then up at the still quivering bell with an ever-growing astonishment
-upon his face.
-
-"'If you was here, sir, then who rang the bell?' he asked.
-
-"'The bell!' I cried. 'What bell is it?'
-
-"'It's the bell of the room you were working in.'
-
-"A cold hand seemed to close round my heart. Some one, then, was in that
-room where my precious treaty lay upon the table. I ran frantically up
-the stair and along the passage. There was no one in the corridors, Mr.
-Holmes. There was no one in the room. All was exactly as I left it, save
-only that the papers which had been committed to my care had been taken
-from the desk on which they lay. The copy was there, and the original
-was gone."
-
-Holmes sat up in his chair and rubbed his hands. I could see that the
-problem was entirely to his heart. "Pray, what did you do then?" he
-murmured.
-
-"I recognized in an instant that the thief must have come up the stairs
-from the side door. Of course I must have met him if he had come the
-other way."
-
-"You were satisfied that he could not have been concealed in the room
-all the time, or in the corridor which you have just described as dimly
-lighted?"
-
-"It is absolutely impossible. A rat could not conceal himself either in
-the room or the corridor. There is no cover at all."
-
-"Thank you. Pray proceed."
-
-"The commissionnaire, seeing by my pale face that something was to be
-feared, had followed me upstairs. Now we both rushed along the corridor
-and down the steep steps which led to Charles Street. The door at the
-bottom was closed, but unlocked. We flung it open and rushed out. I can
-distinctly remember that as we did so there came three chimes from a
-neighboring clock. It was quarter to ten."
-
-"That is of enormous importance," said Holmes, making a note upon his
-shirt-cuff.
-
-"The night was very dark, and a thin, warm rain was falling. There was
-no one in Charles Street, but a great traffic was going on, as usual, in
-Whitehall, at the extremity. We rushed along the pavement, bare-headed
-as we were, and at the far corner we found a policeman standing.
-
-"'A robbery has been committed,' I gasped. 'A document of immense value
-has been stolen from the Foreign Office. Has any one passed this way?'
-
-"'I have been standing here for a quarter of an hour, sir,' said he;
-'only one person has passed during that time--a woman, tall and elderly,
-with a Paisley shawl.'
-
-"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
-passed?'
-
-"'No one.'
-
-"'Then it must be the other way that the thief took,' cried the fellow,
-tugging at my sleeve.
-
-"'But I was not satisfied, and the attempts which he made to draw me
-away increased my suspicions.
-
-"'Which way did the woman go?' I cried.
-
-"'I don't know, sir. I noticed her pass, but I had no special reason for
-watching her. She seemed to be in a hurry.'
-
-"'How long ago was it?'
-
-"'Oh, not very many minutes.'
-
-"'Within the last five?'
-
-"'Well, it could not be more than five.'
-
-"'You're only wasting your time, sir, and every minute now is of
-importance,' cried the commissionnaire; 'take my word for it that my old
-woman has nothing to do with it, and come down to the other end of the
-street. Well, if you won't, I will.' And with that he rushed off in the
-other direction.
-
-"But I was after him in an instant and caught him by the sleeve.
-
-"'Where do you live?' said I.
-
-"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
-away upon a false scent, Mr. Phelps. Come to the other end of the street
-and let us see if we can hear of anything.'
-
-"Nothing was to be lost by following his advice. With the policeman we
-both hurried down, but only to find the street full of traffic, many
-people coming and going, but all only too eager to get to a place of
-safety upon so wet a night. There was no lounger who could tell us who
-had passed.
-
-"Then we returned to the office, and searched the stairs and the passage
-without result. The corridor which led to the room was laid down with
-a kind of creamy linoleum which shows an impression very easily. We
-examined it very carefully, but found no outline of any footmark."
-
-"Had it been raining all evening?"
-
-"Since about seven."
-
-"How is it, then, that the woman who came into the room about nine left
-no traces with her muddy boots?"
-
-"I am glad you raised the point. It occurred to me at the time.
-The charwomen are in the habit of taking off their boots at the
-commissionnaire's office, and putting on list slippers."
-
-"That is very clear. There were no marks, then, though the night was a
-wet one? The chain of events is certainly one of extraordinary interest.
-What did you do next?
-
-"We examined the room also. There is no possibility of a secret door,
-and the windows are quite thirty feet from the ground. Both of them
-were fastened on the inside. The carpet prevents any possibility of a
-trap-door, and the ceiling is of the ordinary whitewashed kind. I will
-pledge my life that whoever stole my papers could only have come through
-the door."
-
-"How about the fireplace?"
-
-"They use none. There is a stove. The bell-rope hangs from the wire just
-to the right of my desk. Whoever rang it must have come right up to the
-desk to do it. But why should any criminal wish to ring the bell? It is
-a most insoluble mystery."
-
-"Certainly the incident was unusual. What were your next steps? You
-examined the room, I presume, to see if the intruder had left any
-traces--any cigar-end or dropped glove or hairpin or other trifle?"
-
-"There was nothing of the sort."
-
-"No smell?"
-
-"Well, we never thought of that."
-
-"Ah, a scent of tobacco would have been worth a great deal to us in such
-an investigation."
-
-"I never smoke myself, so I think I should have observed it if there had
-been any smell of tobacco. There was absolutely no clue of any kind. The
-only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
-the name--had hurried out of the place. He could give no explanation
-save that it was about the time when the woman always went home. The
-policeman and I agreed that our best plan would be to seize the woman
-before she could get rid of the papers, presuming that she had them.
-
-"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
-detective, came round at once and took up the case with a great deal of
-energy. We hired a hansom, and in half an hour we were at the address
-which had been given to us. A young woman opened the door, who proved to
-be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
-we were shown into the front room to wait.
-
-"About ten minutes later a knock came at the door, and here we made the
-one serious mistake for which I blame myself. Instead of opening the
-door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
-there are two men in the house waiting to see you,' and an instant
-afterwards we heard the patter of feet rushing down the passage. Forbes
-flung open the door, and we both ran into the back room or kitchen, but
-the woman had got there before us. She stared at us with defiant
-eyes, and then, suddenly recognizing me, an expression of absolute
-astonishment came over her face.
-
-"'Why, if it isn't Mr. Phelps, of the office!' she cried.
-
-"'Come, come, who did you think we were when you ran away from us?'
-asked my companion.
-
-"'I thought you were the brokers,' said she, 'we have had some trouble
-with a tradesman.'
-
-"'That's not quite good enough,' answered Forbes. 'We have reason to
-believe that you have taken a paper of importance from the Foreign
-Office, and that you ran in here to dispose of it. You must come back
-with us to Scotland Yard to be searched.'
-
-"It was in vain that she protested and resisted. A four-wheeler was
-brought, and we all three drove back in it. We had first made an
-examination of the kitchen, and especially of the kitchen fire, to see
-whether she might have made away with the papers during the instant that
-she was alone. There were no signs, however, of any ashes or scraps.
-When we reached Scotland Yard she was handed over at once to the female
-searcher. I waited in an agony of suspense until she came back with her
-report. There were no signs of the papers.
-
-"Then for the first time the horror of my situation came in its full
-force. Hitherto I had been acting, and action had numbed thought. I had
-been so confident of regaining the treaty at once that I had not dared
-to think of what would be the consequence if I failed to do so. But
-now there was nothing more to be done, and I had leisure to realize
-my position. It was horrible. Watson there would tell you that I was a
-nervous, sensitive boy at school. It is my nature. I thought of my uncle
-and of his colleagues in the Cabinet, of the shame which I had brought
-upon him, upon myself, upon every one connected with me. What though I
-was the victim of an extraordinary accident? No allowance is made
-for accidents where diplomatic interests are at stake. I was ruined,
-shamefully, hopelessly ruined. I don't know what I did. I fancy I must
-have made a scene. I have a dim recollection of a group of officials who
-crowded round me, endeavoring to soothe me. One of them drove down with
-me to Waterloo, and saw me into the Woking train. I believe that he
-would have come all the way had it not been that Dr. Ferrier, who lives
-near me, was going down by that very train. The doctor most kindly took
-charge of me, and it was well he did so, for I had a fit in the station,
-and before we reached home I was practically a raving maniac.
-
-"You can imagine the state of things here when they were roused from
-their beds by the doctor's ringing and found me in this condition. Poor
-Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
-enough from the detective at the station to be able to give an idea of
-what had happened, and his story did not mend matters. It was evident to
-all that I was in for a long illness, so Joseph was bundled out of this
-cheery bedroom, and it was turned into a sick-room for me. Here I have
-lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
-brain-fever. If it had not been for Miss Harrison here and for the
-doctor's care I should not be speaking to you now. She has nursed me by
-day and a hired nurse has looked after me by night, for in my mad fits
-I was capable of anything. Slowly my reason has cleared, but it is only
-during the last three days that my memory has quite returned. Sometimes
-I wish that it never had. The first thing that I did was to wire to
-Mr. Forbes, who had the case in hand. He came out, and assures me that,
-though everything has been done, no trace of a clue has been discovered.
-The commissionnaire and his wife have been examined in every way without
-any light being thrown upon the matter. The suspicions of the police
-then rested upon young Gorot, who, as you may remember, stayed over time
-in the office that night. His remaining behind and his French name were
-really the only two points which could suggest suspicion; but, as a
-matter of fact, I did not begin work until he had gone, and his people
-are of Huguenot extraction, but as English in sympathy and tradition as
-you and I are. Nothing was found to implicate him in any way, and there
-the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
-hope. If you fail me, then my honor as well as my position are forever
-forfeited."
-
-The invalid sank back upon his cushions, tired out by this long recital,
-while his nurse poured him out a glass of some stimulating medicine.
-Holmes sat silently, with his head thrown back and his eyes closed, in
-an attitude which might seem listless to a stranger, but which I knew
-betokened the most intense self-absorption.
-
-"You statement has been so explicit," said he at last, "that you have
-really left me very few questions to ask. There is one of the very
-utmost importance, however. Did you tell any one that you had this
-special task to perform?"
-
-"No one."
-
-"Not Miss Harrison here, for example?"
-
-"No. I had not been back to Woking between getting the order and
-executing the commission."
-
-"And none of your people had by chance been to see you?"
-
-"None."
-
-"Did any of them know their way about in the office?"
-
-"Oh, yes, all of them had been shown over it."
-
-"Still, of course, if you said nothing to any one about the treaty these
-inquiries are irrelevant."
-
-"I said nothing."
-
-"Do you know anything of the commissionnaire?"
-
-"Nothing except that he is an old soldier."
-
-"What regiment?"
-
-"Oh, I have heard--Coldstream Guards."
-
-"Thank you. I have no doubt I can get details from Forbes. The
-authorities are excellent at amassing facts, though they do not always
-use them to advantage. What a lovely thing a rose is!"
-
-He walked past the couch to the open window, and held up the drooping
-stalk of a moss-rose, looking down at the dainty blend of crimson and
-green. It was a new phase of his character to me, for I had never before
-seen him show any keen interest in natural objects.
-
-"There is nothing in which deduction is so necessary as in religion,"
-said he, leaning with his back against the shutters. "It can be built
-up as an exact science by the reasoner. Our highest assurance of the
-goodness of Providence seems to me to rest in the flowers. All other
-things, our powers our desires, our food, are all really necessary for
-our existence in the first instance. But this rose is an extra. Its
-smell and its color are an embellishment of life, not a condition of it.
-It is only goodness which gives extras, and so I say again that we have
-much to hope from the flowers."
-
-Percy Phelps and his nurse looked at Holmes during this demonstration
-with surprise and a good deal of disappointment written upon their
-faces. He had fallen into a reverie, with the moss-rose between his
-fingers. It had lasted some minutes before the young lady broke in upon
-it.
-
-"Do you see any prospect of solving this mystery, Mr. Holmes?" she
-asked, with a touch of asperity in her voice.
-
-"Oh, the mystery!" he answered, coming back with a start to the
-realities of life. "Well, it would be absurd to deny that the case is
-a very abstruse and complicated one, but I can promise you that I will
-look into the matter and let you know any points which may strike me."
-
-"Do you see any clue?"
-
-"You have furnished me with seven, but, of course, I must test them
-before I can pronounce upon their value."
-
-"You suspect some one?"
-
-"I suspect myself."
-
-"What!"
-
-"Of coming to conclusions too rapidly."
-
-"Then go to London and test your conclusions."
-
-"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
-think, Watson, we cannot do better. Do not allow yourself to indulge in
-false hopes, Mr. Phelps. The affair is a very tangled one."
-
-"I shall be in a fever until I see you again," cried the diplomatist.
-
-"Well, I'll come out by the same train to-morrow, though it's more than
-likely that my report will be a negative one."
-
-"God bless you for promising to come," cried our client. "It gives me
-fresh life to know that something is being done. By the way, I have had
-a letter from Lord Holdhurst."
-
-"Ha! What did he say?"
-
-"He was cold, but not harsh. I dare say my severe illness prevented
-him from being that. He repeated that the matter was of the utmost
-importance, and added that no steps would be taken about my future--by
-which he means, of course, my dismissal--until my health was restored
-and I had an opportunity of repairing my misfortune."
-
-"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
-for we have a good day's work before us in town."
-
-Mr. Joseph Harrison drove us down to the station, and we were soon
-whirling up in a Portsmouth train. Holmes was sunk in profound thought,
-and hardly opened his mouth until we had passed Clapham Junction.
-
-"It's a very cheery thing to come into London by any of these lines
-which run high, and allow you to look down upon the houses like this."
-
-I thought he was joking, for the view was sordid enough, but he soon
-explained himself.
-
-"Look at those big, isolated clumps of building rising up above the
-slates, like brick islands in a lead-colored sea."
-
-"The board-schools."
-
-"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
-bright little seeds in each, out of which will spring the wise, better
-England of the future. I suppose that man Phelps does not drink?"
-
-"I should not think so."
-
-"Nor should I, but we are bound to take every possibility into account.
-The poor devil has certainly got himself into very deep water, and it's
-a question whether we shall ever be able to get him ashore. What did you
-think of Miss Harrison?"
-
-"A girl of strong character."
-
-"Yes, but she is a good sort, or I am mistaken. She and her brother are
-the only children of an iron-master somewhere up Northumberland way. He
-got engaged to her when traveling last winter, and she came down to
-be introduced to his people, with her brother as escort. Then came
-the smash, and she stayed on to nurse her lover, while brother Joseph,
-finding himself pretty snug, stayed on too. I've been making a few
-independent inquiries, you see. But to-day must be a day of inquiries."
-
-"My practice--" I began.
-
-"Oh, if you find your own cases more interesting than mine--" said
-Holmes, with some asperity.
-
-"I was going to say that my practice could get along very well for a day
-or two, since it is the slackest time in the year."
-
-"Excellent," said he, recovering his good-humor. "Then we'll look into
-this matter together. I think that we should begin by seeing Forbes.
-He can probably tell us all the details we want until we know from what
-side the case is to be approached."
-
-"You said you had a clue?"
-
-"Well, we have several, but we can only test their value by further
-inquiry. The most difficult crime to track is the one which is
-purposeless. Now this is not purposeless. Who is it who profits by it?
-There is the French ambassador, there is the Russian, there is whoever
-might sell it to either of these, and there is Lord Holdhurst."
-
-"Lord Holdhurst!"
-
-"Well, it is just conceivable that a statesman might find himself in
-a position where he was not sorry to have such a document accidentally
-destroyed."
-
-"Not a statesman with the honorable record of Lord Holdhurst?"
-
-"It is a possibility and we cannot afford to disregard it. We shall see
-the noble lord to-day and find out if he can tell us anything. Meanwhile
-I have already set inquiries on foot."
-
-"Already?"
-
-"Yes, I sent wires from Woking station to every evening paper in London.
-This advertisement will appear in each of them."
-
-He handed over a sheet torn from a note-book. On it was scribbled in
-pencil: "L10 reward. The number of the cab which dropped a fare at or
-about the door of the Foreign Office in Charles Street at quarter to ten
-in the evening of May 23d. Apply 221 B, Baker Street."
-
-"You are confident that the thief came in a cab?"
-
-"If not, there is no harm done. But if Mr. Phelps is correct in stating
-that there is no hiding-place either in the room or the corridors, then
-the person must have come from outside. If he came from outside on so
-wet a night, and yet left no trace of damp upon the linoleum, which
-was examined within a few minutes of his passing, then it is exceeding
-probable that he came in a cab. Yes, I think that we may safely deduce a
-cab."
-
-"It sounds plausible."
-
-"That is one of the clues of which I spoke. It may lead us to something.
-And then, of course, there is the bell--which is the most distinctive
-feature of the case. Why should the bell ring? Was it the thief who did
-it out of bravado? Or was it some one who was with the thief who did it
-in order to prevent the crime? Or was it an accident? Or was it--?" He
-sank back into the state of intense and silent thought from which he
-had emerged; but it seemed to me, accustomed as I was to his every mood,
-that some new possibility had dawned suddenly upon him.
-
-It was twenty past three when we reached our terminus, and after a hasty
-luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
-had already wired to Forbes, and we found him waiting to receive us--a
-small, foxy man with a sharp but by no means amiable expression. He
-was decidedly frigid in his manner to us, especially when he heard the
-errand upon which we had come.
-
-"I've heard of your methods before now, Mr. Holmes," said he, tartly.
-"You are ready enough to use all the information that the police can lay
-at your disposal, and then you try to finish the case yourself and bring
-discredit on them."
-
-"On the contrary," said Holmes, "out of my last fifty-three cases my
-name has only appeared in four, and the police have had all the credit
-in forty-nine. I don't blame you for not knowing this, for you are young
-and inexperienced, but if you wish to get on in your new duties you will
-work with me and not against me."
-
-"I'd be very glad of a hint or two," said the detective, changing his
-manner. "I've certainly had no credit from the case so far."
-
-"What steps have you taken?"
-
-"Tangey, the commissionnaire, has been shadowed. He left the Guards with
-a good character and we can find nothing against him. His wife is a bad
-lot, though. I fancy she knows more about this than appears."
-
-"Have you shadowed her?"
-
-"We have set one of our women on to her. Mrs. Tangey drinks, and our
-woman has been with her twice when she was well on, but she could get
-nothing out of her."
-
-"I understand that they have had brokers in the house?"
-
-"Yes, but they were paid off."
-
-"Where did the money come from?"
-
-"That was all right. His pension was due. They have not shown any sign
-of being in funds."
-
-"What explanation did she give of having answered the bell when Mr.
-Phelps rang for the coffee?"
-
-"She said that he husband was very tired and she wished to relieve him."
-
-"Well, certainly that would agree with his being found a little later
-asleep in his chair. There is nothing against them then but the woman's
-character. Did you ask her why she hurried away that night? Her haste
-attracted the attention of the police constable."
-
-"She was later than usual and wanted to get home."
-
-"Did you point out to her that you and Mr. Phelps, who started at least
-twenty minutes after her, got home before her?"
-
-"She explains that by the difference between a 'bus and a hansom."
-
-"Did she make it clear why, on reaching her house, she ran into the back
-kitchen?"
-
-"Because she had the money there with which to pay off the brokers."
-
-"She has at least an answer for everything. Did you ask her whether in
-leaving she met any one or saw any one loitering about Charles Street?"
-
-"She saw no one but the constable."
-
-"Well, you seem to have cross-examined her pretty thoroughly. What else
-have you done?"
-
-"The clerk Gorot has been shadowed all these nine weeks, but without
-result. We can show nothing against him."
-
-"Anything else?"
-
-"Well, we have nothing else to go upon--no evidence of any kind."
-
-"Have you formed a theory about how that bell rang?"
-
-"Well, I must confess that it beats me. It was a cool hand, whoever it
-was, to go and give the alarm like that."
-
-"Yes, it was queer thing to do. Many thanks to you for what you have
-told me. If I can put the man into your hands you shall hear from me.
-Come along, Watson."
-
-"Where are we going to now?" I asked, as we left the office.
-
-"We are now going to interview Lord Holdhurst, the cabinet minister and
-future premier of England."
-
-We were fortunate in finding that Lord Holdhurst was still in his
-chambers in Downing Street, and on Holmes sending in his card we were
-instantly shown up. The statesman received us with that old-fashioned
-courtesy for which he is remarkable, and seated us on the two luxuriant
-lounges on either side of the fireplace. Standing on the rug between us,
-with his slight, tall figure, his sharp features, thoughtful face, and
-curling hair prematurely tinged with gray, he seemed to represent that
-not too common type, a nobleman who is in truth noble.
-
-"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
-of course, I cannot pretend to be ignorant of the object of your visit.
-There has only been one occurrence in these offices which could call for
-your attention. In whose interest are you acting, may I ask?"
-
-"In that of Mr. Percy Phelps," answered Holmes.
-
-"Ah, my unfortunate nephew! You can understand that our kinship makes
-it the more impossible for me to screen him in any way. I fear that the
-incident must have a very prejudicial effect upon his career."
-
-"But if the document is found?"
-
-"Ah, that, of course, would be different."
-
-"I had one or two questions which I wished to ask you, Lord Holdhurst."
-
-"I shall be happy to give you any information in my power."
-
-"Was it in this room that you gave your instructions as to the copying
-of the document?"
-
-"It was."
-
-"Then you could hardly have been overheard?"
-
-"It is out of the question."
-
-"Did you ever mention to any one that it was your intention to give any
-one the treaty to be copied?"
-
-"Never."
-
-"You are certain of that?"
-
-"Absolutely."
-
-"Well, since you never said so, and Mr. Phelps never said so, and nobody
-else knew anything of the matter, then the thief's presence in the room
-was purely accidental. He saw his chance and he took it."
-
-The statesman smiled. "You take me out of my province there," said he.
-
-Holmes considered for a moment. "There is another very important
-point which I wish to discuss with you," said he. "You feared, as I
-understand, that very grave results might follow from the details of
-this treaty becoming known."
-
-A shadow passed over the expressive face of the statesman. "Very grave
-results indeed."
-
-"Any have they occurred?"
-
-"Not yet."
-
-"If the treaty had reached, let us say, the French or Russian Foreign
-Office, you would expect to hear of it?"
-
-"I should," said Lord Holdhurst, with a wry face.
-
-"Since nearly ten weeks have elapsed, then, and nothing has been heard,
-it is not unfair to suppose that for some reason the treaty has not
-reached them."
-
-Lord Holdhurst shrugged his shoulders.
-
-"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
-order to frame it and hang it up."
-
-"Perhaps he is waiting for a better price."
-
-"If he waits a little longer he will get no price at all. The treaty
-will cease to be secret in a few months."
-
-"That is most important," said Holmes. "Of course, it is a possible
-supposition that the thief has had a sudden illness--"
-
-"An attack of brain-fever, for example?" asked the statesman, flashing a
-swift glance at him.
-
-"I did not say so," said Holmes, imperturbably. "And now, Lord
-Holdhurst, we have already taken up too much of your valuable time, and
-we shall wish you good-day."
-
-"Every success to your investigation, be the criminal who it may,"
-answered the nobleman, as he bowed us out the door.
-
-"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
-he has a struggle to keep up his position. He is far from rich and has
-many calls. You noticed, of course, that his boots had been resoled.
-Now, Watson, I won't detain you from your legitimate work any longer.
-I shall do nothing more to-day, unless I have an answer to my cab
-advertisement. But I should be extremely obliged to you if you would
-come down with me to Woking to-morrow, by the same train which we took
-yesterday."
-
-
-I met him accordingly next morning and we traveled down to Woking
-together. He had had no answer to his advertisement, he said, and no
-fresh light had been thrown upon the case. He had, when he so willed
-it, the utter immobility of countenance of a red Indian, and I could
-not gather from his appearance whether he was satisfied or not with
-the position of the case. His conversation, I remember, was about the
-Bertillon system of measurements, and he expressed his enthusiastic
-admiration of the French savant.
-
-We found our client still under the charge of his devoted nurse, but
-looking considerably better than before. He rose from the sofa and
-greeted us without difficulty when we entered.
-
-"Any news?" he asked, eagerly.
-
-"My report, as I expected, is a negative one," said Holmes. "I have seen
-Forbes, and I have seen your uncle, and I have set one or two trains of
-inquiry upon foot which may lead to something."
-
-"You have not lost heart, then?"
-
-"By no means."
-
-"God bless you for saying that!" cried Miss Harrison. "If we keep our
-courage and our patience the truth must come out."
-
-"We have more to tell you than you have for us," said Phelps, reseating
-himself upon the couch.
-
-"I hoped you might have something."
-
-"Yes, we have had an adventure during the night, and one which might
-have proved to be a serious one." His expression grew very grave as he
-spoke, and a look of something akin to fear sprang up in his eyes. "Do
-you know," said he, "that I begin to believe that I am the unconscious
-centre of some monstrous conspiracy, and that my life is aimed at as
-well as my honor?"
-
-"Ah!" cried Holmes.
-
-"It sounds incredible, for I have not, as far as I know, an enemy in
-the world. Yet from last night's experience I can come to no other
-conclusion."
-
-"Pray let me hear it."
-
-"You must know that last night was the very first night that I have ever
-slept without a nurse in the room. I was so much better that I thought
-I could dispense with one. I had a night-light burning, however. Well,
-about two in the morning I had sunk into a light sleep when I was
-suddenly aroused by a slight noise. It was like the sound which a mouse
-makes when it is gnawing a plank, and I lay listening to it for some
-time under the impression that it must come from that cause. Then it
-grew louder, and suddenly there came from the window a sharp metallic
-snick. I sat up in amazement. There could be no doubt what the sounds
-were now. The first ones had been caused by some one forcing an
-instrument through the slit between the sashes, and the second by the
-catch being pressed back.
-
-"There was a pause then for about ten minutes, as if the person were
-waiting to see whether the noise had awakened me. Then I heard a gentle
-creaking as the window was very slowly opened. I could stand it no
-longer, for my nerves are not what they used to be. I sprang out of bed
-and flung open the shutters. A man was crouching at the window. I could
-see little of him, for he was gone like a flash. He was wrapped in some
-sort of cloak which came across the lower part of his face. One thing
-only I am sure of, and that is that he had some weapon in his hand. It
-looked to me like a long knife. I distinctly saw the gleam of it as he
-turned to run."
-
-"This is most interesting," said Holmes. "Pray what did you do then?"
-
-"I should have followed him through the open window if I had been
-stronger. As it was, I rang the bell and roused the house. It took me
-some little time, for the bell rings in the kitchen and the servants all
-sleep upstairs. I shouted, however, and that brought Joseph down, and he
-roused the others. Joseph and the groom found marks on the bed outside
-the window, but the weather has been so dry lately that they found it
-hopeless to follow the trail across the grass. There's a place, however,
-on the wooden fence which skirts the road which shows signs, they tell
-me, as if some one had got over, and had snapped the top of the rail in
-doing so. I have said nothing to the local police yet, for I thought I
-had best have your opinion first."
-
-This tale of our client's appeared to have an extraordinary effect upon
-Sherlock Holmes. He rose from his chair and paced about the room in
-uncontrollable excitement.
-
-"Misfortunes never come single," said Phelps, smiling, though it was
-evident that his adventure had somewhat shaken him.
-
-"You have certainly had your share," said Holmes. "Do you think you
-could walk round the house with me?"
-
-"Oh, yes, I should like a little sunshine. Joseph will come, too."
-
-"And I also," said Miss Harrison.
-
-"I am afraid not," said Holmes, shaking his head. "I think I must ask
-you to remain sitting exactly where you are."
-
-The young lady resumed her seat with an air of displeasure. Her brother,
-however, had joined us and we set off all four together. We passed round
-the lawn to the outside of the young diplomatist's window. There were,
-as he had said, marks upon the bed, but they were hopelessly blurred and
-vague. Holmes stopped over them for an instant, and then rose shrugging
-his shoulders.
-
-"I don't think any one could make much of this," said he. "Let us go
-round the house and see why this particular room was chosen by the
-burglar. I should have thought those larger windows of the drawing-room
-and dining-room would have had more attractions for him."
-
-"They are more visible from the road," suggested Mr. Joseph Harrison.
-
-"Ah, yes, of course. There is a door here which he might have attempted.
-What is it for?"
-
-"It is the side entrance for trades-people. Of course it is locked at
-night."
-
-"Have you ever had an alarm like this before?"
-
-"Never," said our client.
-
-"Do you keep plate in the house, or anything to attract burglars?"
-
-"Nothing of value."
-
-Holmes strolled round the house with his hands in his pockets and a
-negligent air which was unusual with him.
-
-"By the way," said he to Joseph Harrison, "you found some place, I
-understand, where the fellow scaled the fence. Let us have a look at
-that!"
-
-The plump young man led us to a spot where the top of one of the wooden
-rails had been cracked. A small fragment of the wood was hanging down.
-Holmes pulled it off and examined it critically.
-
-"Do you think that was done last night? It looks rather old, does it
-not?"
-
-"Well, possibly so."
-
-"There are no marks of any one jumping down upon the other side. No, I
-fancy we shall get no help here. Let us go back to the bedroom and talk
-the matter over."
-
-Percy Phelps was walking very slowly, leaning upon the arm of his future
-brother-in-law. Holmes walked swiftly across the lawn, and we were at
-the open window of the bedroom long before the others came up.
-
-"Miss Harrison," said Holmes, speaking with the utmost intensity of
-manner, "you must stay where you are all day. Let nothing prevent you
-from staying where you are all day. It is of the utmost importance."
-
-"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
-
-"When you go to bed lock the door of this room on the outside and keep
-the key. Promise to do this."
-
-"But Percy?"
-
-"He will come to London with us."
-
-"And am I to remain here?"
-
-"It is for his sake. You can serve him. Quick! Promise!"
-
-She gave a quick nod of assent just as the other two came up.
-
-"Why do you sit moping there, Annie?" cried her brother. "Come out into
-the sunshine!"
-
-"No, thank you, Joseph. I have a slight headache and this room is
-deliciously cool and soothing."
-
-"What do you propose now, Mr. Holmes?" asked our client.
-
-"Well, in investigating this minor affair we must not lose sight of our
-main inquiry. It would be a very great help to me if you would come up
-to London with us."
-
-"At once?"
-
-"Well, as soon as you conveniently can. Say in an hour."
-
-"I feel quite strong enough, if I can really be of any help."
-
-"The greatest possible."
-
-"Perhaps you would like me to stay there to-night?"
-
-"I was just going to propose it."
-
-"Then, if my friend of the night comes to revisit me, he will find the
-bird flown. We are all in your hands, Mr. Holmes, and you must tell us
-exactly what you would like done. Perhaps you would prefer that Joseph
-came with us so as to look after me?"
-
-"Oh, no; my friend Watson is a medical man, you know, and he'll look
-after you. We'll have our lunch here, if you will permit us, and then we
-shall all three set off for town together."
-
-It was arranged as he suggested, though Miss Harrison excused herself
-from leaving the bedroom, in accordance with Holmes's suggestion. What
-the object of my friend's manoeuvres was I could not conceive, unless it
-were to keep the lady away from Phelps, who, rejoiced by his
-returning health and by the prospect of action, lunched with us in the
-dining-room. Holmes had a still more startling surprise for us, however,
-for, after accompanying us down to the station and seeing us into
-our carriage, he calmly announced that he had no intention of leaving
-Woking.
-
-"There are one or two small points which I should desire to clear up
-before I go," said he. "Your absence, Mr. Phelps, will in some ways
-rather assist me. Watson, when you reach London you would oblige me by
-driving at once to Baker Street with our friend here, and remaining
-with him until I see you again. It is fortunate that you are old
-school-fellows, as you must have much to talk over. Mr. Phelps can
-have the spare bedroom to-night, and I will be with you in time for
-breakfast, for there is a train which will take me into Waterloo at
-eight."
-
-"But how about our investigation in London?" asked Phelps, ruefully.
-
-"We can do that to-morrow. I think that just at present I can be of more
-immediate use here."
-
-"You might tell them at Briarbrae that I hope to be back to-morrow
-night," cried Phelps, as we began to move from the platform.
-
-"I hardly expect to go back to Briarbrae," answered Holmes, and waved
-his hand to us cheerily as we shot out from the station.
-
-Phelps and I talked it over on our journey, but neither of us could
-devise a satisfactory reason for this new development.
-
-"I suppose he wants to find out some clue as to the burglary last night,
-if a burglar it was. For myself, I don't believe it was an ordinary
-thief."
-
-"What is your own idea, then?"
-
-"Upon my word, you may put it down to my weak nerves or not, but I
-believe there is some deep political intrigue going on around me, and
-that for some reason that passes my understanding my life is aimed at
-by the conspirators. It sounds high-flown and absurd, but consider the
-facts! Why should a thief try to break in at a bedroom window, where
-there could be no hope of any plunder, and why should he come with a
-long knife in his hand?"
-
-"You are sure it was not a house-breaker's jimmy?"
-
-"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
-
-"But why on earth should you be pursued with such animosity?"
-
-"Ah, that is the question."
-
-"Well, if Holmes takes the same view, that would account for his action,
-would it not? Presuming that your theory is correct, if he can lay his
-hands upon the man who threatened you last night he will have gone a
-long way towards finding who took the naval treaty. It is absurd to
-suppose that you have two enemies, one of whom robs you, while the other
-threatens your life."
-
-"But Holmes said that he was not going to Briarbrae."
-
-"I have known him for some time," said I, "but I never knew him do
-anything yet without a very good reason," and with that our conversation
-drifted off on to other topics.
-
-But it was a weary day for me. Phelps was still weak after his long
-illness, and his misfortune made him querulous and nervous. In vain
-I endeavored to interest him in Afghanistan, in India, in social
-questions, in anything which might take his mind out of the groove.
-He would always come back to his lost treaty, wondering, guessing,
-speculating, as to what Holmes was doing, what steps Lord Holdhurst was
-taking, what news we should have in the morning. As the evening wore on
-his excitement became quite painful.
-
-"You have implicit faith in Holmes?" he asked.
-
-"I have seen him do some remarkable things."
-
-"But he never brought light into anything quite so dark as this?"
-
-"Oh, yes; I have known him solve questions which presented fewer clues
-than yours."
-
-"But not where such large interests are at stake?"
-
-"I don't know that. To my certain knowledge he has acted on behalf of
-three of the reigning houses of Europe in very vital matters."
-
-"But you know him well, Watson. He is such an inscrutable fellow that I
-never quite know what to make of him. Do you think he is hopeful? Do you
-think he expects to make a success of it?"
-
-"He has said nothing."
-
-"That is a bad sign."
-
-"On the contrary, I have noticed that when he is off the trail he
-generally says so. It is when he is on a scent and is not quite
-absolutely sure yet that it is the right one that he is most taciturn.
-Now, my dear fellow, we can't help matters by making ourselves nervous
-about them, so let me implore you to go to bed and so be fresh for
-whatever may await us to-morrow."
-
-I was able at last to persuade my companion to take my advice, though I
-knew from his excited manner that there was not much hope of sleep for
-him. Indeed, his mood was infectious, for I lay tossing half the night
-myself, brooding over this strange problem, and inventing a hundred
-theories, each of which was more impossible than the last. Why had
-Holmes remained at Woking? Why had he asked Miss Harrison to remain
-in the sick-room all day? Why had he been so careful not to inform the
-people at Briarbrae that he intended to remain near them? I cudgelled
-my brains until I fell asleep in the endeavor to find some explanation
-which would cover all these facts.
-
-It was seven o'clock when I awoke, and I set off at once for Phelps's
-room, to find him haggard and spent after a sleepless night. His first
-question was whether Holmes had arrived yet.
-
-"He'll be here when he promised," said I, "and not an instant sooner or
-later."
-
-And my words were true, for shortly after eight a hansom dashed up to
-the door and our friend got out of it. Standing in the window we saw
-that his left hand was swathed in a bandage and that his face was very
-grim and pale. He entered the house, but it was some little time before
-he came upstairs.
-
-"He looks like a beaten man," cried Phelps.
-
-I was forced to confess that he was right. "After all," said I, "the
-clue of the matter lies probably here in town."
-
-Phelps gave a groan.
-
-"I don't know how it is," said he, "but I had hoped for so much from his
-return. But surely his hand was not tied up like that yesterday. What
-can be the matter?"
-
-"You are not wounded, Holmes?" I asked, as my friend entered the room.
-
-"Tut, it is only a scratch through my own clumsiness," he answered,
-nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
-certainly one of the darkest which I have ever investigated."
-
-"I feared that you would find it beyond you."
-
-"It has been a most remarkable experience."
-
-"That bandage tells of adventures," said I. "Won't you tell us what has
-happened?"
-
-"After breakfast, my dear Watson. Remember that I have breathed thirty
-miles of Surrey air this morning. I suppose that there has been no
-answer from my cabman advertisement? Well, well, we cannot expect to
-score every time."
-
-The table was all laid, and just as I was about to ring Mrs. Hudson
-entered with the tea and coffee. A few minutes later she brought in
-three covers, and we all drew up to the table, Holmes ravenous, I
-curious, and Phelps in the gloomiest state of depression.
-
-"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
-of curried chicken. "Her cuisine is a little limited, but she has
-as good an idea of breakfast as a Scotch-woman. What have you here,
-Watson?"
-
-"Ham and eggs," I answered.
-
-"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
-will you help yourself?"
-
-"Thank you. I can eat nothing," said Phelps.
-
-"Oh, come! Try the dish before you."
-
-"Thank you, I would really rather not."
-
-"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
-you have no objection to helping me?"
-
-Phelps raised the cover, and as he did so he uttered a scream, and sat
-there staring with a face as white as the plate upon which he looked.
-Across the centre of it was lying a little cylinder of blue-gray paper.
-He caught it up, devoured it with his eyes, and then danced madly about
-the room, pressing it to his bosom and shrieking out in his delight.
-Then he fell back into an arm-chair so limp and exhausted with his own
-emotions that we had to pour brandy down his throat to keep him from
-fainting.
-
-"There! there!" said Holmes, soothing, patting him upon the shoulder.
-"It was too bad to spring it on you like this, but Watson here will tell
-you that I never can resist a touch of the dramatic."
-
-Phelps seized his hand and kissed it. "God bless you!" he cried. "You
-have saved my honor."
-
-"Well, my own was at stake, you know," said Holmes. "I assure you it is
-just as hateful to me to fail in a case as it can be to you to blunder
-over a commission."
-
-Phelps thrust away the precious document into the innermost pocket of
-his coat.
-
-"I have not the heart to interrupt your breakfast any further, and yet I
-am dying to know how you got it and where it was."
-
-Sherlock Holmes swallowed a cup of coffee, and turned his attention to
-the ham and eggs. Then he rose, lit his pipe, and settled himself down
-into his chair.
-
-"I'll tell you what I did first, and how I came to do it afterwards,"
-said he. "After leaving you at the station I went for a charming walk
-through some admirable Surrey scenery to a pretty little village called
-Ripley, where I had my tea at an inn, and took the precaution of filling
-my flask and of putting a paper of sandwiches in my pocket. There I
-remained until evening, when I set off for Woking again, and found
-myself in the high-road outside Briarbrae just after sunset.
-
-"Well, I waited until the road was clear--it is never a very frequented
-one at any time, I fancy--and then I clambered over the fence into the
-grounds."
-
-"Surely the gate was open!" ejaculated Phelps.
-
-"Yes, but I have a peculiar taste in these matters. I chose the place
-where the three fir-trees stand, and behind their screen I got over
-without the least chance of any one in the house being able to see me.
-I crouched down among the bushes on the other side, and crawled from one
-to the other--witness the disreputable state of my trouser knees--until
-I had reached the clump of rhododendrons just opposite to your bedroom
-window. There I squatted down and awaited developments.
-
-"The blind was not down in your room, and I could see Miss Harrison
-sitting there reading by the table. It was quarter-past ten when she
-closed her book, fastened the shutters, and retired.
-
-"I heard her shut the door, and felt quite sure that she had turned the
-key in the lock."
-
-"The key!" ejaculated Phelps.
-
-"Yes; I had given Miss Harrison instructions to lock the door on the
-outside and take the key with her when she went to bed. She carried out
-every one of my injunctions to the letter, and certainly without her
-cooperation you would not have that paper in you coat-pocket. She
-departed then and the lights went out, and I was left squatting in the
-rhododendron-bush.
-
-"The night was fine, but still it was a very weary vigil. Of course it
-has the sort of excitement about it that the sportsman feels when he
-lies beside the water-course and waits for the big game. It was very
-long, though--almost as long, Watson, as when you and I waited in that
-deadly room when we looked into the little problem of the Speckled Band.
-There was a church-clock down at Woking which struck the quarters, and I
-thought more than once that it had stopped. At last however about two
-in the morning, I suddenly heard the gentle sound of a bolt being pushed
-back and the creaking of a key. A moment later the servants' door was
-opened, and Mr. Joseph Harrison stepped out into the moonlight."
-
-"Joseph!" ejaculated Phelps.
-
-"He was bare-headed, but he had a black coat thrown over his shoulder so
-that he could conceal his face in an instant if there were any alarm. He
-walked on tiptoe under the shadow of the wall, and when he reached the
-window he worked a long-bladed knife through the sash and pushed back
-the catch. Then he flung open the window, and putting his knife through
-the crack in the shutters, he thrust the bar up and swung them open.
-
-"From where I lay I had a perfect view of the inside of the room and of
-every one of his movements. He lit the two candles which stood upon the
-mantelpiece, and then he proceeded to turn back the corner of the carpet
-in the neighborhood of the door. Presently he stopped and picked out a
-square piece of board, such as is usually left to enable plumbers to get
-at the joints of the gas-pipes. This one covered, as a matter of
-fact, the T joint which gives off the pipe which supplies the kitchen
-underneath. Out of this hiding-place he drew that little cylinder
-of paper, pushed down the board, rearranged the carpet, blew out the
-candles, and walked straight into my arms as I stood waiting for him
-outside the window.
-
-"Well, he has rather more viciousness than I gave him credit for, has
-Master Joseph. He flew at me with his knife, and I had to grasp him
-twice, and got a cut over the knuckles, before I had the upper hand of
-him. He looked murder out of the only eye he could see with when we had
-finished, but he listened to reason and gave up the papers. Having
-got them I let my man go, but I wired full particulars to Forbes this
-morning. If he is quick enough to catch his bird, well and good. But
-if, as I shrewdly suspect, he finds the nest empty before he gets there,
-why, all the better for the government. I fancy that Lord Holdhurst for
-one, and Mr. Percy Phelps for another, would very much rather that the
-affair never got as far as a police-court.
-
-"My God!" gasped our client. "Do you tell me that during these long ten
-weeks of agony the stolen papers were within the very room with me all
-the time?"
-
-"So it was."
-
-"And Joseph! Joseph a villain and a thief!"
-
-"Hum! I am afraid Joseph's character is a rather deeper and more
-dangerous one than one might judge from his appearance. From what I
-have heard from him this morning, I gather that he has lost heavily in
-dabbling with stocks, and that he is ready to do anything on earth to
-better his fortunes. Being an absolutely selfish man, when a chance
-presented itself he did not allow either his sister's happiness or your
-reputation to hold his hand."
-
-Percy Phelps sank back in his chair. "My head whirls," said he. "Your
-words have dazed me."
-
-"The principal difficulty in your case," remarked Holmes, in his
-didactic fashion, "lay in the fact of there being too much evidence.
-What was vital was overlaid and hidden by what was irrelevant. Of all
-the facts which were presented to us we had to pick just those which we
-deemed to be essential, and then piece them together in their order, so
-as to reconstruct this very remarkable chain of events. I had already
-begun to suspect Joseph, from the fact that you had intended to travel
-home with him that night, and that therefore it was a likely enough
-thing that he should call for you, knowing the Foreign Office well, upon
-his way. When I heard that some one had been so anxious to get into the
-bedroom, in which no one but Joseph could have concealed anything--you
-told us in your narrative how you had turned Joseph out when you arrived
-with the doctor--my suspicions all changed to certainties, especially as
-the attempt was made on the first night upon which the nurse was absent,
-showing that the intruder was well acquainted with the ways of the
-house."
-
-"How blind I have been!"
-
-"The facts of the case, as far as I have worked them out, are these:
-this Joseph Harrison entered the office through the Charles Street door,
-and knowing his way he walked straight into your room the instant after
-you left it. Finding no one there he promptly rang the bell, and at
-the instant that he did so his eyes caught the paper upon the table.
-A glance showed him that chance had put in his way a State document of
-immense value, and in an instant he had thrust it into his pocket and
-was gone. A few minutes elapsed, as you remember, before the sleepy
-commissionnaire drew your attention to the bell, and those were just
-enough to give the thief time to make his escape.
-
-"He made his way to Woking by the first train, and having examined his
-booty and assured himself that it really was of immense value, he
-had concealed it in what he thought was a very safe place, with the
-intention of taking it out again in a day or two, and carrying it to the
-French embassy, or wherever he thought that a long price was to be
-had. Then came your sudden return. He, without a moment's warning, was
-bundled out of his room, and from that time onward there were always at
-least two of you there to prevent him from regaining his treasure. The
-situation to him must have been a maddening one. But at last he thought
-he saw his chance. He tried to steal in, but was baffled by your
-wakefulness. You remember that you did not take your usual draught that
-night."
-
-"I remember."
-
-"I fancy that he had taken steps to make that draught efficacious,
-and that he quite relied upon your being unconscious. Of course, I
-understood that he would repeat the attempt whenever it could be done
-with safety. Your leaving the room gave him the chance he wanted. I kept
-Miss Harrison in it all day so that he might not anticipate us. Then,
-having given him the idea that the coast was clear, I kept guard as
-I have described. I already knew that the papers were probably in the
-room, but I had no desire to rip up all the planking and skirting in
-search of them. I let him take them, therefore, from the hiding-place,
-and so saved myself an infinity of trouble. Is there any other point
-which I can make clear?"
-
-"Why did he try the window on the first occasion," I asked, "when he
-might have entered by the door?"
-
-"In reaching the door he would have to pass seven bedrooms. On the other
-hand, he could get out on to the lawn with ease. Anything else?"
-
-"You do not think," asked Phelps, "that he had any murderous intention?
-The knife was only meant as a tool."
-
-"It may be so," answered Holmes, shrugging his shoulders. "I can only
-say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
-should be extremely unwilling to trust."
-
-
-
-
-Adventure XI. The Final Problem
-
-
-It is with a heavy heart that I take up my pen to write these the last
-words in which I shall ever record the singular gifts by which my friend
-Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
-feel, an entirely inadequate fashion, I have endeavored to give some
-account of my strange experiences in his company from the chance which
-first brought us together at the period of the "Study in Scarlet," up
-to the time of his interference in the matter of the "Naval Treaty"--an
-interference which had the unquestionable effect of preventing a serious
-international complication. It was my intention to have stopped there,
-and to have said nothing of that event which has created a void in my
-life which the lapse of two years has done little to fill. My hand
-has been forced, however, by the recent letters in which Colonel James
-Moriarty defends the memory of his brother, and I have no choice but to
-lay the facts before the public exactly as they occurred. I alone know
-the absolute truth of the matter, and I am satisfied that the time has
-come when no good purpose is to be served by its suppression. As far as
-I know, there have been only three accounts in the public press: that
-in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
-English papers on May 7th, and finally the recent letter to which I have
-alluded. Of these the first and second were extremely condensed, while
-the last is, as I shall now show, an absolute perversion of the facts.
-It lies with me to tell for the first time what really took place
-between Professor Moriarty and Mr. Sherlock Holmes.
-
-It may be remembered that after my marriage, and my subsequent start in
-private practice, the very intimate relations which had existed between
-Holmes and myself became to some extent modified. He still came to me
-from time to time when he desired a companion in his investigation, but
-these occasions grew more and more seldom, until I find that in the year
-1890 there were only three cases of which I retain any record. During
-the winter of that year and the early spring of 1891, I saw in the
-papers that he had been engaged by the French government upon a matter
-of supreme importance, and I received two notes from Holmes, dated from
-Narbonne and from Nimes, from which I gathered that his stay in France
-was likely to be a long one. It was with some surprise, therefore, that
-I saw him walk into my consulting-room upon the evening of April 24th.
-It struck me that he was looking even paler and thinner than usual.
-
-"Yes, I have been using myself up rather too freely," he remarked, in
-answer to my look rather than to my words; "I have been a little pressed
-of late. Have you any objection to my closing your shutters?"
-
-The only light in the room came from the lamp upon the table at which I
-had been reading. Holmes edged his way round the wall and flinging the
-shutters together, he bolted them securely.
-
-"You are afraid of something?" I asked.
-
-"Well, I am."
-
-"Of what?"
-
-"Of air-guns."
-
-"My dear Holmes, what do you mean?"
-
-"I think that you know me well enough, Watson, to understand that I am
-by no means a nervous man. At the same time, it is stupidity rather than
-courage to refuse to recognize danger when it is close upon you. Might
-I trouble you for a match?" He drew in the smoke of his cigarette as if
-the soothing influence was grateful to him.
-
-"I must apologize for calling so late," said he, "and I must further beg
-you to be so unconventional as to allow me to leave your house presently
-by scrambling over your back garden wall."
-
-"But what does it all mean?" I asked.
-
-He held out his hand, and I saw in the light of the lamp that two of his
-knuckles were burst and bleeding.
-
-"It is not an airy nothing, you see," said he, smiling. "On the
-contrary, it is solid enough for a man to break his hand over. Is Mrs.
-Watson in?"
-
-"She is away upon a visit."
-
-"Indeed! You are alone?"
-
-"Quite."
-
-"Then it makes it the easier for me to propose that you should come away
-with me for a week to the Continent."
-
-"Where?"
-
-"Oh, anywhere. It's all the same to me."
-
-There was something very strange in all this. It was not Holmes's nature
-to take an aimless holiday, and something about his pale, worn face told
-me that his nerves were at their highest tension. He saw the question in
-my eyes, and, putting his finger-tips together and his elbows upon his
-knees, he explained the situation.
-
-"You have probably never heard of Professor Moriarty?" said he.
-
-"Never."
-
-"Aye, there's the genius and the wonder of the thing!" he cried. "The
-man pervades London, and no one has heard of him. That's what puts
-him on a pinnacle in the records of crime. I tell you, Watson, in all
-seriousness, that if I could beat that man, if I could free society
-of him, I should feel that my own career had reached its summit, and
-I should be prepared to turn to some more placid line in life. Between
-ourselves, the recent cases in which I have been of assistance to the
-royal family of Scandinavia, and to the French republic, have left me in
-such a position that I could continue to live in the quiet fashion
-which is most congenial to me, and to concentrate my attention upon my
-chemical researches. But I could not rest, Watson, I could not sit quiet
-in my chair, if I thought that such a man as Professor Moriarty were
-walking the streets of London unchallenged."
-
-"What has he done, then?"
-
-"His career has been an extraordinary one. He is a man of good birth and
-excellent education, endowed by nature with a phenomenal mathematical
-faculty. At the age of twenty-one he wrote a treatise upon the Binomial
-Theorem, which has had a European vogue. On the strength of it he won
-the Mathematical Chair at one of our smaller universities, and had, to
-all appearances, a most brilliant career before him. But the man had
-hereditary tendencies of the most diabolical kind. A criminal strain
-ran in his blood, which, instead of being modified, was increased and
-rendered infinitely more dangerous by his extraordinary mental powers.
-Dark rumors gathered round him in the university town, and eventually he
-was compelled to resign his chair and to come down to London, where he
-set up as an army coach. So much is known to the world, but what I am
-telling you now is what I have myself discovered.
-
-"As you are aware, Watson, there is no one who knows the higher criminal
-world of London so well as I do. For years past I have continually been
-conscious of some power behind the malefactor, some deep organizing
-power which forever stands in the way of the law, and throws its shield
-over the wrong-doer. Again and again in cases of the most varying
-sorts--forgery cases, robberies, murders--I have felt the presence of
-this force, and I have deduced its action in many of those undiscovered
-crimes in which I have not been personally consulted. For years I have
-endeavored to break through the veil which shrouded it, and at last
-the time came when I seized my thread and followed it, until it led
-me, after a thousand cunning windings, to ex-Professor Moriarty of
-mathematical celebrity.
-
-"He is the Napoleon of crime, Watson. He is the organizer of half that
-is evil and of nearly all that is undetected in this great city. He is a
-genius, a philosopher, an abstract thinker. He has a brain of the first
-order. He sits motionless, like a spider in the center of its web, but
-that web has a thousand radiations, and he knows well every quiver of
-each of them. He does little himself. He only plans. But his agents are
-numerous and splendidly organized. Is there a crime to be done, a
-paper to be abstracted, we will say, a house to be rifled, a man to be
-removed--the word is passed to the Professor, the matter is organized
-and carried out. The agent may be caught. In that case money is found
-for his bail or his defence. But the central power which uses the agent
-is never caught--never so much as suspected. This was the organization
-which I deduced, Watson, and which I devoted my whole energy to exposing
-and breaking up.
-
-"But the Professor was fenced round with safeguards so cunningly devised
-that, do what I would, it seemed impossible to get evidence which would
-convict in a court of law. You know my powers, my dear Watson, and yet
-at the end of three months I was forced to confess that I had at last
-met an antagonist who was my intellectual equal. My horror at his crimes
-was lost in my admiration at his skill. But at last he made a trip--only
-a little, little trip--but it was more than he could afford when I was
-so close upon him. I had my chance, and, starting from that point, I
-have woven my net round him until now it is all ready to close. In three
-days--that is to say, on Monday next--matters will be ripe, and the
-Professor, with all the principal members of his gang, will be in the
-hands of the police. Then will come the greatest criminal trial of the
-century, the clearing up of over forty mysteries, and the rope for all
-of them; but if we move at all prematurely, you understand, they may
-slip out of our hands even at the last moment.
-
-"Now, if I could have done this without the knowledge of Professor
-Moriarty, all would have been well. But he was too wily for that. He saw
-every step which I took to draw my toils round him. Again and again
-he strove to break away, but I as often headed him off. I tell you,
-my friend, that if a detailed account of that silent contest could
-be written, it would take its place as the most brilliant bit of
-thrust-and-parry work in the history of detection. Never have I risen to
-such a height, and never have I been so hard pressed by an opponent. He
-cut deep, and yet I just undercut him. This morning the last steps were
-taken, and three days only were wanted to complete the business. I was
-sitting in my room thinking the matter over, when the door opened and
-Professor Moriarty stood before me.
-
-"My nerves are fairly proof, Watson, but I must confess to a start when
-I saw the very man who had been so much in my thoughts standing there on
-my threshhold. His appearance was quite familiar to me. He is extremely
-tall and thin, his forehead domes out in a white curve, and his two
-eyes are deeply sunken in his head. He is clean-shaven, pale, and
-ascetic-looking, retaining something of the professor in his features.
-His shoulders are rounded from much study, and his face protrudes
-forward, and is forever slowly oscillating from side to side in a
-curiously reptilian fashion. He peered at me with great curiosity in his
-puckered eyes.
-
-"'You have less frontal development than I should have expected,' said
-he, at last. 'It is a dangerous habit to finger loaded firearms in the
-pocket of one's dressing-gown.'
-
-"The fact is that upon his entrance I had instantly recognized the
-extreme personal danger in which I lay. The only conceivable escape for
-him lay in silencing my tongue. In an instant I had slipped the revolver
-from the drawer into my pocket, and was covering him through the cloth.
-At his remark I drew the weapon out and laid it cocked upon the table.
-He still smiled and blinked, but there was something about his eyes
-which made me feel very glad that I had it there.
-
-"'You evidently don't know me,' said he.
-
-"'On the contrary,' I answered, 'I think it is fairly evident that I do.
-Pray take a chair. I can spare you five minutes if you have anything to
-say.'
-
-"'All that I have to say has already crossed your mind,' said he.
-
-"'Then possibly my answer has crossed yours,' I replied.
-
-"'You stand fast?'
-
-"'Absolutely.'
-
-"He clapped his hand into his pocket, and I raised the pistol from
-the table. But he merely drew out a memorandum-book in which he had
-scribbled some dates.
-
-"'You crossed my path on the 4th of January,' said he. 'On the 23d you
-incommoded me; by the middle of February I was seriously inconvenienced
-by you; at the end of March I was absolutely hampered in my plans; and
-now, at the close of April, I find myself placed in such a position
-through your continual persecution that I am in positive danger of
-losing my liberty. The situation is becoming an impossible one.'
-
-"'Have you any suggestion to make?' I asked.
-
-"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
-really must, you know.'
-
-"'After Monday,' said I.
-
-"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
-will see that there can be but one outcome to this affair. It is
-necessary that you should withdraw. You have worked things in such a
-fashion that we have only one resource left. It has been an intellectual
-treat to me to see the way in which you have grappled with this affair,
-and I say, unaffectedly, that it would be a grief to me to be forced
-to take any extreme measure. You smile, sir, but I assure you that it
-really would.'
-
-"'Danger is part of my trade,' I remarked.
-
-"'That is not danger,' said he. 'It is inevitable destruction. You stand
-in the way not merely of an individual, but of a mighty organization,
-the full extent of which you, with all your cleverness, have been unable
-to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
-
-"'I am afraid,' said I, rising, 'that in the pleasure of this
-conversation I am neglecting business of importance which awaits me
-elsewhere.'
-
-"He rose also and looked at me in silence, shaking his head sadly.
-
-"'Well, well,' said he, at last. 'It seems a pity, but I have done
-what I could. I know every move of your game. You can do nothing before
-Monday. It has been a duel between you and me, Mr. Holmes. You hope to
-place me in the dock. I tell you that I will never stand in the dock.
-You hope to beat me. I tell you that you will never beat me. If you are
-clever enough to bring destruction upon me, rest assured that I shall do
-as much to you.'
-
-"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
-pay you one in return when I say that if I were assured of the former
-eventuality I would, in the interests of the public, cheerfully accept
-the latter.'
-
-"'I can promise you the one, but not the other,' he snarled, and so
-turned his rounded back upon me, and went peering and blinking out of
-the room.
-
-"That was my singular interview with Professor Moriarty. I confess that
-it left an unpleasant effect upon my mind. His soft, precise fashion
-of speech leaves a conviction of sincerity which a mere bully could
-not produce. Of course, you will say: 'Why not take police precautions
-against him?' the reason is that I am well convinced that it is from his
-agents the blow will fall. I have the best proofs that it would be so."
-
-"You have already been assaulted?"
-
-"My dear Watson, Professor Moriarty is not a man who lets the grass grow
-under his feet. I went out about mid-day to transact some business in
-Oxford Street. As I passed the corner which leads from Bentinck Street
-on to the Welbeck Street crossing a two-horse van furiously driven
-whizzed round and was on me like a flash. I sprang for the foot-path
-and saved myself by the fraction of a second. The van dashed round by
-Marylebone Lane and was gone in an instant. I kept to the pavement after
-that, Watson, but as I walked down Vere Street a brick came down from
-the roof of one of the houses, and was shattered to fragments at my
-feet. I called the police and had the place examined. There were slates
-and bricks piled up on the roof preparatory to some repairs, and they
-would have me believe that the wind had toppled over one of these. Of
-course I knew better, but I could prove nothing. I took a cab after that
-and reached my brother's rooms in Pall Mall, where I spent the day. Now
-I have come round to you, and on my way I was attacked by a rough with a
-bludgeon. I knocked him down, and the police have him in custody; but
-I can tell you with the most absolute confidence that no possible
-connection will ever be traced between the gentleman upon whose front
-teeth I have barked my knuckles and the retiring mathematical coach, who
-is, I dare say, working out problems upon a black-board ten miles away.
-You will not wonder, Watson, that my first act on entering your rooms
-was to close your shutters, and that I have been compelled to ask your
-permission to leave the house by some less conspicuous exit than the
-front door."
-
-I had often admired my friend's courage, but never more than now, as he
-sat quietly checking off a series of incidents which must have combined
-to make up a day of horror.
-
-"You will spend the night here?" I said.
-
-"No, my friend, you might find me a dangerous guest. I have my plans
-laid, and all will be well. Matters have gone so far now that they can
-move without my help as far as the arrest goes, though my presence is
-necessary for a conviction. It is obvious, therefore, that I cannot do
-better than get away for the few days which remain before the police are
-at liberty to act. It would be a great pleasure to me, therefore, if you
-could come on to the Continent with me."
-
-"The practice is quiet," said I, "and I have an accommodating neighbor.
-I should be glad to come."
-
-"And to start to-morrow morning?"
-
-"If necessary."
-
-"Oh yes, it is most necessary. Then these are your instructions, and I
-beg, my dear Watson, that you will obey them to the letter, for you are
-now playing a double-handed game with me against the cleverest rogue and
-the most powerful syndicate of criminals in Europe. Now listen! You
-will dispatch whatever luggage you intend to take by a trusty messenger
-unaddressed to Victoria to-night. In the morning you will send for a
-hansom, desiring your man to take neither the first nor the second which
-may present itself. Into this hansom you will jump, and you will drive
-to the Strand end of the Lowther Arcade, handing the address to the
-cabman upon a slip of paper, with a request that he will not throw it
-away. Have your fare ready, and the instant that your cab stops,
-dash through the Arcade, timing yourself to reach the other side at a
-quarter-past nine. You will find a small brougham waiting close to the
-curb, driven by a fellow with a heavy black cloak tipped at the collar
-with red. Into this you will step, and you will reach Victoria in time
-for the Continental express."
-
-"Where shall I meet you?"
-
-"At the station. The second first-class carriage from the front will be
-reserved for us."
-
-"The carriage is our rendezvous, then?"
-
-"Yes."
-
-It was in vain that I asked Holmes to remain for the evening. It was
-evident to me that he thought he might bring trouble to the roof he was
-under, and that that was the motive which impelled him to go. With a few
-hurried words as to our plans for the morrow he rose and came out with
-me into the garden, clambering over the wall which leads into Mortimer
-Street, and immediately whistling for a hansom, in which I heard him
-drive away.
-
-In the morning I obeyed Holmes's injunctions to the letter. A hansom was
-procured with such precaution as would prevent its being one which was
-placed ready for us, and I drove immediately after breakfast to the
-Lowther Arcade, through which I hurried at the top of my speed. A
-brougham was waiting with a very massive driver wrapped in a dark cloak,
-who, the instant that I had stepped in, whipped up the horse and rattled
-off to Victoria Station. On my alighting there he turned the carriage,
-and dashed away again without so much as a look in my direction.
-
-So far all had gone admirably. My luggage was waiting for me, and I had
-no difficulty in finding the carriage which Holmes had indicated, the
-less so as it was the only one in the train which was marked "Engaged."
-My only source of anxiety now was the non-appearance of Holmes. The
-station clock marked only seven minutes from the time when we were
-due to start. In vain I searched among the groups of travellers and
-leave-takers for the lithe figure of my friend. There was no sign of
-him. I spent a few minutes in assisting a venerable Italian priest, who
-was endeavoring to make a porter understand, in his broken English,
-that his luggage was to be booked through to Paris. Then, having taken
-another look round, I returned to my carriage, where I found that the
-porter, in spite of the ticket, had given me my decrepit Italian friend
-as a traveling companion. It was useless for me to explain to him that
-his presence was an intrusion, for my Italian was even more limited than
-his English, so I shrugged my shoulders resignedly, and continued to
-look out anxiously for my friend. A chill of fear had come over me, as I
-thought that his absence might mean that some blow had fallen during the
-night. Already the doors had all been shut and the whistle blown, when--
-
-"My dear Watson," said a voice, "you have not even condescended to say
-good-morning."
-
-I turned in uncontrollable astonishment. The aged ecclesiastic had
-turned his face towards me. For an instant the wrinkles were smoothed
-away, the nose drew away from the chin, the lower lip ceased to protrude
-and the mouth to mumble, the dull eyes regained their fire, the drooping
-figure expanded. The next the whole frame collapsed again, and Holmes
-had gone as quickly as he had come.
-
-"Good heavens!" I cried; "how you startled me!"
-
-"Every precaution is still necessary," he whispered. "I have reason to
-think that they are hot upon our trail. Ah, there is Moriarty himself."
-
-The train had already begun to move as Holmes spoke. Glancing back, I
-saw a tall man pushing his way furiously through the crowd, and waving
-his hand as if he desired to have the train stopped. It was too late,
-however, for we were rapidly gathering momentum, and an instant later
-had shot clear of the station.
-
-"With all our precautions, you see that we have cut it rather fine,"
-said Holmes, laughing. He rose, and throwing off the black cassock and
-hat which had formed his disguise, he packed them away in a hand-bag.
-
-"Have you seen the morning paper, Watson?"
-
-"No."
-
-"You haven't' seen about Baker Street, then?"
-
-"Baker Street?"
-
-"They set fire to our rooms last night. No great harm was done."
-
-"Good heavens, Holmes! this is intolerable."
-
-"They must have lost my track completely after their bludgeon-man was
-arrested. Otherwise they could not have imagined that I had returned
-to my rooms. They have evidently taken the precaution of watching you,
-however, and that is what has brought Moriarty to Victoria. You could
-not have made any slip in coming?"
-
-"I did exactly what you advised."
-
-"Did you find your brougham?"
-
-"Yes, it was waiting."
-
-"Did you recognize your coachman?"
-
-"No."
-
-"It was my brother Mycroft. It is an advantage to get about in such a
-case without taking a mercenary into your confidence. But we must plan
-what we are to do about Moriarty now."
-
-"As this is an express, and as the boat runs in connection with it, I
-should think we have shaken him off very effectively."
-
-"My dear Watson, you evidently did not realize my meaning when I said
-that this man may be taken as being quite on the same intellectual plane
-as myself. You do not imagine that if I were the pursuer I should allow
-myself to be baffled by so slight an obstacle. Why, then, should you
-think so meanly of him?"
-
-"What will he do?"
-
-"What I should do?"
-
-"What would you do, then?"
-
-"Engage a special."
-
-"But it must be late."
-
-"By no means. This train stops at Canterbury; and there is always at
-least a quarter of an hour's delay at the boat. He will catch us there."
-
-"One would think that we were the criminals. Let us have him arrested on
-his arrival."
-
-"It would be to ruin the work of three months. We should get the big
-fish, but the smaller would dart right and left out of the net. On
-Monday we should have them all. No, an arrest is inadmissible."
-
-"What then?"
-
-"We shall get out at Canterbury."
-
-"And then?"
-
-"Well, then we must make a cross-country journey to Newhaven, and so
-over to Dieppe. Moriarty will again do what I should do. He will get on
-to Paris, mark down our luggage, and wait for two days at the depot.
-In the meantime we shall treat ourselves to a couple of carpet-bags,
-encourage the manufactures of the countries through which we travel, and
-make our way at our leisure into Switzerland, via Luxembourg and Basle."
-
-At Canterbury, therefore, we alighted, only to find that we should have
-to wait an hour before we could get a train to Newhaven.
-
-I was still looking rather ruefully after the rapidly disappearing
-luggage-van which contained my wardrobe, when Holmes pulled my sleeve
-and pointed up the line.
-
-"Already, you see," said he.
-
-Far away, from among the Kentish woods there rose a thin spray of smoke.
-A minute later a carriage and engine could be seen flying along the open
-curve which leads to the station. We had hardly time to take our place
-behind a pile of luggage when it passed with a rattle and a roar,
-beating a blast of hot air into our faces.
-
-"There he goes," said Holmes, as we watched the carriage swing and
-rock over the points. "There are limits, you see, to our friend's
-intelligence. It would have been a coup-de-maitre had he deduced what I
-would deduce and acted accordingly."
-
-"And what would he have done had he overtaken us?"
-
-"There cannot be the least doubt that he would have made a murderous
-attack upon me. It is, however, a game at which two may play. The
-question now is whether we should take a premature lunch here, or run
-our chance of starving before we reach the buffet at Newhaven."
-
-
-We made our way to Brussels that night and spent two days there, moving
-on upon the third day as far as Strasburg. On the Monday morning Holmes
-had telegraphed to the London police, and in the evening we found a
-reply waiting for us at our hotel. Holmes tore it open, and then with a
-bitter curse hurled it into the grate.
-
-"I might have known it!" he groaned. "He has escaped!"
-
-"Moriarty?"
-
-"They have secured the whole gang with the exception of him. He has
-given them the slip. Of course, when I had left the country there was no
-one to cope with him. But I did think that I had put the game in their
-hands. I think that you had better return to England, Watson."
-
-"Why?"
-
-"Because you will find me a dangerous companion now. This man's
-occupation is gone. He is lost if he returns to London. If I read his
-character right he will devote his whole energies to revenging himself
-upon me. He said as much in our short interview, and I fancy that he
-meant it. I should certainly recommend you to return to your practice."
-
-It was hardly an appeal to be successful with one who was an
-old campaigner as well as an old friend. We sat in the Strasburg
-salle-à-manger arguing the question for half an hour, but the same night
-we had resumed our journey and were well on our way to Geneva.
-
-For a charming week we wandered up the Valley of the Rhone, and then,
-branching off at Leuk, we made our way over the Gemmi Pass, still deep
-in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
-trip, the dainty green of the spring below, the virgin white of the
-winter above; but it was clear to me that never for one instant did
-Holmes forget the shadow which lay across him. In the homely Alpine
-villages or in the lonely mountain passes, I could tell by his quick
-glancing eyes and his sharp scrutiny of every face that passed us,
-that he was well convinced that, walk where we would, we could not walk
-ourselves clear of the danger which was dogging our footsteps.
-
-Once, I remember, as we passed over the Gemmi, and walked along
-the border of the melancholy Daubensee, a large rock which had been
-dislodged from the ridge upon our right clattered down and roared into
-the lake behind us. In an instant Holmes had raced up on to the ridge,
-and, standing upon a lofty pinnacle, craned his neck in every direction.
-It was in vain that our guide assured him that a fall of stones was a
-common chance in the spring-time at that spot. He said nothing, but
-he smiled at me with the air of a man who sees the fulfillment of that
-which he had expected.
-
-And yet for all his watchfulness he was never depressed. On the
-contrary, I can never recollect having seen him in such exuberant
-spirits. Again and again he recurred to the fact that if he could
-be assured that society was freed from Professor Moriarty he would
-cheerfully bring his own career to a conclusion.
-
-"I think that I may go so far as to say, Watson, that I have not lived
-wholly in vain," he remarked. "If my record were closed to-night I could
-still survey it with equanimity. The air of London is the sweeter for my
-presence. In over a thousand cases I am not aware that I have ever used
-my powers upon the wrong side. Of late I have been tempted to look into
-the problems furnished by nature rather than those more superficial ones
-for which our artificial state of society is responsible. Your memoirs
-will draw to an end, Watson, upon the day that I crown my career by
-the capture or extinction of the most dangerous and capable criminal in
-Europe."
-
-I shall be brief, and yet exact, in the little which remains for me to
-tell. It is not a subject on which I would willingly dwell, and yet I am
-conscious that a duty devolves upon me to omit no detail.
-
-It was on the 3d of May that we reached the little village of Meiringen,
-where we put up at the Englischer Hof, then kept by Peter Steiler the
-elder. Our landlord was an intelligent man, and spoke excellent English,
-having served for three years as waiter at the Grosvenor Hotel in
-London. At his advice, on the afternoon of the 4th we set off together,
-with the intention of crossing the hills and spending the night at the
-hamlet of Rosenlaui. We had strict injunctions, however, on no account
-to pass the falls of Reichenbach, which are about half-way up the hill,
-without making a small detour to see them.
-
-It is indeed, a fearful place. The torrent, swollen by the melting snow,
-plunges into a tremendous abyss, from which the spray rolls up like the
-smoke from a burning house. The shaft into which the river hurls itself
-is an immense chasm, lined by glistening coal-black rock, and narrowing
-into a creaming, boiling pit of incalculable depth, which brims over and
-shoots the stream onward over its jagged lip. The long sweep of green
-water roaring forever down, and the thick flickering curtain of spray
-hissing forever upward, turn a man giddy with their constant whirl and
-clamor. We stood near the edge peering down at the gleam of the breaking
-water far below us against the black rocks, and listening to the
-half-human shout which came booming up with the spray out of the abyss.
-
-The path has been cut half-way round the fall to afford a complete view,
-but it ends abruptly, and the traveler has to return as he came. We had
-turned to do so, when we saw a Swiss lad come running along it with
-a letter in his hand. It bore the mark of the hotel which we had just
-left, and was addressed to me by the landlord. It appeared that within a
-very few minutes of our leaving, an English lady had arrived who was in
-the last stage of consumption. She had wintered at Davos Platz, and was
-journeying now to join her friends at Lucerne, when a sudden hemorrhage
-had overtaken her. It was thought that she could hardly live a few
-hours, but it would be a great consolation to her to see an English
-doctor, and, if I would only return, etc. The good Steiler assured me
-in a postscript that he would himself look upon my compliance as a very
-great favor, since the lady absolutely refused to see a Swiss physician,
-and he could not but feel that he was incurring a great responsibility.
-
-The appeal was one which could not be ignored. It was impossible to
-refuse the request of a fellow-countrywoman dying in a strange land. Yet
-I had my scruples about leaving Holmes. It was finally agreed, however,
-that he should retain the young Swiss messenger with him as guide and
-companion while I returned to Meiringen. My friend would stay some
-little time at the fall, he said, and would then walk slowly over the
-hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
-away I saw Holmes, with his back against a rock and his arms folded,
-gazing down at the rush of the waters. It was the last that I was ever
-destined to see of him in this world.
-
-When I was near the bottom of the descent I looked back. It was
-impossible, from that position, to see the fall, but I could see the
-curving path which winds over the shoulder of the hill and leads to it.
-Along this a man was, I remember, walking very rapidly.
-
-I could see his black figure clearly outlined against the green behind
-him. I noted him, and the energy with which he walked but he passed from
-my mind again as I hurried on upon my errand.
-
-It may have been a little over an hour before I reached Meiringen. Old
-Steiler was standing at the porch of his hotel.
-
-"Well," said I, as I came hurrying up, "I trust that she is no worse?"
-
-A look of surprise passed over his face, and at the first quiver of his
-eyebrows my heart turned to lead in my breast.
-
-"You did not write this?" I said, pulling the letter from my pocket.
-"There is no sick Englishwoman in the hotel?"
-
-"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
-must have been written by that tall Englishman who came in after you had
-gone. He said--"
-
-But I waited for none of the landlord's explanations. In a tingle of
-fear I was already running down the village street, and making for the
-path which I had so lately descended. It had taken me an hour to come
-down. For all my efforts two more had passed before I found myself at
-the fall of Reichenbach once more. There was Holmes's Alpine-stock still
-leaning against the rock by which I had left him. But there was no sign
-of him, and it was in vain that I shouted. My only answer was my own
-voice reverberating in a rolling echo from the cliffs around me.
-
-It was the sight of that Alpine-stock which turned me cold and sick.
-He had not gone to Rosenlaui, then. He had remained on that three-foot
-path, with sheer wall on one side and sheer drop on the other, until his
-enemy had overtaken him. The young Swiss had gone too. He had probably
-been in the pay of Moriarty, and had left the two men together. And then
-what had happened? Who was to tell us what had happened then?
-
-I stood for a minute or two to collect myself, for I was dazed with the
-horror of the thing. Then I began to think of Holmes's own methods and
-to try to practise them in reading this tragedy. It was, alas, only too
-easy to do. During our conversation we had not gone to the end of the
-path, and the Alpine-stock marked the place where we had stood. The
-blackish soil is kept forever soft by the incessant drift of spray,
-and a bird would leave its tread upon it. Two lines of footmarks were
-clearly marked along the farther end of the path, both leading away from
-me. There were none returning. A few yards from the end the soil was
-all ploughed up into a patch of mud, and the branches and ferns which
-fringed the chasm were torn and bedraggled. I lay upon my face and
-peered over with the spray spouting up all around me. It had darkened
-since I left, and now I could only see here and there the glistening of
-moisture upon the black walls, and far away down at the end of the shaft
-the gleam of the broken water. I shouted; but only the same half-human
-cry of the fall was borne back to my ears.
-
-But it was destined that I should after all have a last word of greeting
-from my friend and comrade. I have said that his Alpine-stock had been
-left leaning against a rock which jutted on to the path. From the top of
-this bowlder the gleam of something bright caught my eye, and, raising
-my hand, I found that it came from the silver cigarette-case which he
-used to carry. As I took it up a small square of paper upon which it
-had lain fluttered down on to the ground. Unfolding it, I found that it
-consisted of three pages torn from his note-book and addressed to me. It
-was characteristic of the man that the direction was a precise, and the
-writing as firm and clear, as though it had been written in his study.
-
-My dear Watson [it said], I write these few lines through the courtesy
-of Mr. Moriarty, who awaits my convenience for the final discussion of
-those questions which lie between us. He has been giving me a sketch
-of the methods by which he avoided the English police and kept himself
-informed of our movements. They certainly confirm the very high opinion
-which I had formed of his abilities. I am pleased to think that I shall
-be able to free society from any further effects of his presence, though
-I fear that it is at a cost which will give pain to my friends, and
-especially, my dear Watson, to you. I have already explained to you,
-however, that my career had in any case reached its crisis, and that
-no possible conclusion to it could be more congenial to me than this.
-Indeed, if I may make a full confession to you, I was quite convinced
-that the letter from Meiringen was a hoax, and I allowed you to depart
-on that errand under the persuasion that some development of this sort
-would follow. Tell Inspector Patterson that the papers which he needs
-to convict the gang are in pigeonhole M., done up in a blue envelope
-and inscribed "Moriarty." I made every disposition of my property before
-leaving England, and handed it to my brother Mycroft. Pray give my
-greetings to Mrs. Watson, and believe me to be, my dear fellow,
-
-Very sincerely yours,
-
-Sherlock Holmes
-
-
-A few words may suffice to tell the little that remains. An examination
-by experts leaves little doubt that a personal contest between the two
-men ended, as it could hardly fail to end in such a situation, in their
-reeling over, locked in each other's arms. Any attempt at recovering the
-bodies was absolutely hopeless, and there, deep down in that dreadful
-caldron of swirling water and seething foam, will lie for all time the
-most dangerous criminal and the foremost champion of the law of their
-generation. The Swiss youth was never found again, and there can be no
-doubt that he was one of the numerous agents whom Moriarty kept in this
-employ. As to the gang, it will be within the memory of the public
-how completely the evidence which Holmes had accumulated exposed their
-organization, and how heavily the hand of the dead man weighed
-upon them. Of their terrible chief few details came out during the
-proceedings, and if I have now been compelled to make a clear statement
-of his career it is due to those injudicious champions who have
-endeavored to clear his memory by attacks upon him whom I shall ever
-regard as the best and the wisest man whom I have ever known.
-
-
-
-
-
-End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
-Sir Arthur Conan Doyle
-
-*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
-
-***** This file should be named 834-8.txt or 834-8.zip *****
-This and all associated files of various formats will be found in:
-        http://www.gutenberg.org/8/3/834/
-
-Produced by Angela M. Cable
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties.  Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark.  Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission.  If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy.  You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research.  They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks.  Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.org/license).
-
-
-Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A.  By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement.  If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B.  "Project Gutenberg" is a registered trademark.  It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement.  There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement.  See
-paragraph 1.C below.  There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works.  See paragraph 1.E below.
-
-1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works.  Nearly all the individual works in the
-collection are in the public domain in the United States.  If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed.  Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work.  You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D.  The copyright laws of the place where you are located also govern
-what you can do with this work.  Copyright laws in most countries are in
-a constant state of change.  If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work.  The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E.  Unless you have removed all references to Project Gutenberg:
-
-1.E.1.  The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever.  You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.org
-
-1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges.  If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder.  Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5.  Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6.  You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form.  However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form.  Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7.  Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8.  You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
-     the use of Project Gutenberg-tm works calculated using the method
-     you already use to calculate your applicable taxes.  The fee is
-     owed to the owner of the Project Gutenberg-tm trademark, but he
-     has agreed to donate royalties under this paragraph to the
-     Project Gutenberg Literary Archive Foundation.  Royalty payments
-     must be paid within 60 days following each date on which you
-     prepare (or are legally required to prepare) your periodic tax
-     returns.  Royalty payments should be clearly marked as such and
-     sent to the Project Gutenberg Literary Archive Foundation at the
-     address specified in Section 4, "Information about donations to
-     the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
-     you in writing (or by e-mail) within 30 days of receipt that s/he
-     does not agree to the terms of the full Project Gutenberg-tm
-     License.  You must require such a user to return or
-     destroy all copies of the works possessed in a physical medium
-     and discontinue all use of and all access to other copies of
-     Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
-     money paid for a work or a replacement copy, if a defect in the
-     electronic work is discovered and reported to you within 90 days
-     of receipt of the work.
-
-- You comply with all other terms of this agreement for free
-     distribution of Project Gutenberg-tm works.
-
-1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1.  Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection.  Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from.  If you
-received the work on a physical medium, you must return the medium with
-your written explanation.  The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund.  If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund.  If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4.  Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5.  Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law.  The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section  2.  Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers.  It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need, is critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come.  In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3.  Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service.  The Foundation's EIN or federal tax identification
-number is 64-6221541.  Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations.  Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org.  Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
-     Dr. Gregory B. Newby
-     Chief Executive and Director
-     gbnewby@pglaf.org
-
-
-Section 4.  Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment.  Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States.  Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements.  We do not solicit donations in locations
-where we have not received written confirmation of compliance.  To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States.  U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses.  Donations are accepted in a number of other
-ways including checks, online payments and credit card donations.
-To donate, please visit: http://pglaf.org/donate
-
-
-Section 5.  General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone.  For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included.  Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
-     http://www.gutenberg.org
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks/hyracks-examples/text-example/textapp/pom.xml b/hyracks/hyracks-examples/text-example/textapp/pom.xml
deleted file mode 100644
index 27dc508..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/pom.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  <artifactId>textapp</artifactId>
-  <name>textapp</name>
-
-  <parent>
-    <groupId>edu.uci.ics.hyracks.examples</groupId>
-    <artifactId>text-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
-  </parent>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>copy-dependencies</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-	</pluginManagement>
-  
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>target/application/lib</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2-beta-5</version>
-        <executions>
-          <execution>
-            <configuration>
-              <descriptors>
-                <descriptor>src/main/assembly/app-assembly.xml</descriptor>
-              </descriptors>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>edu.uci.ics.hyracks</groupId>
-      	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
-        <configuration>
-          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
-          <hyracksCLIHome>${basedir}/../../../hyracks-cli/target/hyracks-cli-${project.version}-binary-assembly</hyracksCLIHome>
-          <jvmOptions>${jvm.extraargs}</jvmOptions>
-        </configuration>
-        <executions>
-          <execution>
-            <id>hyracks-cc-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-cc</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>hyracks-nc1-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC1</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-            </configuration>
-          </execution>
-          <execution>
-            <id>hyracks-nc2-start</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>start-nc</goal>
-            </goals>
-            <configuration>
-              <nodeId>NC2</nodeId>
-              <dataIpAddress>127.0.0.1</dataIpAddress>
-              <ccHost>localhost</ccHost>
-            </configuration>
-          </execution>
-          <execution>
-            <id>deploy-app</id>
-            <phase>pre-integration-test</phase>
-            <goals>
-              <goal>deploy-app</goal>
-            </goals>
-            <configuration>
-              <ccHost>localhost</ccHost>
-              <appName>text</appName>
-              <harFile>${project.build.directory}/textapp-${project.version}-app-assembly.zip</harFile>
-            </configuration>
-          </execution>
-          <execution>
-            <id>stop-services</id>
-            <phase>post-integration-test</phase>
-            <goals>
-              <goal>stop-services</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-compiler-plugin</artifactId>
-      	<version>2.0.2</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
-      	<artifactId>maven-failsafe-plugin</artifactId>
-      	<version>2.8.1</version>
-      	<executions>
-      	  <execution>
-      	    <id>it</id>
-      	    <phase>integration-test</phase>
-      	    <goals>
-      	      <goal>integration-test</goal>
-      	    </goals>
-      	  </execution>
-      	</executions>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  		<artifactId>texthelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
-  		<artifactId>textclient</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>test</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>junit</groupId>
-  		<artifactId>junit</artifactId>
-  		<version>4.8.2</version>
-  		<type>jar</type>
-  		<scope>test</scope>
-  	</dependency>
-  </dependencies>
-</project>
diff --git a/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml b/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml
deleted file mode 100644
index 43ace6c..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/src/main/assembly/app-assembly.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<assembly>
-  <id>app-assembly</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <directory>target/application/lib</directory>
-      <outputDirectory>lib</outputDirectory>
-    </fileSet>
-  </fileSets>
-</assembly>
diff --git a/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java b/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
deleted file mode 100644
index 9659288..0000000
--- a/hyracks/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.hyracks.examples.text.test;
-
-import java.io.File;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.examples.text.client.WordCountMain;
-
-public class WordCountIT {
-    @Test
-    public void runWordCount() throws Exception {
-        WordCountMain.main(new String[] { "-host", "localhost", "-infile-splits", getInfileSplits(), "-outfile-splits",
-                getOutfileSplits(), "-algo", "-hash", "-app", "text" });
-    }
-
-    private String getInfileSplits() {
-        return "NC1:" + new File("data/file1.txt").getAbsolutePath() + ",NC2:"
-                + new File("data/file2.txt").getAbsolutePath();
-    }
-
-    private String getOutfileSplits() {
-        return "NC1:" + new File("target/wc1.txt").getAbsolutePath() + ",NC2:"
-                + new File("target/wc2.txt").getAbsolutePath();
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/text-example/textclient/pom.xml b/hyracks/hyracks-examples/text-example/textclient/pom.xml
index 796c95c..633f480 100644
--- a/hyracks/hyracks-examples/text-example/textclient/pom.xml
+++ b/hyracks/hyracks-examples/text-example/textclient/pom.xml
@@ -7,20 +7,20 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>text-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
   		<artifactId>texthelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
@@ -32,8 +32,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/text-example/texthelper/pom.xml b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
index 121c785..5cf5da3 100644
--- a/hyracks/hyracks-examples/text-example/texthelper/pom.xml
+++ b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
@@ -7,26 +7,26 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>text-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
   <build>
@@ -36,8 +36,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/text-example/textserver/pom.xml b/hyracks/hyracks-examples/text-example/textserver/pom.xml
index 1b1f2d4..bfbb0f4 100644
--- a/hyracks/hyracks-examples/text-example/textserver/pom.xml
+++ b/hyracks/hyracks-examples/text-example/textserver/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks.examples.text</groupId>
   <artifactId>textserver</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>textserver</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>text-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -60,7 +60,7 @@
       <plugin>
       	<groupId>edu.uci.ics.hyracks</groupId>
       	<artifactId>hyracks-virtualcluster-maven-plugin</artifactId>
-      	<version>0.2.3-SNAPSHOT</version>
+      	<version>0.2.4-SNAPSHOT</version>
         <configuration>
           <hyracksServerHome>${basedir}/target/textserver-${project.version}-binary-assembly</hyracksServerHome>
           <jvmOptions>${jvm.extraargs}</jvmOptions>
@@ -135,27 +135,27 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
   		<artifactId>texthelper</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
   		<artifactId>textclient</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>test</scope>
   	</dependency>
diff --git a/hyracks/hyracks-examples/tpch-example/pom.xml b/hyracks/hyracks-examples/tpch-example/pom.xml
index 7d676dc..5389ca3 100644
--- a/hyracks/hyracks-examples/tpch-example/pom.xml
+++ b/hyracks/hyracks-examples/tpch-example/pom.xml
@@ -8,7 +8,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-examples</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
index 1e5e3c0..d6f1d17 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
@@ -6,20 +6,20 @@
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>tpch-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   	</dependency>
   </dependencies>
   <build>
@@ -29,8 +29,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-examples/tpch-example/tpchserver/pom.xml b/hyracks/hyracks-examples/tpch-example/tpchserver/pom.xml
index 94d897a..0110fc4 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchserver/pom.xml
+++ b/hyracks/hyracks-examples/tpch-example/tpchserver/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks.examples.tpch</groupId>
   <artifactId>tpchserver</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>tpchserver</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks.examples</groupId>
     <artifactId>tpch-example</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -63,25 +63,25 @@
     <dependency>
         <groupId>edu.uci.ics.hyracks</groupId>
         <artifactId>hyracks-dataflow-std</artifactId>
-        <version>0.2.3-SNAPSHOT</version>
+        <version>0.2.4-SNAPSHOT</version>
         <scope>compile</scope>
     </dependency>
     <dependency>
     	<groupId>edu.uci.ics.hyracks</groupId>
     	<artifactId>hyracks-data-std</artifactId>
-    	<version>0.2.3-SNAPSHOT</version>
+    	<version>0.2.4-SNAPSHOT</version>
     </dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-hadoop-compat/pom.xml b/hyracks/hyracks-hadoop-compat/pom.xml
index 426a333..09d3127 100644
--- a/hyracks/hyracks-hadoop-compat/pom.xml
+++ b/hyracks/hyracks-hadoop-compat/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-hadoop-compat</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-hadoop-compat</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -82,7 +82,7 @@
     <dependency>
     	<groupId>edu.uci.ics.hyracks</groupId>
     	<artifactId>hyracks-dataflow-hadoop</artifactId>
-    	<version>0.2.3-SNAPSHOT</version>
+    	<version>0.2.4-SNAPSHOT</version>
     	<type>jar</type>
     	<scope>compile</scope>
     </dependency>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
index 3eb2316..c708b0d 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-0.20.2/pom.xml
@@ -1,14 +1,12 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>hyracks-hdfs-0.20.2</artifactId>
 	<name>hyracks-hdfs-0.20.2</name>
 	<parent>
 		<artifactId>hyracks-hdfs</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -18,8 +16,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -100,7 +98,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
index 2b05f44..9f96ac1 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-0.23.1/pom.xml
@@ -1,14 +1,12 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>hyracks-hdfs-0.23.1</artifactId>
 	<name>hyracks-hdfs-0.23.1</name>
 	<parent>
 		<artifactId>hyracks-hdfs</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 	<build>
 		<plugins>
@@ -17,8 +15,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -204,7 +202,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
index bb0601f..2a4b0d1 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
@@ -1,14 +1,12 @@
 <?xml version="1.0"?>
-<project
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
-	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>hyracks-hdfs-core</artifactId>
 	<name>hyracks-hdfs-core</name>
 	<parent>
 		<artifactId>hyracks-hdfs</artifactId>
 		<groupId>edu.uci.ics.hyracks</groupId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -18,8 +16,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -67,7 +65,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.20.2</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -86,7 +84,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.20.2</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -105,7 +103,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.23.1</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -124,7 +122,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.23.1</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -143,7 +141,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.23.1</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -162,7 +160,7 @@
 				<dependency>
 					<groupId>edu.uci.ics.hyracks</groupId>
 					<artifactId>hyracks-hdfs-0.23.1</artifactId>
-					<version>0.2.3-SNAPSHOT</version>
+					<version>${project.version}</version>
 					<type>jar</type>
 					<scope>compile</scope>
 				</dependency>
@@ -180,31 +178,31 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/edu/uci/ics/hyracks/hdfs/scheduler/RackAwareNcCollectionBuilder.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/edu/uci/ics/hyracks/hdfs/scheduler/RackAwareNcCollectionBuilder.java
index 2b9e899..fa5e7ae 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/edu/uci/ics/hyracks/hdfs/scheduler/RackAwareNcCollectionBuilder.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/edu/uci/ics/hyracks/hdfs/scheduler/RackAwareNcCollectionBuilder.java
@@ -38,6 +38,11 @@
                 String ipAddress = InetAddress.getByAddress(
                         ncNameToNcInfos.get(NCs[i]).getNetworkAddress().getIpAddress()).getHostAddress();
                 topology.lookupNetworkTerminal(ipAddress, path);
+                if (path.size() <= 0) {
+                    // if the hyracks nc is not in the defined cluster
+                    path.add(Integer.MIN_VALUE);
+                    LOGGER.info(NCs[i] + "'s IP address is not in the cluster toplogy file!");
+                }
                 List<String> ncs = pathToNCs.get(path);
                 if (ncs == null) {
                     ncs = new ArrayList<String>();
@@ -70,6 +75,10 @@
                     String ipAddress = InetAddress.getByAddress(
                             ncNameToNcInfos.get(NCs[i]).getNetworkAddress().getIpAddress()).getHostAddress();
                     topology.lookupNetworkTerminal(ipAddress, path);
+                    if (path.size() <= 0) {
+                        // if the hyracks nc is not in the defined cluster
+                        path.add(Integer.MIN_VALUE);
+                    }
                     IntWritable availableSlot = availableIpsToSlots.get(path);
                     if (availableSlot == null) {
                         availableSlot = new IntWritable(slotLimit - workloads[i]);
diff --git a/hyracks/hyracks-hdfs/pom.xml b/hyracks/hyracks-hdfs/pom.xml
index 5ed76e9..bea1244 100644
--- a/hyracks/hyracks-hdfs/pom.xml
+++ b/hyracks/hyracks-hdfs/pom.xml
@@ -8,7 +8,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-ipc/pom.xml b/hyracks/hyracks-ipc/pom.xml
index f12e10c..14121fd 100644
--- a/hyracks/hyracks-ipc/pom.xml
+++ b/hyracks/hyracks-ipc/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
index 64a3616..e8342a3 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-maven-plugins</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -17,8 +17,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-maven-plugins/pom.xml b/hyracks/hyracks-maven-plugins/pom.xml
index d9223ba..ee97d58 100644
--- a/hyracks/hyracks-maven-plugins/pom.xml
+++ b/hyracks/hyracks-maven-plugins/pom.xml
@@ -7,7 +7,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <dependencies>
diff --git a/hyracks/hyracks-net/pom.xml b/hyracks/hyracks-net/pom.xml
index d2962c4..de2a2a0 100644
--- a/hyracks/hyracks-net/pom.xml
+++ b/hyracks/hyracks-net/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
diff --git a/hyracks/hyracks-server/pom.xml b/hyracks/hyracks-server/pom.xml
index 66d1c8d..85af7f2 100644
--- a/hyracks/hyracks-server/pom.xml
+++ b/hyracks/hyracks-server/pom.xml
@@ -5,7 +5,7 @@
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -15,8 +15,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -74,14 +74,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-cc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-storage-am-btree/pom.xml b/hyracks/hyracks-storage-am-btree/pom.xml
index a1f362e..4555ea4 100644
--- a/hyracks/hyracks-storage-am-btree/pom.xml
+++ b/hyracks/hyracks-storage-am-btree/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-btree</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-btree</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,28 +29,28 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
         <dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
diff --git a/hyracks/hyracks-storage-am-common/pom.xml b/hyracks/hyracks-storage-am-common/pom.xml
index 93f2e90..48f91fa 100644
--- a/hyracks/hyracks-storage-am-common/pom.xml
+++ b/hyracks/hyracks-storage-am-common/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-common</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-common</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,28 +29,28 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-storage-am-invertedindex/pom.xml b/hyracks/hyracks-storage-am-invertedindex/pom.xml
index b8a7b7c..8fc8855 100644
--- a/hyracks/hyracks-storage-am-invertedindex/pom.xml
+++ b/hyracks/hyracks-storage-am-invertedindex/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-invertedindex</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-invertedindex</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,28 +29,28 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>    
diff --git a/hyracks/hyracks-storage-am-rtree/pom.xml b/hyracks/hyracks-storage-am-rtree/pom.xml
index fd432ff..74d8927 100644
--- a/hyracks/hyracks-storage-am-rtree/pom.xml
+++ b/hyracks/hyracks-storage-am-rtree/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-rtree</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-rtree</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,21 +29,21 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>  	
diff --git a/hyracks/hyracks-storage-common/pom.xml b/hyracks/hyracks-storage-common/pom.xml
index 834c7d3..568b0ba 100644
--- a/hyracks/hyracks-storage-common/pom.xml
+++ b/hyracks/hyracks-storage-common/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-common</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-common</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,7 +29,7 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-test-support/pom.xml b/hyracks/hyracks-test-support/pom.xml
index 0cc8762..1ddd1df 100644
--- a/hyracks/hyracks-test-support/pom.xml
+++ b/hyracks/hyracks-test-support/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-test-support</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-test-support</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -29,33 +29,33 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-rtree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-invertedindex</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
index bf8c478..880cba5 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-btree-test</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-btree-test</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-tests</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -36,14 +36,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-btree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-test-support</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>test</scope>
   	</dependency>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
index 03490c7..5eda528 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-invertedindex-test/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-invertedindex-test</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-invertedindex-test</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-tests</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <encoding>UTF-8</encoding>
           <fork>true</fork>
         </configuration>
@@ -30,14 +30,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-invertedindex</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-test-support</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>test</scope>
   	</dependency>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
index ba6da6d..5031dba 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-am-rtree-test</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-am-rtree-test</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-tests</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -36,14 +36,14 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-am-rtree</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-test-support</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>test</scope>
   	</dependency>
diff --git a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
index d7b6288..72d76e0 100644
--- a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
@@ -2,13 +2,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-storage-common-test</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <name>hyracks-storage-common-test</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks-tests</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <build>
@@ -18,8 +18,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
           <fork>true</fork>
         </configuration>
       </plugin>
@@ -36,13 +36,13 @@
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
   	<dependency>
   		<groupId>edu.uci.ics.hyracks</groupId>
   		<artifactId>hyracks-test-support</artifactId>
-  		<version>0.2.3-SNAPSHOT</version>
+  		<version>0.2.4-SNAPSHOT</version>
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
diff --git a/hyracks/hyracks-tests/pom.xml b/hyracks/hyracks-tests/pom.xml
index 054ec68..5a3d594 100644
--- a/hyracks/hyracks-tests/pom.xml
+++ b/hyracks/hyracks-tests/pom.xml
@@ -2,14 +2,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks-tests</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>hyracks-tests</name>
 
   <parent>
     <groupId>edu.uci.ics.hyracks</groupId>
     <artifactId>hyracks</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+    <version>0.2.4-SNAPSHOT</version>
   </parent>
 
   <modules>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
index 9e453a6..d33ddc5 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
index 08935a7..649aa6c 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
       <plugin>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
index 3aaf4a2..fe210fd 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
@@ -14,8 +14,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.0.2</version>
         <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
+          <source>1.7</source>
+          <target>1.7</target>
         </configuration>
       </plugin>
     </plugins>
diff --git a/hyracks/pom.xml b/hyracks/pom.xml
index 9c324df..6c84eb8 100644
--- a/hyracks/pom.xml
+++ b/hyracks/pom.xml
@@ -3,12 +3,12 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>hyracks</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>hyracks</name>
 
   <properties>
-    <jvm.extraargs/>
+    <jvm.extraargs />
   </properties>
 
   <build>
diff --git a/pom.xml b/pom.xml
index e4920b3..367101e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>fullstack</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>hyracks-ecosystem-full-stack</name>
 
diff --git a/pregelix/pom.xml b/pregelix/pom.xml
index 6e28021..5c01e31 100644
--- a/pregelix/pom.xml
+++ b/pregelix/pom.xml
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>edu.uci.ics.hyracks</groupId>
   <artifactId>pregelix</artifactId>
-  <version>0.2.3-SNAPSHOT</version>
+  <version>0.2.4-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>pregelix</name>
 
diff --git a/pregelix/pregelix-api/pom.xml b/pregelix/pregelix-api/pom.xml
index 2770e25..85f6ea2 100644
--- a/pregelix/pregelix-api/pom.xml
+++ b/pregelix/pregelix-api/pom.xml
@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<properties>
@@ -21,8 +21,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -68,7 +68,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
@@ -81,7 +81,7 @@
 		<dependency>
                         <groupId>edu.uci.ics.hyracks</groupId>
                         <artifactId>hyracks-hdfs-core</artifactId>
-                        <version>0.2.3-SNAPSHOT</version>
+                        <version>0.2.4-SNAPSHOT</version>
                         <type>jar</type>
                         <scope>compile</scope>
                 </dependency>
diff --git a/pregelix/pregelix-core/pom.xml b/pregelix/pregelix-core/pom.xml
index e14ac41..7b247a8 100644
--- a/pregelix/pregelix-core/pom.xml
+++ b/pregelix/pregelix-core/pom.xml
@@ -1,5 +1,4 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>pregelix-core</artifactId>
 	<packaging>jar</packaging>
@@ -8,7 +7,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 
@@ -66,8 +65,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -196,84 +195,84 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-runtime</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-data-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
@@ -287,7 +286,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks.examples</groupId>
 			<artifactId>hyracks-integration-tests</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
@@ -307,7 +306,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-ipc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
index d9b267d..72256f9 100644
--- a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
+++ b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
@@ -75,11 +75,17 @@
         try {
             /** add hadoop configurations */
             URL hadoopCore = job.getClass().getClassLoader().getResource("core-site.xml");
-            job.getConfiguration().addResource(hadoopCore);
+            if (hadoopCore != null) {
+                job.getConfiguration().addResource(hadoopCore);
+            }
             URL hadoopMapRed = job.getClass().getClassLoader().getResource("mapred-site.xml");
-            job.getConfiguration().addResource(hadoopMapRed);
+            if (hadoopMapRed != null) {
+                job.getConfiguration().addResource(hadoopMapRed);
+            }
             URL hadoopHdfs = job.getClass().getClassLoader().getResource("hdfs-site.xml");
-            job.getConfiguration().addResource(hadoopHdfs);
+            if (hadoopHdfs != null) {
+                job.getConfiguration().addResource(hadoopHdfs);
+            }
             ClusterConfig.loadClusterConfig(ipAddress, port);
 
             LOG.info("job started");
diff --git a/pregelix/pregelix-core/src/main/resources/conf/topology-template.xml b/pregelix/pregelix-core/src/main/resources/conf/topology-template.xml
new file mode 100755
index 0000000..4710706
--- /dev/null
+++ b/pregelix/pregelix-core/src/main/resources/conf/topology-template.xml
@@ -0,0 +1,7 @@
+<cluster-topology>
+    <network-switch name="Global">
+        <network-switch name="local">
+            <terminal name="127.0.0.1"/>
+        </network-switch>
+    </network-switch>
+</cluster-topology>
\ No newline at end of file
diff --git a/pregelix/pregelix-core/src/main/resources/scripts/pregelix b/pregelix/pregelix-core/src/main/resources/scripts/pregelix
index 6997078..b1a2f74 100644
--- a/pregelix/pregelix-core/src/main/resources/scripts/pregelix
+++ b/pregelix/pregelix-core/src/main/resources/scripts/pregelix
@@ -91,7 +91,7 @@
   REPO="$BASEDIR"/lib
 fi
 
-CLASSPATH=$CLASSPATH_PREFIX:"$HADOOP_HOME"/conf:"$BASEDIR"/etc:$1
+CLASSPATH=$CLASSPATH_PREFIX:"$HADOOP_HOME"/conf:/etc/hadoop/conf:"$BASEDIR"/etc:$1
 
 # For Cygwin, switch paths to Windows format before running java
 if $cygwin; then
diff --git a/pregelix/pregelix-core/src/main/resources/scripts/startcc.sh b/pregelix/pregelix-core/src/main/resources/scripts/startcc.sh
index efb79ce..133b604 100644
--- a/pregelix/pregelix-core/src/main/resources/scripts/startcc.sh
+++ b/pregelix/pregelix-core/src/main/resources/scripts/startcc.sh
@@ -20,6 +20,12 @@
 export JAVA_HOME=$JAVA_HOME
 export JAVA_OPTS=$CCJAVA_OPTS
 
-#Launch hyracks cc script
+
 chmod -R 755 $HYRACKS_HOME
+if [ -f "conf/topology.xml"  ]; then
+#Launch hyracks cc script with topology
+$HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 -cluster-topology "conf/topology.xml" &> $CCLOGS_DIR/cc.log &
+else
+#Launch hyracks cc script without toplogy
 $HYRACKS_HOME/hyracks-server/target/appassembler/bin/hyrackscc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST -client-net-port $CC_CLIENTPORT -cluster-net-port $CC_CLUSTERPORT -max-heartbeat-lapse-periods 999999 -default-max-job-attempts 0 -job-history-size 0 &> $CCLOGS_DIR/cc.log &
+fi
diff --git a/pregelix/pregelix-core/src/test/resources/topology.xml b/pregelix/pregelix-core/src/test/resources/topology.xml
new file mode 100755
index 0000000..4710706
--- /dev/null
+++ b/pregelix/pregelix-core/src/test/resources/topology.xml
@@ -0,0 +1,7 @@
+<cluster-topology>
+    <network-switch name="Global">
+        <network-switch name="local">
+            <terminal name="127.0.0.1"/>
+        </network-switch>
+    </network-switch>
+</cluster-topology>
\ No newline at end of file
diff --git a/pregelix/pregelix-dataflow-std-base/pom.xml b/pregelix/pregelix-dataflow-std-base/pom.xml
index dce6a40..6222a04 100644
--- a/pregelix/pregelix-dataflow-std-base/pom.xml
+++ b/pregelix/pregelix-dataflow-std-base/pom.xml
@@ -7,7 +7,7 @@
 	<parent>
     		<groupId>edu.uci.ics.hyracks</groupId>
     		<artifactId>pregelix</artifactId>
-    		<version>0.2.3-SNAPSHOT</version>
+    		<version>0.2.4-SNAPSHOT</version>
   	</parent>
 
 
@@ -22,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -74,14 +74,14 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/pregelix/pregelix-dataflow-std/pom.xml b/pregelix/pregelix-dataflow-std/pom.xml
index 7f401f5..aa77ad3 100644
--- a/pregelix/pregelix-dataflow-std/pom.xml
+++ b/pregelix/pregelix-dataflow-std/pom.xml
@@ -1,5 +1,4 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>pregelix-dataflow-std</artifactId>
 	<packaging>jar</packaging>
@@ -8,7 +7,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 
@@ -23,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -75,77 +74,77 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow-std-base</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-data-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-hdfs-core</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-ipc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/pregelix/pregelix-dataflow/pom.xml b/pregelix/pregelix-dataflow/pom.xml
index 7001387..37abe57 100644
--- a/pregelix/pregelix-dataflow/pom.xml
+++ b/pregelix/pregelix-dataflow/pom.xml
@@ -1,5 +1,4 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>pregelix-dataflow</artifactId>
 	<packaging>jar</packaging>
@@ -8,7 +7,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 
@@ -23,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -75,68 +74,68 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow-std-base</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-data-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-ipc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/pregelix/pregelix-dist/pom.xml b/pregelix/pregelix-dist/pom.xml
index aa3d541..e9aef12 100644
--- a/pregelix/pregelix-dist/pom.xml
+++ b/pregelix/pregelix-dist/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 	<artifactId>pregelix-dist</artifactId>
 	<name>pregelix-dist</name>
@@ -19,8 +19,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 				</configuration>
 			</plugin>
 			<plugin>
@@ -69,13 +69,13 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-core</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-example</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 		</dependency>
 	</dependencies>
 </project>
diff --git a/pregelix/pregelix-example/pom.xml b/pregelix/pregelix-example/pom.xml
index ea09178..20c45ec 100644
--- a/pregelix/pregelix-example/pom.xml
+++ b/pregelix/pregelix-example/pom.xml
@@ -7,7 +7,7 @@
 	<parent>
 		<groupId>edu.uci.ics.hyracks</groupId>
 		<artifactId>pregelix</artifactId>
-		<version>0.2.3-SNAPSHOT</version>
+		<version>0.2.4-SNAPSHOT</version>
 	</parent>
 
 	<build>
@@ -17,8 +17,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -105,7 +105,7 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-core</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
diff --git a/pregelix/pregelix-example/src/test/resources/topology.xml b/pregelix/pregelix-example/src/test/resources/topology.xml
new file mode 100755
index 0000000..2a6c380
--- /dev/null
+++ b/pregelix/pregelix-example/src/test/resources/topology.xml
@@ -0,0 +1,7 @@
+<cluster-topology>
+    <network-switch name="Global">
+        <network-switch name="local">
+            <terminal name="127.1.0.1"/>
+        </network-switch>
+    </network-switch>
+</cluster-topology>
\ No newline at end of file
diff --git a/pregelix/pregelix-runtime/pom.xml b/pregelix/pregelix-runtime/pom.xml
index 5d1c251..29b6ba7 100644
--- a/pregelix/pregelix-runtime/pom.xml
+++ b/pregelix/pregelix-runtime/pom.xml
@@ -7,7 +7,7 @@
 	<parent>
     		<groupId>edu.uci.ics.hyracks</groupId>
     		<artifactId>pregelix</artifactId>
-    		<version>0.2.3-SNAPSHOT</version>
+    		<version>0.2.4-SNAPSHOT</version>
   	</parent>
 
 
@@ -22,8 +22,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.0.2</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.7</source>
+					<target>1.7</target>
 					<fork>true</fork>
 				</configuration>
 			</plugin>
@@ -74,82 +74,82 @@
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>pregelix-dataflow</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-api</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-dataflow-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-data-std</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-common</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-cc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-control-nc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>edu.uci.ics.hyracks</groupId>
 			<artifactId>hyracks-ipc</artifactId>
-			<version>0.2.3-SNAPSHOT</version>
+			<version>0.2.4-SNAPSHOT</version>
 			<type>jar</type>
 			<scope>compile</scope>
 		</dependency>
